{
  "version": 3,
  "sources": ["../../../../../shared/node_modules/preact/src/util.js", "../../../../../shared/node_modules/preact/src/options.js", "../../../../../shared/node_modules/preact/src/create-element.js", "../../../../../shared/node_modules/preact/src/component.js", "../../../../../shared/node_modules/preact/src/create-context.js", "../../../../../shared/node_modules/preact/src/constants.js", "../../../../../shared/node_modules/preact/src/diff/children.js", "../../../../../shared/node_modules/preact/src/diff/props.js", "../../../../../shared/node_modules/preact/src/diff/index.js", "../../../../../shared/node_modules/preact/src/render.js", "../../../../../shared/node_modules/preact/src/clone-element.js", "../../../../../shared/node_modules/preact/src/diff/catch-error.js", "../../../../../shared/node_modules/preact/hooks/src/index.js", "../../../../../shared/node_modules/preact/compat/src/util.js", "../../../../../shared/node_modules/preact/compat/src/PureComponent.js", "../../../../../shared/node_modules/preact/compat/src/memo.js", "../../../../../shared/node_modules/preact/compat/src/forwardRef.js", "../../../../../shared/node_modules/preact/compat/src/Children.js", "../../../../../shared/node_modules/preact/compat/src/suspense.js", "../../../../../shared/node_modules/preact/compat/src/suspense-list.js", "../../../../../shared/node_modules/preact/compat/src/portals.js", "../../../../../shared/node_modules/preact/compat/src/render.js", "../../../../../shared/node_modules/preact/compat/src/index.js", "../../../../../shared/node_modules/classnames/index.js", "../../../../../shared/node_modules/preact/jsx-runtime/src/index.js", "../../../../../shared/node_modules/react/jsx-runtime.js", "../../../../../shared/node_modules/react/index.js", "../../../../../shared/node_modules/react-dom/index.js", "../../../../../shared/node_modules/react-tiny-popover/src/PopoverPortal.tsx", "../../../../../shared/node_modules/react-tiny-popover/src/util.ts", "../../../../../shared/node_modules/react-tiny-popover/src/useElementRef.ts", "../../../../../shared/node_modules/react-tiny-popover/src/usePopover.ts", "../../../../../shared/node_modules/react-tiny-popover/src/useMemoizedArray.ts", "../../../../../shared/node_modules/react-tiny-popover/src/useArrowContainer.ts", "../../../../../shared/node_modules/react-tiny-popover/src/ArrowContainer.tsx", "../../../../../shared/node_modules/react-tiny-popover/src/Popover.tsx", "(disabled):fs", "(disabled):canvas", "(disabled):zlib", "(disabled):http", "(disabled):https", "(disabled):url", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/webpack/universalModuleDefinition", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/src/shared/util.js", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/src/shared/compatibility.js", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/src/shared/is_node.js", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/src/display/api.js", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/src/display/annotation_storage.js", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/src/display/editor/editor.js", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/src/display/editor/tools.js", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/src/display/display_utils.js", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/src/display/base_factory.js", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/src/shared/murmurhash3.js", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/src/display/font_loader.js", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/src/display/canvas.js", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/src/display/pattern_helper.js", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/src/shared/image_utils.js", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/src/display/worker_options.js", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/src/shared/message_handler.js", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/src/display/metadata.js", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/src/display/optional_content_config.js", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/src/display/transport_stream.js", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/src/display/xfa_text.js", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/src/display/node_utils.js", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/src/display/editor/annotation_editor_layer.js", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/src/display/editor/freetext.js", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/src/display/editor/ink.js", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/src/display/editor/fit_curve.js", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/node_modules/fit-curve/src/fit-curve.js", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/src/display/annotation_layer.js", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/src/shared/scripting_utils.js", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/src/display/xfa_layer.js", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/src/display/text_layer.js", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/src/display/svg.js", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/src/display/node_stream.js", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/src/display/network_utils.js", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/src/display/content_disposition.js", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/src/display/network.js", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/src/display/fetch_stream.js", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/webpack/bootstrap", "../../../../../shared/node_modules/pdfjs-dist/build/webpack:/pdfjs-dist/build/pdf/src/pdf.js", "../../../../../shared/node_modules/react-is/cjs/react-is.development.js", "../../../../../shared/node_modules/react-is/index.js", "../../../../../shared/node_modules/object-assign/index.js", "../../../../../shared/node_modules/prop-types/lib/ReactPropTypesSecret.js", "../../../../../shared/node_modules/prop-types/lib/has.js", "../../../../../shared/node_modules/prop-types/checkPropTypes.js", "../../../../../shared/node_modules/prop-types/factoryWithTypeCheckers.js", "../../../../../shared/node_modules/prop-types/index.js", "../../javascript/shared/dom/doc-ready.js", "../../javascript/shared/ui/offcanvas.js", "../../../../../shared/node_modules/react/index.mjs", "../../../../../shared/node_modules/react-dom/index.mjs", "../../javascript/shared/react/component-mounter.js", "../../javascript/components/filters/shared/DropdownSection.tsx", "../../javascript/components/filters/KyreniaCatalogueFilters.tsx", "../../javascript/components/results/KyreniaCatalogueResults.tsx", "../../javascript/components/results/Pagination.tsx", "../../javascript/shared/api/encodeQueryData.js", "../../javascript/shared/api/ServerRequest.js", "../../javascript/shared/ui/debouce.js", "../../javascript/shared/ui/bodyScrollable.jsx", "../../javascript/components/CatalogueIndex.tsx", "../../javascript/components/filters/KyreniaObjectFilters.tsx", "../../javascript/shared/ui/bootstrap/autocomplete-url.tsx", "../../javascript/shared/ui/click-outside.js", "../../javascript/components/results/KyreniaObjectResults.tsx", "../../javascript/shared/ui/bootstrap/dropdown.tsx", "../../javascript/components/show/FiltersSection.tsx", "../../javascript/components/show/ObjectActions.tsx", "../../javascript/components/show/EventsNav.tsx", "../../javascript/components/show/EventData.tsx", "../../javascript/components/show/EventTable.tsx", "../../javascript/shared/ui/bootstrap/autocomplete.tsx", "../../javascript/shared/ui/highlight-pattern.jsx", "../../javascript/shared/utils/escapeRegex.js", "../../javascript/components/show/EventTableEdit.tsx", "../../javascript/shared/ui/bootstrap/modal.tsx", "../../javascript/components/show/ExhibitionAdd.tsx", "../../javascript/components/show/ImageSearch.tsx", "../../../../../shared/node_modules/react-pdf/dist/esm/entry.js", "../../../../../shared/node_modules/@babel/runtime/helpers/esm/extends.js", "../../../../../shared/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js", "../../../../../shared/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js", "../../../../../shared/node_modules/@babel/runtime/helpers/esm/typeof.js", "../../../../../shared/node_modules/@babel/runtime/helpers/esm/classCallCheck.js", "../../../../../shared/node_modules/@babel/runtime/helpers/esm/toPrimitive.js", "../../../../../shared/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js", "../../../../../shared/node_modules/@babel/runtime/helpers/esm/createClass.js", "../../../../../shared/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js", "../../../../../shared/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js", "../../../../../shared/node_modules/@babel/runtime/helpers/esm/inherits.js", "../../../../../shared/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js", "../../../../../shared/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js", "../../../../../shared/node_modules/@babel/runtime/helpers/esm/defineProperty.js", "../../../../../shared/node_modules/react-pdf/dist/esm/Document.js", "../../../../../shared/node_modules/make-event-props/dist/esm/index.js", "../../../../../shared/node_modules/make-cancellable-promise/dist/esm/index.js", "../../../../../shared/node_modules/clsx/dist/clsx.m.js", "../../../../../shared/node_modules/tiny-invariant/dist/esm/tiny-invariant.js", "../../../../../shared/node_modules/tiny-warning/dist/tiny-warning.esm.js", "../../../../../shared/node_modules/react-pdf/dist/esm/DocumentContext.js", "../../../../../shared/node_modules/react-pdf/dist/esm/Message.js", "../../../../../shared/node_modules/react-pdf/dist/esm/LinkService.js", "../../../../../shared/node_modules/react-pdf/dist/esm/PasswordResponses.js", "../../../../../shared/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js", "../../../../../shared/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js", "../../../../../shared/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js", "../../../../../shared/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js", "../../../../../shared/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js", "../../../../../shared/node_modules/@babel/runtime/helpers/esm/slicedToArray.js", "../../../../../shared/node_modules/react-pdf/dist/esm/shared/utils.js", "../../../../../shared/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js", "../../../../../shared/node_modules/@babel/runtime/helpers/esm/iterableToArray.js", "../../../../../shared/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js", "../../../../../shared/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js", "../../../../../shared/node_modules/react-pdf/dist/esm/shared/propTypes.js", "../../../../../shared/node_modules/react-pdf/dist/esm/Outline.js", "../../../../../shared/node_modules/react-pdf/dist/esm/OutlineContext.js", "../../../../../shared/node_modules/react-pdf/dist/esm/OutlineItem.js", "../../../../../shared/node_modules/react-pdf/dist/esm/Ref.js", "../../../../../shared/node_modules/react-pdf/dist/esm/Page.js", "../../../../../shared/node_modules/merge-refs/dist/esm/index.js", "../../../../../shared/node_modules/react-pdf/dist/esm/PageContext.js", "../../../../../shared/node_modules/react-pdf/dist/esm/Page/PageCanvas.js", "../../../../../shared/node_modules/react-pdf/dist/esm/Page/PageSVG.js", "../../../../../shared/node_modules/react-pdf/dist/esm/Page/TextLayer.js", "../../../../../shared/node_modules/react-pdf/dist/esm/Page/AnnotationLayer.js", "../../javascript/components/show/ImageSlider.tsx", "../../javascript/components/ObjectShow.tsx", "../../javascript/components/results/ObjectIndexActions.tsx", "../../javascript/components/results/Breadcrumbs.tsx", "../../javascript/components/results/ActiveFilters.tsx", "../../javascript/components/ObjectsIndex.tsx", "../../javascript/components/merge/EventsList.tsx", "../../javascript/components/MergeObjects.tsx", "../../javascript/components/exhibitions/entry_edit.tsx", "../../javascript/components/exhibitions/entry_view.tsx", "../../javascript/components/exhibitions/entry_objects.tsx", "../../javascript/components/exhibitions/entry.tsx", "../../javascript/components/exhibitions/image_search.tsx", "../../javascript/components/exhibitions/section.tsx", "../../javascript/components/ExhibitionShow.tsx", "../../javascript/components/CatalogueShow.tsx", "../../javascript/application.js"],
  "sourcesContent": ["import { EMPTY_ARR } from './constants';\n\n/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\t// @ts-ignore We change the type of `obj` to be `O & P`\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n\nexport const slice = EMPTY_ARR.slice;\n", "import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n", "import { slice } from './util';\nimport options from './options';\n\nlet vnodeId = 0;\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array<import('.').ComponentChildren>} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, null);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\t_hydrating: null,\n\t\tconstructor: undefined,\n\t\t_original: original == null ? ++vnodeId : original\n\t};\n\n\t// Only invoke the vnode hook if this was *not* a direct copy:\n\tif (original == null && options.vnode != null) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: null };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n", "import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function (update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != null && this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function (callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = vnode._original + 1;\n\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tvnode._hydrating != null ? [oldDom] : null,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom,\n\t\t\tvnode._hydrating\n\t\t);\n\t\tcommitRoot(commitQueue, vnode);\n\n\t\tif (vnode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array<import('./internal').Component>}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/**\n * @param {import('./internal').Component} a\n * @param {import('./internal').Component} b\n */\nconst depthSort = (a, b) => a._vnode._depth - b._vnode._depth;\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet c;\n\trerenderQueue.sort(depthSort);\n\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t// process() calls from getting scheduled while `queue` is still being consumed.\n\twhile ((c = rerenderQueue.shift())) {\n\t\tif (c._dirty) {\n\t\t\tlet renderQueueLength = rerenderQueue.length;\n\t\t\trenderComponent(c);\n\t\t\tif (rerenderQueue.length > renderQueueLength) {\n\t\t\t\t// When i.e. rerendering a provider additional new items can be injected, we want to\n\t\t\t\t// keep the order from top to bottom with those new items so we can handle them in a\n\t\t\t\t// single pass\n\t\t\t\trerenderQueue.sort(depthSort);\n\t\t\t}\n\t\t}\n\t}\n\tprocess._rerenderCount = 0;\n}\n\nprocess._rerenderCount = 0;\n", "import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue, contextId) {\n\tcontextId = '__cC' + i++;\n\n\tconst context = {\n\t\t_id: contextId,\n\t\t_defaultValue: defaultValue,\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tConsumer(props, contextValue) {\n\t\t\t// return props.children(\n\t\t\t// \tcontext[contextId] ? context[contextId].props.value : defaultValue\n\t\t\t// );\n\t\t\treturn props.children(contextValue);\n\t\t},\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\t/** @type {import('./internal').Component[]} */\n\t\t\t\tlet subs = [];\n\t\t\t\tlet ctx = {};\n\t\t\t\tctx[contextId] = this;\n\n\t\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\t\tthis.shouldComponentUpdate = function (_props) {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\t// I think the forced value propagation here was only needed when `options.debounceRendering` was being bypassed:\n\t\t\t\t\t\t// https://github.com/preactjs/preact/commit/4d339fb803bea09e9f198abf38ca1bf8ea4b7771#diff-54682ce380935a717e41b8bfc54737f6R358\n\t\t\t\t\t\t// In those cases though, even with the value corrected, we're double-rendering all nodes.\n\t\t\t\t\t\t// It might be better to just tell folks not to use force-sync mode.\n\t\t\t\t\t\t// Currently, using `useContext()` in a class component will overwrite its `this.context` value.\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context[contextId] = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\t\t\t\t\t\tsubs.some(c => {\n\t\t\t\t\t\t\tc._force = true;\n\t\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.push(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\n\t\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\t// Devtools needs access to the context object when it\n\t// encounters a Provider. This is necessary to support\n\t// setting `displayName` on the context object instead\n\t// of on the component itself. See:\n\t// https://reactjs.org/docs/context.html#contextdisplayname\n\n\treturn (context.Provider._contextRef = context.Consumer.contextType =\n\t\tcontext);\n}\n", "export const EMPTY_OBJ = {};\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n", "import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../internal').ComponentChildren[]} renderResult\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet i, j, oldVNode, childVNode, newDom, firstChildDom, refs;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length;\n\n\tnewParentVNode._children = [];\n\tfor (i = 0; i < renderResult.length; i++) {\n\t\tchildVNode = renderResult[i];\n\n\t\tif (\n\t\t\tchildVNode == null ||\n\t\t\ttypeof childVNode == 'boolean' ||\n\t\t\ttypeof childVNode == 'function'\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = null;\n\t\t}\n\t\t// If this newVNode is being reused (e.g. <div>{reuse}{reuse}</div>) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (\n\t\t\ttypeof childVNode == 'string' ||\n\t\t\ttypeof childVNode == 'number' ||\n\t\t\t// eslint-disable-next-line valid-typeof\n\t\t\ttypeof childVNode == 'bigint'\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tnull,\n\t\t\t\tchildVNode,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t} else if (Array.isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (childVNode._depth > 0) {\n\t\t\t// VNode is already in use, clone it. This can happen in the following\n\t\t\t// scenario:\n\t\t\t//   const reuse = <div />\n\t\t\t//   <div>{reuse}<span />{reuse}</div>\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tchildVNode.ref ? childVNode.ref : null,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\t// Terser removes the `continue` here and wraps the loop body\n\t\t// in a `if (childVNode) { ... } condition\n\t\tif (childVNode == null) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t// Check if we find a corresponding element in oldChildren.\n\t\t// If found, delete the array item by setting to `undefined`.\n\t\t// We use `undefined`, as `null` is reserved for empty placeholders\n\t\t// (holes).\n\t\toldVNode = oldChildren[i];\n\n\t\tif (\n\t\t\toldVNode === null ||\n\t\t\t(oldVNode &&\n\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\tchildVNode.type === oldVNode.type)\n\t\t) {\n\t\t\toldChildren[i] = undefined;\n\t\t} else {\n\t\t\t// Either oldVNode === undefined or oldChildrenLength > 0,\n\t\t\t// so after this loop oldVNode == null or oldVNode is a valid value.\n\t\t\tfor (j = 0; j < oldChildrenLength; j++) {\n\t\t\t\toldVNode = oldChildren[j];\n\t\t\t\t// If childVNode is unkeyed, we only match similarly unkeyed nodes, otherwise we match by key.\n\t\t\t\t// We always match by type (in either case).\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\tchildVNode.type === oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\toldChildren[j] = undefined;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\toldVNode = null;\n\t\t\t}\n\t\t}\n\n\t\toldVNode = oldVNode || EMPTY_OBJ;\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating\n\t\t);\n\n\t\tnewDom = childVNode._dom;\n\n\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\tif (!refs) refs = [];\n\t\t\tif (oldVNode.ref) refs.push(oldVNode.ref, null, childVNode);\n\t\t\trefs.push(j, childVNode._component || newDom, childVNode);\n\t\t}\n\n\t\tif (newDom != null) {\n\t\t\tif (firstChildDom == null) {\n\t\t\t\tfirstChildDom = newDom;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\ttypeof childVNode.type == 'function' &&\n\t\t\t\tchildVNode._children === oldVNode._children\n\t\t\t) {\n\t\t\t\tchildVNode._nextDom = oldDom = reorderChildren(\n\t\t\t\t\tchildVNode,\n\t\t\t\t\toldDom,\n\t\t\t\t\tparentDom\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\toldDom = placeChild(\n\t\t\t\t\tparentDom,\n\t\t\t\t\tchildVNode,\n\t\t\t\t\toldVNode,\n\t\t\t\t\toldChildren,\n\t\t\t\t\tnewDom,\n\t\t\t\t\toldDom\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (typeof newParentVNode.type == 'function') {\n\t\t\t\t// Because the newParentVNode is Fragment-like, we need to set it's\n\t\t\t\t// _nextDom property to the nextSibling of its last child DOM node.\n\t\t\t\t//\n\t\t\t\t// `oldDom` contains the correct value here because if the last child\n\t\t\t\t// is a Fragment-like, then oldDom has already been set to that child's _nextDom.\n\t\t\t\t// If the last child is a DOM VNode, then oldDom will be set to that DOM\n\t\t\t\t// node's nextSibling.\n\t\t\t\tnewParentVNode._nextDom = oldDom;\n\t\t\t}\n\t\t} else if (\n\t\t\toldDom &&\n\t\t\toldVNode._dom == oldDom &&\n\t\t\toldDom.parentNode != parentDom\n\t\t) {\n\t\t\t// The above condition is to handle null placeholders. See test in placeholder.test.js:\n\t\t\t// `efficiently replace null placeholders in parent rerenders`\n\t\t\toldDom = getDomSibling(oldVNode);\n\t\t}\n\t}\n\n\tnewParentVNode._dom = firstChildDom;\n\n\t// Remove remaining oldChildren if there are any.\n\tfor (i = oldChildrenLength; i--; ) {\n\t\tif (oldChildren[i] != null) {\n\t\t\tif (\n\t\t\t\ttypeof newParentVNode.type == 'function' &&\n\t\t\t\toldChildren[i]._dom != null &&\n\t\t\t\toldChildren[i]._dom == newParentVNode._nextDom\n\t\t\t) {\n\t\t\t\t// If the newParentVNode.__nextDom points to a dom node that is about to\n\t\t\t\t// be unmounted, then get the next sibling of that vnode and set\n\t\t\t\t// _nextDom to it\n\t\t\t\tnewParentVNode._nextDom = getLastDom(oldParentVNode).nextSibling;\n\t\t\t}\n\n\t\t\tunmount(oldChildren[i], oldChildren[i]);\n\t\t}\n\t}\n\n\t// Set refs only after unmount\n\tif (refs) {\n\t\tfor (i = 0; i < refs.length; i++) {\n\t\t\tapplyRef(refs[i], refs[++i], refs[++i]);\n\t\t}\n\t}\n}\n\nfunction reorderChildren(childVNode, oldDom, parentDom) {\n\t// Note: VNodes in nested suspended trees may be missing _children.\n\tlet c = childVNode._children;\n\tlet tmp = 0;\n\tfor (; c && tmp < c.length; tmp++) {\n\t\tlet vnode = c[tmp];\n\t\tif (vnode) {\n\t\t\t// We typically enter this code path on sCU bailout, where we copy\n\t\t\t// oldVNode._children to newVNode._children. If that is the case, we need\n\t\t\t// to update the old children's _parent pointer to point to the newVNode\n\t\t\t// (childVNode here).\n\t\t\tvnode._parent = childVNode;\n\n\t\t\tif (typeof vnode.type == 'function') {\n\t\t\t\toldDom = reorderChildren(vnode, oldDom, parentDom);\n\t\t\t} else {\n\t\t\t\toldDom = placeChild(parentDom, vnode, vnode, c, vnode._dom, oldDom);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn oldDom;\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {import('../index').ComponentChildren} children The unflattened\n * children of a virtual node\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == null || typeof children == 'boolean') {\n\t} else if (Array.isArray(children)) {\n\t\tchildren.some(child => {\n\t\t\ttoChildArray(child, out);\n\t\t});\n\t} else {\n\t\tout.push(children);\n\t}\n\treturn out;\n}\n\nfunction placeChild(\n\tparentDom,\n\tchildVNode,\n\toldVNode,\n\toldChildren,\n\tnewDom,\n\toldDom\n) {\n\tlet nextDom;\n\tif (childVNode._nextDom !== undefined) {\n\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t// of last DOM child of this child VNode\n\t\tnextDom = childVNode._nextDom;\n\n\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t// can clean up the property\n\t\tchildVNode._nextDom = undefined;\n\t} else if (\n\t\toldVNode == null ||\n\t\tnewDom != oldDom ||\n\t\tnewDom.parentNode == null\n\t) {\n\t\touter: if (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\t\tparentDom.appendChild(newDom);\n\t\t\tnextDom = null;\n\t\t} else {\n\t\t\t// `j<oldChildrenLength; j+=2` is an alternative to `j++<oldChildrenLength/2`\n\t\t\tfor (\n\t\t\t\tlet sibDom = oldDom, j = 0;\n\t\t\t\t(sibDom = sibDom.nextSibling) && j < oldChildren.length;\n\t\t\t\tj += 1\n\t\t\t) {\n\t\t\t\tif (sibDom == newDom) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t}\n\t\t\tparentDom.insertBefore(newDom, oldDom);\n\t\t\tnextDom = oldDom;\n\t\t}\n\t}\n\n\t// If we have pre-calculated the nextDOM node, use it. Else calculate it now\n\t// Strictly check for `undefined` here cuz `null` is a valid value of `nextDom`.\n\t// See more detail in create-element.js:createVNode\n\tif (nextDom !== undefined) {\n\t\toldDom = nextDom;\n\t} else {\n\t\toldDom = newDom.nextSibling;\n\t}\n\n\treturn oldDom;\n}\n\n/**\n * @param {import('../internal').VNode} vnode\n */\nfunction getLastDom(vnode) {\n\tif (vnode.type == null || typeof vnode.type === 'string') {\n\t\treturn vnode._dom;\n\t}\n\n\tif (vnode._children) {\n\t\tfor (let i = vnode._children.length - 1; i >= 0; i--) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child) {\n\t\t\t\tlet lastDom = getLastDom(child);\n\t\t\t\tif (lastDom) {\n\t\t\t\t\treturn lastDom;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn null;\n}\n", "import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\n/**\n * Diff the old and new properties of a VNode and apply changes to the DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to apply\n * changes to\n * @param {object} newProps The new props\n * @param {object} oldProps The old props\n * @param {boolean} isSvg Whether or not this node is an SVG node\n * @param {boolean} hydrate Whether or not we are in hydration mode\n */\nexport function diffProps(dom, newProps, oldProps, isSvg, hydrate) {\n\tlet i;\n\n\tfor (i in oldProps) {\n\t\tif (i !== 'children' && i !== 'key' && !(i in newProps)) {\n\t\t\tsetProperty(dom, i, null, oldProps[i], isSvg);\n\t\t}\n\t}\n\n\tfor (i in newProps) {\n\t\tif (\n\t\t\t(!hydrate || typeof newProps[i] == 'function') &&\n\t\t\ti !== 'children' &&\n\t\t\ti !== 'key' &&\n\t\t\ti !== 'value' &&\n\t\t\ti !== 'checked' &&\n\t\t\toldProps[i] !== newProps[i]\n\t\t) {\n\t\t\tsetProperty(dom, i, newProps[i], oldProps[i], isSvg);\n\t\t}\n\t}\n}\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value == null ? '' : value);\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, isSvg) {\n\tlet useCapture;\n\n\to: if (name === 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] !== oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] === 'o' && name[1] === 'n') {\n\t\tuseCapture = name !== (name = name.replace(/Capture$/, ''));\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (name.toLowerCase() in dom) name = name.toLowerCase().slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\t\tdom.addEventListener(name, handler, useCapture);\n\t\t\t}\n\t\t} else {\n\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\tdom.removeEventListener(name, handler, useCapture);\n\t\t}\n\t} else if (name !== 'dangerouslySetInnerHTML') {\n\t\tif (isSvg) {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname !== 'width' &&\n\t\t\tname !== 'height' &&\n\t\t\tname !== 'href' &&\n\t\t\tname !== 'list' &&\n\t\t\tname !== 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname !== 'tabIndex' &&\n\t\t\tname !== 'download' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == null ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// aria- and data- attributes have no boolean representation.\n\t\t// A `false` value is different from the attribute not being\n\t\t// present, so we can't remove it. For non-boolean aria\n\t\t// attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost too many bytes. On top of\n\t\t// that other frameworks generally stringify `false`.\n\n\t\tif (typeof value === 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != null && (value !== false || name[4] === '-')) {\n\t\t\tdom.setAttribute(name, value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\treturn this._listeners[e.type + false](options.event ? options.event(e) : e);\n}\n\nfunction eventProxyCapture(e) {\n\treturn this._listeners[e.type + true](options.event ? options.event(e) : e);\n}\n", "import { EMPTY_OBJ } from '../constants';\nimport { Component, getDomSibling } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { diffProps, setProperty } from './props';\nimport { assign, removeNode, slice } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} [isHydrating] Whether or not we are in hydration\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\t// If the previous diff bailed out, resume creating/hydrating.\n\tif (oldVNode._hydrating != null) {\n\t\tisHydrating = oldVNode._hydrating;\n\t\toldDom = newVNode._dom = oldVNode._dom;\n\t\t// if we resume, we want the tree to be \"unlocked\"\n\t\tnewVNode._hydrating = null;\n\t\texcessDomChildren = [oldDom];\n\t}\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\ttry {\n\t\touter: if (typeof newType == 'function') {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\t// @ts-ignore The check above verifies that newType is suppose to be constructed\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\t// @ts-ignore Trust me, Component implements the interface we want\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\t\t\tc._vnode = newVNode;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(!c._force &&\n\t\t\t\t\t\tc.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\tnewVNode._original === oldVNode._original\n\t\t\t\t) {\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) {\n\t\t\t\t\t\t// When we are dealing with a bail because of sCU we have to update\n\t\t\t\t\t\t// the props, state and dirty-state.\n\t\t\t\t\t\t// when we are dealing with strict-equality we don't as the child could still\n\t\t\t\t\t\t// be dirtied see #3883\n\t\t\t\t\t\tc.props = newProps;\n\t\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t\tc._dirty = false;\n\t\t\t\t\t}\n\n\t\t\t\t\t// In cases of bailing due to strict-equality we have to reset force as well\n\t\t\t\t\tc._force = false;\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tnewVNode._children.forEach(vnode => {\n\t\t\t\t\t\tif (vnode) vnode._parent = newVNode;\n\t\t\t\t\t});\n\n\t\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t\t}\n\t\t\t\t\tc._stateCallbacks = [];\n\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc._parentDom = parentDom;\n\n\t\t\tlet renderHook = options._render,\n\t\t\t\tcount = 0;\n\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\tc.state = c._nextState;\n\t\t\t\tc._dirty = false;\n\n\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t}\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t} else {\n\t\t\t\tdo {\n\t\t\t\t\tc._dirty = false;\n\t\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\t\t// Handle setState called in render, see #2553\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t} while (c._dirty && ++count < 25);\n\t\t\t}\n\n\t\t\t// Handle setState called in render, see #2553\n\t\t\tc.state = c._nextState;\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type === Fragment && tmp.key == null;\n\t\t\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tArray.isArray(renderResult) ? renderResult : [renderResult],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\t\tnewVNode._hydrating = null;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\n\t\t\tc._force = false;\n\t\t} else if (\n\t\t\texcessDomChildren == null &&\n\t\t\tnewVNode._original === oldVNode._original\n\t\t) {\n\t\t\tnewVNode._children = oldVNode._children;\n\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t} else {\n\t\t\tnewVNode._dom = diffElementNodes(\n\t\t\t\toldVNode._dom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\tif ((tmp = options.diffed)) tmp(newVNode);\n\t} catch (e) {\n\t\tnewVNode._original = null;\n\t\t// if hydrating or creating initial tree, bailout preserves DOM:\n\t\tif (isHydrating || excessDomChildren != null) {\n\t\t\tnewVNode._dom = oldDom;\n\t\t\tnewVNode._hydrating = !!isHydrating;\n\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = null;\n\t\t\t// ^ could possibly be simplified to:\n\t\t\t// excessDomChildren.length = 0;\n\t\t}\n\t\toptions._catchError(e, newVNode, oldVNode);\n\t}\n}\n\n/**\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root) {\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\t// @ts-ignore Reuse the commitQueue variable here so the type changes\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\t// @ts-ignore See above ts-ignore on commitQueue\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating\n) {\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\tlet nodeType = newVNode.type;\n\tlet i = 0;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tif (nodeType === 'svg') isSvg = true;\n\n\tif (excessDomChildren != null) {\n\t\tfor (; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild &&\n\t\t\t\t'setAttribute' in child === !!nodeType &&\n\t\t\t\t(nodeType ? child.localName === nodeType : child.nodeType === 3)\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (nodeType === null) {\n\t\t\t// @ts-ignore createTextNode returns Text, we expect PreactElement\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tif (isSvg) {\n\t\t\tdom = document.createElementNS(\n\t\t\t\t'http://www.w3.org/2000/svg',\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType\n\t\t\t);\n\t\t} else {\n\t\t\tdom = document.createElement(\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType,\n\t\t\t\tnewProps.is && newProps\n\t\t\t);\n\t\t}\n\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (nodeType === null) {\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data !== newProps)) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\t// If excessDomChildren was not null, repopulate it with the current element's children:\n\t\texcessDomChildren = excessDomChildren && slice.call(dom.childNodes);\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\t// But, if we are in a situation where we are using existing DOM (e.g. replaceNode)\n\t\t\t// we should read the existing DOM attributes to diff them\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (\n\t\t\t\t\t!newHtml ||\n\t\t\t\t\t((!oldHtml || newHtml.__html != oldHtml.__html) &&\n\t\t\t\t\t\tnewHtml.__html !== dom.innerHTML)\n\t\t\t\t) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\ti = newVNode.props.children;\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tArray.isArray(i) ? i : [i],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg && nodeType !== 'foreignObject',\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\texcessDomChildren\n\t\t\t\t\t? excessDomChildren[0]\n\t\t\t\t\t: oldVNode._children && getDomSibling(oldVNode, 0),\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\t// Remove children that are not part of any vnode.\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\t\t\tif (excessDomChildren[i] != null) removeNode(excessDomChildren[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\t(i = newProps.value) !== undefined &&\n\t\t\t\t// #2756 For the <progress>-element the initial value is 0,\n\t\t\t\t// despite the attribute not being present. When the attribute\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\n\t\t\t\t(i !== dom.value ||\n\t\t\t\t\t(nodeType === 'progress' && !i) ||\n\t\t\t\t\t// This is only for IE 11 to fix <select> value not being updated.\n\t\t\t\t\t// To avoid a stale select value we need to set the option.value\n\t\t\t\t\t// again, which triggers IE11 to re-evaluate the select value\n\t\t\t\t\t(nodeType === 'option' && i !== oldProps.value))\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'value', i, oldProps.value, false);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\t(i = newProps.checked) !== undefined &&\n\t\t\t\ti !== dom.checked\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'checked', i, oldProps.checked, false);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) {\n\t\t\tapplyRef(r, null, parentVNode);\n\t\t}\n\t}\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t\tvnode._component = undefined;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) {\n\t\t\t\tunmount(\n\t\t\t\t\tr[i],\n\t\t\t\t\tparentVNode,\n\t\t\t\t\tskipRemove || typeof vnode.type !== 'function'\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!skipRemove && vnode._dom != null) {\n\t\tremoveNode(vnode._dom);\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._parent = vnode._dom = vnode._nextDom = undefined;\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n", "import { EMPTY_OBJ } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\nimport { slice } from './util';\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * render into\n * @param {import('./internal').PreactElement | object} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we are in\n\t// hydration mode or not by passing the `hydrate` function instead of a DOM\n\t// element..\n\tlet isHydrating = typeof replaceNode === 'function';\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\n\tvnode = ((!isHydrating && replaceNode) || parentDom)._children =\n\t\tcreateElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\tvnode,\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.ownerSVGElement !== undefined,\n\t\t!isHydrating && replaceNode\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t? null\n\t\t\t: parentDom.firstChild\n\t\t\t? slice.call(parentDom.childNodes)\n\t\t\t: null,\n\t\tcommitQueue,\n\t\t!isHydrating && replaceNode\n\t\t\t? replaceNode\n\t\t\t: oldVNode\n\t\t\t? oldVNode._dom\n\t\t\t: parentDom.firstChild,\n\t\tisHydrating\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, hydrate);\n}\n", "import { assign, slice } from './util';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array<import('./internal').ComponentChildren>} rest Any additional arguments will be used as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props, children) {\n\tlet normalizedProps = assign({}, vnode.props),\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tkey || vnode.key,\n\t\tref || vnode.ref,\n\t\tnull\n\t);\n}\n", "/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n * @param {import('../internal').VNode} [oldVNode]\n * @param {import('../internal').ErrorInfo} [errorInfo]\n */\nexport function _catchError(error, vnode, oldVNode, errorInfo) {\n\t/** @type {import('../internal').Component} */\n\tlet component, ctor, handled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != null) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\tcomponent.componentDidCatch(error, errorInfo || {});\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n", "import { options } from 'preact';\n\n/** @type {number} */\nlet currentIndex;\n\n/** @type {import('./internal').Component} */\nlet currentComponent;\n\n/** @type {import('./internal').Component} */\nlet previousComponent;\n\n/** @type {number} */\nlet currentHook = 0;\n\n/** @type {Array<import('./internal').Component>} */\nlet afterPaintEffects = [];\n\nlet EMPTY = [];\n\nlet oldBeforeDiff = options._diff;\nlet oldBeforeRender = options._render;\nlet oldAfterDiff = options.diffed;\nlet oldCommit = options._commit;\nlet oldBeforeUnmount = options.unmount;\n\nconst RAF_TIMEOUT = 100;\nlet prevRaf;\n\noptions._diff = vnode => {\n\tcurrentComponent = null;\n\tif (oldBeforeDiff) oldBeforeDiff(vnode);\n};\n\noptions._render = vnode => {\n\tif (oldBeforeRender) oldBeforeRender(vnode);\n\n\tcurrentComponent = vnode._component;\n\tcurrentIndex = 0;\n\n\tconst hooks = currentComponent.__hooks;\n\tif (hooks) {\n\t\tif (previousComponent === currentComponent) {\n\t\t\thooks._pendingEffects = [];\n\t\t\tcurrentComponent._renderCallbacks = [];\n\t\t\thooks._list.forEach(hookItem => {\n\t\t\t\tif (hookItem._nextValue) {\n\t\t\t\t\thookItem._value = hookItem._nextValue;\n\t\t\t\t}\n\t\t\t\thookItem._pendingValue = EMPTY;\n\t\t\t\thookItem._nextValue = hookItem._pendingArgs = undefined;\n\t\t\t});\n\t\t} else {\n\t\t\thooks._pendingEffects.forEach(invokeCleanup);\n\t\t\thooks._pendingEffects.forEach(invokeEffect);\n\t\t\thooks._pendingEffects = [];\n\t\t}\n\t}\n\tpreviousComponent = currentComponent;\n};\n\noptions.diffed = vnode => {\n\tif (oldAfterDiff) oldAfterDiff(vnode);\n\n\tconst c = vnode._component;\n\tif (c && c.__hooks) {\n\t\tif (c.__hooks._pendingEffects.length) afterPaint(afterPaintEffects.push(c));\n\t\tc.__hooks._list.forEach(hookItem => {\n\t\t\tif (hookItem._pendingArgs) {\n\t\t\t\thookItem._args = hookItem._pendingArgs;\n\t\t\t}\n\t\t\tif (hookItem._pendingValue !== EMPTY) {\n\t\t\t\thookItem._value = hookItem._pendingValue;\n\t\t\t}\n\t\t\thookItem._pendingArgs = undefined;\n\t\t\thookItem._pendingValue = EMPTY;\n\t\t});\n\t}\n\tpreviousComponent = currentComponent = null;\n};\n\noptions._commit = (vnode, commitQueue) => {\n\tcommitQueue.some(component => {\n\t\ttry {\n\t\t\tcomponent._renderCallbacks.forEach(invokeCleanup);\n\t\t\tcomponent._renderCallbacks = component._renderCallbacks.filter(cb =>\n\t\t\t\tcb._value ? invokeEffect(cb) : true\n\t\t\t);\n\t\t} catch (e) {\n\t\t\tcommitQueue.some(c => {\n\t\t\t\tif (c._renderCallbacks) c._renderCallbacks = [];\n\t\t\t});\n\t\t\tcommitQueue = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t});\n\n\tif (oldCommit) oldCommit(vnode, commitQueue);\n};\n\noptions.unmount = vnode => {\n\tif (oldBeforeUnmount) oldBeforeUnmount(vnode);\n\n\tconst c = vnode._component;\n\tif (c && c.__hooks) {\n\t\tlet hasErrored;\n\t\tc.__hooks._list.forEach(s => {\n\t\t\ttry {\n\t\t\t\tinvokeCleanup(s);\n\t\t\t} catch (e) {\n\t\t\t\thasErrored = e;\n\t\t\t}\n\t\t});\n\t\tc.__hooks = undefined;\n\t\tif (hasErrored) options._catchError(hasErrored, c._vnode);\n\t}\n};\n\n/**\n * Get a hook's state from the currentComponent\n * @param {number} index The index of the hook to get\n * @param {number} type The index of the hook to get\n * @returns {any}\n */\nfunction getHookState(index, type) {\n\tif (options._hook) {\n\t\toptions._hook(currentComponent, index, currentHook || type);\n\t}\n\tcurrentHook = 0;\n\n\t// Largely inspired by:\n\t// * https://github.com/michael-klein/funcy.js/blob/f6be73468e6ec46b0ff5aa3cc4c9baf72a29025a/src/hooks/core_hooks.mjs\n\t// * https://github.com/michael-klein/funcy.js/blob/650beaa58c43c33a74820a3c98b3c7079cf2e333/src/renderer.mjs\n\t// Other implementations to look at:\n\t// * https://codesandbox.io/s/mnox05qp8\n\tconst hooks =\n\t\tcurrentComponent.__hooks ||\n\t\t(currentComponent.__hooks = {\n\t\t\t_list: [],\n\t\t\t_pendingEffects: []\n\t\t});\n\n\tif (index >= hooks._list.length) {\n\t\thooks._list.push({ _pendingValue: EMPTY });\n\t}\n\treturn hooks._list[index];\n}\n\n/**\n * @param {import('./index').StateUpdater<any>} [initialState]\n */\nexport function useState(initialState) {\n\tcurrentHook = 1;\n\treturn useReducer(invokeOrReturn, initialState);\n}\n\n/**\n * @param {import('./index').Reducer<any, any>} reducer\n * @param {import('./index').StateUpdater<any>} initialState\n * @param {(initialState: any) => void} [init]\n * @returns {[ any, (state: any) => void ]}\n */\nexport function useReducer(reducer, initialState, init) {\n\t/** @type {import('./internal').ReducerHookState} */\n\tconst hookState = getHookState(currentIndex++, 2);\n\thookState._reducer = reducer;\n\tif (!hookState._component) {\n\t\thookState._value = [\n\t\t\t!init ? invokeOrReturn(undefined, initialState) : init(initialState),\n\n\t\t\taction => {\n\t\t\t\tconst currentValue = hookState._nextValue\n\t\t\t\t\t? hookState._nextValue[0]\n\t\t\t\t\t: hookState._value[0];\n\t\t\t\tconst nextValue = hookState._reducer(currentValue, action);\n\n\t\t\t\tif (currentValue !== nextValue) {\n\t\t\t\t\thookState._nextValue = [nextValue, hookState._value[1]];\n\t\t\t\t\thookState._component.setState({});\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\n\t\thookState._component = currentComponent;\n\n\t\tif (!currentComponent._hasScuFromHooks) {\n\t\t\tcurrentComponent._hasScuFromHooks = true;\n\t\t\tlet prevScu = currentComponent.shouldComponentUpdate;\n\t\t\tconst prevCWU = currentComponent.componentWillUpdate;\n\n\t\t\t// If we're dealing with a forced update `shouldComponentUpdate` will\n\t\t\t// not be called. But we use that to update the hook values, so we\n\t\t\t// need to call it.\n\t\t\tcurrentComponent.componentWillUpdate = function (p, s, c) {\n\t\t\t\tif (this._force) {\n\t\t\t\t\tlet tmp = prevScu;\n\t\t\t\t\t// Clear to avoid other sCU hooks from being called\n\t\t\t\t\tprevScu = undefined;\n\t\t\t\t\tupdateHookState(p, s, c);\n\t\t\t\t\tprevScu = tmp;\n\t\t\t\t}\n\n\t\t\t\tif (prevCWU) prevCWU.call(this, p, s, c);\n\t\t\t};\n\n\t\t\t// This SCU has the purpose of bailing out after repeated updates\n\t\t\t// to stateful hooks.\n\t\t\t// we store the next value in _nextValue[0] and keep doing that for all\n\t\t\t// state setters, if we have next states and\n\t\t\t// all next states within a component end up being equal to their original state\n\t\t\t// we are safe to bail out for this specific component.\n\t\t\t/**\n\t\t\t *\n\t\t\t * @type {import('./internal').Component[\"shouldComponentUpdate\"]}\n\t\t\t */\n\t\t\t// @ts-ignore - We don't use TS to downtranspile\n\t\t\t// eslint-disable-next-line no-inner-declarations\n\t\t\tfunction updateHookState(p, s, c) {\n\t\t\t\tif (!hookState._component.__hooks) return true;\n\n\t\t\t\tconst stateHooks = hookState._component.__hooks._list.filter(\n\t\t\t\t\tx => x._component\n\t\t\t\t);\n\t\t\t\tconst allHooksEmpty = stateHooks.every(x => !x._nextValue);\n\t\t\t\t// When we have no updated hooks in the component we invoke the previous SCU or\n\t\t\t\t// traverse the VDOM tree further.\n\t\t\t\tif (allHooksEmpty) {\n\t\t\t\t\treturn prevScu ? prevScu.call(this, p, s, c) : true;\n\t\t\t\t}\n\n\t\t\t\t// We check whether we have components with a nextValue set that\n\t\t\t\t// have values that aren't equal to one another this pushes\n\t\t\t\t// us to update further down the tree\n\t\t\t\tlet shouldUpdate = false;\n\t\t\t\tstateHooks.forEach(hookItem => {\n\t\t\t\t\tif (hookItem._nextValue) {\n\t\t\t\t\t\tconst currentValue = hookItem._value[0];\n\t\t\t\t\t\thookItem._value = hookItem._nextValue;\n\t\t\t\t\t\thookItem._nextValue = undefined;\n\t\t\t\t\t\tif (currentValue !== hookItem._value[0]) shouldUpdate = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn shouldUpdate || hookState._component.props !== p\n\t\t\t\t\t? prevScu\n\t\t\t\t\t\t? prevScu.call(this, p, s, c)\n\t\t\t\t\t\t: true\n\t\t\t\t\t: false;\n\t\t\t}\n\n\t\t\tcurrentComponent.shouldComponentUpdate = updateHookState;\n\t\t}\n\t}\n\n\treturn hookState._nextValue || hookState._value;\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {any[]} args\n */\nexport function useEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 3);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._pendingArgs = args;\n\n\t\tcurrentComponent.__hooks._pendingEffects.push(state);\n\t}\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {any[]} args\n */\nexport function useLayoutEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 4);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._pendingArgs = args;\n\n\t\tcurrentComponent._renderCallbacks.push(state);\n\t}\n}\n\nexport function useRef(initialValue) {\n\tcurrentHook = 5;\n\treturn useMemo(() => ({ current: initialValue }), []);\n}\n\n/**\n * @param {object} ref\n * @param {() => object} createHandle\n * @param {any[]} args\n */\nexport function useImperativeHandle(ref, createHandle, args) {\n\tcurrentHook = 6;\n\tuseLayoutEffect(\n\t\t() => {\n\t\t\tif (typeof ref == 'function') {\n\t\t\t\tref(createHandle());\n\t\t\t\treturn () => ref(null);\n\t\t\t} else if (ref) {\n\t\t\t\tref.current = createHandle();\n\t\t\t\treturn () => (ref.current = null);\n\t\t\t}\n\t\t},\n\t\targs == null ? args : args.concat(ref)\n\t);\n}\n\n/**\n * @param {() => any} factory\n * @param {any[]} args\n */\nexport function useMemo(factory, args) {\n\t/** @type {import('./internal').MemoHookState} */\n\tconst state = getHookState(currentIndex++, 7);\n\tif (argsChanged(state._args, args)) {\n\t\tstate._pendingValue = factory();\n\t\tstate._pendingArgs = args;\n\t\tstate._factory = factory;\n\t\treturn state._pendingValue;\n\t}\n\n\treturn state._value;\n}\n\n/**\n * @param {() => void} callback\n * @param {any[]} args\n */\nexport function useCallback(callback, args) {\n\tcurrentHook = 8;\n\treturn useMemo(() => callback, args);\n}\n\n/**\n * @param {import('./internal').PreactContext} context\n */\nexport function useContext(context) {\n\tconst provider = currentComponent.context[context._id];\n\t// We could skip this call here, but than we'd not call\n\t// `options._hook`. We need to do that in order to make\n\t// the devtools aware of this hook.\n\t/** @type {import('./internal').ContextHookState} */\n\tconst state = getHookState(currentIndex++, 9);\n\t// The devtools needs access to the context object to\n\t// be able to pull of the default value when no provider\n\t// is present in the tree.\n\tstate._context = context;\n\tif (!provider) return context._defaultValue;\n\t// This is probably not safe to convert to \"!\"\n\tif (state._value == null) {\n\t\tstate._value = true;\n\t\tprovider.sub(currentComponent);\n\t}\n\treturn provider.props.value;\n}\n\n/**\n * Display a custom label for a custom hook for the devtools panel\n * @type {<T>(value: T, cb?: (value: T) => string | number) => void}\n */\nexport function useDebugValue(value, formatter) {\n\tif (options.useDebugValue) {\n\t\toptions.useDebugValue(formatter ? formatter(value) : value);\n\t}\n}\n\n/**\n * @param {(error: any, errorInfo: import('preact').ErrorInfo) => void} cb\n */\nexport function useErrorBoundary(cb) {\n\t/** @type {import('./internal').ErrorBoundaryHookState} */\n\tconst state = getHookState(currentIndex++, 10);\n\tconst errState = useState();\n\tstate._value = cb;\n\tif (!currentComponent.componentDidCatch) {\n\t\tcurrentComponent.componentDidCatch = (err, errorInfo) => {\n\t\t\tif (state._value) state._value(err, errorInfo);\n\t\t\terrState[1](err);\n\t\t};\n\t}\n\treturn [\n\t\terrState[0],\n\t\t() => {\n\t\t\terrState[1](undefined);\n\t\t}\n\t];\n}\n\nexport function useId() {\n\tconst state = getHookState(currentIndex++, 11);\n\tif (!state._value) {\n\t\t// Grab either the root node or the nearest async boundary node.\n\t\t/** @type {import('./internal.d').VNode} */\n\t\tlet root = currentComponent._vnode;\n\t\twhile (root !== null && !root._mask && root._parent !== null) {\n\t\t\troot = root._parent;\n\t\t}\n\n\t\tlet mask = root._mask || (root._mask = [0, 0]);\n\t\tstate._value = 'P' + mask[0] + '-' + mask[1]++;\n\t}\n\n\treturn state._value;\n}\n/**\n * After paint effects consumer.\n */\nfunction flushAfterPaintEffects() {\n\tlet component;\n\twhile ((component = afterPaintEffects.shift())) {\n\t\tif (!component._parentDom || !component.__hooks) continue;\n\t\ttry {\n\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeCleanup);\n\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeEffect);\n\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t} catch (e) {\n\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t}\n}\n\nlet HAS_RAF = typeof requestAnimationFrame == 'function';\n\n/**\n * Schedule a callback to be invoked after the browser has a chance to paint a new frame.\n * Do this by combining requestAnimationFrame (rAF) + setTimeout to invoke a callback after\n * the next browser frame.\n *\n * Also, schedule a timeout in parallel to the the rAF to ensure the callback is invoked\n * even if RAF doesn't fire (for example if the browser tab is not visible)\n *\n * @param {() => void} callback\n */\nfunction afterNextFrame(callback) {\n\tconst done = () => {\n\t\tclearTimeout(timeout);\n\t\tif (HAS_RAF) cancelAnimationFrame(raf);\n\t\tsetTimeout(callback);\n\t};\n\tconst timeout = setTimeout(done, RAF_TIMEOUT);\n\n\tlet raf;\n\tif (HAS_RAF) {\n\t\traf = requestAnimationFrame(done);\n\t}\n}\n\n// Note: if someone used options.debounceRendering = requestAnimationFrame,\n// then effects will ALWAYS run on the NEXT frame instead of the current one, incurring a ~16ms delay.\n// Perhaps this is not such a big deal.\n/**\n * Schedule afterPaintEffects flush after the browser paints\n * @param {number} newQueueLength\n */\nfunction afterPaint(newQueueLength) {\n\tif (newQueueLength === 1 || prevRaf !== options.requestAnimationFrame) {\n\t\tprevRaf = options.requestAnimationFrame;\n\t\t(prevRaf || afterNextFrame)(flushAfterPaintEffects);\n\t}\n}\n\n/**\n * @param {import('./internal').EffectHookState} hook\n */\nfunction invokeCleanup(hook) {\n\t// A hook cleanup can introduce a call to render which creates a new root, this will call options.vnode\n\t// and move the currentComponent away.\n\tconst comp = currentComponent;\n\tlet cleanup = hook._cleanup;\n\tif (typeof cleanup == 'function') {\n\t\thook._cleanup = undefined;\n\t\tcleanup();\n\t}\n\n\tcurrentComponent = comp;\n}\n\n/**\n * Invoke a Hook's effect\n * @param {import('./internal').EffectHookState} hook\n */\nfunction invokeEffect(hook) {\n\t// A hook call can introduce a call to render which creates a new root, this will call options.vnode\n\t// and move the currentComponent away.\n\tconst comp = currentComponent;\n\thook._cleanup = hook._value();\n\tcurrentComponent = comp;\n}\n\n/**\n * @param {any[]} oldArgs\n * @param {any[]} newArgs\n */\nfunction argsChanged(oldArgs, newArgs) {\n\treturn (\n\t\t!oldArgs ||\n\t\toldArgs.length !== newArgs.length ||\n\t\tnewArgs.some((arg, index) => arg !== oldArgs[index])\n\t);\n}\n\nfunction invokeOrReturn(arg, f) {\n\treturn typeof f == 'function' ? f(arg) : f;\n}\n", "/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Check if two objects have a different shape\n * @param {object} a\n * @param {object} b\n * @returns {boolean}\n */\nexport function shallowDiffers(a, b) {\n\tfor (let i in a) if (i !== '__source' && !(i in b)) return true;\n\tfor (let i in b) if (i !== '__source' && a[i] !== b[i]) return true;\n\treturn false;\n}\n\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n\n/**\n * Check if two values are the same value\n * @param {*} x\n * @param {*} y\n * @returns {boolean}\n */\nexport function is(x, y) {\n\treturn (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\n", "import { Component } from 'preact';\nimport { shallowDiffers } from './util';\n\n/**\n * Component class with a predefined `shouldComponentUpdate` implementation\n */\nexport function PureComponent(p) {\n\tthis.props = p;\n}\nPureComponent.prototype = new Component();\n// Some third-party libraries check if this property is present\nPureComponent.prototype.isPureReactComponent = true;\nPureComponent.prototype.shouldComponentUpdate = function (props, state) {\n\treturn shallowDiffers(this.props, props) || shallowDiffers(this.state, state);\n};\n", "import { createElement } from 'preact';\nimport { shallowDiffers } from './util';\n\n/**\n * Memoize a component, so that it only updates when the props actually have\n * changed. This was previously known as `React.pure`.\n * @param {import('./internal').FunctionComponent} c functional component\n * @param {(prev: object, next: object) => boolean} [comparer] Custom equality function\n * @returns {import('./internal').FunctionComponent}\n */\nexport function memo(c, comparer) {\n\tfunction shouldUpdate(nextProps) {\n\t\tlet ref = this.props.ref;\n\t\tlet updateRef = ref == nextProps.ref;\n\t\tif (!updateRef && ref) {\n\t\t\tref.call ? ref(null) : (ref.current = null);\n\t\t}\n\n\t\tif (!comparer) {\n\t\t\treturn shallowDiffers(this.props, nextProps);\n\t\t}\n\n\t\treturn !comparer(this.props, nextProps) || !updateRef;\n\t}\n\n\tfunction Memoed(props) {\n\t\tthis.shouldComponentUpdate = shouldUpdate;\n\t\treturn createElement(c, props);\n\t}\n\tMemoed.displayName = 'Memo(' + (c.displayName || c.name) + ')';\n\tMemoed.prototype.isReactComponent = true;\n\tMemoed._forwarded = true;\n\treturn Memoed;\n}\n", "import { options } from 'preact';\nimport { assign } from './util';\n\nlet oldDiffHook = options._diff;\noptions._diff = vnode => {\n\tif (vnode.type && vnode.type._forwarded && vnode.ref) {\n\t\tvnode.props.ref = vnode.ref;\n\t\tvnode.ref = null;\n\t}\n\tif (oldDiffHook) oldDiffHook(vnode);\n};\n\nexport const REACT_FORWARD_SYMBOL =\n\t(typeof Symbol != 'undefined' &&\n\t\tSymbol.for &&\n\t\tSymbol.for('react.forward_ref')) ||\n\t0xf47;\n\n/**\n * Pass ref down to a child. This is mainly used in libraries with HOCs that\n * wrap components. Using `forwardRef` there is an easy way to get a reference\n * of the wrapped component instead of one of the wrapper itself.\n * @param {import('./index').ForwardFn} fn\n * @returns {import('./internal').FunctionComponent}\n */\nexport function forwardRef(fn) {\n\tfunction Forwarded(props) {\n\t\tlet clone = assign({}, props);\n\t\tdelete clone.ref;\n\t\treturn fn(clone, props.ref || null);\n\t}\n\n\t// mobx-react checks for this being present\n\tForwarded.$$typeof = REACT_FORWARD_SYMBOL;\n\t// mobx-react heavily relies on implementation details.\n\t// It expects an object here with a `render` property,\n\t// and prototype.render will fail. Without this\n\t// mobx-react throws.\n\tForwarded.render = Forwarded;\n\n\tForwarded.prototype.isReactComponent = Forwarded._forwarded = true;\n\tForwarded.displayName = 'ForwardRef(' + (fn.displayName || fn.name) + ')';\n\treturn Forwarded;\n}\n", "import { toChildArray } from 'preact';\n\nconst mapFn = (children, fn) => {\n\tif (children == null) return null;\n\treturn toChildArray(toChildArray(children).map(fn));\n};\n\n// This API is completely unnecessary for Preact, so it's basically passthrough.\nexport const Children = {\n\tmap: mapFn,\n\tforEach: mapFn,\n\tcount(children) {\n\t\treturn children ? toChildArray(children).length : 0;\n\t},\n\tonly(children) {\n\t\tconst normalized = toChildArray(children);\n\t\tif (normalized.length !== 1) throw 'Children.only';\n\t\treturn normalized[0];\n\t},\n\ttoArray: toChildArray\n};\n", "import { Component, createElement, options, Fragment } from 'preact';\nimport { assign } from './util';\n\nconst oldCatchError = options._catchError;\noptions._catchError = function (error, newVNode, oldVNode, errorInfo) {\n\tif (error.then) {\n\t\t/** @type {import('./internal').Component} */\n\t\tlet component;\n\t\tlet vnode = newVNode;\n\n\t\tfor (; (vnode = vnode._parent); ) {\n\t\t\tif ((component = vnode._component) && component._childDidSuspend) {\n\t\t\t\tif (newVNode._dom == null) {\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t}\n\t\t\t\t// Don't call oldCatchError if we found a Suspense\n\t\t\t\treturn component._childDidSuspend(error, newVNode);\n\t\t\t}\n\t\t}\n\t}\n\toldCatchError(error, newVNode, oldVNode, errorInfo);\n};\n\nconst oldUnmount = options.unmount;\noptions.unmount = function (vnode) {\n\t/** @type {import('./internal').Component} */\n\tconst component = vnode._component;\n\tif (component && component._onResolve) {\n\t\tcomponent._onResolve();\n\t}\n\n\t// if the component is still hydrating\n\t// most likely it is because the component is suspended\n\t// we set the vnode.type as `null` so that it is not a typeof function\n\t// so the unmount will remove the vnode._dom\n\tif (component && vnode._hydrating === true) {\n\t\tvnode.type = null;\n\t}\n\n\tif (oldUnmount) oldUnmount(vnode);\n};\n\nfunction detachedClone(vnode, detachedParent, parentDom) {\n\tif (vnode) {\n\t\tif (vnode._component && vnode._component.__hooks) {\n\t\t\tvnode._component.__hooks._list.forEach(effect => {\n\t\t\t\tif (typeof effect._cleanup == 'function') effect._cleanup();\n\t\t\t});\n\n\t\t\tvnode._component.__hooks = null;\n\t\t}\n\n\t\tvnode = assign({}, vnode);\n\t\tif (vnode._component != null) {\n\t\t\tif (vnode._component._parentDom === parentDom) {\n\t\t\t\tvnode._component._parentDom = detachedParent;\n\t\t\t}\n\t\t\tvnode._component = null;\n\t\t}\n\n\t\tvnode._children =\n\t\t\tvnode._children &&\n\t\t\tvnode._children.map(child =>\n\t\t\t\tdetachedClone(child, detachedParent, parentDom)\n\t\t\t);\n\t}\n\n\treturn vnode;\n}\n\nfunction removeOriginal(vnode, detachedParent, originalParent) {\n\tif (vnode) {\n\t\tvnode._original = null;\n\t\tvnode._children =\n\t\t\tvnode._children &&\n\t\t\tvnode._children.map(child =>\n\t\t\t\tremoveOriginal(child, detachedParent, originalParent)\n\t\t\t);\n\n\t\tif (vnode._component) {\n\t\t\tif (vnode._component._parentDom === detachedParent) {\n\t\t\t\tif (vnode._dom) {\n\t\t\t\t\toriginalParent.insertBefore(vnode._dom, vnode._nextDom);\n\t\t\t\t}\n\t\t\t\tvnode._component._force = true;\n\t\t\t\tvnode._component._parentDom = originalParent;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn vnode;\n}\n\n// having custom inheritance instead of a class here saves a lot of bytes\nexport function Suspense() {\n\t// we do not call super here to golf some bytes...\n\tthis._pendingSuspensionCount = 0;\n\tthis._suspenders = null;\n\tthis._detachOnNextRender = null;\n}\n\n// Things we do here to save some bytes but are not proper JS inheritance:\n// - call `new Component()` as the prototype\n// - do not set `Suspense.prototype.constructor` to `Suspense`\nSuspense.prototype = new Component();\n\n/**\n * @this {import('./internal').SuspenseComponent}\n * @param {Promise} promise The thrown promise\n * @param {import('./internal').VNode<any, any>} suspendingVNode The suspending component\n */\nSuspense.prototype._childDidSuspend = function (promise, suspendingVNode) {\n\tconst suspendingComponent = suspendingVNode._component;\n\n\t/** @type {import('./internal').SuspenseComponent} */\n\tconst c = this;\n\n\tif (c._suspenders == null) {\n\t\tc._suspenders = [];\n\t}\n\tc._suspenders.push(suspendingComponent);\n\n\tconst resolve = suspended(c._vnode);\n\n\tlet resolved = false;\n\tconst onResolved = () => {\n\t\tif (resolved) return;\n\n\t\tresolved = true;\n\t\tsuspendingComponent._onResolve = null;\n\n\t\tif (resolve) {\n\t\t\tresolve(onSuspensionComplete);\n\t\t} else {\n\t\t\tonSuspensionComplete();\n\t\t}\n\t};\n\n\tsuspendingComponent._onResolve = onResolved;\n\n\tconst onSuspensionComplete = () => {\n\t\tif (!--c._pendingSuspensionCount) {\n\t\t\t// If the suspension was during hydration we don't need to restore the\n\t\t\t// suspended children into the _children array\n\t\t\tif (c.state._suspended) {\n\t\t\t\tconst suspendedVNode = c.state._suspended;\n\t\t\t\tc._vnode._children[0] = removeOriginal(\n\t\t\t\t\tsuspendedVNode,\n\t\t\t\t\tsuspendedVNode._component._parentDom,\n\t\t\t\t\tsuspendedVNode._component._originalParentDom\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tc.setState({ _suspended: (c._detachOnNextRender = null) });\n\n\t\t\tlet suspended;\n\t\t\twhile ((suspended = c._suspenders.pop())) {\n\t\t\t\tsuspended.forceUpdate();\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * We do not set `suspended: true` during hydration because we want the actual markup\n\t * to remain on screen and hydrate it when the suspense actually gets resolved.\n\t * While in non-hydration cases the usual fallback -> component flow would occour.\n\t */\n\tconst wasHydrating = suspendingVNode._hydrating === true;\n\tif (!c._pendingSuspensionCount++ && !wasHydrating) {\n\t\tc.setState({ _suspended: (c._detachOnNextRender = c._vnode._children[0]) });\n\t}\n\tpromise.then(onResolved, onResolved);\n};\n\nSuspense.prototype.componentWillUnmount = function () {\n\tthis._suspenders = [];\n};\n\n/**\n * @this {import('./internal').SuspenseComponent}\n * @param {import('./internal').SuspenseComponent[\"props\"]} props\n * @param {import('./internal').SuspenseState} state\n */\nSuspense.prototype.render = function (props, state) {\n\tif (this._detachOnNextRender) {\n\t\t// When the Suspense's _vnode was created by a call to createVNode\n\t\t// (i.e. due to a setState further up in the tree)\n\t\t// it's _children prop is null, in this case we \"forget\" about the parked vnodes to detach\n\t\tif (this._vnode._children) {\n\t\t\tconst detachedParent = document.createElement('div');\n\t\t\tconst detachedComponent = this._vnode._children[0]._component;\n\t\t\tthis._vnode._children[0] = detachedClone(\n\t\t\t\tthis._detachOnNextRender,\n\t\t\t\tdetachedParent,\n\t\t\t\t(detachedComponent._originalParentDom = detachedComponent._parentDom)\n\t\t\t);\n\t\t}\n\n\t\tthis._detachOnNextRender = null;\n\t}\n\n\t// Wrap fallback tree in a VNode that prevents itself from being marked as aborting mid-hydration:\n\t/** @type {import('./internal').VNode} */\n\tconst fallback =\n\t\tstate._suspended && createElement(Fragment, null, props.fallback);\n\tif (fallback) fallback._hydrating = null;\n\n\treturn [\n\t\tcreateElement(Fragment, null, state._suspended ? null : props.children),\n\t\tfallback\n\t];\n};\n\n/**\n * Checks and calls the parent component's _suspended method, passing in the\n * suspended vnode. This is a way for a parent (e.g. SuspenseList) to get notified\n * that one of its children/descendants suspended.\n *\n * The parent MAY return a callback. The callback will get called when the\n * suspension resolves, notifying the parent of the fact.\n * Moreover, the callback gets function `unsuspend` as a parameter. The resolved\n * child descendant will not actually get unsuspended until `unsuspend` gets called.\n * This is a way for the parent to delay unsuspending.\n *\n * If the parent does not return a callback then the resolved vnode\n * gets unsuspended immediately when it resolves.\n *\n * @param {import('./internal').VNode} vnode\n * @returns {((unsuspend: () => void) => void)?}\n */\nexport function suspended(vnode) {\n\t/** @type {import('./internal').Component} */\n\tlet component = vnode._parent._component;\n\treturn component && component._suspended && component._suspended(vnode);\n}\n\nexport function lazy(loader) {\n\tlet prom;\n\tlet component;\n\tlet error;\n\n\tfunction Lazy(props) {\n\t\tif (!prom) {\n\t\t\tprom = loader();\n\t\t\tprom.then(\n\t\t\t\texports => {\n\t\t\t\t\tcomponent = exports.default || exports;\n\t\t\t\t},\n\t\t\t\te => {\n\t\t\t\t\terror = e;\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\tif (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (!component) {\n\t\t\tthrow prom;\n\t\t}\n\n\t\treturn createElement(component, props);\n\t}\n\n\tLazy.displayName = 'Lazy';\n\tLazy._forwarded = true;\n\treturn Lazy;\n}\n", "import { Component, toChildArray } from 'preact';\nimport { suspended } from './suspense.js';\n\n// Indexes to linked list nodes (nodes are stored as arrays to save bytes).\nconst SUSPENDED_COUNT = 0;\nconst RESOLVED_COUNT = 1;\nconst NEXT_NODE = 2;\n\n// Having custom inheritance instead of a class here saves a lot of bytes.\nexport function SuspenseList() {\n\tthis._next = null;\n\tthis._map = null;\n}\n\n// Mark one of child's earlier suspensions as resolved.\n// Some pending callbacks may become callable due to this\n// (e.g. the last suspended descendant gets resolved when\n// revealOrder === 'together'). Process those callbacks as well.\nconst resolve = (list, child, node) => {\n\tif (++node[RESOLVED_COUNT] === node[SUSPENDED_COUNT]) {\n\t\t// The number a child (or any of its descendants) has been suspended\n\t\t// matches the number of times it's been resolved. Therefore we\n\t\t// mark the child as completely resolved by deleting it from ._map.\n\t\t// This is used to figure out when *all* children have been completely\n\t\t// resolved when revealOrder is 'together'.\n\t\tlist._map.delete(child);\n\t}\n\n\t// If revealOrder is falsy then we can do an early exit, as the\n\t// callbacks won't get queued in the node anyway.\n\t// If revealOrder is 'together' then also do an early exit\n\t// if all suspended descendants have not yet been resolved.\n\tif (\n\t\t!list.props.revealOrder ||\n\t\t(list.props.revealOrder[0] === 't' && list._map.size)\n\t) {\n\t\treturn;\n\t}\n\n\t// Walk the currently suspended children in order, calling their\n\t// stored callbacks on the way. Stop if we encounter a child that\n\t// has not been completely resolved yet.\n\tnode = list._next;\n\twhile (node) {\n\t\twhile (node.length > 3) {\n\t\t\tnode.pop()();\n\t\t}\n\t\tif (node[RESOLVED_COUNT] < node[SUSPENDED_COUNT]) {\n\t\t\tbreak;\n\t\t}\n\t\tlist._next = node = node[NEXT_NODE];\n\t}\n};\n\n// Things we do here to save some bytes but are not proper JS inheritance:\n// - call `new Component()` as the prototype\n// - do not set `Suspense.prototype.constructor` to `Suspense`\nSuspenseList.prototype = new Component();\n\nSuspenseList.prototype._suspended = function (child) {\n\tconst list = this;\n\tconst delegated = suspended(list._vnode);\n\n\tlet node = list._map.get(child);\n\tnode[SUSPENDED_COUNT]++;\n\n\treturn unsuspend => {\n\t\tconst wrappedUnsuspend = () => {\n\t\t\tif (!list.props.revealOrder) {\n\t\t\t\t// Special case the undefined (falsy) revealOrder, as there\n\t\t\t\t// is no need to coordinate a specific order or unsuspends.\n\t\t\t\tunsuspend();\n\t\t\t} else {\n\t\t\t\tnode.push(unsuspend);\n\t\t\t\tresolve(list, child, node);\n\t\t\t}\n\t\t};\n\t\tif (delegated) {\n\t\t\tdelegated(wrappedUnsuspend);\n\t\t} else {\n\t\t\twrappedUnsuspend();\n\t\t}\n\t};\n};\n\nSuspenseList.prototype.render = function (props) {\n\tthis._next = null;\n\tthis._map = new Map();\n\n\tconst children = toChildArray(props.children);\n\tif (props.revealOrder && props.revealOrder[0] === 'b') {\n\t\t// If order === 'backwards' (or, well, anything starting with a 'b')\n\t\t// then flip the child list around so that the last child will be\n\t\t// the first in the linked list.\n\t\tchildren.reverse();\n\t}\n\t// Build the linked list. Iterate through the children in reverse order\n\t// so that `_next` points to the first linked list node to be resolved.\n\tfor (let i = children.length; i--; ) {\n\t\t// Create a new linked list node as an array of form:\n\t\t// \t[suspended_count, resolved_count, next_node]\n\t\t// where suspended_count and resolved_count are numeric counters for\n\t\t// keeping track how many times a node has been suspended and resolved.\n\t\t//\n\t\t// Note that suspended_count starts from 1 instead of 0, so we can block\n\t\t// processing callbacks until componentDidMount has been called. In a sense\n\t\t// node is suspended at least until componentDidMount gets called!\n\t\t//\n\t\t// Pending callbacks are added to the end of the node:\n\t\t// \t[suspended_count, resolved_count, next_node, callback_0, callback_1, ...]\n\t\tthis._map.set(children[i], (this._next = [1, 0, this._next]));\n\t}\n\treturn props.children;\n};\n\nSuspenseList.prototype.componentDidUpdate =\n\tSuspenseList.prototype.componentDidMount = function () {\n\t\t// Iterate through all children after mounting for two reasons:\n\t\t// 1. As each node[SUSPENDED_COUNT] starts from 1, this iteration increases\n\t\t//    each node[RELEASED_COUNT] by 1, therefore balancing the counters.\n\t\t//    The nodes can now be completely consumed from the linked list.\n\t\t// 2. Handle nodes that might have gotten resolved between render and\n\t\t//    componentDidMount.\n\t\tthis._map.forEach((node, child) => {\n\t\t\tresolve(this, child, node);\n\t\t});\n\t};\n", "import { createElement, render } from 'preact';\n\n/**\n * @param {import('../../src/index').RenderableProps<{ context: any }>} props\n */\nfunction ContextProvider(props) {\n\tthis.getChildContext = () => props.context;\n\treturn props.children;\n}\n\n/**\n * Portal component\n * @this {import('./internal').Component}\n * @param {object | null | undefined} props\n *\n * TODO: use createRoot() instead of fake root\n */\nfunction Portal(props) {\n\tconst _this = this;\n\tlet container = props._container;\n\n\t_this.componentWillUnmount = function () {\n\t\trender(null, _this._temp);\n\t\t_this._temp = null;\n\t\t_this._container = null;\n\t};\n\n\t// When we change container we should clear our old container and\n\t// indicate a new mount.\n\tif (_this._container && _this._container !== container) {\n\t\t_this.componentWillUnmount();\n\t}\n\n\t// When props.vnode is undefined/false/null we are dealing with some kind of\n\t// conditional vnode. This should not trigger a render.\n\tif (props._vnode) {\n\t\tif (!_this._temp) {\n\t\t\t_this._container = container;\n\n\t\t\t// Create a fake DOM parent node that manages a subset of `container`'s children:\n\t\t\t_this._temp = {\n\t\t\t\tnodeType: 1,\n\t\t\t\tparentNode: container,\n\t\t\t\tchildNodes: [],\n\t\t\t\tappendChild(child) {\n\t\t\t\t\tthis.childNodes.push(child);\n\t\t\t\t\t_this._container.appendChild(child);\n\t\t\t\t},\n\t\t\t\tinsertBefore(child, before) {\n\t\t\t\t\tthis.childNodes.push(child);\n\t\t\t\t\t_this._container.appendChild(child);\n\t\t\t\t},\n\t\t\t\tremoveChild(child) {\n\t\t\t\t\tthis.childNodes.splice(this.childNodes.indexOf(child) >>> 1, 1);\n\t\t\t\t\t_this._container.removeChild(child);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t// Render our wrapping element into temp.\n\t\trender(\n\t\t\tcreateElement(ContextProvider, { context: _this.context }, props._vnode),\n\t\t\t_this._temp\n\t\t);\n\t}\n\t// When we come from a conditional render, on a mounted\n\t// portal we should clear the DOM.\n\telse if (_this._temp) {\n\t\t_this.componentWillUnmount();\n\t}\n}\n\n/**\n * Create a `Portal` to continue rendering the vnode tree at a different DOM node\n * @param {import('./internal').VNode} vnode The vnode to render\n * @param {import('./internal').PreactElement} container The DOM node to continue rendering in to.\n */\nexport function createPortal(vnode, container) {\n\tconst el = createElement(Portal, { _vnode: vnode, _container: container });\n\tel.containerInfo = container;\n\treturn el;\n}\n", "import {\n\trender as preactRender,\n\thydrate as preactHydrate,\n\toptions,\n\ttoChildArray,\n\tComponent\n} from 'preact';\n\nexport const REACT_ELEMENT_TYPE =\n\t(typeof Symbol != 'undefined' && Symbol.for && Symbol.for('react.element')) ||\n\t0xeac7;\n\nconst CAMEL_PROPS =\n\t/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/;\nconst ON_ANI = /^on(Ani|Tra|Tou|BeforeInp|Compo)/;\nconst CAMEL_REPLACE = /[A-Z0-9]/g;\n\nconst IS_DOM = typeof document !== 'undefined';\n\n// Input types for which onchange should not be converted to oninput.\n// type=\"file|checkbox|radio\", plus \"range\" in IE11.\n// (IE11 doesn't support Symbol, which we use here to turn `rad` into `ra` which matches \"range\")\nconst onChangeInputType = type =>\n\t(typeof Symbol != 'undefined' && typeof Symbol() == 'symbol'\n\t\t? /fil|che|rad/\n\t\t: /fil|che|ra/\n\t).test(type);\n\n// Some libraries like `react-virtualized` explicitly check for this.\nComponent.prototype.isReactComponent = {};\n\n// `UNSAFE_*` lifecycle hooks\n// Preact only ever invokes the unprefixed methods.\n// Here we provide a base \"fallback\" implementation that calls any defined UNSAFE_ prefixed method.\n// - If a component defines its own `componentDidMount()` (including via defineProperty), use that.\n// - If a component defines `UNSAFE_componentDidMount()`, `componentDidMount` is the alias getter/setter.\n// - If anything assigns to an `UNSAFE_*` property, the assignment is forwarded to the unprefixed property.\n// See https://github.com/preactjs/preact/issues/1941\n[\n\t'componentWillMount',\n\t'componentWillReceiveProps',\n\t'componentWillUpdate'\n].forEach(key => {\n\tObject.defineProperty(Component.prototype, key, {\n\t\tconfigurable: true,\n\t\tget() {\n\t\t\treturn this['UNSAFE_' + key];\n\t\t},\n\t\tset(v) {\n\t\t\tObject.defineProperty(this, key, {\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true,\n\t\t\t\tvalue: v\n\t\t\t});\n\t\t}\n\t});\n});\n\n/**\n * Proxy render() since React returns a Component reference.\n * @param {import('./internal').VNode} vnode VNode tree to render\n * @param {import('./internal').PreactElement} parent DOM node to render vnode tree into\n * @param {() => void} [callback] Optional callback that will be called after rendering\n * @returns {import('./internal').Component | null} The root component reference or null\n */\nexport function render(vnode, parent, callback) {\n\t// React destroys any existing DOM nodes, see #1727\n\t// ...but only on the first render, see #1828\n\tif (parent._children == null) {\n\t\tparent.textContent = '';\n\t}\n\n\tpreactRender(vnode, parent);\n\tif (typeof callback == 'function') callback();\n\n\treturn vnode ? vnode._component : null;\n}\n\nexport function hydrate(vnode, parent, callback) {\n\tpreactHydrate(vnode, parent);\n\tif (typeof callback == 'function') callback();\n\n\treturn vnode ? vnode._component : null;\n}\n\nlet oldEventHook = options.event;\noptions.event = e => {\n\tif (oldEventHook) e = oldEventHook(e);\n\te.persist = empty;\n\te.isPropagationStopped = isPropagationStopped;\n\te.isDefaultPrevented = isDefaultPrevented;\n\treturn (e.nativeEvent = e);\n};\n\nfunction empty() {}\n\nfunction isPropagationStopped() {\n\treturn this.cancelBubble;\n}\n\nfunction isDefaultPrevented() {\n\treturn this.defaultPrevented;\n}\n\nconst classNameDescriptorNonEnumberable = {\n\tenumerable: false,\n\tconfigurable: true,\n\tget() {\n\t\treturn this.class;\n\t}\n};\n\nfunction handleDomVNode(vnode) {\n\tlet props = vnode.props,\n\t\ttype = vnode.type,\n\t\tnormalizedProps = {};\n\n\tfor (let i in props) {\n\t\tlet value = props[i];\n\n\t\tif (\n\t\t\t(i === 'value' && 'defaultValue' in props && value == null) ||\n\t\t\t// Emulate React's behavior of not rendering the contents of noscript tags on the client.\n\t\t\t(IS_DOM && i === 'children' && type === 'noscript') ||\n\t\t\ti === 'class' ||\n\t\t\ti === 'className'\n\t\t) {\n\t\t\t// Skip applying value if it is null/undefined and we already set\n\t\t\t// a default value\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet lowerCased = i.toLowerCase();\n\t\tif (i === 'defaultValue' && 'value' in props && props.value == null) {\n\t\t\t// `defaultValue` is treated as a fallback `value` when a value prop is present but null/undefined.\n\t\t\t// `defaultValue` for Elements with no value prop is the same as the DOM defaultValue property.\n\t\t\ti = 'value';\n\t\t} else if (i === 'download' && value === true) {\n\t\t\t// Calling `setAttribute` with a truthy value will lead to it being\n\t\t\t// passed as a stringified value, e.g. `download=\"true\"`. React\n\t\t\t// converts it to an empty string instead, otherwise the attribute\n\t\t\t// value will be used as the file name and the file will be called\n\t\t\t// \"true\" upon downloading it.\n\t\t\tvalue = '';\n\t\t} else if (lowerCased === 'ondoubleclick') {\n\t\t\ti = 'ondblclick';\n\t\t} else if (\n\t\t\tlowerCased === 'onchange' &&\n\t\t\t(type === 'input' || type === 'textarea') &&\n\t\t\t!onChangeInputType(props.type)\n\t\t) {\n\t\t\tlowerCased = i = 'oninput';\n\t\t} else if (lowerCased === 'onfocus') {\n\t\t\ti = 'onfocusin';\n\t\t} else if (lowerCased === 'onblur') {\n\t\t\ti = 'onfocusout';\n\t\t} else if (ON_ANI.test(i)) {\n\t\t\ti = lowerCased;\n\t\t} else if (type.indexOf('-') === -1 && CAMEL_PROPS.test(i)) {\n\t\t\ti = i.replace(CAMEL_REPLACE, '-$&').toLowerCase();\n\t\t} else if (value === null) {\n\t\t\tvalue = undefined;\n\t\t}\n\n\t\t// Add support for onInput and onChange, see #3561\n\t\t// if we have an oninput prop already change it to oninputCapture\n\t\tif (lowerCased === 'oninput') {\n\t\t\ti = lowerCased;\n\t\t\tif (normalizedProps[i]) {\n\t\t\t\ti = 'oninputCapture';\n\t\t\t}\n\t\t}\n\n\t\tnormalizedProps[i] = value;\n\t}\n\n\t// Add support for array select values: <select multiple value={[]} />\n\tif (\n\t\ttype == 'select' &&\n\t\tnormalizedProps.multiple &&\n\t\tArray.isArray(normalizedProps.value)\n\t) {\n\t\t// forEach() always returns undefined, which we abuse here to unset the value prop.\n\t\tnormalizedProps.value = toChildArray(props.children).forEach(child => {\n\t\t\tchild.props.selected =\n\t\t\t\tnormalizedProps.value.indexOf(child.props.value) != -1;\n\t\t});\n\t}\n\n\t// Adding support for defaultValue in select tag\n\tif (type == 'select' && normalizedProps.defaultValue != null) {\n\t\tnormalizedProps.value = toChildArray(props.children).forEach(child => {\n\t\t\tif (normalizedProps.multiple) {\n\t\t\t\tchild.props.selected =\n\t\t\t\t\tnormalizedProps.defaultValue.indexOf(child.props.value) != -1;\n\t\t\t} else {\n\t\t\t\tchild.props.selected =\n\t\t\t\t\tnormalizedProps.defaultValue == child.props.value;\n\t\t\t}\n\t\t});\n\t}\n\n\tif (props.class && !props.className) {\n\t\tnormalizedProps.class = props.class;\n\t\tObject.defineProperty(\n\t\t\tnormalizedProps,\n\t\t\t'className',\n\t\t\tclassNameDescriptorNonEnumberable\n\t\t);\n\t} else if (props.className && !props.class) {\n\t\tnormalizedProps.class = normalizedProps.className = props.className;\n\t} else if (props.class && props.className) {\n\t\tnormalizedProps.class = normalizedProps.className = props.className;\n\t}\n\n\tvnode.props = normalizedProps;\n}\n\nlet oldVNodeHook = options.vnode;\noptions.vnode = vnode => {\n\t// only normalize props on Element nodes\n\tif (typeof vnode.type === 'string') {\n\t\thandleDomVNode(vnode);\n\t}\n\n\tvnode.$$typeof = REACT_ELEMENT_TYPE;\n\n\tif (oldVNodeHook) oldVNodeHook(vnode);\n};\n\n// Only needed for react-relay\nlet currentComponent;\nconst oldBeforeRender = options._render;\noptions._render = function (vnode) {\n\tif (oldBeforeRender) {\n\t\toldBeforeRender(vnode);\n\t}\n\tcurrentComponent = vnode._component;\n};\n\nconst oldDiffed = options.diffed;\n/** @type {(vnode: import('./internal').VNode)} */\noptions.diffed = function (vnode) {\n\tif (oldDiffed) {\n\t\toldDiffed(vnode);\n\t}\n\n\tconst props = vnode.props;\n\tconst dom = vnode._dom;\n\tif (\n\t\tdom != null &&\n\t\tvnode.type === 'textarea' &&\n\t\t'value' in props &&\n\t\tprops.value !== dom.value\n\t) {\n\t\tdom.value = props.value == null ? '' : props.value;\n\t}\n\n\tcurrentComponent = null;\n};\n\n// This is a very very private internal function for React it\n// is used to sort-of do runtime dependency injection. So far\n// only `react-relay` makes use of it. It uses it to read the\n// context value.\nexport const __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = {\n\tReactCurrentDispatcher: {\n\t\tcurrent: {\n\t\t\treadContext(context) {\n\t\t\t\treturn currentComponent._globalContext[context._id].props.value;\n\t\t\t}\n\t\t}\n\t}\n};\n", "import {\n\tcreateElement,\n\trender as preactRender,\n\tcloneElement as preactCloneElement,\n\tcreateRef,\n\tComponent,\n\tcreateContext,\n\tFragment\n} from 'preact';\nimport {\n\tuseState,\n\tuseId,\n\tuseReducer,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseRef,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseCallback,\n\tuseContext,\n\tuseDebugValue\n} from 'preact/hooks';\nimport { PureComponent } from './PureComponent';\nimport { memo } from './memo';\nimport { forwardRef } from './forwardRef';\nimport { Children } from './Children';\nimport { Suspense, lazy } from './suspense';\nimport { SuspenseList } from './suspense-list';\nimport { createPortal } from './portals';\nimport { is } from './util';\nimport {\n\thydrate,\n\trender,\n\tREACT_ELEMENT_TYPE,\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n} from './render';\n\nconst version = '17.0.2'; // trick libraries to think we are react\n\n/**\n * Legacy version of createElement.\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component constructor\n */\nfunction createFactory(type) {\n\treturn createElement.bind(null, type);\n}\n\n/**\n * Check if the passed element is a valid (p)react node.\n * @param {*} element The element to check\n * @returns {boolean}\n */\nfunction isValidElement(element) {\n\treturn !!element && element.$$typeof === REACT_ELEMENT_TYPE;\n}\n\n/**\n * Wrap `cloneElement` to abort if the passed element is not a valid element and apply\n * all vnode normalizations.\n * @param {import('./internal').VNode} element The vnode to clone\n * @param {object} props Props to add when cloning\n * @param {Array<import('./internal').ComponentChildren>} rest Optional component children\n */\nfunction cloneElement(element) {\n\tif (!isValidElement(element)) return element;\n\treturn preactCloneElement.apply(null, arguments);\n}\n\n/**\n * Remove a component tree from the DOM, including state and event handlers.\n * @param {import('./internal').PreactElement} container\n * @returns {boolean}\n */\nfunction unmountComponentAtNode(container) {\n\tif (container._children) {\n\t\tpreactRender(null, container);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\n/**\n * Get the matching DOM node for a component\n * @param {import('./internal').Component} component\n * @returns {import('./internal').PreactElement | null}\n */\nfunction findDOMNode(component) {\n\treturn (\n\t\t(component &&\n\t\t\t(component.base || (component.nodeType === 1 && component))) ||\n\t\tnull\n\t);\n}\n\n/**\n * Deprecated way to control batched rendering inside the reconciler, but we\n * already schedule in batches inside our rendering code\n * @template Arg\n * @param {(arg: Arg) => void} callback function that triggers the updated\n * @param {Arg} [arg] Optional argument that can be passed to the callback\n */\n// eslint-disable-next-line camelcase\nconst unstable_batchedUpdates = (callback, arg) => callback(arg);\n\n/**\n * In React, `flushSync` flushes the entire tree and forces a rerender. It's\n * implmented here as a no-op.\n * @template Arg\n * @template Result\n * @param {(arg: Arg) => Result} callback function that runs before the flush\n * @param {Arg} [arg] Optional argument that can be passed to the callback\n * @returns\n */\nconst flushSync = (callback, arg) => callback(arg);\n\n/**\n * Strict Mode is not implemented in Preact, so we provide a stand-in for it\n * that just renders its children without imposing any restrictions.\n */\nconst StrictMode = Fragment;\n\nexport function startTransition(cb) {\n\tcb();\n}\n\nexport function useDeferredValue(val) {\n\treturn val;\n}\n\nexport function useTransition() {\n\treturn [false, startTransition];\n}\n\n// TODO: in theory this should be done after a VNode is diffed as we want to insert\n// styles/... before it attaches\nexport const useInsertionEffect = useLayoutEffect;\n\n/**\n * This is taken from https://github.com/facebook/react/blob/main/packages/use-sync-external-store/src/useSyncExternalStoreShimClient.js#L84\n * on a high level this cuts out the warnings, ... and attempts a smaller implementation\n */\nexport function useSyncExternalStore(subscribe, getSnapshot) {\n\tconst value = getSnapshot();\n\n\tconst [{ _instance }, forceUpdate] = useState({\n\t\t_instance: { _value: value, _getSnapshot: getSnapshot }\n\t});\n\n\tuseLayoutEffect(() => {\n\t\t_instance._value = value;\n\t\t_instance._getSnapshot = getSnapshot;\n\n\t\tif (!is(_instance._value, getSnapshot())) {\n\t\t\tforceUpdate({ _instance });\n\t\t}\n\t}, [subscribe, value, getSnapshot]);\n\n\tuseEffect(() => {\n\t\tif (!is(_instance._value, _instance._getSnapshot())) {\n\t\t\tforceUpdate({ _instance });\n\t\t}\n\n\t\treturn subscribe(() => {\n\t\t\tif (!is(_instance._value, _instance._getSnapshot())) {\n\t\t\t\tforceUpdate({ _instance });\n\t\t\t}\n\t\t});\n\t}, [subscribe]);\n\n\treturn value;\n}\n\nexport * from 'preact/hooks';\nexport {\n\tversion,\n\tChildren,\n\trender,\n\thydrate,\n\tunmountComponentAtNode,\n\tcreatePortal,\n\tcreateElement,\n\tcreateContext,\n\tcreateFactory,\n\tcloneElement,\n\tcreateRef,\n\tFragment,\n\tisValidElement,\n\tfindDOMNode,\n\tComponent,\n\tPureComponent,\n\tmemo,\n\tforwardRef,\n\tflushSync,\n\t// eslint-disable-next-line camelcase\n\tunstable_batchedUpdates,\n\tStrictMode,\n\tSuspense,\n\tSuspenseList,\n\tlazy,\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n};\n\n// React copies the named exports to the default one.\nexport default {\n\tuseState,\n\tuseId,\n\tuseReducer,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseInsertionEffect,\n\tuseTransition,\n\tuseDeferredValue,\n\tuseSyncExternalStore,\n\tstartTransition,\n\tuseRef,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseCallback,\n\tuseContext,\n\tuseDebugValue,\n\tversion,\n\tChildren,\n\trender,\n\thydrate,\n\tunmountComponentAtNode,\n\tcreatePortal,\n\tcreateElement,\n\tcreateContext,\n\tcreateFactory,\n\tcloneElement,\n\tcreateRef,\n\tFragment,\n\tisValidElement,\n\tfindDOMNode,\n\tComponent,\n\tPureComponent,\n\tmemo,\n\tforwardRef,\n\tflushSync,\n\tunstable_batchedUpdates,\n\tStrictMode,\n\tSuspense,\n\tSuspenseList,\n\tlazy,\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n};\n", "/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\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 && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\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", "import { options, Fragment } from 'preact';\n\n/** @typedef {import('preact').VNode} VNode */\n\nlet vnodeId = 0;\n\n/**\n * @fileoverview\n * This file exports various methods that implement Babel's \"automatic\" JSX runtime API:\n * - jsx(type, props, key)\n * - jsxs(type, props, key)\n * - jsxDEV(type, props, key, __source, __self)\n *\n * The implementation of createVNode here is optimized for performance.\n * Benchmarks: https://esbench.com/bench/5f6b54a0b4632100a7dcd2b3\n */\n\n/**\n * JSX.Element factory used by Babel's {runtime:\"automatic\"} JSX transform\n * @param {VNode['type']} type\n * @param {VNode['props']} props\n * @param {VNode['key']} [key]\n * @param {unknown} [isStaticChildren]\n * @param {unknown} [__source]\n * @param {unknown} [__self]\n */\nfunction createVNode(type, props, key, isStaticChildren, __source, __self) {\n\t// We'll want to preserve `ref` in props to get rid of the need for\n\t// forwardRef components in the future, but that should happen via\n\t// a separate PR.\n\tlet normalizedProps = {},\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'ref') {\n\t\t\tref = props[i];\n\t\t} else {\n\t\t\tnormalizedProps[i] = props[i];\n\t\t}\n\t}\n\n\tconst vnode = {\n\t\ttype,\n\t\tprops: normalizedProps,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\t_hydrating: null,\n\t\tconstructor: undefined,\n\t\t_original: --vnodeId,\n\t\t__source,\n\t\t__self\n\t};\n\n\t// If a Component VNode, check for and apply defaultProps.\n\t// Note: `type` is often a String, and can be `undefined` in development.\n\tif (typeof type === 'function' && (ref = type.defaultProps)) {\n\t\tfor (i in ref)\n\t\t\tif (typeof normalizedProps[i] === 'undefined') {\n\t\t\t\tnormalizedProps[i] = ref[i];\n\t\t\t}\n\t}\n\n\tif (options.vnode) options.vnode(vnode);\n\treturn vnode;\n}\n\nexport {\n\tcreateVNode as jsx,\n\tcreateVNode as jsxs,\n\tcreateVNode as jsxDEV,\n\tFragment\n};\n", "module.exports = require('preact/jsx-runtime');\n", "module.exports = require('preact/compat');\n\n", "module.exports = require('preact/compat');\n\n", "import React, { useLayoutEffect } from 'react';\nimport { createPortal } from 'react-dom';\n\ninterface PopoverPortalProps {\n  container: Element;\n  element: Element;\n  scoutElement: Element;\n  children: React.ReactNode;\n}\n\nexport const PopoverPortal = ({\n  container,\n  element,\n  scoutElement,\n  children,\n}: PopoverPortalProps) => {\n  useLayoutEffect(() => {\n    container.appendChild(element);\n    container.appendChild(scoutElement);\n    return () => {\n      container.removeChild(element);\n      container.removeChild(scoutElement);\n    };\n  }, [container, element]);\n\n  return createPortal(children, element);\n};\n", "import { PopoverPosition, PopoverAlign } from './index';\n\nexport const EMPTY_CLIENT_RECT: ClientRect = {\n  top: 0,\n  left: 0,\n  bottom: 0,\n  height: 0,\n  right: 0,\n  width: 0,\n};\n\nexport const rectsAreEqual = (rectA: ClientRect, rectB: ClientRect) =>\n  rectA === rectB ||\n  (rectA?.bottom === rectB?.bottom &&\n    rectA?.height === rectB?.height &&\n    rectA?.left === rectB?.left &&\n    rectA?.right === rectB?.right &&\n    rectA?.top === rectB?.top &&\n    rectA?.width === rectB?.width);\n\nexport const createContainer = (\n  containerStyle?: Partial<CSSStyleDeclaration>,\n  containerClassName?: string,\n) => {\n  const container = window.document.createElement('div');\n  if (containerClassName) container.className = containerClassName;\n  Object.assign(container.style, containerStyle);\n  return container;\n};\n\nexport const popoverRectForPosition = (\n  position: PopoverPosition,\n  childRect: ClientRect,\n  popoverRect: ClientRect,\n  padding: number,\n  align: PopoverAlign,\n): ClientRect => {\n  const targetMidX = childRect.left + childRect.width / 2;\n  const targetMidY = childRect.top + childRect.height / 2;\n  const { width, height } = popoverRect;\n  let top: number;\n  let left: number;\n\n  switch (position) {\n    case 'left':\n      top = targetMidY - height / 2;\n      left = childRect.left - padding - width;\n      if (align === 'start') {\n        top = childRect.top;\n      }\n      if (align === 'end') {\n        top = childRect.bottom - height;\n      }\n      break;\n    case 'bottom':\n      top = childRect.bottom + padding;\n      left = targetMidX - width / 2;\n      if (align === 'start') {\n        left = childRect.left;\n      }\n      if (align === 'end') {\n        left = childRect.right - width;\n      }\n      break;\n    case 'right':\n      top = targetMidY - height / 2;\n      left = childRect.right + padding;\n      if (align === 'start') {\n        top = childRect.top;\n      }\n      if (align === 'end') {\n        top = childRect.bottom - height;\n      }\n      break;\n    default:\n      top = childRect.top - height - padding;\n      left = targetMidX - width / 2;\n      if (align === 'start') {\n        left = childRect.left;\n      }\n      if (align === 'end') {\n        left = childRect.right - width;\n      }\n      break;\n  }\n\n  return { top, left, width, height, right: left + width, bottom: top + height };\n};\n\ninterface GetNewPopoverRectProps {\n  position: PopoverPosition;\n  reposition: boolean;\n  align: PopoverAlign;\n  childRect: ClientRect;\n  popoverRect: ClientRect;\n  boundaryRect: ClientRect;\n  padding: number;\n}\n\nexport const getNewPopoverRect = (\n  {\n    position,\n    align,\n    childRect,\n    popoverRect,\n    boundaryRect,\n    padding,\n    reposition,\n  }: GetNewPopoverRectProps,\n  boundaryInset: number,\n) => {\n  const rect = popoverRectForPosition(position, childRect, popoverRect, padding, align);\n\n  const boundaryViolation =\n    reposition &&\n    ((position === 'top' && rect.top < boundaryRect.top + boundaryInset) ||\n      (position === 'left' && rect.left < boundaryRect.left + boundaryInset) ||\n      (position === 'right' && rect.right > boundaryRect.right - boundaryInset) ||\n      (position === 'bottom' && rect.bottom > boundaryRect.bottom - boundaryInset));\n\n  return {\n    rect,\n    boundaryViolation,\n  } as const;\n};\n\nexport const getNudgedPopoverRect = (\n  popoverRect: ClientRect,\n  boundaryRect: ClientRect,\n  boundaryInset: number,\n): ClientRect => {\n  const topBoundary = boundaryRect.top + boundaryInset;\n  const leftBoundary = boundaryRect.left + boundaryInset;\n  const rightBoundary = boundaryRect.right - boundaryInset;\n  const bottomBoundary = boundaryRect.bottom - boundaryInset;\n\n  let top = popoverRect.top < topBoundary ? topBoundary : popoverRect.top;\n  top = top + popoverRect.height > bottomBoundary ? bottomBoundary - popoverRect.height : top;\n  let left = popoverRect.left < leftBoundary ? leftBoundary : popoverRect.left;\n  left = left + popoverRect.width > rightBoundary ? rightBoundary - popoverRect.width : left;\n\n  return {\n    top,\n    left,\n    width: popoverRect.width,\n    height: popoverRect.height,\n    right: left + popoverRect.width,\n    bottom: top + popoverRect.height,\n  };\n};\n", "import { useRef, useMemo } from 'react';\nimport { createContainer } from './util';\n\nexport const useElementRef = (\n  containerClassName?: string,\n  containerStyle?: Partial<CSSStyleDeclaration>,\n) => {\n  const ref = useRef<HTMLDivElement>();\n\n  const element = useMemo(\n    () => createContainer(containerStyle, containerClassName),\n    [containerClassName, containerStyle],\n  );\n\n  ref.current = element;\n\n  return ref;\n};\n", "import { useCallback } from 'react';\nimport { BoundaryViolations, PositionPopover, UsePopoverProps, UsePopoverResult } from '.';\nimport { EMPTY_CLIENT_RECT, getNewPopoverRect, getNudgedPopoverRect } from './util';\nimport { useElementRef } from './useElementRef';\n\nconst POPOVER_STYLE: Partial<CSSStyleDeclaration> = {\n  position: 'fixed',\n  overflow: 'visible',\n  top: '0px',\n  left: '0px',\n};\n\nconst SCOUT_STYLE: Partial<CSSStyleDeclaration> = {\n  position: 'fixed',\n  top: '0px',\n  left: '0px',\n  width: '0px',\n  height: '0px',\n  visibility: 'hidden',\n};\n\nexport const usePopover = ({\n  isOpen,\n  childRef,\n  positions,\n  containerClassName,\n  parentElement,\n  contentLocation,\n  align,\n  padding,\n  reposition,\n  boundaryInset,\n  boundaryElement,\n  onPositionPopover,\n}: UsePopoverProps): UsePopoverResult => {\n  const popoverRef = useElementRef(containerClassName, POPOVER_STYLE);\n  const scoutRef = useElementRef('react-tiny-popover-scout', SCOUT_STYLE);\n\n  const positionPopover = useCallback<PositionPopover>(\n    ({\n      positionIndex = 0,\n      parentRect = parentElement.getBoundingClientRect(),\n      childRect = childRef?.current?.getBoundingClientRect(),\n      scoutRect = scoutRef?.current?.getBoundingClientRect(),\n      popoverRect = popoverRef.current.getBoundingClientRect(),\n      boundaryRect = boundaryElement === parentElement\n        ? parentRect\n        : boundaryElement.getBoundingClientRect(),\n    } = {}) => {\n      if (!childRect || !parentRect || !isOpen) {\n        return;\n      }\n\n      if (contentLocation) {\n        const { top: inputTop, left: inputLeft } =\n          typeof contentLocation === 'function'\n            ? contentLocation({\n                childRect,\n                popoverRect,\n                parentRect,\n                boundaryRect,\n                padding,\n                nudgedTop: 0,\n                nudgedLeft: 0,\n                boundaryInset,\n                violations: EMPTY_CLIENT_RECT,\n                hasViolations: false,\n              })\n            : contentLocation;\n\n        const left = parentRect.left + inputLeft;\n        const top = parentRect.top + inputTop;\n\n        popoverRef.current.style.transform = `translate(${left - scoutRect.left}px, ${\n          top - scoutRect.top\n        }px)`;\n\n        onPositionPopover({\n          childRect,\n          popoverRect,\n          parentRect,\n          boundaryRect,\n          padding,\n          nudgedTop: 0,\n          nudgedLeft: 0,\n          boundaryInset,\n          violations: EMPTY_CLIENT_RECT,\n          hasViolations: false,\n        });\n\n        return;\n      }\n\n      const isExhausted = positionIndex === positions.length;\n      const position = isExhausted ? positions[0] : positions[positionIndex];\n\n      const { rect, boundaryViolation } = getNewPopoverRect(\n        {\n          childRect,\n          popoverRect,\n          boundaryRect,\n          position,\n          align,\n          padding,\n          reposition,\n        },\n        boundaryInset,\n      );\n\n      if (boundaryViolation && reposition && !isExhausted) {\n        positionPopover({\n          positionIndex: positionIndex + 1,\n          childRect,\n          popoverRect,\n          parentRect,\n          boundaryRect,\n        });\n        return;\n      }\n\n      const { top, left, width, height } = rect;\n      const shouldNudge = reposition && !isExhausted;\n      const { left: nudgedLeft, top: nudgedTop } = getNudgedPopoverRect(\n        rect,\n        boundaryRect,\n        boundaryInset,\n      );\n\n      let finalTop = top;\n      let finalLeft = left;\n\n      if (shouldNudge) {\n        finalTop = nudgedTop;\n        finalLeft = nudgedLeft;\n      }\n\n      popoverRef.current.style.transform = `translate(${finalLeft - scoutRect.left}px, ${\n        finalTop - scoutRect.top\n      }px)`;\n\n      const potentialViolations: BoundaryViolations = {\n        top: boundaryRect.top + boundaryInset - finalTop,\n        left: boundaryRect.left + boundaryInset - finalLeft,\n        right: finalLeft + width - boundaryRect.right + boundaryInset,\n        bottom: finalTop + height - boundaryRect.bottom + boundaryInset,\n      };\n\n      onPositionPopover({\n        childRect,\n        popoverRect: {\n          top: finalTop,\n          left: finalLeft,\n          width,\n          height,\n          right: finalLeft + width,\n          bottom: finalTop + height,\n        },\n        parentRect,\n        boundaryRect,\n        position,\n        align,\n        padding,\n        nudgedTop: nudgedTop - top,\n        nudgedLeft: nudgedLeft - left,\n        boundaryInset,\n        violations: {\n          top: potentialViolations.top <= 0 ? 0 : potentialViolations.top,\n          left: potentialViolations.left <= 0 ? 0 : potentialViolations.left,\n          right: potentialViolations.right <= 0 ? 0 : potentialViolations.right,\n          bottom: potentialViolations.bottom <= 0 ? 0 : potentialViolations.bottom,\n        },\n        hasViolations:\n          potentialViolations.top > 0 ||\n          potentialViolations.left > 0 ||\n          potentialViolations.right > 0 ||\n          potentialViolations.bottom > 0,\n      });\n    },\n    [\n      parentElement,\n      childRef,\n      popoverRef,\n      boundaryElement,\n      contentLocation,\n      positions,\n      align,\n      padding,\n      reposition,\n      boundaryInset,\n      onPositionPopover,\n      isOpen,\n    ],\n  );\n\n  return {\n    positionPopover,\n    popoverRef,\n    scoutRef,\n  };\n};\n", "import { useRef, useMemo } from 'react';\n\nexport const useMemoizedArray = <T extends number | string>(externalArray: T[]) => {\n  const prevArrayRef = useRef(externalArray);\n  const array = useMemo(() => {\n    if (prevArrayRef.current === externalArray) return prevArrayRef.current;\n\n    if (prevArrayRef.current.length !== externalArray.length) {\n      prevArrayRef.current = externalArray;\n      return externalArray;\n    }\n\n    for (let i = 0; i < externalArray.length; i += 1) {\n      if (externalArray[i] !== prevArrayRef.current[i]) {\n        prevArrayRef.current = externalArray;\n        return externalArray;\n      }\n    }\n\n    return prevArrayRef.current;\n  }, [externalArray]);\n\n  return array;\n};\n", "import { useMemo } from 'react';\nimport { UseArrowContainerProps } from '.';\n\nexport const useArrowContainer = ({\n  childRect,\n  popoverRect,\n  position,\n  arrowSize,\n  arrowColor,\n}: UseArrowContainerProps) => {\n  const arrowContainerStyle = useMemo(\n    () =>\n      ({\n        padding: arrowSize,\n      } as React.CSSProperties),\n    [arrowSize],\n  );\n\n  const arrowStyle = useMemo(\n    () =>\n      ({\n        position: 'absolute',\n        ...((): React.CSSProperties => {\n          const arrowWidth = arrowSize * 2;\n          let top = childRect.top - popoverRect.top + childRect.height / 2 - arrowWidth / 2;\n          let left = childRect.left - popoverRect.left + childRect.width / 2 - arrowWidth / 2;\n\n          const lowerBound = arrowSize;\n          const leftUpperBound = popoverRect.width - arrowSize;\n          const topUpperBound = popoverRect.height - arrowSize;\n\n          left = left < lowerBound ? lowerBound : left;\n          left = left + arrowWidth > leftUpperBound ? leftUpperBound - arrowWidth : left;\n          top = top < lowerBound ? lowerBound : top;\n          top = top + arrowWidth > topUpperBound ? topUpperBound - arrowWidth : top;\n\n          top = Number.isNaN(top) ? 0 : top;\n          left = Number.isNaN(left) ? 0 : left;\n\n          switch (position) {\n            case 'right':\n              return {\n                borderTop: `${arrowSize}px solid transparent`,\n                borderBottom: `${arrowSize}px solid transparent`,\n                borderRight: `${arrowSize}px solid ${arrowColor}`,\n                left: 0,\n                top,\n              };\n            case 'left':\n              return {\n                borderTop: `${arrowSize}px solid transparent`,\n                borderBottom: `${arrowSize}px solid transparent`,\n                borderLeft: `${arrowSize}px solid ${arrowColor}`,\n                right: 0,\n                top,\n              };\n            case 'bottom':\n              return {\n                borderLeft: `${arrowSize}px solid transparent`,\n                borderRight: `${arrowSize}px solid transparent`,\n                borderBottom: `${arrowSize}px solid ${arrowColor}`,\n                top: 0,\n                left,\n              };\n            case 'top':\n              return {\n                borderLeft: `${arrowSize}px solid transparent`,\n                borderRight: `${arrowSize}px solid transparent`,\n                borderTop: `${arrowSize}px solid ${arrowColor}`,\n                bottom: 0,\n                left,\n              };\n            default:\n              return {\n                display: 'hidden',\n              };\n          }\n        })(),\n      } as React.CSSProperties),\n    [\n      arrowColor,\n      arrowSize,\n      childRect.height,\n      childRect.left,\n      childRect.top,\n      childRect.width,\n      popoverRect.height,\n      popoverRect.left,\n      popoverRect.top,\n      popoverRect.width,\n      position,\n    ],\n  );\n\n  return {\n    arrowContainerStyle,\n    arrowStyle,\n  };\n};\n", "import React, { useMemo } from 'react';\nimport { ArrowContainerProps } from '.';\nimport { useArrowContainer } from './useArrowContainer';\n\nexport const ArrowContainer = ({\n  childRect,\n  popoverRect,\n  position,\n  arrowColor,\n  arrowSize,\n  arrowClassName,\n  arrowStyle: externalArrowStyle,\n  className,\n  children,\n  style: externalArrowContainerStyle,\n}: ArrowContainerProps) => {\n  const { arrowContainerStyle, arrowStyle } = useArrowContainer({\n    childRect,\n    popoverRect,\n    position,\n    arrowColor,\n    arrowSize,\n  });\n\n  const mergedContainerStyle = useMemo(\n    () => ({\n      ...arrowContainerStyle,\n      ...externalArrowContainerStyle,\n    }),\n    [arrowContainerStyle, externalArrowContainerStyle],\n  );\n\n  const mergedArrowStyle = useMemo(\n    () => ({\n      ...arrowStyle,\n      ...externalArrowStyle,\n    }),\n    [arrowStyle, externalArrowStyle],\n  );\n\n  return (\n    <div className={className} style={mergedContainerStyle}>\n      <div style={mergedArrowStyle} className={arrowClassName} />\n      {children}\n    </div>\n  );\n};\n", "import {\n  useRef,\n  useLayoutEffect,\n  useState,\n  useCallback,\n  useEffect,\n  forwardRef,\n  cloneElement,\n  Ref,\n} from 'react';\nimport { PopoverPortal } from './PopoverPortal';\nimport {\n  ContentLocation,\n  ContentLocationGetter,\n  PopoverPosition,\n  PopoverProps,\n  PopoverState,\n} from '.';\nimport { EMPTY_CLIENT_RECT, rectsAreEqual } from './util';\nimport { usePopover } from './usePopover';\nimport { useMemoizedArray } from './useMemoizedArray';\nexport { useArrowContainer } from './useArrowContainer';\nexport { ArrowContainer } from './ArrowContainer';\nexport { usePopover };\n\nconst DEFAULT_POSITIONS: PopoverPosition[] = ['top', 'left', 'right', 'bottom'];\n\nconst PopoverInternal = forwardRef(\n  (\n    {\n      isOpen,\n      children,\n      content,\n      positions: externalPositions = DEFAULT_POSITIONS,\n      align = 'center',\n      padding = 0,\n      reposition = true,\n      parentElement = window.document.body,\n      boundaryElement = parentElement,\n      containerClassName = 'react-tiny-popover-container',\n      containerStyle,\n      contentLocation,\n      boundaryInset = 0,\n      onClickOutside,\n      clickOutsideCapture = false,\n    }: PopoverProps,\n    externalRef: Ref<HTMLElement>,\n  ) => {\n    const positions = useMemoizedArray(externalPositions);\n\n    // TODO: factor prevs out into a custom prevs hook\n    const prevIsOpen = useRef(false);\n    const prevPositions = useRef<PopoverPosition[] | undefined>();\n    const prevContentLocation = useRef<ContentLocation | ContentLocationGetter | undefined>();\n    const prevReposition = useRef(reposition);\n\n    const childRef = useRef<HTMLElement | undefined>();\n\n    const [popoverState, setPopoverState] = useState<PopoverState>({\n      align,\n      nudgedLeft: 0,\n      nudgedTop: 0,\n      position: positions[0],\n      padding,\n      childRect: EMPTY_CLIENT_RECT,\n      popoverRect: EMPTY_CLIENT_RECT,\n      parentRect: EMPTY_CLIENT_RECT,\n      boundaryRect: EMPTY_CLIENT_RECT,\n      boundaryInset,\n      violations: EMPTY_CLIENT_RECT,\n      hasViolations: false,\n    });\n\n    const onPositionPopover = useCallback(\n      (popoverState: PopoverState) => setPopoverState(popoverState),\n      [],\n    );\n\n    const { positionPopover, popoverRef, scoutRef } = usePopover({\n      isOpen,\n      childRef,\n      containerClassName,\n      parentElement,\n      boundaryElement,\n      contentLocation,\n      positions,\n      align,\n      padding,\n      boundaryInset,\n      reposition,\n      onPositionPopover,\n    });\n\n    useLayoutEffect(() => {\n      let shouldUpdate = true;\n      const updatePopover = () => {\n        if (isOpen && shouldUpdate) {\n          const childRect = childRef?.current?.getBoundingClientRect();\n          const popoverRect = popoverRef?.current?.getBoundingClientRect();\n          if (\n            childRect != null &&\n            popoverRect != null &&\n            (!rectsAreEqual(childRect, {\n              top: popoverState.childRect.top,\n              left: popoverState.childRect.left,\n              width: popoverState.childRect.width,\n              height: popoverState.childRect.height,\n              bottom: popoverState.childRect.top + popoverState.childRect.height,\n              right: popoverState.childRect.left + popoverState.childRect.width,\n            }) ||\n              popoverRect.width !== popoverState.popoverRect.width ||\n              popoverRect.height !== popoverState.popoverRect.height ||\n              popoverState.padding !== padding ||\n              popoverState.align !== align ||\n              positions !== prevPositions.current ||\n              contentLocation !== prevContentLocation.current ||\n              reposition !== prevReposition.current)\n          ) {\n            positionPopover();\n          }\n\n          // TODO: factor prev checks out into the custom prevs hook\n          if (positions !== prevPositions.current) {\n            prevPositions.current = positions;\n          }\n          if (contentLocation !== prevContentLocation.current) {\n            prevContentLocation.current = contentLocation;\n          }\n          if (reposition !== prevReposition.current) {\n            prevReposition.current = reposition;\n          }\n\n          if (shouldUpdate) {\n            window.requestAnimationFrame(updatePopover);\n          }\n        }\n\n        prevIsOpen.current = isOpen;\n      };\n\n      window.requestAnimationFrame(updatePopover);\n\n      return () => {\n        shouldUpdate = false;\n      };\n    }, [\n      align,\n      contentLocation,\n      isOpen,\n      padding,\n      popoverRef,\n      popoverState.align,\n      popoverState.childRect.height,\n      popoverState.childRect.left,\n      popoverState.childRect.top,\n      popoverState.childRect.width,\n      popoverState.padding,\n      popoverState.popoverRect.height,\n      popoverState.popoverRect.width,\n      positionPopover,\n      positions,\n      reposition,\n    ]);\n\n    useEffect(() => {\n      const popoverElement = popoverRef.current;\n\n      Object.assign(popoverElement.style, containerStyle);\n\n      return () => {\n        Object.keys(containerStyle ?? {}).forEach(\n          (key) =>\n            delete popoverElement.style[\n              key as keyof Omit<typeof containerStyle, 'length' | 'parentRule'>\n            ],\n        );\n      };\n    }, [containerStyle, isOpen, popoverRef]);\n\n    const handleOnClickOutside = useCallback(\n      (e: MouseEvent) => {\n        if (\n          isOpen &&\n          !popoverRef.current?.contains(e.target as Node) &&\n          !childRef.current?.contains(e.target as Node)\n        ) {\n          onClickOutside?.(e);\n        }\n      },\n      [isOpen, onClickOutside, popoverRef],\n    );\n\n    const handleWindowResize = useCallback(() => {\n      if (childRef.current) {\n        window.requestAnimationFrame(() => positionPopover());\n      }\n    }, [positionPopover]);\n\n    useEffect(() => {\n      window.addEventListener('click', handleOnClickOutside, clickOutsideCapture);\n      window.addEventListener('contextmenu', handleOnClickOutside, clickOutsideCapture);\n      window.addEventListener('resize', handleWindowResize);\n      return () => {\n        window.removeEventListener('click', handleOnClickOutside, clickOutsideCapture);\n        window.removeEventListener('contextmenu', handleOnClickOutside, clickOutsideCapture);\n        window.removeEventListener('resize', handleWindowResize);\n      };\n    }, [clickOutsideCapture, handleOnClickOutside, handleWindowResize]);\n\n    const handleRef = useCallback(\n      (node: HTMLElement) => {\n        childRef.current = node;\n        if (externalRef != null) {\n          if (typeof externalRef === 'object') {\n            (externalRef as React.MutableRefObject<HTMLElement>).current = node;\n          } else if (typeof externalRef === 'function') {\n            (externalRef as (instance: HTMLElement) => void)(node);\n          }\n        }\n      },\n      [externalRef],\n    );\n\n    const renderChild = () =>\n      cloneElement(children as JSX.Element, {\n        ref: handleRef,\n      });\n\n    const renderPopover = () => {\n      if (!isOpen) return null;\n      return (\n        <PopoverPortal\n          element={popoverRef.current}\n          scoutElement={scoutRef.current}\n          container={parentElement}\n        >\n          {typeof content === 'function' ? content(popoverState) : content}\n        </PopoverPortal>\n      );\n    };\n\n    return (\n      <>\n        {renderChild()}\n        {renderPopover()}\n      </>\n    );\n  },\n);\n\nexport const Popover = forwardRef<HTMLElement, PopoverProps>((props, ref) => {\n  if (typeof window === 'undefined') return props.children;\n  return <PopoverInternal {...props} ref={ref} />;\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(\"pdfjs-dist/build/pdf\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf\"] = factory();\n})(globalThis, () => {\nreturn ", "/* Copyright 2012 Mozilla Foundation\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\nimport \"./compatibility.js\";\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\n// Represent the percentage of the height of a single-line field over\n// the font size. Acrobat seems to use this value.\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\n\n/**\n * Refer to the `WorkerTransport.getRenderingIntent`-method in the API, to see\n * how these flags are being used:\n *  - ANY, DISPLAY, and PRINT are the normal rendering intents, note the\n *    `PDFPageProxy.{render, getOperatorList, getAnnotations}`-methods.\n *  - ANNOTATIONS_FORMS, ANNOTATIONS_STORAGE, ANNOTATIONS_DISABLE control which\n *    annotations are rendered onto the canvas (i.e. by being included in the\n *    operatorList), note the `PDFPageProxy.{render, getOperatorList}`-methods\n *    and their `annotationMode`-option.\n *  - OPLIST is used with the `PDFPageProxy.getOperatorList`-method, note the\n *    `OperatorList`-constructor (on the worker-thread).\n */\nconst RenderingIntentFlag = {\n  ANY: 0x01,\n  DISPLAY: 0x02,\n  PRINT: 0x04,\n  ANNOTATIONS_FORMS: 0x10,\n  ANNOTATIONS_STORAGE: 0x20,\n  ANNOTATIONS_DISABLE: 0x40,\n  OPLIST: 0x100,\n};\n\nconst AnnotationMode = {\n  DISABLE: 0,\n  ENABLE: 1,\n  ENABLE_FORMS: 2,\n  ENABLE_STORAGE: 3,\n};\n\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\n\nconst AnnotationEditorType = {\n  DISABLE: -1,\n  NONE: 0,\n  FREETEXT: 3,\n  INK: 15,\n};\n\nconst AnnotationEditorParamsType = {\n  FREETEXT_SIZE: 1,\n  FREETEXT_COLOR: 2,\n  FREETEXT_OPACITY: 3,\n  INK_COLOR: 11,\n  INK_THICKNESS: 12,\n  INK_OPACITY: 13,\n};\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\nconst PermissionFlag = {\n  PRINT: 0x04,\n  MODIFY_CONTENTS: 0x08,\n  COPY: 0x10,\n  MODIFY_ANNOTATIONS: 0x20,\n  FILL_INTERACTIVE_FORMS: 0x100,\n  COPY_FOR_ACCESSIBILITY: 0x200,\n  ASSEMBLE: 0x400,\n  PRINT_HIGH_QUALITY: 0x800,\n};\n\nconst TextRenderingMode = {\n  FILL: 0,\n  STROKE: 1,\n  FILL_STROKE: 2,\n  INVISIBLE: 3,\n  FILL_ADD_TO_PATH: 4,\n  STROKE_ADD_TO_PATH: 5,\n  FILL_STROKE_ADD_TO_PATH: 6,\n  ADD_TO_PATH: 7,\n  FILL_STROKE_MASK: 3,\n  ADD_TO_PATH_FLAG: 4,\n};\n\nconst ImageKind = {\n  GRAYSCALE_1BPP: 1,\n  RGB_24BPP: 2,\n  RGBA_32BPP: 3,\n};\n\nconst AnnotationType = {\n  TEXT: 1,\n  LINK: 2,\n  FREETEXT: 3,\n  LINE: 4,\n  SQUARE: 5,\n  CIRCLE: 6,\n  POLYGON: 7,\n  POLYLINE: 8,\n  HIGHLIGHT: 9,\n  UNDERLINE: 10,\n  SQUIGGLY: 11,\n  STRIKEOUT: 12,\n  STAMP: 13,\n  CARET: 14,\n  INK: 15,\n  POPUP: 16,\n  FILEATTACHMENT: 17,\n  SOUND: 18,\n  MOVIE: 19,\n  WIDGET: 20,\n  SCREEN: 21,\n  PRINTERMARK: 22,\n  TRAPNET: 23,\n  WATERMARK: 24,\n  THREED: 25,\n  REDACT: 26,\n};\n\nconst AnnotationStateModelType = {\n  MARKED: \"Marked\",\n  REVIEW: \"Review\",\n};\n\nconst AnnotationMarkedState = {\n  MARKED: \"Marked\",\n  UNMARKED: \"Unmarked\",\n};\n\nconst AnnotationReviewState = {\n  ACCEPTED: \"Accepted\",\n  REJECTED: \"Rejected\",\n  CANCELLED: \"Cancelled\",\n  COMPLETED: \"Completed\",\n  NONE: \"None\",\n};\n\nconst AnnotationReplyType = {\n  GROUP: \"Group\",\n  REPLY: \"R\",\n};\n\nconst AnnotationFlag = {\n  INVISIBLE: 0x01,\n  HIDDEN: 0x02,\n  PRINT: 0x04,\n  NOZOOM: 0x08,\n  NOROTATE: 0x10,\n  NOVIEW: 0x20,\n  READONLY: 0x40,\n  LOCKED: 0x80,\n  TOGGLENOVIEW: 0x100,\n  LOCKEDCONTENTS: 0x200,\n};\n\nconst AnnotationFieldFlag = {\n  READONLY: 0x0000001,\n  REQUIRED: 0x0000002,\n  NOEXPORT: 0x0000004,\n  MULTILINE: 0x0001000,\n  PASSWORD: 0x0002000,\n  NOTOGGLETOOFF: 0x0004000,\n  RADIO: 0x0008000,\n  PUSHBUTTON: 0x0010000,\n  COMBO: 0x0020000,\n  EDIT: 0x0040000,\n  SORT: 0x0080000,\n  FILESELECT: 0x0100000,\n  MULTISELECT: 0x0200000,\n  DONOTSPELLCHECK: 0x0400000,\n  DONOTSCROLL: 0x0800000,\n  COMB: 0x1000000,\n  RICHTEXT: 0x2000000,\n  RADIOSINUNISON: 0x2000000,\n  COMMITONSELCHANGE: 0x4000000,\n};\n\nconst AnnotationBorderStyleType = {\n  SOLID: 1,\n  DASHED: 2,\n  BEVELED: 3,\n  INSET: 4,\n  UNDERLINE: 5,\n};\n\nconst AnnotationActionEventType = {\n  E: \"Mouse Enter\",\n  X: \"Mouse Exit\",\n  D: \"Mouse Down\",\n  U: \"Mouse Up\",\n  Fo: \"Focus\",\n  Bl: \"Blur\",\n  PO: \"PageOpen\",\n  PC: \"PageClose\",\n  PV: \"PageVisible\",\n  PI: \"PageInvisible\",\n  K: \"Keystroke\",\n  F: \"Format\",\n  V: \"Validate\",\n  C: \"Calculate\",\n};\n\nconst DocumentActionEventType = {\n  WC: \"WillClose\",\n  WS: \"WillSave\",\n  DS: \"DidSave\",\n  WP: \"WillPrint\",\n  DP: \"DidPrint\",\n};\n\nconst PageActionEventType = {\n  O: \"PageOpen\",\n  C: \"PageClose\",\n};\n\nconst StreamType = {\n  UNKNOWN: \"UNKNOWN\",\n  FLATE: \"FLATE\",\n  LZW: \"LZW\",\n  DCT: \"DCT\",\n  JPX: \"JPX\",\n  JBIG: \"JBIG\",\n  A85: \"A85\",\n  AHX: \"AHX\",\n  CCF: \"CCF\",\n  RLX: \"RLX\", // PDF short name is 'RL', but telemetry requires three chars.\n};\n\nconst FontType = {\n  UNKNOWN: \"UNKNOWN\",\n  TYPE1: \"TYPE1\",\n  TYPE1STANDARD: \"TYPE1STANDARD\",\n  TYPE1C: \"TYPE1C\",\n  CIDFONTTYPE0: \"CIDFONTTYPE0\",\n  CIDFONTTYPE0C: \"CIDFONTTYPE0C\",\n  TRUETYPE: \"TRUETYPE\",\n  CIDFONTTYPE2: \"CIDFONTTYPE2\",\n  TYPE3: \"TYPE3\",\n  OPENTYPE: \"OPENTYPE\",\n  TYPE0: \"TYPE0\",\n  MMTYPE1: \"MMTYPE1\",\n};\n\nconst VerbosityLevel = {\n  ERRORS: 0,\n  WARNINGS: 1,\n  INFOS: 5,\n};\n\nconst CMapCompressionType = {\n  NONE: 0,\n  BINARY: 1,\n  STREAM: 2,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n  // Intentionally start from 1 so it is easy to spot bad operators that will be\n  // 0's.\n  dependency: 1,\n  setLineWidth: 2,\n  setLineCap: 3,\n  setLineJoin: 4,\n  setMiterLimit: 5,\n  setDash: 6,\n  setRenderingIntent: 7,\n  setFlatness: 8,\n  setGState: 9,\n  save: 10,\n  restore: 11,\n  transform: 12,\n  moveTo: 13,\n  lineTo: 14,\n  curveTo: 15,\n  curveTo2: 16,\n  curveTo3: 17,\n  closePath: 18,\n  rectangle: 19,\n  stroke: 20,\n  closeStroke: 21,\n  fill: 22,\n  eoFill: 23,\n  fillStroke: 24,\n  eoFillStroke: 25,\n  closeFillStroke: 26,\n  closeEOFillStroke: 27,\n  endPath: 28,\n  clip: 29,\n  eoClip: 30,\n  beginText: 31,\n  endText: 32,\n  setCharSpacing: 33,\n  setWordSpacing: 34,\n  setHScale: 35,\n  setLeading: 36,\n  setFont: 37,\n  setTextRenderingMode: 38,\n  setTextRise: 39,\n  moveText: 40,\n  setLeadingMoveText: 41,\n  setTextMatrix: 42,\n  nextLine: 43,\n  showText: 44,\n  showSpacedText: 45,\n  nextLineShowText: 46,\n  nextLineSetSpacingShowText: 47,\n  setCharWidth: 48,\n  setCharWidthAndBounds: 49,\n  setStrokeColorSpace: 50,\n  setFillColorSpace: 51,\n  setStrokeColor: 52,\n  setStrokeColorN: 53,\n  setFillColor: 54,\n  setFillColorN: 55,\n  setStrokeGray: 56,\n  setFillGray: 57,\n  setStrokeRGBColor: 58,\n  setFillRGBColor: 59,\n  setStrokeCMYKColor: 60,\n  setFillCMYKColor: 61,\n  shadingFill: 62,\n  beginInlineImage: 63,\n  beginImageData: 64,\n  endInlineImage: 65,\n  paintXObject: 66,\n  markPoint: 67,\n  markPointProps: 68,\n  beginMarkedContent: 69,\n  beginMarkedContentProps: 70,\n  endMarkedContent: 71,\n  beginCompat: 72,\n  endCompat: 73,\n  paintFormXObjectBegin: 74,\n  paintFormXObjectEnd: 75,\n  beginGroup: 76,\n  endGroup: 77,\n  /** @deprecated unused */\n  beginAnnotations: 78,\n  /** @deprecated unused */\n  endAnnotations: 79,\n  beginAnnotation: 80,\n  endAnnotation: 81,\n  /** @deprecated unused */\n  paintJpegXObject: 82,\n  paintImageMaskXObject: 83,\n  paintImageMaskXObjectGroup: 84,\n  paintImageXObject: 85,\n  paintInlineImageXObject: 86,\n  paintInlineImageXObjectGroup: 87,\n  paintImageXObjectRepeat: 88,\n  paintImageMaskXObjectRepeat: 89,\n  paintSolidColorImageMask: 90,\n  constructPath: 91,\n};\n\nconst UNSUPPORTED_FEATURES = {\n  /** @deprecated unused */\n  unknown: \"unknown\",\n  forms: \"forms\",\n  javaScript: \"javaScript\",\n  signatures: \"signatures\",\n  smask: \"smask\",\n  shadingPattern: \"shadingPattern\",\n  /** @deprecated unused */\n  font: \"font\",\n  errorTilingPattern: \"errorTilingPattern\",\n  errorExtGState: \"errorExtGState\",\n  errorXObject: \"errorXObject\",\n  errorFontLoadType3: \"errorFontLoadType3\",\n  errorFontState: \"errorFontState\",\n  errorFontMissing: \"errorFontMissing\",\n  errorFontTranslate: \"errorFontTranslate\",\n  errorColorSpace: \"errorColorSpace\",\n  errorOperatorList: \"errorOperatorList\",\n  errorFontToUnicode: \"errorFontToUnicode\",\n  errorFontLoadNative: \"errorFontLoadNative\",\n  errorFontBuildPath: \"errorFontBuildPath\",\n  errorFontGetPath: \"errorFontGetPath\",\n  errorMarkedContent: \"errorMarkedContent\",\n  errorContentSubStream: \"errorContentSubStream\",\n};\n\nconst PasswordResponses = {\n  NEED_PASSWORD: 1,\n  INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n  if (Number.isInteger(level)) {\n    verbosity = level;\n  }\n}\n\nfunction getVerbosityLevel() {\n  return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n  if (verbosity >= VerbosityLevel.INFOS) {\n    console.log(`Info: ${msg}`);\n  }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n  if (verbosity >= VerbosityLevel.WARNINGS) {\n    console.log(`Warning: ${msg}`);\n  }\n}\n\nfunction unreachable(msg) {\n  throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n  if (!cond) {\n    unreachable(msg);\n  }\n}\n\n// Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\nfunction _isValidProtocol(url) {\n  if (!url) {\n    return false;\n  }\n  switch (url.protocol) {\n    case \"http:\":\n    case \"https:\":\n    case \"ftp:\":\n    case \"mailto:\":\n    case \"tel:\":\n      return true;\n    default:\n      return false;\n  }\n}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} [baseUrl] - An absolute URL.\n * @param {Object} [options]\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n  if (!url) {\n    return null;\n  }\n  try {\n    if (options && typeof url === \"string\") {\n      // Let URLs beginning with \"www.\" default to using the \"http://\" protocol.\n      if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n        const dots = url.match(/\\./g);\n        // Avoid accidentally matching a *relative* URL pointing to a file named\n        // e.g. \"www.pdf\" or similar.\n        if (dots && dots.length >= 2) {\n          url = `http://${url}`;\n        }\n      }\n\n      // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n      // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280.\n      if (options.tryConvertEncoding) {\n        try {\n          url = stringToUTF8String(url);\n        } catch (ex) {}\n      }\n    }\n\n    const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n    if (_isValidProtocol(absoluteUrl)) {\n      return absoluteUrl;\n    }\n  } catch (ex) {\n    /* `new URL()` will throw on incorrect data. */\n  }\n  return null;\n}\n\nfunction shadow(obj, prop, value) {\n  if (\n    typeof PDFJSDev === \"undefined\" ||\n    PDFJSDev.test(\"!PRODUCTION || TESTING\")\n  ) {\n    assert(\n      prop in obj,\n      `shadow: Property \"${prop && prop.toString()}\" not found in object.`\n    );\n  }\n  Object.defineProperty(obj, prop, {\n    value,\n    enumerable: true,\n    configurable: true,\n    writable: false,\n  });\n  return value;\n}\n\n/**\n * @type {any}\n */\nconst BaseException = (function BaseExceptionClosure() {\n  // eslint-disable-next-line no-shadow\n  function BaseException(message, name) {\n    if (this.constructor === BaseException) {\n      unreachable(\"Cannot initialize BaseException.\");\n    }\n    this.message = message;\n    this.name = name;\n  }\n  BaseException.prototype = new Error();\n  BaseException.constructor = BaseException;\n\n  return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n  constructor(msg, code) {\n    super(msg, \"PasswordException\");\n    this.code = code;\n  }\n}\n\nclass UnknownErrorException extends BaseException {\n  constructor(msg, details) {\n    super(msg, \"UnknownErrorException\");\n    this.details = details;\n  }\n}\n\nclass InvalidPDFException extends BaseException {\n  constructor(msg) {\n    super(msg, \"InvalidPDFException\");\n  }\n}\n\nclass MissingPDFException extends BaseException {\n  constructor(msg) {\n    super(msg, \"MissingPDFException\");\n  }\n}\n\nclass UnexpectedResponseException extends BaseException {\n  constructor(msg, status) {\n    super(msg, \"UnexpectedResponseException\");\n    this.status = status;\n  }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {\n  constructor(msg) {\n    super(msg, \"FormatError\");\n  }\n}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {\n  constructor(msg) {\n    super(msg, \"AbortException\");\n  }\n}\n\nfunction bytesToString(bytes) {\n  if (\n    typeof bytes !== \"object\" ||\n    bytes === null ||\n    bytes.length === undefined\n  ) {\n    unreachable(\"Invalid argument for bytesToString\");\n  }\n  const length = bytes.length;\n  const MAX_ARGUMENT_COUNT = 8192;\n  if (length < MAX_ARGUMENT_COUNT) {\n    return String.fromCharCode.apply(null, bytes);\n  }\n  const strBuf = [];\n  for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n    const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n    const chunk = bytes.subarray(i, chunkEnd);\n    strBuf.push(String.fromCharCode.apply(null, chunk));\n  }\n  return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n  if (typeof str !== \"string\") {\n    unreachable(\"Invalid argument for stringToBytes\");\n  }\n  const length = str.length;\n  const bytes = new Uint8Array(length);\n  for (let i = 0; i < length; ++i) {\n    bytes[i] = str.charCodeAt(i) & 0xff;\n  }\n  return bytes;\n}\n\n/**\n * Gets length of the array (Array, Uint8Array, or string) in bytes.\n * @param {Array<any>|Uint8Array|string} arr\n * @returns {number}\n */\n// eslint-disable-next-line consistent-return\nfunction arrayByteLength(arr) {\n  if (arr.length !== undefined) {\n    return arr.length;\n  }\n  if (arr.byteLength !== undefined) {\n    return arr.byteLength;\n  }\n  unreachable(\"Invalid argument for arrayByteLength\");\n}\n\n/**\n * Combines array items (arrays) into single Uint8Array object.\n * @param {Array<Array<any>|Uint8Array|string>} arr - the array of the arrays\n *   (Array, Uint8Array, or string).\n * @returns {Uint8Array}\n */\nfunction arraysToBytes(arr) {\n  const length = arr.length;\n  // Shortcut: if first and only item is Uint8Array, return it.\n  if (length === 1 && arr[0] instanceof Uint8Array) {\n    return arr[0];\n  }\n  let resultLength = 0;\n  for (let i = 0; i < length; i++) {\n    resultLength += arrayByteLength(arr[i]);\n  }\n  let pos = 0;\n  const data = new Uint8Array(resultLength);\n  for (let i = 0; i < length; i++) {\n    let item = arr[i];\n    if (!(item instanceof Uint8Array)) {\n      if (typeof item === \"string\") {\n        item = stringToBytes(item);\n      } else {\n        item = new Uint8Array(item);\n      }\n    }\n    const itemLength = item.byteLength;\n    data.set(item, pos);\n    pos += itemLength;\n  }\n  return data;\n}\n\nfunction string32(value) {\n  if (\n    typeof PDFJSDev === \"undefined\" ||\n    PDFJSDev.test(\"!PRODUCTION || TESTING\")\n  ) {\n    assert(\n      typeof value === \"number\" && Math.abs(value) < 2 ** 32,\n      `string32: Unexpected input \"${value}\".`\n    );\n  }\n  return String.fromCharCode(\n    (value >> 24) & 0xff,\n    (value >> 16) & 0xff,\n    (value >> 8) & 0xff,\n    value & 0xff\n  );\n}\n\nfunction objectSize(obj) {\n  return Object.keys(obj).length;\n}\n\n// Ensure that the returned Object has a `null` prototype; hence why\n// `Object.fromEntries(...)` is not used.\nfunction objectFromMap(map) {\n  const obj = Object.create(null);\n  for (const [key, value] of map) {\n    obj[key] = value;\n  }\n  return obj;\n}\n\n// Checks the endianness of the platform.\nfunction isLittleEndian() {\n  const buffer8 = new Uint8Array(4);\n  buffer8[0] = 1;\n  const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n  return view32[0] === 1;\n}\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n  try {\n    new Function(\"\"); // eslint-disable-line no-new, no-new-func\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\nclass FeatureTest {\n  static get isLittleEndian() {\n    return shadow(this, \"isLittleEndian\", isLittleEndian());\n  }\n\n  static get isEvalSupported() {\n    return shadow(this, \"isEvalSupported\", isEvalSupported());\n  }\n\n  static get isOffscreenCanvasSupported() {\n    return shadow(\n      this,\n      \"isOffscreenCanvasSupported\",\n      typeof OffscreenCanvas !== \"undefined\"\n    );\n  }\n}\n\nconst hexNumbers = [...Array(256).keys()].map(n =>\n  n.toString(16).padStart(2, \"0\")\n);\n\nclass Util {\n  static makeHexColor(r, g, b) {\n    return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n  }\n\n  // Apply a scaling matrix to some min/max values.\n  // If a scaling factor is negative then min and max must be\n  // swaped.\n  static scaleMinMax(transform, minMax) {\n    let temp;\n    if (transform[0]) {\n      if (transform[0] < 0) {\n        temp = minMax[0];\n        minMax[0] = minMax[1];\n        minMax[1] = temp;\n      }\n      minMax[0] *= transform[0];\n      minMax[1] *= transform[0];\n\n      if (transform[3] < 0) {\n        temp = minMax[2];\n        minMax[2] = minMax[3];\n        minMax[3] = temp;\n      }\n      minMax[2] *= transform[3];\n      minMax[3] *= transform[3];\n    } else {\n      temp = minMax[0];\n      minMax[0] = minMax[2];\n      minMax[2] = temp;\n      temp = minMax[1];\n      minMax[1] = minMax[3];\n      minMax[3] = temp;\n\n      if (transform[1] < 0) {\n        temp = minMax[2];\n        minMax[2] = minMax[3];\n        minMax[3] = temp;\n      }\n      minMax[2] *= transform[1];\n      minMax[3] *= transform[1];\n\n      if (transform[2] < 0) {\n        temp = minMax[0];\n        minMax[0] = minMax[1];\n        minMax[1] = temp;\n      }\n      minMax[0] *= transform[2];\n      minMax[1] *= transform[2];\n    }\n    minMax[0] += transform[4];\n    minMax[1] += transform[4];\n    minMax[2] += transform[5];\n    minMax[3] += transform[5];\n  }\n\n  // Concatenates two transformation matrices together and returns the result.\n  static transform(m1, m2) {\n    return [\n      m1[0] * m2[0] + m1[2] * m2[1],\n      m1[1] * m2[0] + m1[3] * m2[1],\n      m1[0] * m2[2] + m1[2] * m2[3],\n      m1[1] * m2[2] + m1[3] * m2[3],\n      m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n      m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n    ];\n  }\n\n  // For 2d affine transforms\n  static applyTransform(p, m) {\n    const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n    const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n    return [xt, yt];\n  }\n\n  static applyInverseTransform(p, m) {\n    const d = m[0] * m[3] - m[1] * m[2];\n    const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n    const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n    return [xt, yt];\n  }\n\n  // Applies the transform to the rectangle and finds the minimum axially\n  // aligned bounding box.\n  static getAxialAlignedBoundingBox(r, m) {\n    const p1 = Util.applyTransform(r, m);\n    const p2 = Util.applyTransform(r.slice(2, 4), m);\n    const p3 = Util.applyTransform([r[0], r[3]], m);\n    const p4 = Util.applyTransform([r[2], r[1]], m);\n    return [\n      Math.min(p1[0], p2[0], p3[0], p4[0]),\n      Math.min(p1[1], p2[1], p3[1], p4[1]),\n      Math.max(p1[0], p2[0], p3[0], p4[0]),\n      Math.max(p1[1], p2[1], p3[1], p4[1]),\n    ];\n  }\n\n  static inverseTransform(m) {\n    const d = m[0] * m[3] - m[1] * m[2];\n    return [\n      m[3] / d,\n      -m[1] / d,\n      -m[2] / d,\n      m[0] / d,\n      (m[2] * m[5] - m[4] * m[3]) / d,\n      (m[4] * m[1] - m[5] * m[0]) / d,\n    ];\n  }\n\n  // Apply a generic 3d matrix M on a 3-vector v:\n  //   | a b c |   | X |\n  //   | d e f | x | Y |\n  //   | g h i |   | Z |\n  // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],\n  // with v as [X,Y,Z]\n  static apply3dTransform(m, v) {\n    return [\n      m[0] * v[0] + m[1] * v[1] + m[2] * v[2],\n      m[3] * v[0] + m[4] * v[1] + m[5] * v[2],\n      m[6] * v[0] + m[7] * v[1] + m[8] * v[2],\n    ];\n  }\n\n  // This calculation uses Singular Value Decomposition.\n  // The SVD can be represented with formula A = USV. We are interested in the\n  // matrix S here because it represents the scale values.\n  static singularValueDecompose2dScale(m) {\n    const transpose = [m[0], m[2], m[1], m[3]];\n\n    // Multiply matrix m with its transpose.\n    const a = m[0] * transpose[0] + m[1] * transpose[2];\n    const b = m[0] * transpose[1] + m[1] * transpose[3];\n    const c = m[2] * transpose[0] + m[3] * transpose[2];\n    const d = m[2] * transpose[1] + m[3] * transpose[3];\n\n    // Solve the second degree polynomial to get roots.\n    const first = (a + d) / 2;\n    const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n    const sx = first + second || 1;\n    const sy = first - second || 1;\n\n    // Scale values are the square roots of the eigenvalues.\n    return [Math.sqrt(sx), Math.sqrt(sy)];\n  }\n\n  // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n  // For coordinate systems whose origin lies in the bottom-left, this\n  // means normalization to (BL,TR) ordering. For systems with origin in the\n  // top-left, this means (TL,BR) ordering.\n  static normalizeRect(rect) {\n    const r = rect.slice(0); // clone rect\n    if (rect[0] > rect[2]) {\n      r[0] = rect[2];\n      r[2] = rect[0];\n    }\n    if (rect[1] > rect[3]) {\n      r[1] = rect[3];\n      r[3] = rect[1];\n    }\n    return r;\n  }\n\n  // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n  // intersection of rect1 and rect2. If no intersection, returns 'null'\n  // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n  static intersect(rect1, rect2) {\n    const xLow = Math.max(\n      Math.min(rect1[0], rect1[2]),\n      Math.min(rect2[0], rect2[2])\n    );\n    const xHigh = Math.min(\n      Math.max(rect1[0], rect1[2]),\n      Math.max(rect2[0], rect2[2])\n    );\n    if (xLow > xHigh) {\n      return null;\n    }\n    const yLow = Math.max(\n      Math.min(rect1[1], rect1[3]),\n      Math.min(rect2[1], rect2[3])\n    );\n    const yHigh = Math.min(\n      Math.max(rect1[1], rect1[3]),\n      Math.max(rect2[1], rect2[3])\n    );\n    if (yLow > yHigh) {\n      return null;\n    }\n\n    return [xLow, yLow, xHigh, yHigh];\n  }\n\n  // From https://github.com/adobe-webplatform/Snap.svg/blob/b365287722a72526000ac4bfcf0ce4cac2faa015/src/path.js#L852\n  static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {\n    const tvalues = [],\n      bounds = [[], []];\n    let a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n    for (let i = 0; i < 2; ++i) {\n      if (i === 0) {\n        b = 6 * x0 - 12 * x1 + 6 * x2;\n        a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n        c = 3 * x1 - 3 * x0;\n      } else {\n        b = 6 * y0 - 12 * y1 + 6 * y2;\n        a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n        c = 3 * y1 - 3 * y0;\n      }\n      if (Math.abs(a) < 1e-12) {\n        if (Math.abs(b) < 1e-12) {\n          continue;\n        }\n        t = -c / b;\n        if (0 < t && t < 1) {\n          tvalues.push(t);\n        }\n        continue;\n      }\n      b2ac = b * b - 4 * c * a;\n      sqrtb2ac = Math.sqrt(b2ac);\n      if (b2ac < 0) {\n        continue;\n      }\n      t1 = (-b + sqrtb2ac) / (2 * a);\n      if (0 < t1 && t1 < 1) {\n        tvalues.push(t1);\n      }\n      t2 = (-b - sqrtb2ac) / (2 * a);\n      if (0 < t2 && t2 < 1) {\n        tvalues.push(t2);\n      }\n    }\n\n    let j = tvalues.length,\n      mt;\n    const jlen = j;\n    while (j--) {\n      t = tvalues[j];\n      mt = 1 - t;\n      bounds[0][j] =\n        mt * mt * mt * x0 +\n        3 * mt * mt * t * x1 +\n        3 * mt * t * t * x2 +\n        t * t * t * x3;\n      bounds[1][j] =\n        mt * mt * mt * y0 +\n        3 * mt * mt * t * y1 +\n        3 * mt * t * t * y2 +\n        t * t * t * y3;\n    }\n\n    bounds[0][jlen] = x0;\n    bounds[1][jlen] = y0;\n    bounds[0][jlen + 1] = x3;\n    bounds[1][jlen + 1] = y3;\n    bounds[0].length = bounds[1].length = jlen + 2;\n\n    return [\n      Math.min(...bounds[0]),\n      Math.min(...bounds[1]),\n      Math.max(...bounds[0]),\n      Math.max(...bounds[1]),\n    ];\n  }\n}\n\nconst PDFStringTranslateTable = [\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8,\n  0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\n  0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\n  0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\n  0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\n];\n\nfunction stringToPDFString(str) {\n  if (str[0] >= \"\\xEF\") {\n    let encoding;\n    if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n      encoding = \"utf-16be\";\n    } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n      encoding = \"utf-16le\";\n    } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n      encoding = \"utf-8\";\n    }\n\n    if (encoding) {\n      try {\n        const decoder = new TextDecoder(encoding, { fatal: true });\n        const buffer = stringToBytes(str);\n        return decoder.decode(buffer);\n      } catch (ex) {\n        warn(`stringToPDFString: \"${ex}\".`);\n      }\n    }\n  }\n  // ISO Latin 1\n  const strBuf = [];\n  for (let i = 0, ii = str.length; i < ii; i++) {\n    const code = PDFStringTranslateTable[str.charCodeAt(i)];\n    strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n  }\n  return strBuf.join(\"\");\n}\n\nfunction escapeString(str) {\n  // replace \"(\", \")\", \"\\n\", \"\\r\" and \"\\\"\n  // by \"\\(\", \"\\)\", \"\\\\n\", \"\\\\r\" and \"\\\\\"\n  // in order to write it in a PDF file.\n  return str.replace(/([()\\\\\\n\\r])/g, match => {\n    if (match === \"\\n\") {\n      return \"\\\\n\";\n    } else if (match === \"\\r\") {\n      return \"\\\\r\";\n    }\n    return `\\\\${match}`;\n  });\n}\n\nfunction isAscii(str) {\n  return /^[\\x00-\\x7F]*$/.test(str);\n}\n\nfunction stringToUTF16BEString(str) {\n  const buf = [\"\\xFE\\xFF\"];\n  for (let i = 0, ii = str.length; i < ii; i++) {\n    const char = str.charCodeAt(i);\n    buf.push(\n      String.fromCharCode((char >> 8) & 0xff),\n      String.fromCharCode(char & 0xff)\n    );\n  }\n  return buf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n  return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n  return unescape(encodeURIComponent(str));\n}\n\nfunction isArrayBuffer(v) {\n  return typeof v === \"object\" && v !== null && v.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n  if (arr1.length !== arr2.length) {\n    return false;\n  }\n  for (let i = 0, ii = arr1.length; i < ii; i++) {\n    if (arr1[i] !== arr2[i]) {\n      return false;\n    }\n  }\n  return true;\n}\n\nfunction getModificationDate(date = new Date()) {\n  const buffer = [\n    date.getUTCFullYear().toString(),\n    (date.getUTCMonth() + 1).toString().padStart(2, \"0\"),\n    date.getUTCDate().toString().padStart(2, \"0\"),\n    date.getUTCHours().toString().padStart(2, \"0\"),\n    date.getUTCMinutes().toString().padStart(2, \"0\"),\n    date.getUTCSeconds().toString().padStart(2, \"0\"),\n  ];\n\n  return buffer.join(\"\");\n}\n\n/**\n * Promise Capability object.\n *\n * @typedef {Object} PromiseCapability\n * @property {Promise<any>} promise - A Promise object.\n * @property {boolean} settled - If the Promise has been fulfilled/rejected.\n * @property {function} resolve - Fulfills the Promise.\n * @property {function} reject - Rejects the Promise.\n */\n\n/**\n * Creates a promise capability object.\n * @alias createPromiseCapability\n *\n * @returns {PromiseCapability}\n */\nfunction createPromiseCapability() {\n  const capability = Object.create(null);\n  let isSettled = false;\n\n  Object.defineProperty(capability, \"settled\", {\n    get() {\n      return isSettled;\n    },\n  });\n  capability.promise = new Promise(function (resolve, reject) {\n    capability.resolve = function (data) {\n      isSettled = true;\n      resolve(data);\n    };\n    capability.reject = function (reason) {\n      isSettled = true;\n      reject(reason);\n    };\n  });\n  return capability;\n}\n\nexport {\n  AbortException,\n  AnnotationActionEventType,\n  AnnotationBorderStyleType,\n  AnnotationEditorParamsType,\n  AnnotationEditorPrefix,\n  AnnotationEditorType,\n  AnnotationFieldFlag,\n  AnnotationFlag,\n  AnnotationMarkedState,\n  AnnotationMode,\n  AnnotationReplyType,\n  AnnotationReviewState,\n  AnnotationStateModelType,\n  AnnotationType,\n  arrayByteLength,\n  arraysToBytes,\n  assert,\n  BaseException,\n  bytesToString,\n  CMapCompressionType,\n  createPromiseCapability,\n  createValidAbsoluteUrl,\n  DocumentActionEventType,\n  escapeString,\n  FeatureTest,\n  FONT_IDENTITY_MATRIX,\n  FontType,\n  FormatError,\n  getModificationDate,\n  getVerbosityLevel,\n  IDENTITY_MATRIX,\n  ImageKind,\n  info,\n  InvalidPDFException,\n  isArrayBuffer,\n  isArrayEqual,\n  isAscii,\n  LINE_DESCENT_FACTOR,\n  LINE_FACTOR,\n  MissingPDFException,\n  objectFromMap,\n  objectSize,\n  OPS,\n  PageActionEventType,\n  PasswordException,\n  PasswordResponses,\n  PermissionFlag,\n  RenderingIntentFlag,\n  setVerbosityLevel,\n  shadow,\n  StreamType,\n  string32,\n  stringToBytes,\n  stringToPDFString,\n  stringToUTF16BEString,\n  stringToUTF8String,\n  TextRenderingMode,\n  UnexpectedResponseException,\n  UnknownErrorException,\n  unreachable,\n  UNSUPPORTED_FEATURES,\n  utf8StringToString,\n  Util,\n  VerbosityLevel,\n  warn,\n};\n", "/* Copyright 2017 Mozilla Foundation\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/* globals __non_webpack_require__ */\n\nimport { isNodeJS } from \"./is_node.js\";\n\n// Skip compatibility checks for modern builds and if we already ran the module.\nif (\n  (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"SKIP_BABEL\")) &&\n  !globalThis._pdfjsCompatibilityChecked\n) {\n  globalThis._pdfjsCompatibilityChecked = true;\n\n  // Support: Node.js<16.0.0\n  (function checkNodeBtoa() {\n    if (globalThis.btoa || !isNodeJS) {\n      return;\n    }\n    globalThis.btoa = function (chars) {\n      // eslint-disable-next-line no-undef\n      return Buffer.from(chars, \"binary\").toString(\"base64\");\n    };\n  })();\n\n  // Support: Node.js<16.0.0\n  (function checkNodeAtob() {\n    if (globalThis.atob || !isNodeJS) {\n      return;\n    }\n    globalThis.atob = function (input) {\n      // eslint-disable-next-line no-undef\n      return Buffer.from(input, \"base64\").toString(\"binary\");\n    };\n  })();\n\n  // Support: Node.js\n  (function checkDOMMatrix() {\n    if (globalThis.DOMMatrix || !isNodeJS) {\n      return;\n    }\n    globalThis.DOMMatrix = __non_webpack_require__(\n      \"dommatrix/dist/dommatrix.js\"\n    );\n  })();\n\n  // Support: Node.js\n  (function checkReadableStream() {\n    if (globalThis.ReadableStream || !isNodeJS) {\n      return;\n    }\n    globalThis.ReadableStream = __non_webpack_require__(\n      \"web-streams-polyfill/dist/ponyfill.js\"\n    ).ReadableStream;\n  })();\n\n  // Support: Firefox<90, Chrome<92, Safari<15.4, Node.js<16.6.0\n  (function checkArrayAt() {\n    if (Array.prototype.at) {\n      return;\n    }\n    require(\"core-js/es/array/at.js\");\n  })();\n\n  // Support: Firefox<90, Chrome<92, Safari<15.4, Node.js<16.6.0\n  (function checkTypedArrayAt() {\n    if (Uint8Array.prototype.at) {\n      return;\n    }\n    require(\"core-js/es/typed-array/at.js\");\n  })();\n\n  // Support: Firefox<94, Chrome<98, Safari<15.4, Node.js<17.0.0\n  (function checkStructuredClone() {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n      // The current image decoders are synchronous, hence `structuredClone`\n      // shouldn't need to be polyfilled for the IMAGE_DECODERS build target.\n      return;\n    }\n    if (globalThis.structuredClone) {\n      return;\n    }\n    require(\"core-js/web/structured-clone.js\");\n  })();\n}\n", "/* Copyright 2018 Mozilla Foundation\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/* globals process */\n\n// NW.js / Electron is a browser context, but copies some Node.js objects; see\n// http://docs.nwjs.io/en/latest/For%20Users/Advanced/JavaScript%20Contexts%20in%20NW.js/#access-nodejs-and-nwjs-api-in-browser-context\n// https://www.electronjs.org/docs/api/process#processversionselectron-readonly\n// https://www.electronjs.org/docs/api/process#processtype-readonly\nconst isNodeJS =\n  (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n  typeof process === \"object\" &&\n  process + \"\" === \"[object process]\" &&\n  !process.versions.nw &&\n  !(process.versions.electron && process.type && process.type !== \"browser\");\n\nexport { isNodeJS };\n", "/* Copyright 2012 Mozilla Foundation\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 * @module pdfjsLib\n */\n\nimport {\n  AbortException,\n  AnnotationMode,\n  assert,\n  createPromiseCapability,\n  getVerbosityLevel,\n  info,\n  InvalidPDFException,\n  isArrayBuffer,\n  MissingPDFException,\n  PasswordException,\n  RenderingIntentFlag,\n  setVerbosityLevel,\n  shadow,\n  stringToBytes,\n  UnexpectedResponseException,\n  UnknownErrorException,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  AnnotationStorage,\n  PrintAnnotationStorage,\n} from \"./annotation_storage.js\";\nimport {\n  deprecated,\n  DOMCanvasFactory,\n  DOMCMapReaderFactory,\n  DOMStandardFontDataFactory,\n  isDataScheme,\n  loadScript,\n  PageViewport,\n  RenderingCancelledException,\n  StatTimer,\n} from \"./display_utils.js\";\nimport { FontFaceObject, FontLoader } from \"./font_loader.js\";\nimport { CanvasGraphics } from \"./canvas.js\";\nimport { GlobalWorkerOptions } from \"./worker_options.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\nimport { MessageHandler } from \"../shared/message_handler.js\";\nimport { Metadata } from \"./metadata.js\";\nimport { OptionalContentConfig } from \"./optional_content_config.js\";\nimport { PDFDataTransportStream } from \"./transport_stream.js\";\nimport { XfaText } from \"./xfa_text.js\";\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536\nconst RENDERING_CANCELLED_TIMEOUT = 100; // ms\n\nlet DefaultCanvasFactory = DOMCanvasFactory;\nlet DefaultCMapReaderFactory = DOMCMapReaderFactory;\nlet DefaultStandardFontDataFactory = DOMStandardFontDataFactory;\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS) {\n  const {\n    NodeCanvasFactory,\n    NodeCMapReaderFactory,\n    NodeStandardFontDataFactory,\n  } = require(\"./node_utils.js\");\n\n  DefaultCanvasFactory = NodeCanvasFactory;\n  DefaultCMapReaderFactory = NodeCMapReaderFactory;\n  DefaultStandardFontDataFactory = NodeStandardFontDataFactory;\n}\n\n/**\n * @typedef {function} IPDFStreamFactory\n * @param {DocumentInitParameters} params - The document initialization\n *   parameters. The \"url\" key is always present.\n * @returns {Promise} A promise, which is resolved with an instance of\n *   {IPDFStream}.\n * @ignore\n */\n\n/**\n * @type {IPDFStreamFactory}\n * @private\n */\nlet createPDFNetworkStream;\n\n/**\n * Sets the function that instantiates an {IPDFStream} as an alternative PDF\n * data transport.\n *\n * @param {IPDFStreamFactory} pdfNetworkStreamFactory - The factory function\n *   that takes document initialization parameters (including a \"url\") and\n *   returns a promise which is resolved with an instance of {IPDFStream}.\n * @ignore\n */\nfunction setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {\n  createPDFNetworkStream = pdfNetworkStreamFactory;\n}\n\n/**\n * @typedef { Int8Array | Uint8Array | Uint8ClampedArray |\n *            Int16Array | Uint16Array |\n *            Int32Array | Uint32Array | Float32Array |\n *            Float64Array\n * } TypedArray\n */\n\n/**\n * @typedef { TypedArray | ArrayBuffer | Array<number> | string } BinaryData\n */\n\n/**\n * @typedef {Object} RefProxy\n * @property {number} num\n * @property {number} gen\n */\n\n/**\n * Document initialization / loading parameters object.\n *\n * @typedef {Object} DocumentInitParameters\n * @property {string | URL} [url] - The URL of the PDF.\n * @property {BinaryData} [data] - Binary PDF data.\n *   Use typed arrays (Uint8Array) to improve the memory usage. If PDF data is\n *   BASE64-encoded, use `atob()` to convert it to a binary string first.\n * @property {Object} [httpHeaders] - Basic authentication headers.\n * @property {boolean} [withCredentials] - Indicates whether or not\n *   cross-site Access-Control requests should be made using credentials such\n *   as cookies or authorization headers. The default is `false`.\n * @property {string} [password] - For decrypting password-protected PDFs.\n * @property {TypedArray} [initialData] - A typed array with the first portion\n *   or all of the pdf data. Used by the extension since some data is already\n *   loaded before the switch to range requests.\n * @property {number} [length] - The PDF file length. It's used for progress\n *   reports and range requests operations.\n * @property {PDFDataRangeTransport} [range] - Allows for using a custom range\n *   transport implementation.\n * @property {number} [rangeChunkSize] - Specify maximum number of bytes fetched\n *   per range request. The default value is {@link DEFAULT_RANGE_CHUNK_SIZE}.\n * @property {PDFWorker} [worker] - The worker that will be used for loading and\n *   parsing the PDF data.\n * @property {number} [verbosity] - Controls the logging level; the constants\n *   from {@link VerbosityLevel} should be used.\n * @property {string} [docBaseUrl] - The base URL of the document, used when\n *   attempting to recover valid absolute URLs for annotations, and outline\n *   items, that (incorrectly) only specify relative URLs.\n * @property {string} [cMapUrl] - The URL where the predefined Adobe CMaps are\n *   located. Include the trailing slash.\n * @property {boolean} [cMapPacked] - Specifies if the Adobe CMaps are binary\n *   packed or not.\n * @property {Object} [CMapReaderFactory] - The factory that will be used when\n *   reading built-in CMap files. Providing a custom factory is useful for\n *   environments without Fetch API or `XMLHttpRequest` support, such as\n *   Node.js. The default value is {DOMCMapReaderFactory}.\n * @property {boolean} [useSystemFonts] - When `true`, fonts that aren't\n *   embedded in the PDF document will fallback to a system font.\n *   The default value is `true` in web environments and `false` in Node.js;\n *   unless `disableFontFace === true` in which case this defaults to `false`\n *   regardless of the environment (to prevent completely broken fonts).\n * @property {string} [standardFontDataUrl] - The URL where the standard font\n *   files are located. Include the trailing slash.\n * @property {Object} [StandardFontDataFactory] - The factory that will be used\n *   when reading the standard font files. Providing a custom factory is useful\n *   for environments without Fetch API or `XMLHttpRequest` support, such as\n *   Node.js. The default value is {DOMStandardFontDataFactory}.\n * @property {boolean} [useWorkerFetch] - Enable using the Fetch API in the\n *   worker-thread when reading CMap and standard font files. When `true`,\n *   the `CMapReaderFactory` and `StandardFontDataFactory` options are ignored.\n *   The default value is `true` in web environments and `false` in Node.js.\n * @property {boolean} [stopAtErrors] - Reject certain promises, e.g.\n *   `getOperatorList`, `getTextContent`, and `RenderTask`, when the associated\n *   PDF data cannot be successfully parsed, instead of attempting to recover\n *   whatever possible of the data. The default value is `false`.\n * @property {number} [maxImageSize] - The maximum allowed image size in total\n *   pixels, i.e. width * height. Images above this value will not be rendered.\n *   Use -1 for no limit, which is also the default value.\n * @property {boolean} [isEvalSupported] - Determines if we can evaluate strings\n *   as JavaScript. Primarily used to improve performance of font rendering, and\n *   when parsing PDF functions. The default value is `true`.\n * @property {boolean} [disableFontFace] - By default fonts are converted to\n *   OpenType fonts and loaded via the Font Loading API or `@font-face` rules.\n *   If disabled, fonts will be rendered using a built-in font renderer that\n *   constructs the glyphs with primitive path commands.\n *   The default value is `false` in web environments and `true` in Node.js.\n * @property {boolean} [fontExtraProperties] - Include additional properties,\n *   which are unused during rendering of PDF documents, when exporting the\n *   parsed font data from the worker-thread. This may be useful for debugging\n *   purposes (and backwards compatibility), but note that it will lead to\n *   increased memory usage. The default value is `false`.\n * @property {boolean} [enableXfa] - Render Xfa forms if any.\n *   The default value is `false`.\n * @property {HTMLDocument} [ownerDocument] - Specify an explicit document\n *   context to create elements with and to load resources, such as fonts,\n *   into. Defaults to the current document.\n * @property {boolean} [disableRange] - Disable range request loading of PDF\n *   files. When enabled, and if the server supports partial content requests,\n *   then the PDF will be fetched in chunks. The default value is `false`.\n * @property {boolean} [disableStream] - Disable streaming of PDF file data.\n *   By default PDF.js attempts to load PDF files in chunks. The default value\n *   is `false`.\n * @property {boolean} [disableAutoFetch] - Disable pre-fetching of PDF file\n *   data. When range requests are enabled PDF.js will automatically keep\n *   fetching more data even if it isn't needed to display the current page.\n *   The default value is `false`.\n *\n *   NOTE: It is also necessary to disable streaming, see above, in order for\n *   disabling of pre-fetching to work correctly.\n * @property {boolean} [pdfBug] - Enables special hooks for debugging PDF.js\n *   (see `web/debugger.js`). The default value is `false`.\n */\n\n/**\n * @typedef { string | URL | TypedArray | ArrayBuffer |\n *            PDFDataRangeTransport | DocumentInitParameters\n * } GetDocumentParameters\n */\n\n/**\n * This is the main entry point for loading a PDF and interacting with it.\n *\n * NOTE: If a URL is used to fetch the PDF data a standard Fetch API call (or\n * XHR as fallback) is used, which means it must follow same origin rules,\n * e.g. no cross-domain requests without CORS.\n *\n * @param {GetDocumentParameters}\n *   src - Can be a URL where a PDF file is located, a typed array (Uint8Array)\n *         already populated with data, or a parameter object.\n * @returns {PDFDocumentLoadingTask}\n */\nfunction getDocument(src) {\n  const task = new PDFDocumentLoadingTask();\n\n  let source;\n  if (typeof src === \"string\" || src instanceof URL) {\n    source = { url: src };\n  } else if (isArrayBuffer(src)) {\n    source = { data: src };\n  } else if (src instanceof PDFDataRangeTransport) {\n    source = { range: src };\n  } else {\n    if (typeof src !== \"object\") {\n      throw new Error(\n        \"Invalid parameter in getDocument, \" +\n          \"need either string, URL, TypedArray, or parameter object.\"\n      );\n    }\n    if (!src.url && !src.data && !src.range) {\n      throw new Error(\n        \"Invalid parameter object: need either .data, .range or .url\"\n      );\n    }\n    source = src;\n  }\n  const params = Object.create(null);\n  let rangeTransport = null,\n    worker = null;\n\n  for (const key in source) {\n    const value = source[key];\n\n    switch (key) {\n      case \"url\":\n        if (typeof window !== \"undefined\") {\n          try {\n            // The full path is required in the 'url' field.\n            params[key] = new URL(value, window.location).href;\n            continue;\n          } catch (ex) {\n            warn(`Cannot create valid URL: \"${ex}\".`);\n          }\n        } else if (typeof value === \"string\" || value instanceof URL) {\n          params[key] = value.toString(); // Support Node.js environments.\n          continue;\n        }\n        throw new Error(\n          \"Invalid PDF url data: \" +\n            \"either string or URL-object is expected in the url property.\"\n        );\n      case \"range\":\n        rangeTransport = value;\n        continue;\n      case \"worker\":\n        worker = value;\n        continue;\n      case \"data\":\n        // Converting string or array-like data to Uint8Array.\n        if (\n          typeof PDFJSDev !== \"undefined\" &&\n          PDFJSDev.test(\"GENERIC\") &&\n          isNodeJS &&\n          typeof Buffer !== \"undefined\" && // eslint-disable-line no-undef\n          value instanceof Buffer // eslint-disable-line no-undef\n        ) {\n          params[key] = new Uint8Array(value);\n        } else if (value instanceof Uint8Array) {\n          break; // Use the data as-is when it's already a Uint8Array.\n        } else if (typeof value === \"string\") {\n          params[key] = stringToBytes(value);\n        } else if (\n          typeof value === \"object\" &&\n          value !== null &&\n          !isNaN(value.length)\n        ) {\n          params[key] = new Uint8Array(value);\n        } else if (isArrayBuffer(value)) {\n          params[key] = new Uint8Array(value);\n        } else {\n          throw new Error(\n            \"Invalid PDF binary data: either TypedArray, \" +\n              \"string, or array-like object is expected in the data property.\"\n          );\n        }\n        continue;\n    }\n    params[key] = value;\n  }\n\n  params.CMapReaderFactory =\n    params.CMapReaderFactory || DefaultCMapReaderFactory;\n  params.StandardFontDataFactory =\n    params.StandardFontDataFactory || DefaultStandardFontDataFactory;\n  params.ignoreErrors = params.stopAtErrors !== true;\n  params.fontExtraProperties = params.fontExtraProperties === true;\n  params.pdfBug = params.pdfBug === true;\n  params.enableXfa = params.enableXfa === true;\n\n  if (!Number.isInteger(params.rangeChunkSize) || params.rangeChunkSize < 1) {\n    params.rangeChunkSize = DEFAULT_RANGE_CHUNK_SIZE;\n  }\n  if (\n    typeof params.docBaseUrl !== \"string\" ||\n    isDataScheme(params.docBaseUrl)\n  ) {\n    // Ignore \"data:\"-URLs, since they can't be used to recover valid absolute\n    // URLs anyway. We want to avoid sending them to the worker-thread, since\n    // they contain the *entire* PDF document and can thus be arbitrarily long.\n    params.docBaseUrl = null;\n  }\n  if (!Number.isInteger(params.maxImageSize) || params.maxImageSize < -1) {\n    params.maxImageSize = -1;\n  }\n  if (typeof params.cMapUrl !== \"string\") {\n    params.cMapUrl = null;\n  }\n  if (typeof params.standardFontDataUrl !== \"string\") {\n    params.standardFontDataUrl = null;\n  }\n  if (typeof params.useWorkerFetch !== \"boolean\") {\n    params.useWorkerFetch =\n      params.CMapReaderFactory === DOMCMapReaderFactory &&\n      params.StandardFontDataFactory === DOMStandardFontDataFactory;\n  }\n  if (typeof params.isEvalSupported !== \"boolean\") {\n    params.isEvalSupported = true;\n  }\n  if (typeof params.disableFontFace !== \"boolean\") {\n    params.disableFontFace = isNodeJS;\n  }\n  if (typeof params.useSystemFonts !== \"boolean\") {\n    params.useSystemFonts = !isNodeJS && !params.disableFontFace;\n  }\n  if (\n    typeof params.ownerDocument !== \"object\" ||\n    params.ownerDocument === null\n  ) {\n    params.ownerDocument = globalThis.document;\n  }\n\n  if (typeof params.disableRange !== \"boolean\") {\n    params.disableRange = false;\n  }\n  if (typeof params.disableStream !== \"boolean\") {\n    params.disableStream = false;\n  }\n  if (typeof params.disableAutoFetch !== \"boolean\") {\n    params.disableAutoFetch = false;\n  }\n\n  // Set the main-thread verbosity level.\n  setVerbosityLevel(params.verbosity);\n\n  if (!worker) {\n    const workerParams = {\n      verbosity: params.verbosity,\n      port: GlobalWorkerOptions.workerPort,\n    };\n    // Worker was not provided -- creating and owning our own. If message port\n    // is specified in global worker options, using it.\n    worker = workerParams.port\n      ? PDFWorker.fromPort(workerParams)\n      : new PDFWorker(workerParams);\n    task._worker = worker;\n  }\n  const docId = task.docId;\n  worker.promise\n    .then(function () {\n      if (task.destroyed) {\n        throw new Error(\"Loading aborted\");\n      }\n\n      const workerIdPromise = _fetchDocument(\n        worker,\n        params,\n        rangeTransport,\n        docId\n      );\n      const networkStreamPromise = new Promise(function (resolve) {\n        let networkStream;\n        if (rangeTransport) {\n          networkStream = new PDFDataTransportStream(\n            {\n              length: params.length,\n              initialData: params.initialData,\n              progressiveDone: params.progressiveDone,\n              contentDispositionFilename: params.contentDispositionFilename,\n              disableRange: params.disableRange,\n              disableStream: params.disableStream,\n            },\n            rangeTransport\n          );\n        } else if (!params.data) {\n          networkStream = createPDFNetworkStream({\n            url: params.url,\n            length: params.length,\n            httpHeaders: params.httpHeaders,\n            withCredentials: params.withCredentials,\n            rangeChunkSize: params.rangeChunkSize,\n            disableRange: params.disableRange,\n            disableStream: params.disableStream,\n          });\n        }\n        resolve(networkStream);\n      });\n\n      return Promise.all([workerIdPromise, networkStreamPromise]).then(\n        function ([workerId, networkStream]) {\n          if (task.destroyed) {\n            throw new Error(\"Loading aborted\");\n          }\n\n          const messageHandler = new MessageHandler(\n            docId,\n            workerId,\n            worker.port\n          );\n          const transport = new WorkerTransport(\n            messageHandler,\n            task,\n            networkStream,\n            params\n          );\n          task._transport = transport;\n          messageHandler.send(\"Ready\", null);\n        }\n      );\n    })\n    .catch(task._capability.reject);\n\n  return task;\n}\n\n/**\n * Starts fetching of specified PDF document/data.\n *\n * @param {PDFWorker} worker\n * @param {Object} source\n * @param {PDFDataRangeTransport} pdfDataRangeTransport\n * @param {string} docId - Unique document ID, used in `MessageHandler`.\n * @returns {Promise<string>} A promise that is resolved when the worker ID of\n *   the `MessageHandler` is known.\n * @private\n */\nasync function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {\n  if (worker.destroyed) {\n    throw new Error(\"Worker was destroyed\");\n  }\n\n  if (pdfDataRangeTransport) {\n    source.length = pdfDataRangeTransport.length;\n    source.initialData = pdfDataRangeTransport.initialData;\n    source.progressiveDone = pdfDataRangeTransport.progressiveDone;\n    source.contentDispositionFilename =\n      pdfDataRangeTransport.contentDispositionFilename;\n  }\n  const workerId = await worker.messageHandler.sendWithPromise(\n    \"GetDocRequest\",\n    {\n      docId,\n      apiVersion:\n        typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n          ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n          : null,\n      // Only send the required properties, and *not* the entire object.\n      source: {\n        data: source.data,\n        url: source.url,\n        password: source.password,\n        disableAutoFetch: source.disableAutoFetch,\n        rangeChunkSize: source.rangeChunkSize,\n        length: source.length,\n      },\n      maxImageSize: source.maxImageSize,\n      disableFontFace: source.disableFontFace,\n      docBaseUrl: source.docBaseUrl,\n      ignoreErrors: source.ignoreErrors,\n      isEvalSupported: source.isEvalSupported,\n      fontExtraProperties: source.fontExtraProperties,\n      enableXfa: source.enableXfa,\n      useSystemFonts: source.useSystemFonts,\n      cMapUrl: source.useWorkerFetch ? source.cMapUrl : null,\n      standardFontDataUrl: source.useWorkerFetch\n        ? source.standardFontDataUrl\n        : null,\n    }\n  );\n\n  // Release the TypedArray data, when it exists, since it's no longer needed\n  // on the main-thread *after* it's been sent to the worker-thread.\n  if (source.data) {\n    source.data = null;\n  }\n\n  if (worker.destroyed) {\n    throw new Error(\"Worker was destroyed\");\n  }\n  return workerId;\n}\n\n/**\n * @typedef {Object} OnProgressParameters\n * @property {number} loaded - Currently loaded number of bytes.\n * @property {number} total - Total number of bytes in the PDF file.\n */\n\n/**\n * The loading task controls the operations required to load a PDF document\n * (such as network requests) and provides a way to listen for completion,\n * after which individual pages can be rendered.\n */\nclass PDFDocumentLoadingTask {\n  static #docId = 0;\n\n  constructor() {\n    this._capability = createPromiseCapability();\n    this._transport = null;\n    this._worker = null;\n\n    /**\n     * Unique identifier for the document loading task.\n     * @type {string}\n     */\n    this.docId = `d${PDFDocumentLoadingTask.#docId++}`;\n\n    /**\n     * Whether the loading task is destroyed or not.\n     * @type {boolean}\n     */\n    this.destroyed = false;\n\n    /**\n     * Callback to request a password if a wrong or no password was provided.\n     * The callback receives two parameters: a function that should be called\n     * with the new password, and a reason (see {@link PasswordResponses}).\n     * @type {function}\n     */\n    this.onPassword = null;\n\n    /**\n     * Callback to be able to monitor the loading progress of the PDF file\n     * (necessary to implement e.g. a loading bar).\n     * The callback receives an {@link OnProgressParameters} argument.\n     * @type {function}\n     */\n    this.onProgress = null;\n\n    /**\n     * Callback for when an unsupported feature is used in the PDF document.\n     * The callback receives an {@link UNSUPPORTED_FEATURES} argument.\n     * @type {function}\n     */\n    this.onUnsupportedFeature = null;\n  }\n\n  /**\n   * Promise for document loading task completion.\n   * @type {Promise<PDFDocumentProxy>}\n   */\n  get promise() {\n    return this._capability.promise;\n  }\n\n  /**\n   * Abort all network requests and destroy the worker.\n   * @returns {Promise<void>} A promise that is resolved when destruction is\n   *   completed.\n   */\n  async destroy() {\n    this.destroyed = true;\n    await this._transport?.destroy();\n\n    this._transport = null;\n    if (this._worker) {\n      this._worker.destroy();\n      this._worker = null;\n    }\n  }\n}\n\n/**\n * Abstract class to support range requests file loading.\n */\nclass PDFDataRangeTransport {\n  /**\n   * @param {number} length\n   * @param {Uint8Array} initialData\n   * @param {boolean} [progressiveDone]\n   * @param {string} [contentDispositionFilename]\n   */\n  constructor(\n    length,\n    initialData,\n    progressiveDone = false,\n    contentDispositionFilename = null\n  ) {\n    this.length = length;\n    this.initialData = initialData;\n    this.progressiveDone = progressiveDone;\n    this.contentDispositionFilename = contentDispositionFilename;\n\n    this._rangeListeners = [];\n    this._progressListeners = [];\n    this._progressiveReadListeners = [];\n    this._progressiveDoneListeners = [];\n    this._readyCapability = createPromiseCapability();\n  }\n\n  addRangeListener(listener) {\n    this._rangeListeners.push(listener);\n  }\n\n  addProgressListener(listener) {\n    this._progressListeners.push(listener);\n  }\n\n  addProgressiveReadListener(listener) {\n    this._progressiveReadListeners.push(listener);\n  }\n\n  addProgressiveDoneListener(listener) {\n    this._progressiveDoneListeners.push(listener);\n  }\n\n  onDataRange(begin, chunk) {\n    for (const listener of this._rangeListeners) {\n      listener(begin, chunk);\n    }\n  }\n\n  onDataProgress(loaded, total) {\n    this._readyCapability.promise.then(() => {\n      for (const listener of this._progressListeners) {\n        listener(loaded, total);\n      }\n    });\n  }\n\n  onDataProgressiveRead(chunk) {\n    this._readyCapability.promise.then(() => {\n      for (const listener of this._progressiveReadListeners) {\n        listener(chunk);\n      }\n    });\n  }\n\n  onDataProgressiveDone() {\n    this._readyCapability.promise.then(() => {\n      for (const listener of this._progressiveDoneListeners) {\n        listener();\n      }\n    });\n  }\n\n  transportReady() {\n    this._readyCapability.resolve();\n  }\n\n  requestDataRange(begin, end) {\n    unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n  }\n\n  abort() {}\n}\n\n/**\n * Proxy to a `PDFDocument` in the worker thread.\n */\nclass PDFDocumentProxy {\n  constructor(pdfInfo, transport) {\n    this._pdfInfo = pdfInfo;\n    this._transport = transport;\n\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n      Object.defineProperty(this, \"fingerprint\", {\n        get() {\n          deprecated(\n            \"`PDFDocumentProxy.fingerprint`, \" +\n              \"please use `PDFDocumentProxy.fingerprints` instead.\"\n          );\n          return this.fingerprints[0];\n        },\n      });\n\n      Object.defineProperty(this, \"getStats\", {\n        value: async () => {\n          deprecated(\n            \"`PDFDocumentProxy.getStats`, \" +\n              \"please use the `PDFDocumentProxy.stats`-getter instead.\"\n          );\n          return this.stats || { streamTypes: {}, fontTypes: {} };\n        },\n      });\n    }\n  }\n\n  /**\n   * @type {AnnotationStorage} Storage for annotation data in forms.\n   */\n  get annotationStorage() {\n    return this._transport.annotationStorage;\n  }\n\n  /**\n   * @type {number} Total number of pages in the PDF file.\n   */\n  get numPages() {\n    return this._pdfInfo.numPages;\n  }\n\n  /**\n   * @type {Array<string, string|null>} A (not guaranteed to be) unique ID to\n   *   identify the PDF document.\n   *   NOTE: The first element will always be defined for all PDF documents,\n   *   whereas the second element is only defined for *modified* PDF documents.\n   */\n  get fingerprints() {\n    return this._pdfInfo.fingerprints;\n  }\n\n  /**\n   * @typedef {Object} PDFDocumentStats\n   * @property {Object<string, boolean>} streamTypes - Used stream types in the\n   *   document (an item is set to true if specific stream ID was used in the\n   *   document).\n   * @property {Object<string, boolean>} fontTypes - Used font types in the\n   *   document (an item is set to true if specific font ID was used in the\n   *   document).\n   */\n\n  /**\n   * @type {PDFDocumentStats | null} The current statistics about document\n   *   structures, or `null` when no statistics exists.\n   */\n  get stats() {\n    return this._transport.stats;\n  }\n\n  /**\n   * @type {boolean} True if only XFA form.\n   */\n  get isPureXfa() {\n    return !!this._transport._htmlForXfa;\n  }\n\n  /**\n   * NOTE: This is (mostly) intended to support printing of XFA forms.\n   *\n   * @type {Object | null} An object representing a HTML tree structure\n   *   to render the XFA, or `null` when no XFA form exists.\n   */\n  get allXfaHtml() {\n    return this._transport._htmlForXfa;\n  }\n\n  /**\n   * @param {number} pageNumber - The page number to get. The first page is 1.\n   * @returns {Promise<PDFPageProxy>} A promise that is resolved with\n   *   a {@link PDFPageProxy} object.\n   */\n  getPage(pageNumber) {\n    return this._transport.getPage(pageNumber);\n  }\n\n  /**\n   * @param {RefProxy} ref - The page reference.\n   * @returns {Promise<number>} A promise that is resolved with the page index,\n   *   starting from zero, that is associated with the reference.\n   */\n  getPageIndex(ref) {\n    return this._transport.getPageIndex(ref);\n  }\n\n  /**\n   * @returns {Promise<Object<string, Array<any>>>} A promise that is resolved\n   *   with a mapping from named destinations to references.\n   *\n   * This can be slow for large documents. Use `getDestination` instead.\n   */\n  getDestinations() {\n    return this._transport.getDestinations();\n  }\n\n  /**\n   * @param {string} id - The named destination to get.\n   * @returns {Promise<Array<any> | null>} A promise that is resolved with all\n   *   information of the given named destination, or `null` when the named\n   *   destination is not present in the PDF file.\n   */\n  getDestination(id) {\n    return this._transport.getDestination(id);\n  }\n\n  /**\n   * @returns {Promise<Array<string> | null>} A promise that is resolved with\n   *   an {Array} containing the page labels that correspond to the page\n   *   indexes, or `null` when no page labels are present in the PDF file.\n   */\n  getPageLabels() {\n    return this._transport.getPageLabels();\n  }\n\n  /**\n   * @returns {Promise<string>} A promise that is resolved with a {string}\n   *   containing the page layout name.\n   */\n  getPageLayout() {\n    return this._transport.getPageLayout();\n  }\n\n  /**\n   * @returns {Promise<string>} A promise that is resolved with a {string}\n   *   containing the page mode name.\n   */\n  getPageMode() {\n    return this._transport.getPageMode();\n  }\n\n  /**\n   * @returns {Promise<Object | null>} A promise that is resolved with an\n   *   {Object} containing the viewer preferences, or `null` when no viewer\n   *   preferences are present in the PDF file.\n   */\n  getViewerPreferences() {\n    return this._transport.getViewerPreferences();\n  }\n\n  /**\n   * @returns {Promise<any | null>} A promise that is resolved with an {Array}\n   *   containing the destination, or `null` when no open action is present\n   *   in the PDF.\n   */\n  getOpenAction() {\n    return this._transport.getOpenAction();\n  }\n\n  /**\n   * @returns {Promise<any>} A promise that is resolved with a lookup table\n   *   for mapping named attachments to their content.\n   */\n  getAttachments() {\n    return this._transport.getAttachments();\n  }\n\n  /**\n   * @returns {Promise<Array<string> | null>} A promise that is resolved with\n   *   an {Array} of all the JavaScript strings in the name tree, or `null`\n   *   if no JavaScript exists.\n   */\n  getJavaScript() {\n    return this._transport.getJavaScript();\n  }\n\n  /**\n   * @returns {Promise<Object | null>} A promise that is resolved with\n   *   an {Object} with the JavaScript actions:\n   *     - from the name tree (like getJavaScript);\n   *     - from A or AA entries in the catalog dictionary.\n   *   , or `null` if no JavaScript exists.\n   */\n  getJSActions() {\n    return this._transport.getDocJSActions();\n  }\n\n  /**\n   * @typedef {Object} OutlineNode\n   * @property {string} title\n   * @property {boolean} bold\n   * @property {boolean} italic\n   * @property {Uint8ClampedArray} color - The color in RGB format to use for\n   *   display purposes.\n   * @property {string | Array<any> | null} dest\n   * @property {string | null} url\n   * @property {string | undefined} unsafeUrl\n   * @property {boolean | undefined} newWindow\n   * @property {number | undefined} count\n   * @property {Array<OutlineNode>} items\n   */\n\n  /**\n   * @returns {Promise<Array<OutlineNode>>} A promise that is resolved with an\n   *   {Array} that is a tree outline (if it has one) of the PDF file.\n   */\n  getOutline() {\n    return this._transport.getOutline();\n  }\n\n  /**\n   * @returns {Promise<OptionalContentConfig>} A promise that is resolved with\n   *   an {@link OptionalContentConfig} that contains all the optional content\n   *   groups (assuming that the document has any).\n   */\n  getOptionalContentConfig() {\n    return this._transport.getOptionalContentConfig();\n  }\n\n  /**\n   * @returns {Promise<Array<number> | null>} A promise that is resolved with\n   *   an {Array} that contains the permission flags for the PDF document, or\n   *   `null` when no permissions are present in the PDF file.\n   */\n  getPermissions() {\n    return this._transport.getPermissions();\n  }\n\n  /**\n   * @returns {Promise<{ info: Object, metadata: Metadata }>} A promise that is\n   *   resolved with an {Object} that has `info` and `metadata` properties.\n   *   `info` is an {Object} filled with anything available in the information\n   *   dictionary and similarly `metadata` is a {Metadata} object with\n   *   information from the metadata section of the PDF.\n   */\n  getMetadata() {\n    return this._transport.getMetadata();\n  }\n\n  /**\n   * @typedef {Object} MarkInfo\n   * Properties correspond to Table 321 of the PDF 32000-1:2008 spec.\n   * @property {boolean} Marked\n   * @property {boolean} UserProperties\n   * @property {boolean} Suspects\n   */\n\n  /**\n   * @returns {Promise<MarkInfo | null>} A promise that is resolved with\n   *   a {MarkInfo} object that contains the MarkInfo flags for the PDF\n   *   document, or `null` when no MarkInfo values are present in the PDF file.\n   */\n  getMarkInfo() {\n    return this._transport.getMarkInfo();\n  }\n\n  /**\n   * @returns {Promise<Uint8Array>} A promise that is resolved with a\n   *   {Uint8Array} that has the raw data from the PDF.\n   */\n  getData() {\n    return this._transport.getData();\n  }\n\n  /**\n   * @returns {Promise<{ length: number }>} A promise that is resolved when the\n   *   document's data is loaded. It is resolved with an {Object} that contains\n   *   the `length` property that indicates size of the PDF data in bytes.\n   */\n  getDownloadInfo() {\n    return this._transport.downloadInfoCapability.promise;\n  }\n\n  /**\n   * Cleans up resources allocated by the document on both the main and worker\n   * threads.\n   *\n   * NOTE: Do not, under any circumstances, call this method when rendering is\n   * currently ongoing since that may lead to rendering errors.\n   *\n   * @param {boolean} [keepLoadedFonts] - Let fonts remain attached to the DOM.\n   *   NOTE: This will increase persistent memory usage, hence don't use this\n   *   option unless absolutely necessary. The default value is `false`.\n   * @returns {Promise} A promise that is resolved when clean-up has finished.\n   */\n  cleanup(keepLoadedFonts = false) {\n    return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n  }\n\n  /**\n   * Destroys the current document instance and terminates the worker.\n   */\n  destroy() {\n    return this.loadingTask.destroy();\n  }\n\n  /**\n   * @type {DocumentInitParameters} A subset of the current\n   *   {DocumentInitParameters}, which are needed in the viewer.\n   */\n  get loadingParams() {\n    return this._transport.loadingParams;\n  }\n\n  /**\n   * @type {PDFDocumentLoadingTask} The loadingTask for the current document.\n   */\n  get loadingTask() {\n    return this._transport.loadingTask;\n  }\n\n  /**\n   * @returns {Promise<Uint8Array>} A promise that is resolved with a\n   *   {Uint8Array} containing the full data of the saved document.\n   */\n  saveDocument() {\n    if (\n      (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n      this._transport.annotationStorage.size <= 0\n    ) {\n      deprecated(\n        \"saveDocument called while `annotationStorage` is empty, \" +\n          \"please use the getData-method instead.\"\n      );\n    }\n    return this._transport.saveDocument();\n  }\n\n  /**\n   * @returns {Promise<Object<string, Array<Object>> | null>} A promise that is\n   *   resolved with an {Object} containing /AcroForm field data for the JS\n   *   sandbox, or `null` when no field data is present in the PDF file.\n   */\n  getFieldObjects() {\n    return this._transport.getFieldObjects();\n  }\n\n  /**\n   * @returns {Promise<boolean>} A promise that is resolved with `true`\n   *   if some /AcroForm fields have JavaScript actions.\n   */\n  hasJSActions() {\n    return this._transport.hasJSActions();\n  }\n\n  /**\n   * @returns {Promise<Array<string> | null>} A promise that is resolved with an\n   *   {Array<string>} containing IDs of annotations that have a calculation\n   *   action, or `null` when no such annotations are present in the PDF file.\n   */\n  getCalculationOrderIds() {\n    return this._transport.getCalculationOrderIds();\n  }\n}\n\n/**\n * Page getViewport parameters.\n *\n * @typedef {Object} GetViewportParameters\n * @property {number} scale - The desired scale of the viewport.\n * @property {number} [rotation] - The desired rotation, in degrees, of\n *   the viewport. If omitted it defaults to the page rotation.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n *   The default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n *   The default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be\n *   flipped. The default value is `false`.\n */\n\n/**\n * Page getTextContent parameters.\n *\n * @typedef {Object} getTextContentParameters\n * @property {boolean} disableCombineTextItems - Do not attempt to combine\n *   same line {@link TextItem}'s. The default value is `false`.\n * @property {boolean} [includeMarkedContent] - When true include marked\n *   content items in the items array of TextContent. The default is `false`.\n */\n\n/**\n * Page text content.\n *\n * @typedef {Object} TextContent\n * @property {Array<TextItem | TextMarkedContent>} items - Array of\n *   {@link TextItem} and {@link TextMarkedContent} objects. TextMarkedContent\n *   items are included when includeMarkedContent is true.\n * @property {Object<string, TextStyle>} styles - {@link TextStyle} objects,\n *   indexed by font name.\n */\n\n/**\n * Page text content part.\n *\n * @typedef {Object} TextItem\n * @property {string} str - Text content.\n * @property {string} dir - Text direction: 'ttb', 'ltr' or 'rtl'.\n * @property {Array<any>} transform - Transformation matrix.\n * @property {number} width - Width in device space.\n * @property {number} height - Height in device space.\n * @property {string} fontName - Font name used by PDF.js for converted font.\n * @property {boolean} hasEOL - Indicating if the text content is followed by a\n *   line-break.\n */\n\n/**\n * Page text marked content part.\n *\n * @typedef {Object} TextMarkedContent\n * @property {string} type - Either 'beginMarkedContent',\n *   'beginMarkedContentProps', or 'endMarkedContent'.\n * @property {string} id - The marked content identifier. Only used for type\n *   'beginMarkedContentProps'.\n */\n\n/**\n * Text style.\n *\n * @typedef {Object} TextStyle\n * @property {number} ascent - Font ascent.\n * @property {number} descent - Font descent.\n * @property {boolean} vertical - Whether or not the text is in vertical mode.\n * @property {string} fontFamily - The possible font family.\n */\n\n/**\n * Page annotation parameters.\n *\n * @typedef {Object} GetAnnotationsParameters\n * @property {string} [intent] - Determines the annotations that are fetched,\n *   can be 'display' (viewable annotations), 'print' (printable annotations),\n *   or 'any' (all annotations). The default value is 'display'.\n */\n\n/**\n * Page render parameters.\n *\n * @typedef {Object} RenderParameters\n * @property {Object} canvasContext - A 2D context of a DOM Canvas object.\n * @property {PageViewport} viewport - Rendering viewport obtained by calling\n *   the `PDFPageProxy.getViewport` method.\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n *   or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are rendered\n *   onto the canvas, for annotations with appearance-data; the values from\n *   {@link AnnotationMode} should be used. The following values are supported:\n *    - `AnnotationMode.DISABLE`, which disables all annotations.\n *    - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n *      it also depends on the `intent`-option, see above).\n *    - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n *      interactive form elements (those will be rendered in the display layer).\n *    - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n *      (as above) but where interactive form elements are updated with data\n *      from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n *   The default value is `AnnotationMode.ENABLE`.\n * @property {Array<any>} [transform] - Additional transform, applied just\n *   before viewport transform.\n * @property {Object} [imageLayer] - An object that has `beginLayout`,\n *   `endLayout` and `appendImage` functions.\n * @property {Object} [canvasFactory] - The factory instance that will be used\n *   when creating canvases. The default value is {new DOMCanvasFactory()}.\n * @property {Object | string} [background] - Background to use for the canvas.\n *   Any valid `canvas.fillStyle` can be used: a `DOMString` parsed as CSS\n *   <color> value, a `CanvasGradient` object (a linear or radial gradient) or\n *   a `CanvasPattern` object (a repetitive image). The default value is\n *   'rgb(255,255,255)'.\n *\n *   NOTE: This option may be partially, or completely, ignored when the\n *   `pageColors`-option is used.\n * @property {Object} [pageColors] - Overwrites background and foreground colors\n *   with user defined ones in order to improve readability in high contrast\n *   mode.\n * @property {Promise<OptionalContentConfig>} [optionalContentConfigPromise] -\n *   A promise that should resolve with an {@link OptionalContentConfig}\n *   created from `PDFDocumentProxy.getOptionalContentConfig`. If `null`,\n *   the configuration will be fetched automatically with the default visibility\n *   states set.\n * @property {Map<string, HTMLCanvasElement>} [annotationCanvasMap] - Map some\n *   annotation ids with canvases used to render them.\n * @property {PrintAnnotationStorage} [printAnnotationStorage]\n */\n\n/**\n * Page getOperatorList parameters.\n *\n * @typedef {Object} GetOperatorListParameters\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n *   or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are included\n *   in the operatorList, for annotations with appearance-data; the values from\n *   {@link AnnotationMode} should be used. The following values are supported:\n *    - `AnnotationMode.DISABLE`, which disables all annotations.\n *    - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n *      it also depends on the `intent`-option, see above).\n *    - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n *      interactive form elements (those will be rendered in the display layer).\n *    - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n *      (as above) but where interactive form elements are updated with data\n *      from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n *   The default value is `AnnotationMode.ENABLE`.\n * @property {PrintAnnotationStorage} [printAnnotationStorage]\n */\n\n/**\n * Structure tree node. The root node will have a role \"Root\".\n *\n * @typedef {Object} StructTreeNode\n * @property {Array<StructTreeNode | StructTreeContent>} children - Array of\n *   {@link StructTreeNode} and {@link StructTreeContent} objects.\n * @property {string} role - element's role, already mapped if a role map exists\n * in the PDF.\n */\n\n/**\n * Structure tree content.\n *\n * @typedef {Object} StructTreeContent\n * @property {string} type - either \"content\" for page and stream structure\n *   elements or \"object\" for object references.\n * @property {string} id - unique id that will map to the text layer.\n */\n\n/**\n * PDF page operator list.\n *\n * @typedef {Object} PDFOperatorList\n * @property {Array<number>} fnArray - Array containing the operator functions.\n * @property {Array<any>} argsArray - Array containing the arguments of the\n *   functions.\n */\n\n/**\n * Proxy to a `PDFPage` in the worker thread.\n */\nclass PDFPageProxy {\n  constructor(pageIndex, pageInfo, transport, ownerDocument, pdfBug = false) {\n    this._pageIndex = pageIndex;\n    this._pageInfo = pageInfo;\n    this._ownerDocument = ownerDocument;\n    this._transport = transport;\n    this._stats = pdfBug ? new StatTimer() : null;\n    this._pdfBug = pdfBug;\n    /** @type {PDFObjects} */\n    this.commonObjs = transport.commonObjs;\n    this.objs = new PDFObjects();\n\n    this._bitmaps = new Set();\n\n    this.cleanupAfterRender = false;\n    this.pendingCleanup = false;\n    this._intentStates = new Map();\n    this._annotationPromises = new Map();\n    this.destroyed = false;\n  }\n\n  /**\n   * @type {number} Page number of the page. First page is 1.\n   */\n  get pageNumber() {\n    return this._pageIndex + 1;\n  }\n\n  /**\n   * @type {number} The number of degrees the page is rotated clockwise.\n   */\n  get rotate() {\n    return this._pageInfo.rotate;\n  }\n\n  /**\n   * @type {RefProxy | null} The reference that points to this page.\n   */\n  get ref() {\n    return this._pageInfo.ref;\n  }\n\n  /**\n   * @type {number} The default size of units in 1/72nds of an inch.\n   */\n  get userUnit() {\n    return this._pageInfo.userUnit;\n  }\n\n  /**\n   * @type {Array<number>} An array of the visible portion of the PDF page in\n   *   user space units [x1, y1, x2, y2].\n   */\n  get view() {\n    return this._pageInfo.view;\n  }\n\n  /**\n   * @param {GetViewportParameters} params - Viewport parameters.\n   * @returns {PageViewport} Contains 'width' and 'height' properties\n   *   along with transforms required for rendering.\n   */\n  getViewport({\n    scale,\n    rotation = this.rotate,\n    offsetX = 0,\n    offsetY = 0,\n    dontFlip = false,\n  } = {}) {\n    return new PageViewport({\n      viewBox: this.view,\n      scale,\n      rotation,\n      offsetX,\n      offsetY,\n      dontFlip,\n    });\n  }\n\n  /**\n   * @param {GetAnnotationsParameters} params - Annotation parameters.\n   * @returns {Promise<Array<any>>} A promise that is resolved with an\n   *   {Array} of the annotation objects.\n   */\n  getAnnotations({ intent = \"display\" } = {}) {\n    const intentArgs = this._transport.getRenderingIntent(intent);\n\n    let promise = this._annotationPromises.get(intentArgs.cacheKey);\n    if (!promise) {\n      promise = this._transport.getAnnotations(\n        this._pageIndex,\n        intentArgs.renderingIntent\n      );\n      this._annotationPromises.set(intentArgs.cacheKey, promise);\n\n      if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n        promise = promise.then(annotations => {\n          for (const annotation of annotations) {\n            if (annotation.titleObj !== undefined) {\n              Object.defineProperty(annotation, \"title\", {\n                get() {\n                  deprecated(\n                    \"`title`-property on annotation, please use `titleObj` instead.\"\n                  );\n                  return annotation.titleObj.str;\n                },\n              });\n            }\n            if (annotation.contentsObj !== undefined) {\n              Object.defineProperty(annotation, \"contents\", {\n                get() {\n                  deprecated(\n                    \"`contents`-property on annotation, please use `contentsObj` instead.\"\n                  );\n                  return annotation.contentsObj.str;\n                },\n              });\n            }\n          }\n          return annotations;\n        });\n      }\n    }\n    return promise;\n  }\n\n  /**\n   * @returns {Promise<Object>} A promise that is resolved with an\n   *   {Object} with JS actions.\n   */\n  getJSActions() {\n    return (this._jsActionsPromise ||= this._transport.getPageJSActions(\n      this._pageIndex\n    ));\n  }\n\n  /**\n   * @returns {Promise<Object | null>} A promise that is resolved with\n   *   an {Object} with a fake DOM object (a tree structure where elements\n   *   are {Object} with a name, attributes (class, style, ...), value and\n   *   children, very similar to a HTML DOM tree), or `null` if no XFA exists.\n   */\n  async getXfa() {\n    return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n  }\n\n  /**\n   * Begins the process of rendering a page to the desired context.\n   *\n   * @param {RenderParameters} params - Page render parameters.\n   * @returns {RenderTask} An object that contains a promise that is\n   *   resolved when the page finishes rendering.\n   */\n  render({\n    canvasContext,\n    viewport,\n    intent = \"display\",\n    annotationMode = AnnotationMode.ENABLE,\n    transform = null,\n    imageLayer = null,\n    canvasFactory = null,\n    background = null,\n    optionalContentConfigPromise = null,\n    annotationCanvasMap = null,\n    pageColors = null,\n    printAnnotationStorage = null,\n  }) {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\")) {\n      if (arguments[0]?.renderInteractiveForms !== undefined) {\n        deprecated(\n          \"render no longer accepts the `renderInteractiveForms`-option, \" +\n            \"please use the `annotationMode`-option instead.\"\n        );\n        if (\n          arguments[0].renderInteractiveForms === true &&\n          annotationMode === AnnotationMode.ENABLE\n        ) {\n          annotationMode = AnnotationMode.ENABLE_FORMS;\n        }\n      }\n      if (arguments[0]?.includeAnnotationStorage !== undefined) {\n        deprecated(\n          \"render no longer accepts the `includeAnnotationStorage`-option, \" +\n            \"please use the `annotationMode`-option instead.\"\n        );\n        if (\n          arguments[0].includeAnnotationStorage === true &&\n          annotationMode === AnnotationMode.ENABLE\n        ) {\n          annotationMode = AnnotationMode.ENABLE_STORAGE;\n        }\n      }\n    }\n\n    if (this._stats) {\n      this._stats.time(\"Overall\");\n    }\n\n    const intentArgs = this._transport.getRenderingIntent(\n      intent,\n      annotationMode,\n      printAnnotationStorage\n    );\n    // If there was a pending destroy, cancel it so no cleanup happens during\n    // this call to render.\n    this.pendingCleanup = false;\n\n    if (!optionalContentConfigPromise) {\n      optionalContentConfigPromise = this._transport.getOptionalContentConfig();\n    }\n\n    let intentState = this._intentStates.get(intentArgs.cacheKey);\n    if (!intentState) {\n      intentState = Object.create(null);\n      this._intentStates.set(intentArgs.cacheKey, intentState);\n    }\n\n    // Ensure that a pending `streamReader` cancel timeout is always aborted.\n    if (intentState.streamReaderCancelTimeout) {\n      clearTimeout(intentState.streamReaderCancelTimeout);\n      intentState.streamReaderCancelTimeout = null;\n    }\n\n    const canvasFactoryInstance =\n      canvasFactory ||\n      new DefaultCanvasFactory({ ownerDocument: this._ownerDocument });\n    const intentPrint = !!(\n      intentArgs.renderingIntent & RenderingIntentFlag.PRINT\n    );\n\n    // If there's no displayReadyCapability yet, then the operatorList\n    // was never requested before. Make the request and create the promise.\n    if (!intentState.displayReadyCapability) {\n      intentState.displayReadyCapability = createPromiseCapability();\n      intentState.operatorList = {\n        fnArray: [],\n        argsArray: [],\n        lastChunk: false,\n        separateAnnots: null,\n      };\n\n      if (this._stats) {\n        this._stats.time(\"Page Request\");\n      }\n      this._pumpOperatorList(intentArgs);\n    }\n\n    const complete = error => {\n      intentState.renderTasks.delete(internalRenderTask);\n\n      // Attempt to reduce memory usage during *printing*, by always running\n      // cleanup once rendering has finished (regardless of cleanupAfterRender).\n      if (this.cleanupAfterRender || intentPrint) {\n        this.pendingCleanup = true;\n      }\n      this._tryCleanup();\n\n      if (error) {\n        internalRenderTask.capability.reject(error);\n\n        this._abortOperatorList({\n          intentState,\n          reason: error instanceof Error ? error : new Error(error),\n        });\n      } else {\n        internalRenderTask.capability.resolve();\n      }\n      if (this._stats) {\n        this._stats.timeEnd(\"Rendering\");\n        this._stats.timeEnd(\"Overall\");\n      }\n    };\n\n    const internalRenderTask = new InternalRenderTask({\n      callback: complete,\n      // Only include the required properties, and *not* the entire object.\n      params: {\n        canvasContext,\n        viewport,\n        transform,\n        imageLayer,\n        background,\n      },\n      objs: this.objs,\n      commonObjs: this.commonObjs,\n      annotationCanvasMap,\n      operatorList: intentState.operatorList,\n      pageIndex: this._pageIndex,\n      canvasFactory: canvasFactoryInstance,\n      useRequestAnimationFrame: !intentPrint,\n      pdfBug: this._pdfBug,\n      pageColors,\n    });\n\n    (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n    const renderTask = internalRenderTask.task;\n\n    Promise.all([\n      intentState.displayReadyCapability.promise,\n      optionalContentConfigPromise,\n    ])\n      .then(([transparency, optionalContentConfig]) => {\n        if (this.pendingCleanup) {\n          complete();\n          return;\n        }\n        if (this._stats) {\n          this._stats.time(\"Rendering\");\n        }\n        internalRenderTask.initializeGraphics({\n          transparency,\n          optionalContentConfig,\n        });\n        internalRenderTask.operatorListChanged();\n      })\n      .catch(complete);\n\n    return renderTask;\n  }\n\n  /**\n   * @param {GetOperatorListParameters} params - Page getOperatorList\n   *   parameters.\n   * @returns {Promise<PDFOperatorList>} A promise resolved with an\n   *   {@link PDFOperatorList} object that represents the page's operator list.\n   */\n  getOperatorList({\n    intent = \"display\",\n    annotationMode = AnnotationMode.ENABLE,\n    printAnnotationStorage = null,\n  } = {}) {\n    function operatorListChanged() {\n      if (intentState.operatorList.lastChunk) {\n        intentState.opListReadCapability.resolve(intentState.operatorList);\n\n        intentState.renderTasks.delete(opListTask);\n      }\n    }\n\n    const intentArgs = this._transport.getRenderingIntent(\n      intent,\n      annotationMode,\n      printAnnotationStorage,\n      /* isOpList = */ true\n    );\n    let intentState = this._intentStates.get(intentArgs.cacheKey);\n    if (!intentState) {\n      intentState = Object.create(null);\n      this._intentStates.set(intentArgs.cacheKey, intentState);\n    }\n    let opListTask;\n\n    if (!intentState.opListReadCapability) {\n      opListTask = Object.create(null);\n      opListTask.operatorListChanged = operatorListChanged;\n      intentState.opListReadCapability = createPromiseCapability();\n      (intentState.renderTasks ||= new Set()).add(opListTask);\n      intentState.operatorList = {\n        fnArray: [],\n        argsArray: [],\n        lastChunk: false,\n        separateAnnots: null,\n      };\n\n      if (this._stats) {\n        this._stats.time(\"Page Request\");\n      }\n      this._pumpOperatorList(intentArgs);\n    }\n    return intentState.opListReadCapability.promise;\n  }\n\n  /**\n   * NOTE: All occurrences of whitespace will be replaced by\n   * standard spaces (0x20).\n   *\n   * @param {getTextContentParameters} params - getTextContent parameters.\n   * @returns {ReadableStream} Stream for reading text content chunks.\n   */\n  streamTextContent({\n    disableCombineTextItems = false,\n    includeMarkedContent = false,\n  } = {}) {\n    const TEXT_CONTENT_CHUNK_SIZE = 100;\n\n    return this._transport.messageHandler.sendWithStream(\n      \"GetTextContent\",\n      {\n        pageIndex: this._pageIndex,\n        combineTextItems: disableCombineTextItems !== true,\n        includeMarkedContent: includeMarkedContent === true,\n      },\n      {\n        highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n        size(textContent) {\n          return textContent.items.length;\n        },\n      }\n    );\n  }\n\n  /**\n   * NOTE: All occurrences of whitespace will be replaced by\n   * standard spaces (0x20).\n   *\n   * @param {getTextContentParameters} params - getTextContent parameters.\n   * @returns {Promise<TextContent>} A promise that is resolved with a\n   *   {@link TextContent} object that represents the page's text content.\n   */\n  getTextContent(params = {}) {\n    if (this._transport._htmlForXfa) {\n      // TODO: We need to revisit this once the XFA foreground patch lands and\n      // only do this for non-foreground XFA.\n      return this.getXfa().then(xfa => {\n        return XfaText.textContent(xfa);\n      });\n    }\n    const readableStream = this.streamTextContent(params);\n\n    return new Promise(function (resolve, reject) {\n      function pump() {\n        reader.read().then(function ({ value, done }) {\n          if (done) {\n            resolve(textContent);\n            return;\n          }\n          Object.assign(textContent.styles, value.styles);\n          textContent.items.push(...value.items);\n          pump();\n        }, reject);\n      }\n\n      const reader = readableStream.getReader();\n      const textContent = {\n        items: [],\n        styles: Object.create(null),\n      };\n      pump();\n    });\n  }\n\n  /**\n   * @returns {Promise<StructTreeNode>} A promise that is resolved with a\n   *   {@link StructTreeNode} object that represents the page's structure tree,\n   *   or `null` when no structure tree is present for the current page.\n   */\n  getStructTree() {\n    return (this._structTreePromise ||= this._transport.getStructTree(\n      this._pageIndex\n    ));\n  }\n\n  /**\n   * Destroys the page object.\n   * @private\n   */\n  _destroy() {\n    this.destroyed = true;\n\n    const waitOn = [];\n    for (const intentState of this._intentStates.values()) {\n      this._abortOperatorList({\n        intentState,\n        reason: new Error(\"Page was destroyed.\"),\n        force: true,\n      });\n\n      if (intentState.opListReadCapability) {\n        // Avoid errors below, since the renderTasks are just stubs.\n        continue;\n      }\n      for (const internalRenderTask of intentState.renderTasks) {\n        waitOn.push(internalRenderTask.completed);\n        internalRenderTask.cancel();\n      }\n    }\n    this.objs.clear();\n    for (const bitmap of this._bitmaps) {\n      bitmap.close();\n    }\n    this._bitmaps.clear();\n    this._annotationPromises.clear();\n    this._jsActionsPromise = null;\n    this._structTreePromise = null;\n    this.pendingCleanup = false;\n    return Promise.all(waitOn);\n  }\n\n  /**\n   * Cleans up resources allocated by the page.\n   *\n   * @param {boolean} [resetStats] - Reset page stats, if enabled.\n   *   The default value is `false`.\n   * @returns {boolean} Indicates if clean-up was successfully run.\n   */\n  cleanup(resetStats = false) {\n    this.pendingCleanup = true;\n    return this._tryCleanup(resetStats);\n  }\n\n  /**\n   * Attempts to clean up if rendering is in a state where that's possible.\n   * @private\n   */\n  _tryCleanup(resetStats = false) {\n    if (!this.pendingCleanup) {\n      return false;\n    }\n    for (const { renderTasks, operatorList } of this._intentStates.values()) {\n      if (renderTasks.size > 0 || !operatorList.lastChunk) {\n        return false;\n      }\n    }\n\n    this._intentStates.clear();\n    this.objs.clear();\n    this._annotationPromises.clear();\n    this._jsActionsPromise = null;\n    this._structTreePromise = null;\n    if (resetStats && this._stats) {\n      this._stats = new StatTimer();\n    }\n    for (const bitmap of this._bitmaps) {\n      bitmap.close();\n    }\n    this._bitmaps.clear();\n    this.pendingCleanup = false;\n    return true;\n  }\n\n  /**\n   * @private\n   */\n  _startRenderPage(transparency, cacheKey) {\n    const intentState = this._intentStates.get(cacheKey);\n    if (!intentState) {\n      return; // Rendering was cancelled.\n    }\n    if (this._stats) {\n      this._stats.timeEnd(\"Page Request\");\n    }\n    // TODO Refactor RenderPageRequest to separate rendering\n    // and operator list logic\n    if (intentState.displayReadyCapability) {\n      intentState.displayReadyCapability.resolve(transparency);\n    }\n  }\n\n  /**\n   * @private\n   */\n  _renderPageChunk(operatorListChunk, intentState) {\n    // Add the new chunk to the current operator list.\n    for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n      intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n      intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n    }\n    intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n    intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots;\n\n    // Notify all the rendering tasks there are more operators to be consumed.\n    for (const internalRenderTask of intentState.renderTasks) {\n      internalRenderTask.operatorListChanged();\n    }\n\n    if (operatorListChunk.lastChunk) {\n      this._tryCleanup();\n    }\n  }\n\n  /**\n   * @private\n   */\n  _pumpOperatorList({ renderingIntent, cacheKey, annotationStorageMap }) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        Number.isInteger(renderingIntent) && renderingIntent > 0,\n        '_pumpOperatorList: Expected valid \"renderingIntent\" argument.'\n      );\n    }\n\n    const readableStream = this._transport.messageHandler.sendWithStream(\n      \"GetOperatorList\",\n      {\n        pageIndex: this._pageIndex,\n        intent: renderingIntent,\n        cacheKey,\n        annotationStorage: annotationStorageMap,\n      }\n    );\n    const reader = readableStream.getReader();\n\n    const intentState = this._intentStates.get(cacheKey);\n    intentState.streamReader = reader;\n\n    const pump = () => {\n      reader.read().then(\n        ({ value, done }) => {\n          if (done) {\n            intentState.streamReader = null;\n            return;\n          }\n          if (this._transport.destroyed) {\n            return; // Ignore any pending requests if the worker was terminated.\n          }\n          this._renderPageChunk(value, intentState);\n          pump();\n        },\n        reason => {\n          intentState.streamReader = null;\n\n          if (this._transport.destroyed) {\n            return; // Ignore any pending requests if the worker was terminated.\n          }\n          if (intentState.operatorList) {\n            // Mark operator list as complete.\n            intentState.operatorList.lastChunk = true;\n\n            for (const internalRenderTask of intentState.renderTasks) {\n              internalRenderTask.operatorListChanged();\n            }\n            this._tryCleanup();\n          }\n\n          if (intentState.displayReadyCapability) {\n            intentState.displayReadyCapability.reject(reason);\n          } else if (intentState.opListReadCapability) {\n            intentState.opListReadCapability.reject(reason);\n          } else {\n            throw reason;\n          }\n        }\n      );\n    };\n    pump();\n  }\n\n  /**\n   * @private\n   */\n  _abortOperatorList({ intentState, reason, force = false }) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        reason instanceof Error,\n        '_abortOperatorList: Expected valid \"reason\" argument.'\n      );\n    }\n\n    if (!intentState.streamReader) {\n      return;\n    }\n    if (!force) {\n      // Ensure that an Error occurring in *only* one `InternalRenderTask`, e.g.\n      // multiple render() calls on the same canvas, won't break all rendering.\n      if (intentState.renderTasks.size > 0) {\n        return;\n      }\n      // Don't immediately abort parsing on the worker-thread when rendering is\n      // cancelled, since that will unnecessarily delay re-rendering when (for\n      // partially parsed pages) e.g. zooming/rotation occurs in the viewer.\n      if (reason instanceof RenderingCancelledException) {\n        intentState.streamReaderCancelTimeout = setTimeout(() => {\n          this._abortOperatorList({ intentState, reason, force: true });\n          intentState.streamReaderCancelTimeout = null;\n        }, RENDERING_CANCELLED_TIMEOUT);\n        return;\n      }\n    }\n    intentState.streamReader\n      .cancel(new AbortException(reason.message))\n      .catch(() => {\n        // Avoid \"Uncaught promise\" messages in the console.\n      });\n    intentState.streamReader = null;\n\n    if (this._transport.destroyed) {\n      return; // Ignore any pending requests if the worker was terminated.\n    }\n    // Remove the current `intentState`, since a cancelled `getOperatorList`\n    // call on the worker-thread cannot be re-started...\n    for (const [curCacheKey, curIntentState] of this._intentStates) {\n      if (curIntentState === intentState) {\n        this._intentStates.delete(curCacheKey);\n        break;\n      }\n    }\n    // ... and force clean-up to ensure that any old state is always removed.\n    this.cleanup();\n  }\n\n  /**\n   * @type {Object} Returns page stats, if enabled; returns `null` otherwise.\n   */\n  get stats() {\n    return this._stats;\n  }\n}\n\nclass LoopbackPort {\n  constructor() {\n    this._listeners = [];\n    this._deferred = Promise.resolve();\n  }\n\n  postMessage(obj, transfers) {\n    const event = {\n      data: structuredClone(obj, transfers),\n    };\n\n    this._deferred.then(() => {\n      for (const listener of this._listeners) {\n        listener.call(this, event);\n      }\n    });\n  }\n\n  addEventListener(name, listener) {\n    this._listeners.push(listener);\n  }\n\n  removeEventListener(name, listener) {\n    const i = this._listeners.indexOf(listener);\n    this._listeners.splice(i, 1);\n  }\n\n  terminate() {\n    this._listeners.length = 0;\n  }\n}\n\n/**\n * @typedef {Object} PDFWorkerParameters\n * @property {string} [name] - The name of the worker.\n * @property {Object} [port] - The `workerPort` object.\n * @property {number} [verbosity] - Controls the logging level;\n *   the constants from {@link VerbosityLevel} should be used.\n */\n\nconst PDFWorkerUtil = {\n  isWorkerDisabled: false,\n  fallbackWorkerSrc: null,\n  fakeWorkerId: 0,\n};\nif (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n  // eslint-disable-next-line no-undef\n  if (isNodeJS && typeof __non_webpack_require__ === \"function\") {\n    // Workers aren't supported in Node.js, force-disabling them there.\n    PDFWorkerUtil.isWorkerDisabled = true;\n\n    PDFWorkerUtil.fallbackWorkerSrc = PDFJSDev.test(\"LIB\")\n      ? \"../pdf.worker.js\"\n      : \"./pdf.worker.js\";\n  } else if (typeof document === \"object\") {\n    const pdfjsFilePath = document?.currentScript?.src;\n    if (pdfjsFilePath) {\n      PDFWorkerUtil.fallbackWorkerSrc = pdfjsFilePath.replace(\n        /(\\.(?:min\\.)?js)(\\?.*)?$/i,\n        \".worker$1$2\"\n      );\n    }\n  }\n\n  // Check if URLs have the same origin. For non-HTTP based URLs, returns false.\n  PDFWorkerUtil.isSameOrigin = function (baseUrl, otherUrl) {\n    let base;\n    try {\n      base = new URL(baseUrl);\n      if (!base.origin || base.origin === \"null\") {\n        return false; // non-HTTP url\n      }\n    } catch (e) {\n      return false;\n    }\n\n    const other = new URL(otherUrl, base);\n    return base.origin === other.origin;\n  };\n\n  PDFWorkerUtil.createCDNWrapper = function (url) {\n    // We will rely on blob URL's property to specify origin.\n    // We want this function to fail in case if createObjectURL or Blob do not\n    // exist or fail for some reason -- our Worker creation will fail anyway.\n    const wrapper = `importScripts(\"${url}\");`;\n    return URL.createObjectURL(new Blob([wrapper]));\n  };\n}\n\n/**\n * PDF.js web worker abstraction that controls the instantiation of PDF\n * documents. Message handlers are used to pass information from the main\n * thread to the worker thread and vice versa. If the creation of a web\n * worker is not possible, a \"fake\" worker will be used instead.\n *\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\nclass PDFWorker {\n  static #workerPorts = new WeakMap();\n\n  constructor({\n    name = null,\n    port = null,\n    verbosity = getVerbosityLevel(),\n  } = {}) {\n    if (port && PDFWorker.#workerPorts.has(port)) {\n      throw new Error(\"Cannot use more than one PDFWorker per port.\");\n    }\n\n    this.name = name;\n    this.destroyed = false;\n    this.verbosity = verbosity;\n\n    this._readyCapability = createPromiseCapability();\n    this._port = null;\n    this._webWorker = null;\n    this._messageHandler = null;\n\n    if (port) {\n      PDFWorker.#workerPorts.set(port, this);\n      this._initializeFromPort(port);\n      return;\n    }\n    this._initialize();\n  }\n\n  /**\n   * Promise for worker initialization completion.\n   * @type {Promise<void>}\n   */\n  get promise() {\n    return this._readyCapability.promise;\n  }\n\n  /**\n   * The current `workerPort`, when it exists.\n   * @type {Worker}\n   */\n  get port() {\n    return this._port;\n  }\n\n  /**\n   * The current MessageHandler-instance.\n   * @type {MessageHandler}\n   */\n  get messageHandler() {\n    return this._messageHandler;\n  }\n\n  _initializeFromPort(port) {\n    this._port = port;\n    this._messageHandler = new MessageHandler(\"main\", \"worker\", port);\n    this._messageHandler.on(\"ready\", function () {\n      // Ignoring \"ready\" event -- MessageHandler should already be initialized\n      // and ready to accept messages.\n    });\n    this._readyCapability.resolve();\n  }\n\n  _initialize() {\n    // If worker support isn't disabled explicit and the browser has worker\n    // support, create a new web worker and test if it/the browser fulfills\n    // all requirements to run parts of pdf.js in a web worker.\n    // Right now, the requirement is, that an Uint8Array is still an\n    // Uint8Array as it arrives on the worker. (Chrome added this with v.15.)\n    if (\n      !PDFWorkerUtil.isWorkerDisabled &&\n      !PDFWorker._mainThreadWorkerMessageHandler\n    ) {\n      let { workerSrc } = PDFWorker;\n\n      try {\n        // Wraps workerSrc path into blob URL, if the former does not belong\n        // to the same origin.\n        if (\n          typeof PDFJSDev !== \"undefined\" &&\n          PDFJSDev.test(\"GENERIC\") &&\n          !PDFWorkerUtil.isSameOrigin(window.location.href, workerSrc)\n        ) {\n          workerSrc = PDFWorkerUtil.createCDNWrapper(\n            new URL(workerSrc, window.location).href\n          );\n        }\n\n        // Some versions of FF can't create a worker on localhost, see:\n        // https://bugzilla.mozilla.org/show_bug.cgi?id=683280\n        const worker = new Worker(workerSrc);\n        const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n        const terminateEarly = () => {\n          worker.removeEventListener(\"error\", onWorkerError);\n          messageHandler.destroy();\n          worker.terminate();\n          if (this.destroyed) {\n            this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n          } else {\n            // Fall back to fake worker if the termination is caused by an\n            // error (e.g. NetworkError / SecurityError).\n            this._setupFakeWorker();\n          }\n        };\n\n        const onWorkerError = () => {\n          if (!this._webWorker) {\n            // Worker failed to initialize due to an error. Clean up and fall\n            // back to the fake worker.\n            terminateEarly();\n          }\n        };\n        worker.addEventListener(\"error\", onWorkerError);\n\n        messageHandler.on(\"test\", data => {\n          worker.removeEventListener(\"error\", onWorkerError);\n          if (this.destroyed) {\n            terminateEarly();\n            return; // worker was destroyed\n          }\n          if (data) {\n            this._messageHandler = messageHandler;\n            this._port = worker;\n            this._webWorker = worker;\n\n            this._readyCapability.resolve();\n            // Send global setting, e.g. verbosity level.\n            messageHandler.send(\"configure\", {\n              verbosity: this.verbosity,\n            });\n          } else {\n            this._setupFakeWorker();\n            messageHandler.destroy();\n            worker.terminate();\n          }\n        });\n\n        messageHandler.on(\"ready\", data => {\n          worker.removeEventListener(\"error\", onWorkerError);\n          if (this.destroyed) {\n            terminateEarly();\n            return; // worker was destroyed\n          }\n          try {\n            sendTest();\n          } catch (e) {\n            // We need fallback to a faked worker.\n            this._setupFakeWorker();\n          }\n        });\n\n        const sendTest = () => {\n          const testObj = new Uint8Array();\n          // Ensure that we can use `postMessage` transfers.\n          messageHandler.send(\"test\", testObj, [testObj.buffer]);\n        };\n\n        // It might take time for the worker to initialize. We will try to send\n        // the \"test\" message immediately, and once the \"ready\" message arrives.\n        // The worker shall process only the first received \"test\" message.\n        sendTest();\n        return;\n      } catch (e) {\n        info(\"The worker has been disabled.\");\n      }\n    }\n    // Either workers are disabled, not supported or have thrown an exception.\n    // Thus, we fallback to a faked worker.\n    this._setupFakeWorker();\n  }\n\n  _setupFakeWorker() {\n    if (!PDFWorkerUtil.isWorkerDisabled) {\n      warn(\"Setting up fake worker.\");\n      PDFWorkerUtil.isWorkerDisabled = true;\n    }\n\n    PDFWorker._setupFakeWorkerGlobal\n      .then(WorkerMessageHandler => {\n        if (this.destroyed) {\n          this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n          return;\n        }\n        const port = new LoopbackPort();\n        this._port = port;\n\n        // All fake workers use the same port, making id unique.\n        const id = `fake${PDFWorkerUtil.fakeWorkerId++}`;\n\n        // If the main thread is our worker, setup the handling for the\n        // messages -- the main thread sends to it self.\n        const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n        WorkerMessageHandler.setup(workerHandler, port);\n\n        const messageHandler = new MessageHandler(id, id + \"_worker\", port);\n        this._messageHandler = messageHandler;\n        this._readyCapability.resolve();\n        // Send global setting, e.g. verbosity level.\n        messageHandler.send(\"configure\", {\n          verbosity: this.verbosity,\n        });\n      })\n      .catch(reason => {\n        this._readyCapability.reject(\n          new Error(`Setting up fake worker failed: \"${reason.message}\".`)\n        );\n      });\n  }\n\n  /**\n   * Destroys the worker instance.\n   */\n  destroy() {\n    this.destroyed = true;\n    if (this._webWorker) {\n      // We need to terminate only web worker created resource.\n      this._webWorker.terminate();\n      this._webWorker = null;\n    }\n    PDFWorker.#workerPorts.delete(this._port);\n    this._port = null;\n    if (this._messageHandler) {\n      this._messageHandler.destroy();\n      this._messageHandler = null;\n    }\n  }\n\n  /**\n   * @param {PDFWorkerParameters} params - The worker initialization parameters.\n   */\n  static fromPort(params) {\n    if (!params?.port) {\n      throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n    }\n    if (this.#workerPorts.has(params.port)) {\n      return this.#workerPorts.get(params.port);\n    }\n    return new PDFWorker(params);\n  }\n\n  /**\n   * The current `workerSrc`, when it exists.\n   * @type {string}\n   */\n  static get workerSrc() {\n    if (GlobalWorkerOptions.workerSrc) {\n      return GlobalWorkerOptions.workerSrc;\n    }\n    if (\n      (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n      PDFWorkerUtil.fallbackWorkerSrc !== null\n    ) {\n      if (!isNodeJS) {\n        deprecated('No \"GlobalWorkerOptions.workerSrc\" specified.');\n      }\n      return PDFWorkerUtil.fallbackWorkerSrc;\n    }\n    throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n  }\n\n  static get _mainThreadWorkerMessageHandler() {\n    try {\n      return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n    } catch (ex) {\n      return null;\n    }\n  }\n\n  // Loads worker code into the main-thread.\n  static get _setupFakeWorkerGlobal() {\n    const loader = async () => {\n      const mainWorkerMessageHandler = this._mainThreadWorkerMessageHandler;\n\n      if (mainWorkerMessageHandler) {\n        // The worker was already loaded using e.g. a `<script>` tag.\n        return mainWorkerMessageHandler;\n      }\n      if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")) {\n        const worker = await import(\"pdfjs/core/worker.js\");\n        return worker.WorkerMessageHandler;\n      }\n      if (\n        PDFJSDev.test(\"GENERIC\") &&\n        isNodeJS &&\n        // eslint-disable-next-line no-undef\n        typeof __non_webpack_require__ === \"function\"\n      ) {\n        // Since bundlers, such as Webpack, cannot be told to leave `require`\n        // statements alone we are thus forced to jump through hoops in order\n        // to prevent `Critical dependency: ...` warnings in third-party\n        // deployments of the built `pdf.js`/`pdf.worker.js` files; see\n        // https://github.com/webpack/webpack/issues/8826\n        //\n        // The following hack is based on the assumption that code running in\n        // Node.js won't ever be affected by e.g. Content Security Policies that\n        // prevent the use of `eval`. If that ever occurs, we should revert this\n        // to a normal `__non_webpack_require__` statement and simply document\n        // the Webpack warnings instead (telling users to ignore them).\n        //\n        // eslint-disable-next-line no-eval\n        const worker = eval(\"require\")(this.workerSrc);\n        return worker.WorkerMessageHandler;\n      }\n      await loadScript(this.workerSrc);\n      return window.pdfjsWorker.WorkerMessageHandler;\n    };\n\n    return shadow(this, \"_setupFakeWorkerGlobal\", loader());\n  }\n}\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\")) {\n  PDFWorker.getWorkerSrc = function () {\n    deprecated(\n      \"`PDFWorker.getWorkerSrc()`, please use `PDFWorker.workerSrc` instead.\"\n    );\n    return this.workerSrc;\n  };\n}\n\n/**\n * For internal use only.\n * @ignore\n */\nclass WorkerTransport {\n  #docStats = null;\n\n  #pageCache = new Map();\n\n  #pagePromises = new Map();\n\n  #metadataPromise = null;\n\n  constructor(messageHandler, loadingTask, networkStream, params) {\n    this.messageHandler = messageHandler;\n    this.loadingTask = loadingTask;\n    this.commonObjs = new PDFObjects();\n    this.fontLoader = new FontLoader({\n      docId: loadingTask.docId,\n      onUnsupportedFeature: this._onUnsupportedFeature.bind(this),\n      ownerDocument: params.ownerDocument,\n      styleElement: params.styleElement,\n    });\n    this._params = params;\n\n    if (!params.useWorkerFetch) {\n      this.CMapReaderFactory = new params.CMapReaderFactory({\n        baseUrl: params.cMapUrl,\n        isCompressed: params.cMapPacked,\n      });\n      this.StandardFontDataFactory = new params.StandardFontDataFactory({\n        baseUrl: params.standardFontDataUrl,\n      });\n    }\n\n    this.destroyed = false;\n    this.destroyCapability = null;\n    this._passwordCapability = null;\n\n    this._networkStream = networkStream;\n    this._fullReader = null;\n    this._lastProgress = null;\n    this.downloadInfoCapability = createPromiseCapability();\n\n    this.setupMessageHandler();\n  }\n\n  get annotationStorage() {\n    return shadow(this, \"annotationStorage\", new AnnotationStorage());\n  }\n\n  get stats() {\n    return this.#docStats;\n  }\n\n  getRenderingIntent(\n    intent,\n    annotationMode = AnnotationMode.ENABLE,\n    printAnnotationStorage = null,\n    isOpList = false\n  ) {\n    let renderingIntent = RenderingIntentFlag.DISPLAY; // Default value.\n    let annotationMap = null;\n\n    switch (intent) {\n      case \"any\":\n        renderingIntent = RenderingIntentFlag.ANY;\n        break;\n      case \"display\":\n        break;\n      case \"print\":\n        renderingIntent = RenderingIntentFlag.PRINT;\n        break;\n      default:\n        warn(`getRenderingIntent - invalid intent: ${intent}`);\n    }\n\n    switch (annotationMode) {\n      case AnnotationMode.DISABLE:\n        renderingIntent += RenderingIntentFlag.ANNOTATIONS_DISABLE;\n        break;\n      case AnnotationMode.ENABLE:\n        break;\n      case AnnotationMode.ENABLE_FORMS:\n        renderingIntent += RenderingIntentFlag.ANNOTATIONS_FORMS;\n        break;\n      case AnnotationMode.ENABLE_STORAGE:\n        renderingIntent += RenderingIntentFlag.ANNOTATIONS_STORAGE;\n\n        const annotationStorage =\n          renderingIntent & RenderingIntentFlag.PRINT &&\n          printAnnotationStorage instanceof PrintAnnotationStorage\n            ? printAnnotationStorage\n            : this.annotationStorage;\n\n        annotationMap = annotationStorage.serializable;\n        break;\n      default:\n        warn(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n    }\n\n    if (isOpList) {\n      renderingIntent += RenderingIntentFlag.OPLIST;\n    }\n\n    return {\n      renderingIntent,\n      cacheKey: `${renderingIntent}_${AnnotationStorage.getHash(\n        annotationMap\n      )}`,\n      annotationStorageMap: annotationMap,\n    };\n  }\n\n  destroy() {\n    if (this.destroyCapability) {\n      return this.destroyCapability.promise;\n    }\n\n    this.destroyed = true;\n    this.destroyCapability = createPromiseCapability();\n\n    if (this._passwordCapability) {\n      this._passwordCapability.reject(\n        new Error(\"Worker was destroyed during onPassword callback\")\n      );\n    }\n\n    const waitOn = [];\n    // We need to wait for all renderings to be completed, e.g.\n    // timeout/rAF can take a long time.\n    for (const page of this.#pageCache.values()) {\n      waitOn.push(page._destroy());\n    }\n    this.#pageCache.clear();\n    this.#pagePromises.clear();\n    // Allow `AnnotationStorage`-related clean-up when destroying the document.\n    if (this.hasOwnProperty(\"annotationStorage\")) {\n      this.annotationStorage.resetModified();\n    }\n    // We also need to wait for the worker to finish its long running tasks.\n    const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n    waitOn.push(terminated);\n\n    Promise.all(waitOn).then(() => {\n      this.commonObjs.clear();\n      this.fontLoader.clear();\n      this.#metadataPromise = null;\n      this._getFieldObjectsPromise = null;\n      this._hasJSActionsPromise = null;\n\n      if (this._networkStream) {\n        this._networkStream.cancelAllRequests(\n          new AbortException(\"Worker was terminated.\")\n        );\n      }\n\n      if (this.messageHandler) {\n        this.messageHandler.destroy();\n        this.messageHandler = null;\n      }\n      this.destroyCapability.resolve();\n    }, this.destroyCapability.reject);\n    return this.destroyCapability.promise;\n  }\n\n  setupMessageHandler() {\n    const { messageHandler, loadingTask } = this;\n\n    messageHandler.on(\"GetReader\", (data, sink) => {\n      assert(\n        this._networkStream,\n        \"GetReader - no `IPDFStream` instance available.\"\n      );\n      this._fullReader = this._networkStream.getFullReader();\n      this._fullReader.onProgress = evt => {\n        this._lastProgress = {\n          loaded: evt.loaded,\n          total: evt.total,\n        };\n      };\n      sink.onPull = () => {\n        this._fullReader\n          .read()\n          .then(function ({ value, done }) {\n            if (done) {\n              sink.close();\n              return;\n            }\n            assert(\n              isArrayBuffer(value),\n              \"GetReader - expected an ArrayBuffer.\"\n            );\n            // Enqueue data chunk into sink, and transfer it\n            // to other side as `Transferable` object.\n            sink.enqueue(new Uint8Array(value), 1, [value]);\n          })\n          .catch(reason => {\n            sink.error(reason);\n          });\n      };\n\n      sink.onCancel = reason => {\n        this._fullReader.cancel(reason);\n\n        sink.ready.catch(readyReason => {\n          if (this.destroyed) {\n            return; // Ignore any pending requests if the worker was terminated.\n          }\n          throw readyReason;\n        });\n      };\n    });\n\n    messageHandler.on(\"ReaderHeadersReady\", data => {\n      const headersCapability = createPromiseCapability();\n      const fullReader = this._fullReader;\n      fullReader.headersReady.then(() => {\n        // If stream or range are disabled, it's our only way to report\n        // loading progress.\n        if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {\n          if (this._lastProgress) {\n            loadingTask.onProgress?.(this._lastProgress);\n          }\n          fullReader.onProgress = evt => {\n            loadingTask.onProgress?.({\n              loaded: evt.loaded,\n              total: evt.total,\n            });\n          };\n        }\n\n        headersCapability.resolve({\n          isStreamingSupported: fullReader.isStreamingSupported,\n          isRangeSupported: fullReader.isRangeSupported,\n          contentLength: fullReader.contentLength,\n        });\n      }, headersCapability.reject);\n\n      return headersCapability.promise;\n    });\n\n    messageHandler.on(\"GetRangeReader\", (data, sink) => {\n      assert(\n        this._networkStream,\n        \"GetRangeReader - no `IPDFStream` instance available.\"\n      );\n      const rangeReader = this._networkStream.getRangeReader(\n        data.begin,\n        data.end\n      );\n\n      // When streaming is enabled, it's possible that the data requested here\n      // has already been fetched via the `_fullRequestReader` implementation.\n      // However, given that the PDF data is loaded asynchronously on the\n      // main-thread and then sent via `postMessage` to the worker-thread,\n      // it may not have been available during parsing (hence the attempt to\n      // use range requests here).\n      //\n      // To avoid wasting time and resources here, we'll thus *not* dispatch\n      // range requests if the data was already loaded but has not been sent to\n      // the worker-thread yet (which will happen via the `_fullRequestReader`).\n      if (!rangeReader) {\n        sink.close();\n        return;\n      }\n\n      sink.onPull = () => {\n        rangeReader\n          .read()\n          .then(function ({ value, done }) {\n            if (done) {\n              sink.close();\n              return;\n            }\n            assert(\n              isArrayBuffer(value),\n              \"GetRangeReader - expected an ArrayBuffer.\"\n            );\n            sink.enqueue(new Uint8Array(value), 1, [value]);\n          })\n          .catch(reason => {\n            sink.error(reason);\n          });\n      };\n\n      sink.onCancel = reason => {\n        rangeReader.cancel(reason);\n\n        sink.ready.catch(readyReason => {\n          if (this.destroyed) {\n            return; // Ignore any pending requests if the worker was terminated.\n          }\n          throw readyReason;\n        });\n      };\n    });\n\n    messageHandler.on(\"GetDoc\", ({ pdfInfo }) => {\n      this._numPages = pdfInfo.numPages;\n      this._htmlForXfa = pdfInfo.htmlForXfa;\n      delete pdfInfo.htmlForXfa;\n      loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n    });\n\n    messageHandler.on(\"DocException\", function (ex) {\n      let reason;\n      switch (ex.name) {\n        case \"PasswordException\":\n          reason = new PasswordException(ex.message, ex.code);\n          break;\n        case \"InvalidPDFException\":\n          reason = new InvalidPDFException(ex.message);\n          break;\n        case \"MissingPDFException\":\n          reason = new MissingPDFException(ex.message);\n          break;\n        case \"UnexpectedResponseException\":\n          reason = new UnexpectedResponseException(ex.message, ex.status);\n          break;\n        case \"UnknownErrorException\":\n          reason = new UnknownErrorException(ex.message, ex.details);\n          break;\n        default:\n          unreachable(\"DocException - expected a valid Error.\");\n      }\n      loadingTask._capability.reject(reason);\n    });\n\n    messageHandler.on(\"PasswordRequest\", exception => {\n      this._passwordCapability = createPromiseCapability();\n\n      if (loadingTask.onPassword) {\n        const updatePassword = password => {\n          if (password instanceof Error) {\n            this._passwordCapability.reject(password);\n          } else {\n            this._passwordCapability.resolve({ password });\n          }\n        };\n        try {\n          loadingTask.onPassword(updatePassword, exception.code);\n        } catch (ex) {\n          this._passwordCapability.reject(ex);\n        }\n      } else {\n        this._passwordCapability.reject(\n          new PasswordException(exception.message, exception.code)\n        );\n      }\n      return this._passwordCapability.promise;\n    });\n\n    messageHandler.on(\"DataLoaded\", data => {\n      // For consistency: Ensure that progress is always reported when the\n      // entire PDF file has been loaded, regardless of how it was fetched.\n      loadingTask.onProgress?.({\n        loaded: data.length,\n        total: data.length,\n      });\n\n      this.downloadInfoCapability.resolve(data);\n    });\n\n    messageHandler.on(\"StartRenderPage\", data => {\n      if (this.destroyed) {\n        return; // Ignore any pending requests if the worker was terminated.\n      }\n\n      const page = this.#pageCache.get(data.pageIndex);\n      page._startRenderPage(data.transparency, data.cacheKey);\n    });\n\n    messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n      if (this.destroyed) {\n        return; // Ignore any pending requests if the worker was terminated.\n      }\n\n      if (this.commonObjs.has(id)) {\n        return;\n      }\n\n      switch (type) {\n        case \"Font\":\n          const params = this._params;\n\n          if (\"error\" in exportedData) {\n            const exportedError = exportedData.error;\n            warn(`Error during font loading: ${exportedError}`);\n            this.commonObjs.resolve(id, exportedError);\n            break;\n          }\n\n          let fontRegistry = null;\n          if (params.pdfBug && globalThis.FontInspector?.enabled) {\n            fontRegistry = {\n              registerFont(font, url) {\n                globalThis.FontInspector.fontAdded(font, url);\n              },\n            };\n          }\n          const font = new FontFaceObject(exportedData, {\n            isEvalSupported: params.isEvalSupported,\n            disableFontFace: params.disableFontFace,\n            ignoreErrors: params.ignoreErrors,\n            onUnsupportedFeature: this._onUnsupportedFeature.bind(this),\n            fontRegistry,\n          });\n\n          this.fontLoader\n            .bind(font)\n            .catch(reason => {\n              return messageHandler.sendWithPromise(\"FontFallback\", { id });\n            })\n            .finally(() => {\n              if (!params.fontExtraProperties && font.data) {\n                // Immediately release the `font.data` property once the font\n                // has been attached to the DOM, since it's no longer needed,\n                // rather than waiting for a `PDFDocumentProxy.cleanup` call.\n                // Since `font.data` could be very large, e.g. in some cases\n                // multiple megabytes, this will help reduce memory usage.\n                font.data = null;\n              }\n              this.commonObjs.resolve(id, font);\n            });\n          break;\n        case \"FontPath\":\n        case \"Image\":\n          this.commonObjs.resolve(id, exportedData);\n          break;\n        default:\n          throw new Error(`Got unknown common object type ${type}`);\n      }\n    });\n\n    messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n      if (this.destroyed) {\n        // Ignore any pending requests if the worker was terminated.\n        return;\n      }\n\n      const pageProxy = this.#pageCache.get(pageIndex);\n      if (pageProxy.objs.has(id)) {\n        return;\n      }\n\n      switch (type) {\n        case \"Image\":\n          pageProxy.objs.resolve(id, imageData);\n\n          // Heuristic that will allow us not to store large data.\n          const MAX_IMAGE_SIZE_TO_STORE = 8000000;\n          if (imageData) {\n            let length;\n            if (imageData.bitmap) {\n              const { bitmap, width, height } = imageData;\n              length = width * height * 4;\n              pageProxy._bitmaps.add(bitmap);\n            } else {\n              length = imageData.data?.length || 0;\n            }\n\n            if (length > MAX_IMAGE_SIZE_TO_STORE) {\n              pageProxy.cleanupAfterRender = true;\n            }\n          }\n          break;\n        case \"Pattern\":\n          pageProxy.objs.resolve(id, imageData);\n          break;\n        default:\n          throw new Error(`Got unknown object type ${type}`);\n      }\n    });\n\n    messageHandler.on(\"DocProgress\", data => {\n      if (this.destroyed) {\n        return; // Ignore any pending requests if the worker was terminated.\n      }\n      loadingTask.onProgress?.({\n        loaded: data.loaded,\n        total: data.total,\n      });\n    });\n\n    messageHandler.on(\"DocStats\", data => {\n      if (this.destroyed) {\n        return; // Ignore any pending requests if the worker was terminated.\n      }\n      // Ensure that a `PDFDocumentProxy.stats` call-site cannot accidentally\n      // modify this internal data.\n      this.#docStats = Object.freeze({\n        streamTypes: Object.freeze(data.streamTypes),\n        fontTypes: Object.freeze(data.fontTypes),\n      });\n    });\n\n    messageHandler.on(\n      \"UnsupportedFeature\",\n      this._onUnsupportedFeature.bind(this)\n    );\n\n    messageHandler.on(\"FetchBuiltInCMap\", data => {\n      if (this.destroyed) {\n        return Promise.reject(new Error(\"Worker was destroyed.\"));\n      }\n      if (!this.CMapReaderFactory) {\n        return Promise.reject(\n          new Error(\n            \"CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.\"\n          )\n        );\n      }\n      return this.CMapReaderFactory.fetch(data);\n    });\n\n    messageHandler.on(\"FetchStandardFontData\", data => {\n      if (this.destroyed) {\n        return Promise.reject(new Error(\"Worker was destroyed.\"));\n      }\n      if (!this.StandardFontDataFactory) {\n        return Promise.reject(\n          new Error(\n            \"StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.\"\n          )\n        );\n      }\n      return this.StandardFontDataFactory.fetch(data);\n    });\n  }\n\n  _onUnsupportedFeature({ featureId }) {\n    if (this.destroyed) {\n      return; // Ignore any pending requests if the worker was terminated.\n    }\n    this.loadingTask.onUnsupportedFeature?.(featureId);\n  }\n\n  getData() {\n    return this.messageHandler.sendWithPromise(\"GetData\", null);\n  }\n\n  getPage(pageNumber) {\n    if (\n      !Number.isInteger(pageNumber) ||\n      pageNumber <= 0 ||\n      pageNumber > this._numPages\n    ) {\n      return Promise.reject(new Error(\"Invalid page request.\"));\n    }\n\n    const pageIndex = pageNumber - 1,\n      cachedPromise = this.#pagePromises.get(pageIndex);\n    if (cachedPromise) {\n      return cachedPromise;\n    }\n    const promise = this.messageHandler\n      .sendWithPromise(\"GetPage\", {\n        pageIndex,\n      })\n      .then(pageInfo => {\n        if (this.destroyed) {\n          throw new Error(\"Transport destroyed\");\n        }\n        const page = new PDFPageProxy(\n          pageIndex,\n          pageInfo,\n          this,\n          this._params.ownerDocument,\n          this._params.pdfBug\n        );\n        this.#pageCache.set(pageIndex, page);\n        return page;\n      });\n    this.#pagePromises.set(pageIndex, promise);\n    return promise;\n  }\n\n  getPageIndex(ref) {\n    if (\n      typeof ref !== \"object\" ||\n      ref === null ||\n      !Number.isInteger(ref.num) ||\n      ref.num < 0 ||\n      !Number.isInteger(ref.gen) ||\n      ref.gen < 0\n    ) {\n      return Promise.reject(new Error(\"Invalid pageIndex request.\"));\n    }\n    return this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n      num: ref.num,\n      gen: ref.gen,\n    });\n  }\n\n  getAnnotations(pageIndex, intent) {\n    return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n      pageIndex,\n      intent,\n    });\n  }\n\n  saveDocument() {\n    return this.messageHandler\n      .sendWithPromise(\"SaveDocument\", {\n        isPureXfa: !!this._htmlForXfa,\n        numPages: this._numPages,\n        annotationStorage: this.annotationStorage.serializable,\n        filename: this._fullReader?.filename ?? null,\n      })\n      .finally(() => {\n        this.annotationStorage.resetModified();\n      });\n  }\n\n  getFieldObjects() {\n    return (this._getFieldObjectsPromise ||=\n      this.messageHandler.sendWithPromise(\"GetFieldObjects\", null));\n  }\n\n  hasJSActions() {\n    return (this._hasJSActionsPromise ||= this.messageHandler.sendWithPromise(\n      \"HasJSActions\",\n      null\n    ));\n  }\n\n  getCalculationOrderIds() {\n    return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n  }\n\n  getDestinations() {\n    return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n  }\n\n  getDestination(id) {\n    if (typeof id !== \"string\") {\n      return Promise.reject(new Error(\"Invalid destination request.\"));\n    }\n    return this.messageHandler.sendWithPromise(\"GetDestination\", {\n      id,\n    });\n  }\n\n  getPageLabels() {\n    return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n  }\n\n  getPageLayout() {\n    return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n  }\n\n  getPageMode() {\n    return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n  }\n\n  getViewerPreferences() {\n    return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n  }\n\n  getOpenAction() {\n    return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n  }\n\n  getAttachments() {\n    return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n  }\n\n  getJavaScript() {\n    return this.messageHandler.sendWithPromise(\"GetJavaScript\", null);\n  }\n\n  getDocJSActions() {\n    return this.messageHandler.sendWithPromise(\"GetDocJSActions\", null);\n  }\n\n  getPageJSActions(pageIndex) {\n    return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n      pageIndex,\n    });\n  }\n\n  getStructTree(pageIndex) {\n    return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n      pageIndex,\n    });\n  }\n\n  getOutline() {\n    return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n  }\n\n  getOptionalContentConfig() {\n    return this.messageHandler\n      .sendWithPromise(\"GetOptionalContentConfig\", null)\n      .then(results => {\n        return new OptionalContentConfig(results);\n      });\n  }\n\n  getPermissions() {\n    return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n  }\n\n  getMetadata() {\n    return (this.#metadataPromise ||= this.messageHandler\n      .sendWithPromise(\"GetMetadata\", null)\n      .then(results => {\n        return {\n          info: results[0],\n          metadata: results[1] ? new Metadata(results[1]) : null,\n          contentDispositionFilename: this._fullReader?.filename ?? null,\n          contentLength: this._fullReader?.contentLength ?? null,\n        };\n      }));\n  }\n\n  getMarkInfo() {\n    return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n  }\n\n  async startCleanup(keepLoadedFonts = false) {\n    await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n\n    if (this.destroyed) {\n      return; // No need to manually clean-up when destruction has started.\n    }\n    for (const page of this.#pageCache.values()) {\n      const cleanupSuccessful = page.cleanup();\n\n      if (!cleanupSuccessful) {\n        throw new Error(\n          `startCleanup: Page ${page.pageNumber} is currently rendering.`\n        );\n      }\n    }\n    this.commonObjs.clear();\n    if (!keepLoadedFonts) {\n      this.fontLoader.clear();\n    }\n    this.#metadataPromise = null;\n    this._getFieldObjectsPromise = null;\n    this._hasJSActionsPromise = null;\n  }\n\n  get loadingParams() {\n    const params = this._params;\n    return shadow(this, \"loadingParams\", {\n      disableAutoFetch: params.disableAutoFetch,\n      enableXfa: params.enableXfa,\n    });\n  }\n}\n\n/**\n * A PDF document and page is built of many objects. E.g. there are objects for\n * fonts, images, rendering code, etc. These objects may get processed inside of\n * a worker. This class implements some basic methods to manage these objects.\n */\nclass PDFObjects {\n  #objs = Object.create(null);\n\n  /**\n   * Ensures there is an object defined for `objId`.\n   *\n   * @param {string} objId\n   * @returns {Object}\n   */\n  #ensureObj(objId) {\n    const obj = this.#objs[objId];\n    if (obj) {\n      return obj;\n    }\n    return (this.#objs[objId] = {\n      capability: createPromiseCapability(),\n      data: null,\n    });\n  }\n\n  /**\n   * If called *without* callback, this returns the data of `objId` but the\n   * object needs to be resolved. If it isn't, this method throws.\n   *\n   * If called *with* a callback, the callback is called with the data of the\n   * object once the object is resolved. That means, if you call this method\n   * and the object is already resolved, the callback gets called right away.\n   *\n   * @param {string} objId\n   * @param {function} [callback]\n   * @returns {any}\n   */\n  get(objId, callback = null) {\n    // If there is a callback, then the get can be async and the object is\n    // not required to be resolved right now.\n    if (callback) {\n      const obj = this.#ensureObj(objId);\n      obj.capability.promise.then(() => callback(obj.data));\n      return null;\n    }\n    // If there isn't a callback, the user expects to get the resolved data\n    // directly.\n    const obj = this.#objs[objId];\n    // If there isn't an object yet or the object isn't resolved, then the\n    // data isn't ready yet!\n    if (!obj?.capability.settled) {\n      throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n    }\n    return obj.data;\n  }\n\n  /**\n   * @param {string} objId\n   * @returns {boolean}\n   */\n  has(objId) {\n    const obj = this.#objs[objId];\n    return obj?.capability.settled || false;\n  }\n\n  /**\n   * Resolves the object `objId` with optional `data`.\n   *\n   * @param {string} objId\n   * @param {any} [data]\n   */\n  resolve(objId, data = null) {\n    const obj = this.#ensureObj(objId);\n    obj.data = data;\n    obj.capability.resolve();\n  }\n\n  clear() {\n    this.#objs = Object.create(null);\n  }\n}\n\n/**\n * Allows controlling of the rendering tasks.\n */\nclass RenderTask {\n  #internalRenderTask = null;\n\n  constructor(internalRenderTask) {\n    this.#internalRenderTask = internalRenderTask;\n\n    /**\n     * Callback for incremental rendering -- a function that will be called\n     * each time the rendering is paused.  To continue rendering call the\n     * function that is the first argument to the callback.\n     * @type {function}\n     */\n    this.onContinue = null;\n  }\n\n  /**\n   * Promise for rendering task completion.\n   * @type {Promise<void>}\n   */\n  get promise() {\n    return this.#internalRenderTask.capability.promise;\n  }\n\n  /**\n   * Cancels the rendering task. If the task is currently rendering it will\n   * not be cancelled until graphics pauses with a timeout. The promise that\n   * this object extends will be rejected when cancelled.\n   */\n  cancel() {\n    this.#internalRenderTask.cancel();\n  }\n\n  /**\n   * Whether form fields are rendered separately from the main operatorList.\n   * @type {boolean}\n   */\n  get separateAnnots() {\n    const { separateAnnots } = this.#internalRenderTask.operatorList;\n    if (!separateAnnots) {\n      return false;\n    }\n    const { annotationCanvasMap } = this.#internalRenderTask;\n    return (\n      separateAnnots.form ||\n      (separateAnnots.canvas && annotationCanvasMap?.size > 0)\n    );\n  }\n}\n\n/**\n * For internal use only.\n * @ignore\n */\nclass InternalRenderTask {\n  static #canvasInUse = new WeakSet();\n\n  constructor({\n    callback,\n    params,\n    objs,\n    commonObjs,\n    annotationCanvasMap,\n    operatorList,\n    pageIndex,\n    canvasFactory,\n    useRequestAnimationFrame = false,\n    pdfBug = false,\n    pageColors = null,\n  }) {\n    this.callback = callback;\n    this.params = params;\n    this.objs = objs;\n    this.commonObjs = commonObjs;\n    this.annotationCanvasMap = annotationCanvasMap;\n    this.operatorListIdx = null;\n    this.operatorList = operatorList;\n    this._pageIndex = pageIndex;\n    this.canvasFactory = canvasFactory;\n    this._pdfBug = pdfBug;\n    this.pageColors = pageColors;\n\n    this.running = false;\n    this.graphicsReadyCallback = null;\n    this.graphicsReady = false;\n    this._useRequestAnimationFrame =\n      useRequestAnimationFrame === true && typeof window !== \"undefined\";\n    this.cancelled = false;\n    this.capability = createPromiseCapability();\n    this.task = new RenderTask(this);\n    // caching this-bound methods\n    this._cancelBound = this.cancel.bind(this);\n    this._continueBound = this._continue.bind(this);\n    this._scheduleNextBound = this._scheduleNext.bind(this);\n    this._nextBound = this._next.bind(this);\n    this._canvas = params.canvasContext.canvas;\n  }\n\n  get completed() {\n    return this.capability.promise.catch(function () {\n      // Ignoring errors, since we only want to know when rendering is\n      // no longer pending.\n    });\n  }\n\n  initializeGraphics({ transparency = false, optionalContentConfig }) {\n    if (this.cancelled) {\n      return;\n    }\n    if (this._canvas) {\n      if (InternalRenderTask.#canvasInUse.has(this._canvas)) {\n        throw new Error(\n          \"Cannot use the same canvas during multiple render() operations. \" +\n            \"Use different canvas or ensure previous operations were \" +\n            \"cancelled or completed.\"\n        );\n      }\n      InternalRenderTask.#canvasInUse.add(this._canvas);\n    }\n\n    if (this._pdfBug && globalThis.StepperManager?.enabled) {\n      this.stepper = globalThis.StepperManager.create(this._pageIndex);\n      this.stepper.init(this.operatorList);\n      this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n    }\n    const { canvasContext, viewport, transform, imageLayer, background } =\n      this.params;\n\n    this.gfx = new CanvasGraphics(\n      canvasContext,\n      this.commonObjs,\n      this.objs,\n      this.canvasFactory,\n      imageLayer,\n      optionalContentConfig,\n      this.annotationCanvasMap,\n      this.pageColors\n    );\n    this.gfx.beginDrawing({\n      transform,\n      viewport,\n      transparency,\n      background,\n    });\n    this.operatorListIdx = 0;\n    this.graphicsReady = true;\n    if (this.graphicsReadyCallback) {\n      this.graphicsReadyCallback();\n    }\n  }\n\n  cancel(error = null) {\n    this.running = false;\n    this.cancelled = true;\n    if (this.gfx) {\n      this.gfx.endDrawing();\n    }\n    if (this._canvas) {\n      InternalRenderTask.#canvasInUse.delete(this._canvas);\n    }\n    this.callback(\n      error ||\n        new RenderingCancelledException(\n          `Rendering cancelled, page ${this._pageIndex + 1}`,\n          \"canvas\"\n        )\n    );\n  }\n\n  operatorListChanged() {\n    if (!this.graphicsReady) {\n      if (!this.graphicsReadyCallback) {\n        this.graphicsReadyCallback = this._continueBound;\n      }\n      return;\n    }\n\n    if (this.stepper) {\n      this.stepper.updateOperatorList(this.operatorList);\n    }\n\n    if (this.running) {\n      return;\n    }\n    this._continue();\n  }\n\n  _continue() {\n    this.running = true;\n    if (this.cancelled) {\n      return;\n    }\n    if (this.task.onContinue) {\n      this.task.onContinue(this._scheduleNextBound);\n    } else {\n      this._scheduleNext();\n    }\n  }\n\n  _scheduleNext() {\n    if (this._useRequestAnimationFrame) {\n      window.requestAnimationFrame(() => {\n        this._nextBound().catch(this._cancelBound);\n      });\n    } else {\n      Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n    }\n  }\n\n  async _next() {\n    if (this.cancelled) {\n      return;\n    }\n    this.operatorListIdx = this.gfx.executeOperatorList(\n      this.operatorList,\n      this.operatorListIdx,\n      this._continueBound,\n      this.stepper\n    );\n    if (this.operatorListIdx === this.operatorList.argsArray.length) {\n      this.running = false;\n      if (this.operatorList.lastChunk) {\n        this.gfx.endDrawing();\n        if (this._canvas) {\n          InternalRenderTask.#canvasInUse.delete(this._canvas);\n        }\n        this.callback();\n      }\n    }\n  }\n}\n\n/** @type {string} */\nconst version =\n  typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : null;\n/** @type {string} */\nconst build =\n  typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_BUILD\") : null;\n\nexport {\n  build,\n  DefaultCanvasFactory,\n  DefaultCMapReaderFactory,\n  DefaultStandardFontDataFactory,\n  getDocument,\n  LoopbackPort,\n  PDFDataRangeTransport,\n  PDFDocumentLoadingTask,\n  PDFDocumentProxy,\n  PDFPageProxy,\n  PDFWorker,\n  PDFWorkerUtil,\n  RenderTask,\n  setPDFNetworkStreamFactory,\n  version,\n};\n", "/* Copyright 2020 Mozilla Foundation\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\nimport { objectFromMap, unreachable } from \"../shared/util.js\";\nimport { AnnotationEditor } from \"./editor/editor.js\";\nimport { MurmurHash3_64 } from \"../shared/murmurhash3.js\";\n\n/**\n * Key/value storage for annotation data in forms.\n */\nclass AnnotationStorage {\n  constructor() {\n    this._storage = new Map();\n    this._modified = false;\n\n    // Callbacks to signal when the modification state is set or reset.\n    // This is used by the viewer to only bind on `beforeunload` if forms\n    // are actually edited to prevent doing so unconditionally since that\n    // can have undesirable effects.\n    this.onSetModified = null;\n    this.onResetModified = null;\n    this.onAnnotationEditor = null;\n  }\n\n  /**\n   * Get the value for a given key if it exists, or return the default value.\n   *\n   * @public\n   * @memberof AnnotationStorage\n   * @param {string} key\n   * @param {Object} defaultValue\n   * @returns {Object}\n   */\n  getValue(key, defaultValue) {\n    const value = this._storage.get(key);\n    if (value === undefined) {\n      return defaultValue;\n    }\n\n    return Object.assign(defaultValue, value);\n  }\n\n  /**\n   * Get the value for a given key.\n   *\n   * @public\n   * @memberof AnnotationStorage\n   * @param {string} key\n   * @returns {Object}\n   */\n  getRawValue(key) {\n    return this._storage.get(key);\n  }\n\n  /**\n   * Remove a value from the storage.\n   * @param {string} key\n   */\n  remove(key) {\n    this._storage.delete(key);\n\n    if (this._storage.size === 0) {\n      this.resetModified();\n    }\n\n    if (typeof this.onAnnotationEditor === \"function\") {\n      for (const value of this._storage.values()) {\n        if (value instanceof AnnotationEditor) {\n          return;\n        }\n      }\n      this.onAnnotationEditor(null);\n    }\n  }\n\n  /**\n   * Set the value for a given key\n   *\n   * @public\n   * @memberof AnnotationStorage\n   * @param {string} key\n   * @param {Object} value\n   */\n  setValue(key, value) {\n    const obj = this._storage.get(key);\n    let modified = false;\n    if (obj !== undefined) {\n      for (const [entry, val] of Object.entries(value)) {\n        if (obj[entry] !== val) {\n          modified = true;\n          obj[entry] = val;\n        }\n      }\n    } else {\n      modified = true;\n      this._storage.set(key, value);\n    }\n    if (modified) {\n      this.#setModified();\n    }\n\n    if (\n      value instanceof AnnotationEditor &&\n      typeof this.onAnnotationEditor === \"function\"\n    ) {\n      this.onAnnotationEditor(value.constructor._type);\n    }\n  }\n\n  /**\n   * Check if the storage contains the given key.\n   * @param {string} key\n   * @returns {boolean}\n   */\n  has(key) {\n    return this._storage.has(key);\n  }\n\n  getAll() {\n    return this._storage.size > 0 ? objectFromMap(this._storage) : null;\n  }\n\n  get size() {\n    return this._storage.size;\n  }\n\n  #setModified() {\n    if (!this._modified) {\n      this._modified = true;\n      if (typeof this.onSetModified === \"function\") {\n        this.onSetModified();\n      }\n    }\n  }\n\n  resetModified() {\n    if (this._modified) {\n      this._modified = false;\n      if (typeof this.onResetModified === \"function\") {\n        this.onResetModified();\n      }\n    }\n  }\n\n  /**\n   * @returns {PrintAnnotationStorage}\n   */\n  get print() {\n    return new PrintAnnotationStorage(this);\n  }\n\n  /**\n   * PLEASE NOTE: Only intended for usage within the API itself.\n   * @ignore\n   */\n  get serializable() {\n    if (this._storage.size === 0) {\n      return null;\n    }\n    const clone = new Map();\n\n    for (const [key, val] of this._storage) {\n      const serialized =\n        val instanceof AnnotationEditor ? val.serialize() : val;\n      if (serialized) {\n        clone.set(key, serialized);\n      }\n    }\n    return clone;\n  }\n\n  /**\n   * PLEASE NOTE: Only intended for usage within the API itself.\n   * @ignore\n   */\n  static getHash(map) {\n    if (!map) {\n      return \"\";\n    }\n    const hash = new MurmurHash3_64();\n\n    for (const [key, val] of map) {\n      hash.update(`${key}:${JSON.stringify(val)}`);\n    }\n    return hash.hexdigest();\n  }\n}\n\n/**\n * A special `AnnotationStorage` for use during printing, where the serializable\n * data is *frozen* upon initialization, to prevent scripting from modifying its\n * contents. (Necessary since printing is triggered synchronously in browsers.)\n */\nclass PrintAnnotationStorage extends AnnotationStorage {\n  #serializable = null;\n\n  constructor(parent) {\n    super();\n    // Create a *copy* of the data, since Objects are passed by reference in JS.\n    this.#serializable = structuredClone(parent.serializable);\n  }\n\n  /**\n   * @returns {PrintAnnotationStorage}\n   */\n  // eslint-disable-next-line getter-return\n  get print() {\n    unreachable(\"Should not call PrintAnnotationStorage.print\");\n  }\n\n  /**\n   * PLEASE NOTE: Only intended for usage within the API itself.\n   * @ignore\n   */\n  get serializable() {\n    return this.#serializable;\n  }\n}\n\nexport { AnnotationStorage, PrintAnnotationStorage };\n", "/* Copyright 2022 Mozilla Foundation\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// eslint-disable-next-line max-len\n/** @typedef {import(\"./annotation_editor_layer.js\").AnnotationEditorLayer} AnnotationEditorLayer */\n\nimport { bindEvents, ColorManager, KeyboardManager } from \"./tools.js\";\nimport { shadow, unreachable } from \"../../shared/util.js\";\n\n/**\n * @typedef {Object} AnnotationEditorParameters\n * @property {AnnotationEditorLayer} parent - the layer containing this editor\n * @property {string} id - editor id\n * @property {number} x - x-coordinate\n * @property {number} y - y-coordinate\n */\n\n/**\n * Base class for editors.\n */\nclass AnnotationEditor {\n  #boundFocusin = this.focusin.bind(this);\n\n  #boundFocusout = this.focusout.bind(this);\n\n  #hasBeenSelected = false;\n\n  #isEditing = false;\n\n  #isInEditMode = false;\n\n  #zIndex = AnnotationEditor._zIndex++;\n\n  static _colorManager = new ColorManager();\n\n  static _zIndex = 1;\n\n  /**\n   * @param {AnnotationEditorParameters} parameters\n   */\n  constructor(parameters) {\n    if (this.constructor === AnnotationEditor) {\n      unreachable(\"Cannot initialize AnnotationEditor.\");\n    }\n\n    this.parent = parameters.parent;\n    this.id = parameters.id;\n    this.width = this.height = null;\n    this.pageIndex = parameters.parent.pageIndex;\n    this.name = parameters.name;\n    this.div = null;\n\n    const [width, height] = this.parent.viewportBaseDimensions;\n    this.x = parameters.x / width;\n    this.y = parameters.y / height;\n    this.rotation = this.parent.viewport.rotation;\n\n    this.isAttachedToDOM = false;\n  }\n\n  static get _defaultLineColor() {\n    return shadow(\n      this,\n      \"_defaultLineColor\",\n      this._colorManager.getHexCode(\"CanvasText\")\n    );\n  }\n\n  /**\n   * This editor will be behind the others.\n   */\n  setInBackground() {\n    this.div.style.zIndex = 0;\n  }\n\n  /**\n   * This editor will be in the foreground.\n   */\n  setInForeground() {\n    this.div.style.zIndex = this.#zIndex;\n  }\n\n  /**\n   * onfocus callback.\n   */\n  focusin(event) {\n    if (!this.#hasBeenSelected) {\n      this.parent.setSelected(this);\n    } else {\n      this.#hasBeenSelected = false;\n    }\n  }\n\n  /**\n   * onblur callback.\n   * @param {FocusEvent} event\n   */\n  focusout(event) {\n    if (!this.isAttachedToDOM) {\n      return;\n    }\n\n    // In case of focusout, the relatedTarget is the element which\n    // is grabbing the focus.\n    // So if the related target is an element under the div for this\n    // editor, then the editor isn't unactive.\n    const target = event.relatedTarget;\n    if (target?.closest(`#${this.id}`)) {\n      return;\n    }\n\n    event.preventDefault();\n\n    if (!this.parent.isMultipleSelection) {\n      this.commitOrRemove();\n    }\n  }\n\n  commitOrRemove() {\n    if (this.isEmpty()) {\n      this.remove();\n    } else {\n      this.commit();\n    }\n  }\n\n  /**\n   * Commit the data contained in this editor.\n   */\n  commit() {\n    this.parent.addToAnnotationStorage(this);\n  }\n\n  /**\n   * We use drag-and-drop in order to move an editor on a page.\n   * @param {DragEvent} event\n   */\n  dragstart(event) {\n    const rect = this.parent.div.getBoundingClientRect();\n    this.startX = event.clientX - rect.x;\n    this.startY = event.clientY - rect.y;\n    event.dataTransfer.setData(\"text/plain\", this.id);\n    event.dataTransfer.effectAllowed = \"move\";\n  }\n\n  /**\n   * Set the editor position within its parent.\n   * @param {number} x\n   * @param {number} y\n   * @param {number} tx - x-translation in screen coordinates.\n   * @param {number} ty - y-translation in screen coordinates.\n   */\n  setAt(x, y, tx, ty) {\n    const [width, height] = this.parent.viewportBaseDimensions;\n    [tx, ty] = this.screenToPageTranslation(tx, ty);\n\n    this.x = (x + tx) / width;\n    this.y = (y + ty) / height;\n\n    this.div.style.left = `${100 * this.x}%`;\n    this.div.style.top = `${100 * this.y}%`;\n  }\n\n  /**\n   * Translate the editor position within its parent.\n   * @param {number} x - x-translation in screen coordinates.\n   * @param {number} y - y-translation in screen coordinates.\n   */\n  translate(x, y) {\n    const [width, height] = this.parent.viewportBaseDimensions;\n    [x, y] = this.screenToPageTranslation(x, y);\n\n    this.x += x / width;\n    this.y += y / height;\n\n    this.div.style.left = `${100 * this.x}%`;\n    this.div.style.top = `${100 * this.y}%`;\n  }\n\n  /**\n   * Convert a screen translation into a page one.\n   * @param {number} x\n   * @param {number} y\n   */\n  screenToPageTranslation(x, y) {\n    const { rotation } = this.parent.viewport;\n    switch (rotation) {\n      case 90:\n        return [y, -x];\n      case 180:\n        return [-x, -y];\n      case 270:\n        return [-y, x];\n      default:\n        return [x, y];\n    }\n  }\n\n  /**\n   * Set the dimensions of this editor.\n   * @param {number} width\n   * @param {number} height\n   */\n  setDims(width, height) {\n    const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions;\n    this.div.style.width = `${(100 * width) / parentWidth}%`;\n    this.div.style.height = `${(100 * height) / parentHeight}%`;\n  }\n\n  /**\n   * Get the translation used to position this editor when it's created.\n   * @returns {Array<number>}\n   */\n  getInitialTranslation() {\n    return [0, 0];\n  }\n\n  /**\n   * Render this editor in a div.\n   * @returns {HTMLDivElement}\n   */\n  render() {\n    this.div = document.createElement(\"div\");\n    this.div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n    this.div.className = this.name;\n    this.div.setAttribute(\"id\", this.id);\n    this.div.setAttribute(\"tabIndex\", 0);\n\n    this.setInForeground();\n\n    this.div.addEventListener(\"focusin\", this.#boundFocusin);\n    this.div.addEventListener(\"focusout\", this.#boundFocusout);\n\n    const [tx, ty] = this.getInitialTranslation();\n    this.translate(tx, ty);\n\n    bindEvents(this, this.div, [\"dragstart\", \"pointerdown\"]);\n\n    return this.div;\n  }\n\n  /**\n   * Onpointerdown callback.\n   * @param {PointerEvent} event\n   */\n  pointerdown(event) {\n    const isMac = KeyboardManager.platform.isMac;\n    if (event.button !== 0 || (event.ctrlKey && isMac)) {\n      // Avoid to focus this editor because of a non-left click.\n      event.preventDefault();\n      return;\n    }\n\n    if (\n      (event.ctrlKey && !isMac) ||\n      event.shiftKey ||\n      (event.metaKey && isMac)\n    ) {\n      this.parent.toggleSelected(this);\n    } else {\n      this.parent.setSelected(this);\n    }\n\n    this.#hasBeenSelected = true;\n  }\n\n  getRect(tx, ty) {\n    const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions;\n    const [pageWidth, pageHeight] = this.parent.pageDimensions;\n    const shiftX = (pageWidth * tx) / parentWidth;\n    const shiftY = (pageHeight * ty) / parentHeight;\n    const x = this.x * pageWidth;\n    const y = this.y * pageHeight;\n    const width = this.width * pageWidth;\n    const height = this.height * pageHeight;\n\n    switch (this.rotation) {\n      case 0:\n        return [\n          x + shiftX,\n          pageHeight - y - shiftY - height,\n          x + shiftX + width,\n          pageHeight - y - shiftY,\n        ];\n      case 90:\n        return [\n          x + shiftY,\n          pageHeight - y + shiftX,\n          x + shiftY + height,\n          pageHeight - y + shiftX + width,\n        ];\n      case 180:\n        return [\n          x - shiftX - width,\n          pageHeight - y + shiftY,\n          x - shiftX,\n          pageHeight - y + shiftY + height,\n        ];\n      case 270:\n        return [\n          x - shiftY - height,\n          pageHeight - y - shiftX - width,\n          x - shiftY,\n          pageHeight - y - shiftX,\n        ];\n      default:\n        throw new Error(\"Invalid rotation\");\n    }\n  }\n\n  getRectInCurrentCoords(rect, pageHeight) {\n    const [x1, y1, x2, y2] = rect;\n\n    const width = x2 - x1;\n    const height = y2 - y1;\n\n    switch (this.rotation) {\n      case 0:\n        return [x1, pageHeight - y2, width, height];\n      case 90:\n        return [x1, pageHeight - y1, height, width];\n      case 180:\n        return [x2, pageHeight - y1, width, height];\n      case 270:\n        return [x2, pageHeight - y2, height, width];\n      default:\n        throw new Error(\"Invalid rotation\");\n    }\n  }\n\n  /**\n   * Executed once this editor has been rendered.\n   */\n  onceAdded() {}\n\n  /**\n   * Check if the editor contains something.\n   * @returns {boolean}\n   */\n  isEmpty() {\n    return false;\n  }\n\n  /**\n   * Enable edit mode.\n   */\n  enableEditMode() {\n    this.#isInEditMode = true;\n  }\n\n  /**\n   * Disable edit mode.\n   */\n  disableEditMode() {\n    this.#isInEditMode = false;\n  }\n\n  /**\n   * Check if the editor is edited.\n   * @returns {boolean}\n   */\n  isInEditMode() {\n    return this.#isInEditMode;\n  }\n\n  /**\n   * If it returns true, then this editor handle the keyboard\n   * events itself.\n   * @returns {boolean}\n   */\n  shouldGetKeyboardEvents() {\n    return false;\n  }\n\n  /**\n   * Check if this editor needs to be rebuilt or not.\n   * @returns {boolean}\n   */\n  needsToBeRebuilt() {\n    return this.div && !this.isAttachedToDOM;\n  }\n\n  /**\n   * Rebuild the editor in case it has been removed on undo.\n   *\n   * To implement in subclasses.\n   */\n  rebuild() {\n    this.div?.addEventListener(\"focusin\", this.#boundFocusin);\n  }\n\n  /**\n   * Serialize the editor.\n   * The result of the serialization will be used to construct a\n   * new annotation to add to the pdf document.\n   *\n   * To implement in subclasses.\n   */\n  serialize() {\n    unreachable(\"An editor must be serializable\");\n  }\n\n  /**\n   * Deserialize the editor.\n   * The result of the deserialization is a new editor.\n   *\n   * @param {Object} data\n   * @param {AnnotationEditorLayer} parent\n   * @returns {AnnotationEditor}\n   */\n  static deserialize(data, parent) {\n    const editor = new this.prototype.constructor({\n      parent,\n      id: parent.getNextId(),\n    });\n    editor.rotation = data.rotation;\n\n    const [pageWidth, pageHeight] = parent.pageDimensions;\n    const [x, y, width, height] = editor.getRectInCurrentCoords(\n      data.rect,\n      pageHeight\n    );\n    editor.x = x / pageWidth;\n    editor.y = y / pageHeight;\n    editor.width = width / pageWidth;\n    editor.height = height / pageHeight;\n\n    return editor;\n  }\n\n  /**\n   * Remove this editor.\n   * It's used on ctrl+backspace action.\n   */\n  remove() {\n    this.div.removeEventListener(\"focusin\", this.#boundFocusin);\n    this.div.removeEventListener(\"focusout\", this.#boundFocusout);\n\n    if (!this.isEmpty()) {\n      // The editor is removed but it can be back at some point thanks to\n      // undo/redo so we must commit it before.\n      this.commit();\n    }\n    this.parent.remove(this);\n  }\n\n  /**\n   * Select this editor.\n   */\n  select() {\n    this.div?.classList.add(\"selectedEditor\");\n  }\n\n  /**\n   * Unselect this editor.\n   */\n  unselect() {\n    this.div?.classList.remove(\"selectedEditor\");\n  }\n\n  /**\n   * Update some parameters which have been changed through the UI.\n   * @param {number} type\n   * @param {*} value\n   */\n  updateParams(type, value) {}\n\n  /**\n   * When the user disables the editing mode some editors can change some of\n   * their properties.\n   */\n  disableEditing() {}\n\n  /**\n   * When the user enables the editing mode some editors can change some of\n   * their properties.\n   */\n  enableEditing() {}\n\n  /**\n   * Get some properties to update in the UI.\n   * @returns {Object}\n   */\n  get propertiesToUpdate() {\n    return {};\n  }\n\n  /**\n   * Get the div which really contains the displayed content.\n   */\n  get contentDiv() {\n    return this.div;\n  }\n\n  /**\n   * If true then the editor is currently edited.\n   * @type {boolean}\n   */\n  get isEditing() {\n    return this.#isEditing;\n  }\n\n  /**\n   * When set to true, it means that this editor is currently edited.\n   * @param {boolean} value\n   */\n  set isEditing(value) {\n    this.#isEditing = value;\n    if (value) {\n      this.parent.setSelected(this);\n      this.parent.setActiveEditor(this);\n    } else {\n      this.parent.setActiveEditor(null);\n    }\n  }\n}\n\nexport { AnnotationEditor };\n", "/* Copyright 2022 Mozilla Foundation\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/** @typedef {import(\"./editor.js\").AnnotationEditor} AnnotationEditor */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./annotation_editor_layer.js\").AnnotationEditorLayer} AnnotationEditorLayer */\n\nimport {\n  AnnotationEditorPrefix,\n  AnnotationEditorType,\n  shadow,\n  Util,\n} from \"../../shared/util.js\";\nimport { getColorValues, getRGB } from \"../display_utils.js\";\n\nfunction bindEvents(obj, element, names) {\n  for (const name of names) {\n    element.addEventListener(name, obj[name].bind(obj));\n  }\n}\n\n/**\n * Convert a number between 0 and 100 into an hex number between 0 and 255.\n * @param {number} opacity\n * @return {string}\n */\nfunction opacityToHex(opacity) {\n  return Math.round(Math.min(255, Math.max(1, 255 * opacity)))\n    .toString(16)\n    .padStart(2, \"0\");\n}\n\n/**\n * Class to create some unique ids for the different editors.\n */\nclass IdManager {\n  #id = 0;\n\n  /**\n   * Get a unique id.\n   * @returns {string}\n   */\n  getId() {\n    return `${AnnotationEditorPrefix}${this.#id++}`;\n  }\n}\n\n/**\n * Class to handle undo/redo.\n * Commands are just saved in a buffer.\n * If we hit some memory issues we could likely use a circular buffer.\n * It has to be used as a singleton.\n */\nclass CommandManager {\n  #commands = [];\n\n  #locked = false;\n\n  #maxSize;\n\n  #position = -1;\n\n  constructor(maxSize = 128) {\n    this.#maxSize = maxSize;\n  }\n\n  /**\n   * @typedef {Object} addOptions\n   * @property {function} cmd\n   * @property {function} undo\n   * @property {boolean} mustExec\n   * @property {number} type\n   * @property {boolean} overwriteIfSameType\n   * @property {boolean} keepUndo\n   */\n\n  /**\n   * Add a new couple of commands to be used in case of redo/undo.\n   * @param {addOptions} options\n   */\n  add({\n    cmd,\n    undo,\n    mustExec,\n    type = NaN,\n    overwriteIfSameType = false,\n    keepUndo = false,\n  }) {\n    if (mustExec) {\n      cmd();\n    }\n\n    if (this.#locked) {\n      return;\n    }\n\n    const save = { cmd, undo, type };\n    if (this.#position === -1) {\n      if (this.#commands.length > 0) {\n        // All the commands have been undone and then a new one is added\n        // hence we clear the queue.\n        this.#commands.length = 0;\n      }\n      this.#position = 0;\n      this.#commands.push(save);\n      return;\n    }\n\n    if (overwriteIfSameType && this.#commands[this.#position].type === type) {\n      // For example when we change a color we don't want to\n      // be able to undo all the steps, hence we only want to\n      // keep the last undoable action in this sequence of actions.\n      if (keepUndo) {\n        save.undo = this.#commands[this.#position].undo;\n      }\n      this.#commands[this.#position] = save;\n      return;\n    }\n\n    const next = this.#position + 1;\n    if (next === this.#maxSize) {\n      this.#commands.splice(0, 1);\n    } else {\n      this.#position = next;\n      if (next < this.#commands.length) {\n        this.#commands.splice(next);\n      }\n    }\n\n    this.#commands.push(save);\n  }\n\n  /**\n   * Undo the last command.\n   */\n  undo() {\n    if (this.#position === -1) {\n      // Nothing to undo.\n      return;\n    }\n\n    // Avoid to insert something during the undo execution.\n    this.#locked = true;\n    this.#commands[this.#position].undo();\n    this.#locked = false;\n\n    this.#position -= 1;\n  }\n\n  /**\n   * Redo the last command.\n   */\n  redo() {\n    if (this.#position < this.#commands.length - 1) {\n      this.#position += 1;\n\n      // Avoid to insert something during the redo execution.\n      this.#locked = true;\n      this.#commands[this.#position].cmd();\n      this.#locked = false;\n    }\n  }\n\n  /**\n   * Check if there is something to undo.\n   * @returns {boolean}\n   */\n  hasSomethingToUndo() {\n    return this.#position !== -1;\n  }\n\n  /**\n   * Check if there is something to redo.\n   * @returns {boolean}\n   */\n  hasSomethingToRedo() {\n    return this.#position < this.#commands.length - 1;\n  }\n\n  destroy() {\n    this.#commands = null;\n  }\n}\n\n/**\n * Class to handle the different keyboards shortcuts we can have on mac or\n * non-mac OSes.\n */\nclass KeyboardManager {\n  /**\n   * Create a new keyboard manager class.\n   * @param {Array<Array>} callbacks - an array containing an array of shortcuts\n   * and a callback to call.\n   * A shortcut is a string like `ctrl+c` or `mac+ctrl+c` for mac OS.\n   */\n  constructor(callbacks) {\n    this.buffer = [];\n    this.callbacks = new Map();\n    this.allKeys = new Set();\n\n    const isMac = KeyboardManager.platform.isMac;\n    for (const [keys, callback] of callbacks) {\n      for (const key of keys) {\n        const isMacKey = key.startsWith(\"mac+\");\n        if (isMac && isMacKey) {\n          this.callbacks.set(key.slice(4), callback);\n          this.allKeys.add(key.split(\"+\").at(-1));\n        } else if (!isMac && !isMacKey) {\n          this.callbacks.set(key, callback);\n          this.allKeys.add(key.split(\"+\").at(-1));\n        }\n      }\n    }\n  }\n\n  static get platform() {\n    const platform = typeof navigator !== \"undefined\" ? navigator.platform : \"\";\n\n    return shadow(this, \"platform\", {\n      isWin: platform.includes(\"Win\"),\n      isMac: platform.includes(\"Mac\"),\n    });\n  }\n\n  /**\n   * Serialize an event into a string in order to match a\n   * potential key for a callback.\n   * @param {KeyboardEvent} event\n   * @returns {string}\n   */\n  #serialize(event) {\n    if (event.altKey) {\n      this.buffer.push(\"alt\");\n    }\n    if (event.ctrlKey) {\n      this.buffer.push(\"ctrl\");\n    }\n    if (event.metaKey) {\n      this.buffer.push(\"meta\");\n    }\n    if (event.shiftKey) {\n      this.buffer.push(\"shift\");\n    }\n    this.buffer.push(event.key);\n    const str = this.buffer.join(\"+\");\n    this.buffer.length = 0;\n\n    return str;\n  }\n\n  /**\n   * Execute a callback, if any, for a given keyboard event.\n   * The self is used as `this` in the callback.\n   * @param {Object} self.\n   * @param {KeyboardEvent} event\n   * @returns\n   */\n  exec(self, event) {\n    if (!this.allKeys.has(event.key)) {\n      return;\n    }\n    const callback = this.callbacks.get(this.#serialize(event));\n    if (!callback) {\n      return;\n    }\n    callback.bind(self)();\n    event.stopPropagation();\n    event.preventDefault();\n  }\n}\n\n/**\n * Basic clipboard to copy/paste some editors.\n * It has to be used as a singleton.\n */\nclass ClipboardManager {\n  #elements = null;\n\n  /**\n   * Copy an element.\n   * @param {AnnotationEditor|Array<AnnotationEditor>} element\n   */\n  copy(element) {\n    if (!element) {\n      return;\n    }\n    if (Array.isArray(element)) {\n      this.#elements = element.map(el => el.serialize());\n    } else {\n      this.#elements = [element.serialize()];\n    }\n    this.#elements = this.#elements.filter(el => !!el);\n    if (this.#elements.length === 0) {\n      this.#elements = null;\n    }\n  }\n\n  /**\n   * Create a new element.\n   * @returns {AnnotationEditor|null}\n   */\n  paste() {\n    return this.#elements;\n  }\n\n  /**\n   * Check if the clipboard is empty.\n   * @returns {boolean}\n   */\n  isEmpty() {\n    return this.#elements === null;\n  }\n\n  destroy() {\n    this.#elements = null;\n  }\n}\n\nclass ColorManager {\n  static _colorsMapping = new Map([\n    [\"CanvasText\", [0, 0, 0]],\n    [\"Canvas\", [255, 255, 255]],\n  ]);\n\n  get _colors() {\n    if (\n      typeof PDFJSDev !== \"undefined\" &&\n      PDFJSDev.test(\"LIB\") &&\n      typeof document === \"undefined\"\n    ) {\n      return shadow(this, \"_colors\", ColorManager._colorsMapping);\n    }\n\n    const colors = new Map([\n      [\"CanvasText\", null],\n      [\"Canvas\", null],\n    ]);\n    getColorValues(colors);\n    return shadow(this, \"_colors\", colors);\n  }\n\n  /**\n   * In High Contrast Mode, the color on the screen is not always the\n   * real color used in the pdf.\n   * For example in some cases white can appear to be black but when saving\n   * we want to have white.\n   * @param {string} color\n   * @returns {Array<number>}\n   */\n  convert(color) {\n    const rgb = getRGB(color);\n    if (!window.matchMedia(\"(forced-colors: active)\").matches) {\n      return rgb;\n    }\n\n    for (const [name, RGB] of this._colors) {\n      if (RGB.every((x, i) => x === rgb[i])) {\n        return ColorManager._colorsMapping.get(name);\n      }\n    }\n    return rgb;\n  }\n\n  /**\n   * An input element must have its color value as a hex string\n   * and not as color name.\n   * So this function converts a name into an hex string.\n   * @param {string} name\n   * @returns {string}\n   */\n  getHexCode(name) {\n    const rgb = this._colors.get(name);\n    if (!rgb) {\n      return name;\n    }\n    return Util.makeHexColor(...rgb);\n  }\n}\n\n/**\n * A pdf has several pages and each of them when it will rendered\n * will have an AnnotationEditorLayer which will contain the some\n * new Annotations associated to an editor in order to modify them.\n *\n * This class is used to manage all the different layers, editors and\n * some action like copy/paste, undo/redo, ...\n */\nclass AnnotationEditorUIManager {\n  #activeEditor = null;\n\n  #allEditors = new Map();\n\n  #allLayers = new Map();\n\n  #clipboardManager = new ClipboardManager();\n\n  #commandManager = new CommandManager();\n\n  #currentPageIndex = 0;\n\n  #editorTypes = null;\n\n  #eventBus = null;\n\n  #idManager = new IdManager();\n\n  #isEnabled = false;\n\n  #mode = AnnotationEditorType.NONE;\n\n  #selectedEditors = new Set();\n\n  #boundKeydown = this.keydown.bind(this);\n\n  #boundOnEditingAction = this.onEditingAction.bind(this);\n\n  #boundOnPageChanging = this.onPageChanging.bind(this);\n\n  #previousStates = {\n    isEditing: false,\n    isEmpty: true,\n    hasEmptyClipboard: true,\n    hasSomethingToUndo: false,\n    hasSomethingToRedo: false,\n    hasSelectedEditor: false,\n  };\n\n  #container = null;\n\n  static _keyboardManager = new KeyboardManager([\n    [[\"ctrl+a\", \"mac+meta+a\"], AnnotationEditorUIManager.prototype.selectAll],\n    [[\"ctrl+c\", \"mac+meta+c\"], AnnotationEditorUIManager.prototype.copy],\n    [[\"ctrl+v\", \"mac+meta+v\"], AnnotationEditorUIManager.prototype.paste],\n    [[\"ctrl+x\", \"mac+meta+x\"], AnnotationEditorUIManager.prototype.cut],\n    [[\"ctrl+z\", \"mac+meta+z\"], AnnotationEditorUIManager.prototype.undo],\n    [\n      [\"ctrl+y\", \"ctrl+shift+Z\", \"mac+meta+shift+Z\"],\n      AnnotationEditorUIManager.prototype.redo,\n    ],\n    [\n      [\n        \"Backspace\",\n        \"alt+Backspace\",\n        \"ctrl+Backspace\",\n        \"shift+Backspace\",\n        \"mac+Backspace\",\n        \"mac+alt+Backspace\",\n        \"mac+ctrl+Backspace\",\n        \"Delete\",\n        \"ctrl+Delete\",\n        \"shift+Delete\",\n      ],\n      AnnotationEditorUIManager.prototype.delete,\n    ],\n    [[\"Escape\", \"mac+Escape\"], AnnotationEditorUIManager.prototype.unselectAll],\n  ]);\n\n  constructor(container, eventBus) {\n    this.#container = container;\n    this.#eventBus = eventBus;\n    this.#eventBus._on(\"editingaction\", this.#boundOnEditingAction);\n    this.#eventBus._on(\"pagechanging\", this.#boundOnPageChanging);\n  }\n\n  destroy() {\n    this.#removeKeyboardManager();\n    this.#eventBus._off(\"editingaction\", this.#boundOnEditingAction);\n    this.#eventBus._off(\"pagechanging\", this.#boundOnPageChanging);\n    for (const layer of this.#allLayers.values()) {\n      layer.destroy();\n    }\n    this.#allLayers.clear();\n    this.#allEditors.clear();\n    this.#activeEditor = null;\n    this.#selectedEditors.clear();\n    this.#clipboardManager.destroy();\n    this.#commandManager.destroy();\n  }\n\n  onPageChanging({ pageNumber }) {\n    this.#currentPageIndex = pageNumber - 1;\n  }\n\n  focusMainContainer() {\n    this.#container.focus();\n  }\n\n  #addKeyboardManager() {\n    // The keyboard events are caught at the container level in order to be able\n    // to execute some callbacks even if the current page doesn't have focus.\n    this.#container.addEventListener(\"keydown\", this.#boundKeydown);\n  }\n\n  #removeKeyboardManager() {\n    this.#container.removeEventListener(\"keydown\", this.#boundKeydown);\n  }\n\n  /**\n   * Keydown callback.\n   * @param {KeyboardEvent} event\n   */\n  keydown(event) {\n    if (!this.getActive()?.shouldGetKeyboardEvents()) {\n      AnnotationEditorUIManager._keyboardManager.exec(this, event);\n    }\n  }\n\n  /**\n   * Execute an action for a given name.\n   * For example, the user can click on the \"Undo\" entry in the context menu\n   * and it'll trigger the undo action.\n   * @param {Object} details\n   */\n  onEditingAction(details) {\n    if (\n      [\"undo\", \"redo\", \"cut\", \"copy\", \"paste\", \"delete\", \"selectAll\"].includes(\n        details.name\n      )\n    ) {\n      this[details.name]();\n    }\n  }\n\n  /**\n   * Update the different possible states of this manager, e.g. is the clipboard\n   * empty or is there something to undo, ...\n   * @param {Object} details\n   */\n  #dispatchUpdateStates(details) {\n    const hasChanged = Object.entries(details).some(\n      ([key, value]) => this.#previousStates[key] !== value\n    );\n\n    if (hasChanged) {\n      this.#eventBus.dispatch(\"annotationeditorstateschanged\", {\n        source: this,\n        details: Object.assign(this.#previousStates, details),\n      });\n    }\n  }\n\n  #dispatchUpdateUI(details) {\n    this.#eventBus.dispatch(\"annotationeditorparamschanged\", {\n      source: this,\n      details,\n    });\n  }\n\n  /**\n   * Set the editing state.\n   * It can be useful to temporarily disable it when the user is editing a\n   * FreeText annotation.\n   * @param {boolean} isEditing\n   */\n  setEditingState(isEditing) {\n    if (isEditing) {\n      this.#addKeyboardManager();\n      this.#dispatchUpdateStates({\n        isEditing: this.#mode !== AnnotationEditorType.NONE,\n        isEmpty: this.#isEmpty(),\n        hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n        hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n        hasSelectedEditor: false,\n        hasEmptyClipboard: this.#clipboardManager.isEmpty(),\n      });\n    } else {\n      this.#removeKeyboardManager();\n      this.#dispatchUpdateStates({\n        isEditing: false,\n      });\n    }\n  }\n\n  registerEditorTypes(types) {\n    this.#editorTypes = types;\n    for (const editorType of this.#editorTypes) {\n      this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n    }\n  }\n\n  /**\n   * Get an id.\n   * @returns {string}\n   */\n  getId() {\n    return this.#idManager.getId();\n  }\n\n  /**\n   * Add a new layer for a page which will contains the editors.\n   * @param {AnnotationEditorLayer} layer\n   */\n  addLayer(layer) {\n    this.#allLayers.set(layer.pageIndex, layer);\n    if (this.#isEnabled) {\n      layer.enable();\n    } else {\n      layer.disable();\n    }\n  }\n\n  /**\n   * Remove a layer.\n   * @param {AnnotationEditorLayer} layer\n   */\n  removeLayer(layer) {\n    this.#allLayers.delete(layer.pageIndex);\n  }\n\n  /**\n   * Change the editor mode (None, FreeText, Ink, ...)\n   * @param {number} mode\n   */\n  updateMode(mode) {\n    this.#mode = mode;\n    if (mode === AnnotationEditorType.NONE) {\n      this.setEditingState(false);\n      this.#disableAll();\n    } else {\n      this.setEditingState(true);\n      this.#enableAll();\n      for (const layer of this.#allLayers.values()) {\n        layer.updateMode(mode);\n      }\n    }\n  }\n\n  /**\n   * Update the toolbar if it's required to reflect the tool currently used.\n   * @param {number} mode\n   * @returns {undefined}\n   */\n  updateToolbar(mode) {\n    if (mode === this.#mode) {\n      return;\n    }\n    this.#eventBus.dispatch(\"switchannotationeditormode\", {\n      source: this,\n      mode,\n    });\n  }\n\n  /**\n   * Update a parameter in the current editor or globally.\n   * @param {number} type\n   * @param {*} value\n   */\n  updateParams(type, value) {\n    for (const editor of this.#selectedEditors) {\n      editor.updateParams(type, value);\n    }\n\n    for (const editorType of this.#editorTypes) {\n      editorType.updateDefaultParams(type, value);\n    }\n  }\n\n  /**\n   * Enable all the layers.\n   */\n  #enableAll() {\n    if (!this.#isEnabled) {\n      this.#isEnabled = true;\n      for (const layer of this.#allLayers.values()) {\n        layer.enable();\n      }\n    }\n  }\n\n  /**\n   * Disable all the layers.\n   */\n  #disableAll() {\n    this.unselectAll();\n    if (this.#isEnabled) {\n      this.#isEnabled = false;\n      for (const layer of this.#allLayers.values()) {\n        layer.disable();\n      }\n    }\n  }\n\n  /**\n   * Get all the editors belonging to a give page.\n   * @param {number} pageIndex\n   * @returns {Array<AnnotationEditor>}\n   */\n  getEditors(pageIndex) {\n    const editors = [];\n    for (const editor of this.#allEditors.values()) {\n      if (editor.pageIndex === pageIndex) {\n        editors.push(editor);\n      }\n    }\n    return editors;\n  }\n\n  /**\n   * Get an editor with the given id.\n   * @param {string} id\n   * @returns {AnnotationEditor}\n   */\n  getEditor(id) {\n    return this.#allEditors.get(id);\n  }\n\n  /**\n   * Add a new editor.\n   * @param {AnnotationEditor} editor\n   */\n  addEditor(editor) {\n    this.#allEditors.set(editor.id, editor);\n  }\n\n  /**\n   * Remove an editor.\n   * @param {AnnotationEditor} editor\n   */\n  removeEditor(editor) {\n    this.#allEditors.delete(editor.id);\n    this.unselect(editor);\n  }\n\n  /**\n   * Add an editor to the layer it belongs to or add it to the global map.\n   * @param {AnnotationEditor} editor\n   */\n  #addEditorToLayer(editor) {\n    const layer = this.#allLayers.get(editor.pageIndex);\n    if (layer) {\n      layer.addOrRebuild(editor);\n    } else {\n      this.addEditor(editor);\n    }\n  }\n\n  /**\n   * Set the given editor as the active one.\n   * @param {AnnotationEditor} editor\n   */\n  setActiveEditor(editor) {\n    if (this.#activeEditor === editor) {\n      return;\n    }\n\n    this.#activeEditor = editor;\n    if (editor) {\n      this.#dispatchUpdateUI(editor.propertiesToUpdate);\n    }\n  }\n\n  /**\n   * Add or remove an editor the current selection.\n   * @param {AnnotationEditor} editor\n   */\n  toggleSelected(editor) {\n    if (this.#selectedEditors.has(editor)) {\n      this.#selectedEditors.delete(editor);\n      editor.unselect();\n      this.#dispatchUpdateStates({\n        hasSelectedEditor: this.hasSelection,\n      });\n      return;\n    }\n    this.#selectedEditors.add(editor);\n    editor.select();\n    this.#dispatchUpdateUI(editor.propertiesToUpdate);\n    this.#dispatchUpdateStates({\n      hasSelectedEditor: true,\n    });\n  }\n\n  /**\n   * Set the last selected editor.\n   * @param {AnnotationEditor} editor\n   */\n  setSelected(editor) {\n    for (const ed of this.#selectedEditors) {\n      if (ed !== editor) {\n        ed.unselect();\n      }\n    }\n    this.#selectedEditors.clear();\n\n    this.#selectedEditors.add(editor);\n    editor.select();\n    this.#dispatchUpdateUI(editor.propertiesToUpdate);\n    this.#dispatchUpdateStates({\n      hasSelectedEditor: true,\n    });\n  }\n\n  /**\n   * Check if the editor is selected.\n   * @param {AnnotationEditor} editor\n   */\n  isSelected(editor) {\n    return this.#selectedEditors.has(editor);\n  }\n\n  /**\n   * Unselect an editor.\n   * @param {AnnotationEditor} editor\n   */\n  unselect(editor) {\n    editor.unselect();\n    this.#selectedEditors.delete(editor);\n    this.#dispatchUpdateStates({\n      hasSelectedEditor: this.hasSelection,\n    });\n  }\n\n  get hasSelection() {\n    return this.#selectedEditors.size !== 0;\n  }\n\n  /**\n   * Undo the last command.\n   */\n  undo() {\n    this.#commandManager.undo();\n    this.#dispatchUpdateStates({\n      hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n      hasSomethingToRedo: true,\n      isEmpty: this.#isEmpty(),\n    });\n  }\n\n  /**\n   * Redo the last undoed command.\n   */\n  redo() {\n    this.#commandManager.redo();\n    this.#dispatchUpdateStates({\n      hasSomethingToUndo: true,\n      hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n      isEmpty: this.#isEmpty(),\n    });\n  }\n\n  /**\n   * Add a command to execute (cmd) and another one to undo it.\n   * @param {Object} params\n   */\n  addCommands(params) {\n    this.#commandManager.add(params);\n    this.#dispatchUpdateStates({\n      hasSomethingToUndo: true,\n      hasSomethingToRedo: false,\n      isEmpty: this.#isEmpty(),\n    });\n  }\n\n  #isEmpty() {\n    if (this.#allEditors.size === 0) {\n      return true;\n    }\n\n    if (this.#allEditors.size === 1) {\n      for (const editor of this.#allEditors.values()) {\n        return editor.isEmpty();\n      }\n    }\n\n    return false;\n  }\n\n  /**\n   * Delete the current editor or all.\n   */\n  delete() {\n    if (this.#activeEditor) {\n      // An editor is being edited so just commit it.\n      this.#activeEditor.commitOrRemove();\n    }\n\n    if (!this.hasSelection) {\n      return;\n    }\n\n    const editors = [...this.#selectedEditors];\n    const cmd = () => {\n      for (const editor of editors) {\n        editor.remove();\n      }\n    };\n    const undo = () => {\n      for (const editor of editors) {\n        this.#addEditorToLayer(editor);\n      }\n    };\n\n    this.addCommands({ cmd, undo, mustExec: true });\n  }\n\n  /**\n   * Copy the selected editor.\n   */\n  copy() {\n    if (this.#activeEditor) {\n      // An editor is being edited so just commit it.\n      this.#activeEditor.commitOrRemove();\n    }\n    if (this.hasSelection) {\n      const editors = [];\n      for (const editor of this.#selectedEditors) {\n        if (!editor.isEmpty()) {\n          editors.push(editor);\n        }\n      }\n      if (editors.length === 0) {\n        return;\n      }\n\n      this.#clipboardManager.copy(editors);\n      this.#dispatchUpdateStates({ hasEmptyClipboard: false });\n    }\n  }\n\n  /**\n   * Cut the selected editor.\n   */\n  cut() {\n    this.copy();\n    this.delete();\n  }\n\n  /**\n   * Paste a previously copied editor.\n   * @returns {undefined}\n   */\n  paste() {\n    if (this.#clipboardManager.isEmpty()) {\n      return;\n    }\n\n    this.unselectAll();\n\n    const layer = this.#allLayers.get(this.#currentPageIndex);\n    const newEditors = this.#clipboardManager\n      .paste()\n      .map(data => layer.deserialize(data));\n\n    const cmd = () => {\n      for (const editor of newEditors) {\n        this.#addEditorToLayer(editor);\n      }\n      this.#selectEditors(newEditors);\n    };\n    const undo = () => {\n      for (const editor of newEditors) {\n        editor.remove();\n      }\n    };\n    this.addCommands({ cmd, undo, mustExec: true });\n  }\n\n  /**\n   * Select the editors.\n   * @param {Array<AnnotationEditor>} editors\n   */\n  #selectEditors(editors) {\n    this.#selectedEditors.clear();\n    for (const editor of editors) {\n      if (editor.isEmpty()) {\n        continue;\n      }\n      this.#selectedEditors.add(editor);\n      editor.select();\n    }\n    this.#dispatchUpdateStates({ hasSelectedEditor: true });\n  }\n\n  /**\n   * Select all the editors.\n   */\n  selectAll() {\n    for (const editor of this.#selectedEditors) {\n      editor.commit();\n    }\n    this.#selectEditors(this.#allEditors.values());\n  }\n\n  /**\n   * Unselect all the selected editors.\n   */\n  unselectAll() {\n    if (this.#activeEditor) {\n      // An editor is being edited so just commit it.\n      this.#activeEditor.commitOrRemove();\n      return;\n    }\n\n    if (this.#selectEditors.size === 0) {\n      return;\n    }\n    for (const editor of this.#selectedEditors) {\n      editor.unselect();\n    }\n    this.#selectedEditors.clear();\n    this.#dispatchUpdateStates({\n      hasSelectedEditor: false,\n    });\n  }\n\n  /**\n   * Is the current editor the one passed as argument?\n   * @param {AnnotationEditor} editor\n   * @returns\n   */\n  isActive(editor) {\n    return this.#activeEditor === editor;\n  }\n\n  /**\n   * Get the current active editor.\n   * @returns {AnnotationEditor|null}\n   */\n  getActive() {\n    return this.#activeEditor;\n  }\n\n  /**\n   * Get the current editor mode.\n   * @returns {number}\n   */\n  getMode() {\n    return this.#mode;\n  }\n}\n\nexport {\n  AnnotationEditorUIManager,\n  bindEvents,\n  ColorManager,\n  CommandManager,\n  KeyboardManager,\n  opacityToHex,\n};\n", "/* Copyright 2015 Mozilla Foundation\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\nimport {\n  BaseCanvasFactory,\n  BaseCMapReaderFactory,\n  BaseStandardFontDataFactory,\n  BaseSVGFactory,\n} from \"./base_factory.js\";\nimport { BaseException, stringToBytes, Util, warn } from \"../shared/util.js\";\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\n\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\n\nclass PixelsPerInch {\n  static CSS = 96.0;\n\n  static PDF = 72.0;\n\n  static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\n\nclass DOMCanvasFactory extends BaseCanvasFactory {\n  constructor({ ownerDocument = globalThis.document } = {}) {\n    super();\n    this._document = ownerDocument;\n  }\n\n  /**\n   * @ignore\n   */\n  _createCanvas(width, height) {\n    const canvas = this._document.createElement(\"canvas\");\n    canvas.width = width;\n    canvas.height = height;\n    return canvas;\n  }\n}\n\nasync function fetchData(url, asTypedArray = false) {\n  if (\n    (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n    isValidFetchUrl(url, document.baseURI)\n  ) {\n    const response = await fetch(url);\n    if (!response.ok) {\n      throw new Error(response.statusText);\n    }\n    return asTypedArray\n      ? new Uint8Array(await response.arrayBuffer())\n      : stringToBytes(await response.text());\n  }\n\n  // The Fetch API is not supported.\n  return new Promise((resolve, reject) => {\n    const request = new XMLHttpRequest();\n    request.open(\"GET\", url, /* asTypedArray = */ true);\n\n    if (asTypedArray) {\n      request.responseType = \"arraybuffer\";\n    }\n    request.onreadystatechange = () => {\n      if (request.readyState !== XMLHttpRequest.DONE) {\n        return;\n      }\n      if (request.status === 200 || request.status === 0) {\n        let data;\n        if (asTypedArray && request.response) {\n          data = new Uint8Array(request.response);\n        } else if (!asTypedArray && request.responseText) {\n          data = stringToBytes(request.responseText);\n        }\n        if (data) {\n          resolve(data);\n          return;\n        }\n      }\n      reject(new Error(request.statusText));\n    };\n\n    request.send(null);\n  });\n}\n\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\n  /**\n   * @ignore\n   */\n  _fetchData(url, compressionType) {\n    return fetchData(url, /* asTypedArray = */ this.isCompressed).then(data => {\n      return { cMapData: data, compressionType };\n    });\n  }\n}\n\nclass DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\n  /**\n   * @ignore\n   */\n  _fetchData(url) {\n    return fetchData(url, /* asTypedArray = */ true);\n  }\n}\n\nclass DOMSVGFactory extends BaseSVGFactory {\n  /**\n   * @ignore\n   */\n  _createSVG(type) {\n    return document.createElementNS(SVG_NS, type);\n  }\n}\n\n/**\n * @typedef {Object} PageViewportParameters\n * @property {Array<number>} viewBox - The xMin, yMin, xMax and\n *   yMax coordinates.\n * @property {number} scale - The scale of the viewport.\n * @property {number} rotation - The rotation, in degrees, of the viewport.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset. The\n *   default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset. The\n *   default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be flipped.\n *   The default value is `false`.\n */\n\n/**\n * @typedef {Object} PageViewportCloneParameters\n * @property {number} [scale] - The scale, overriding the one in the cloned\n *   viewport. The default value is `this.scale`.\n * @property {number} [rotation] - The rotation, in degrees, overriding the one\n *   in the cloned viewport. The default value is `this.rotation`.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n *   The default value is `this.offsetX`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n *   The default value is `this.offsetY`.\n * @property {boolean} [dontFlip] - If true, the x-axis will not be flipped.\n *   The default value is `false`.\n */\n\n/**\n * PDF page viewport created based on scale, rotation and offset.\n */\nclass PageViewport {\n  /**\n   * @param {PageViewportParameters}\n   */\n  constructor({\n    viewBox,\n    scale,\n    rotation,\n    offsetX = 0,\n    offsetY = 0,\n    dontFlip = false,\n  }) {\n    this.viewBox = viewBox;\n    this.scale = scale;\n    this.rotation = rotation;\n    this.offsetX = offsetX;\n    this.offsetY = offsetY;\n\n    // creating transform to convert pdf coordinate system to the normal\n    // canvas like coordinates taking in account scale and rotation\n    const centerX = (viewBox[2] + viewBox[0]) / 2;\n    const centerY = (viewBox[3] + viewBox[1]) / 2;\n    let rotateA, rotateB, rotateC, rotateD;\n    // Normalize the rotation, by clamping it to the [0, 360) range.\n    rotation %= 360;\n    if (rotation < 0) {\n      rotation += 360;\n    }\n    switch (rotation) {\n      case 180:\n        rotateA = -1;\n        rotateB = 0;\n        rotateC = 0;\n        rotateD = 1;\n        break;\n      case 90:\n        rotateA = 0;\n        rotateB = 1;\n        rotateC = 1;\n        rotateD = 0;\n        break;\n      case 270:\n        rotateA = 0;\n        rotateB = -1;\n        rotateC = -1;\n        rotateD = 0;\n        break;\n      case 0:\n        rotateA = 1;\n        rotateB = 0;\n        rotateC = 0;\n        rotateD = -1;\n        break;\n      default:\n        throw new Error(\n          \"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\"\n        );\n    }\n\n    if (dontFlip) {\n      rotateC = -rotateC;\n      rotateD = -rotateD;\n    }\n\n    let offsetCanvasX, offsetCanvasY;\n    let width, height;\n    if (rotateA === 0) {\n      offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n      offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n      width = Math.abs(viewBox[3] - viewBox[1]) * scale;\n      height = Math.abs(viewBox[2] - viewBox[0]) * scale;\n    } else {\n      offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n      offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n      width = Math.abs(viewBox[2] - viewBox[0]) * scale;\n      height = Math.abs(viewBox[3] - viewBox[1]) * scale;\n    }\n    // creating transform for the following operations:\n    // translate(-centerX, -centerY), rotate and flip vertically,\n    // scale, and translate(offsetCanvasX, offsetCanvasY)\n    this.transform = [\n      rotateA * scale,\n      rotateB * scale,\n      rotateC * scale,\n      rotateD * scale,\n      offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY,\n      offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY,\n    ];\n\n    this.width = width;\n    this.height = height;\n  }\n\n  /**\n   * Clones viewport, with optional additional properties.\n   * @param {PageViewportCloneParameters} [params]\n   * @returns {PageViewport} Cloned viewport.\n   */\n  clone({\n    scale = this.scale,\n    rotation = this.rotation,\n    offsetX = this.offsetX,\n    offsetY = this.offsetY,\n    dontFlip = false,\n  } = {}) {\n    return new PageViewport({\n      viewBox: this.viewBox.slice(),\n      scale,\n      rotation,\n      offsetX,\n      offsetY,\n      dontFlip,\n    });\n  }\n\n  /**\n   * Converts PDF point to the viewport coordinates. For examples, useful for\n   * converting PDF location into canvas pixel coordinates.\n   * @param {number} x - The x-coordinate.\n   * @param {number} y - The y-coordinate.\n   * @returns {Object} Object containing `x` and `y` properties of the\n   *   point in the viewport coordinate space.\n   * @see {@link convertToPdfPoint}\n   * @see {@link convertToViewportRectangle}\n   */\n  convertToViewportPoint(x, y) {\n    return Util.applyTransform([x, y], this.transform);\n  }\n\n  /**\n   * Converts PDF rectangle to the viewport coordinates.\n   * @param {Array} rect - The xMin, yMin, xMax and yMax coordinates.\n   * @returns {Array} Array containing corresponding coordinates of the\n   *   rectangle in the viewport coordinate space.\n   * @see {@link convertToViewportPoint}\n   */\n  convertToViewportRectangle(rect) {\n    const topLeft = Util.applyTransform([rect[0], rect[1]], this.transform);\n    const bottomRight = Util.applyTransform([rect[2], rect[3]], this.transform);\n    return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n  }\n\n  /**\n   * Converts viewport coordinates to the PDF location. For examples, useful\n   * for converting canvas pixel location into PDF one.\n   * @param {number} x - The x-coordinate.\n   * @param {number} y - The y-coordinate.\n   * @returns {Object} Object containing `x` and `y` properties of the\n   *   point in the PDF coordinate space.\n   * @see {@link convertToViewportPoint}\n   */\n  convertToPdfPoint(x, y) {\n    return Util.applyInverseTransform([x, y], this.transform);\n  }\n}\n\nclass RenderingCancelledException extends BaseException {\n  constructor(msg, type) {\n    super(msg, \"RenderingCancelledException\");\n    this.type = type;\n  }\n}\n\nfunction isDataScheme(url) {\n  const ii = url.length;\n  let i = 0;\n  while (i < ii && url[i].trim() === \"\") {\n    i++;\n  }\n  return url.substring(i, i + 5).toLowerCase() === \"data:\";\n}\n\nfunction isPdfFile(filename) {\n  return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\n\n/**\n * Gets the filename from a given URL.\n * @param {string} url\n * @returns {string}\n */\nfunction getFilenameFromUrl(url) {\n  const anchor = url.indexOf(\"#\");\n  const query = url.indexOf(\"?\");\n  const end = Math.min(\n    anchor > 0 ? anchor : url.length,\n    query > 0 ? query : url.length\n  );\n  return url.substring(url.lastIndexOf(\"/\", end) + 1, end);\n}\n\n/**\n * Returns the filename or guessed filename from the url (see issue 3455).\n * @param {string} url - The original PDF location.\n * @param {string} defaultFilename - The value returned if the filename is\n *   unknown, or the protocol is unsupported.\n * @returns {string} Guessed PDF filename.\n */\nfunction getPdfFilenameFromUrl(url, defaultFilename = \"document.pdf\") {\n  if (typeof url !== \"string\") {\n    return defaultFilename;\n  }\n  if (isDataScheme(url)) {\n    warn('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n    return defaultFilename;\n  }\n  const reURI = /^(?:(?:[^:]+:)?\\/\\/[^/]+)?([^?#]*)(\\?[^#]*)?(#.*)?$/;\n  //              SCHEME        HOST        1.PATH  2.QUERY   3.REF\n  // Pattern to get last matching NAME.pdf\n  const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n  const splitURI = reURI.exec(url);\n  let suggestedFilename =\n    reFilename.exec(splitURI[1]) ||\n    reFilename.exec(splitURI[2]) ||\n    reFilename.exec(splitURI[3]);\n  if (suggestedFilename) {\n    suggestedFilename = suggestedFilename[0];\n    if (suggestedFilename.includes(\"%\")) {\n      // URL-encoded %2Fpath%2Fto%2Ffile.pdf should be file.pdf\n      try {\n        suggestedFilename = reFilename.exec(\n          decodeURIComponent(suggestedFilename)\n        )[0];\n      } catch (ex) {\n        // Possible (extremely rare) errors:\n        // URIError \"Malformed URI\", e.g. for \"%AA.pdf\"\n        // TypeError \"null has no properties\", e.g. for \"%2F.pdf\"\n      }\n    }\n  }\n  return suggestedFilename || defaultFilename;\n}\n\nclass StatTimer {\n  constructor() {\n    this.started = Object.create(null);\n    this.times = [];\n  }\n\n  time(name) {\n    if (name in this.started) {\n      warn(`Timer is already running for ${name}`);\n    }\n    this.started[name] = Date.now();\n  }\n\n  timeEnd(name) {\n    if (!(name in this.started)) {\n      warn(`Timer has not been started for ${name}`);\n    }\n    this.times.push({\n      name,\n      start: this.started[name],\n      end: Date.now(),\n    });\n    // Remove timer from started so it can be called again.\n    delete this.started[name];\n  }\n\n  toString() {\n    // Find the longest name for padding purposes.\n    const outBuf = [];\n    let longest = 0;\n    for (const time of this.times) {\n      const name = time.name;\n      if (name.length > longest) {\n        longest = name.length;\n      }\n    }\n    for (const time of this.times) {\n      const duration = time.end - time.start;\n      outBuf.push(`${time.name.padEnd(longest)} ${duration}ms\\n`);\n    }\n    return outBuf.join(\"\");\n  }\n}\n\nfunction isValidFetchUrl(url, baseUrl) {\n  try {\n    const { protocol } = baseUrl ? new URL(url, baseUrl) : new URL(url);\n    // The Fetch API only supports the http/https protocols, and not file/ftp.\n    return protocol === \"http:\" || protocol === \"https:\";\n  } catch (ex) {\n    return false; // `new URL()` will throw on incorrect data.\n  }\n}\n\n/**\n * @param {string} src\n * @param {boolean} [removeScriptElement]\n * @returns {Promise<void>}\n */\nfunction loadScript(src, removeScriptElement = false) {\n  return new Promise((resolve, reject) => {\n    const script = document.createElement(\"script\");\n    script.src = src;\n\n    script.onload = function (evt) {\n      if (removeScriptElement) {\n        script.remove();\n      }\n      resolve(evt);\n    };\n    script.onerror = function () {\n      reject(new Error(`Cannot load script at: ${script.src}`));\n    };\n    (document.head || document.documentElement).append(script);\n  });\n}\n\n// Deprecated API function -- display regardless of the `verbosity` setting.\nfunction deprecated(details) {\n  console.log(\"Deprecated API usage: \" + details);\n}\n\nlet pdfDateStringRegex;\n\nclass PDFDateString {\n  /**\n   * Convert a PDF date string to a JavaScript `Date` object.\n   *\n   * The PDF date string format is described in section 7.9.4 of the official\n   * PDF 32000-1:2008 specification. However, in the PDF 1.7 reference (sixth\n   * edition) Adobe describes the same format including a trailing apostrophe.\n   * This syntax in incorrect, but Adobe Acrobat creates PDF files that contain\n   * them. We ignore all apostrophes as they are not necessary for date parsing.\n   *\n   * Moreover, Adobe Acrobat doesn't handle changing the date to universal time\n   * and doesn't use the user's time zone (effectively ignoring the HH' and mm'\n   * parts of the date string).\n   *\n   * @param {string} input\n   * @returns {Date|null}\n   */\n  static toDateObject(input) {\n    if (!input || typeof input !== \"string\") {\n      return null;\n    }\n\n    // Lazily initialize the regular expression.\n    if (!pdfDateStringRegex) {\n      pdfDateStringRegex = new RegExp(\n        \"^D:\" + // Prefix (required)\n          \"(\\\\d{4})\" + // Year (required)\n          \"(\\\\d{2})?\" + // Month (optional)\n          \"(\\\\d{2})?\" + // Day (optional)\n          \"(\\\\d{2})?\" + // Hour (optional)\n          \"(\\\\d{2})?\" + // Minute (optional)\n          \"(\\\\d{2})?\" + // Second (optional)\n          \"([Z|+|-])?\" + // Universal time relation (optional)\n          \"(\\\\d{2})?\" + // Offset hour (optional)\n          \"'?\" + // Splitting apostrophe (optional)\n          \"(\\\\d{2})?\" + // Offset minute (optional)\n          \"'?\" // Trailing apostrophe (optional)\n      );\n    }\n\n    // Optional fields that don't satisfy the requirements from the regular\n    // expression (such as incorrect digit counts or numbers that are out of\n    // range) will fall back the defaults from the specification.\n    const matches = pdfDateStringRegex.exec(input);\n    if (!matches) {\n      return null;\n    }\n\n    // JavaScript's `Date` object expects the month to be between 0 and 11\n    // instead of 1 and 12, so we have to correct for that.\n    const year = parseInt(matches[1], 10);\n    let month = parseInt(matches[2], 10);\n    month = month >= 1 && month <= 12 ? month - 1 : 0;\n    let day = parseInt(matches[3], 10);\n    day = day >= 1 && day <= 31 ? day : 1;\n    let hour = parseInt(matches[4], 10);\n    hour = hour >= 0 && hour <= 23 ? hour : 0;\n    let minute = parseInt(matches[5], 10);\n    minute = minute >= 0 && minute <= 59 ? minute : 0;\n    let second = parseInt(matches[6], 10);\n    second = second >= 0 && second <= 59 ? second : 0;\n    const universalTimeRelation = matches[7] || \"Z\";\n    let offsetHour = parseInt(matches[8], 10);\n    offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n    let offsetMinute = parseInt(matches[9], 10) || 0;\n    offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n\n    // Universal time relation 'Z' means that the local time is equal to the\n    // universal time, whereas the relations '+'/'-' indicate that the local\n    // time is later respectively earlier than the universal time. Every date\n    // is normalized to universal time.\n    if (universalTimeRelation === \"-\") {\n      hour += offsetHour;\n      minute += offsetMinute;\n    } else if (universalTimeRelation === \"+\") {\n      hour -= offsetHour;\n      minute -= offsetMinute;\n    }\n\n    return new Date(Date.UTC(year, month, day, hour, minute, second));\n  }\n}\n\n/**\n * NOTE: This is (mostly) intended to support printing of XFA forms.\n */\nfunction getXfaPageViewport(xfaPage, { scale = 1, rotation = 0 }) {\n  const { width, height } = xfaPage.attributes.style;\n  const viewBox = [0, 0, parseInt(width), parseInt(height)];\n\n  return new PageViewport({\n    viewBox,\n    scale,\n    rotation,\n  });\n}\n\nfunction getRGB(color) {\n  if (color.startsWith(\"#\")) {\n    const colorRGB = parseInt(color.slice(1), 16);\n    return [\n      (colorRGB & 0xff0000) >> 16,\n      (colorRGB & 0x00ff00) >> 8,\n      colorRGB & 0x0000ff,\n    ];\n  }\n\n  if (color.startsWith(\"rgb(\")) {\n    // getComputedStyle(...).color returns a `rgb(R, G, B)` color.\n    return color\n      .slice(/* \"rgb(\".length */ 4, -1) // Strip out \"rgb(\" and \")\".\n      .split(\",\")\n      .map(x => parseInt(x));\n  }\n\n  if (color.startsWith(\"rgba(\")) {\n    return color\n      .slice(/* \"rgba(\".length */ 5, -1) // Strip out \"rgba(\" and \")\".\n      .split(\",\")\n      .map(x => parseInt(x))\n      .slice(0, 3);\n  }\n\n  warn(`Not a valid color format: \"${color}\"`);\n  return [0, 0, 0];\n}\n\nfunction getColorValues(colors) {\n  const span = document.createElement(\"span\");\n  span.style.visibility = \"hidden\";\n  document.body.append(span);\n  for (const name of colors.keys()) {\n    span.style.color = name;\n    const computedColor = window.getComputedStyle(span).color;\n    colors.set(name, getRGB(computedColor));\n  }\n  span.remove();\n}\n\nfunction getCurrentTransform(ctx) {\n  const { a, b, c, d, e, f } = ctx.getTransform();\n  return [a, b, c, d, e, f];\n}\n\nfunction getCurrentTransformInverse(ctx) {\n  const { a, b, c, d, e, f } = ctx.getTransform().invertSelf();\n  return [a, b, c, d, e, f];\n}\n\nexport {\n  AnnotationPrefix,\n  deprecated,\n  DOMCanvasFactory,\n  DOMCMapReaderFactory,\n  DOMStandardFontDataFactory,\n  DOMSVGFactory,\n  getColorValues,\n  getCurrentTransform,\n  getCurrentTransformInverse,\n  getFilenameFromUrl,\n  getPdfFilenameFromUrl,\n  getRGB,\n  getXfaPageViewport,\n  isDataScheme,\n  isPdfFile,\n  isValidFetchUrl,\n  loadScript,\n  PageViewport,\n  PDFDateString,\n  PixelsPerInch,\n  RenderingCancelledException,\n  StatTimer,\n};\n", "/* Copyright 2015 Mozilla Foundation\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\nimport { CMapCompressionType, unreachable } from \"../shared/util.js\";\n\nclass BaseCanvasFactory {\n  constructor() {\n    if (this.constructor === BaseCanvasFactory) {\n      unreachable(\"Cannot initialize BaseCanvasFactory.\");\n    }\n  }\n\n  create(width, height) {\n    if (width <= 0 || height <= 0) {\n      throw new Error(\"Invalid canvas size\");\n    }\n    const canvas = this._createCanvas(width, height);\n    return {\n      canvas,\n      context: canvas.getContext(\"2d\"),\n    };\n  }\n\n  reset(canvasAndContext, width, height) {\n    if (!canvasAndContext.canvas) {\n      throw new Error(\"Canvas is not specified\");\n    }\n    if (width <= 0 || height <= 0) {\n      throw new Error(\"Invalid canvas size\");\n    }\n    canvasAndContext.canvas.width = width;\n    canvasAndContext.canvas.height = height;\n  }\n\n  destroy(canvasAndContext) {\n    if (!canvasAndContext.canvas) {\n      throw new Error(\"Canvas is not specified\");\n    }\n    // Zeroing the width and height cause Firefox to release graphics\n    // resources immediately, which can greatly reduce memory consumption.\n    canvasAndContext.canvas.width = 0;\n    canvasAndContext.canvas.height = 0;\n    canvasAndContext.canvas = null;\n    canvasAndContext.context = null;\n  }\n\n  /**\n   * @ignore\n   */\n  _createCanvas(width, height) {\n    unreachable(\"Abstract method `_createCanvas` called.\");\n  }\n}\n\nclass BaseCMapReaderFactory {\n  constructor({ baseUrl = null, isCompressed = false }) {\n    if (this.constructor === BaseCMapReaderFactory) {\n      unreachable(\"Cannot initialize BaseCMapReaderFactory.\");\n    }\n    this.baseUrl = baseUrl;\n    this.isCompressed = isCompressed;\n  }\n\n  async fetch({ name }) {\n    if (!this.baseUrl) {\n      throw new Error(\n        'The CMap \"baseUrl\" parameter must be specified, ensure that ' +\n          'the \"cMapUrl\" and \"cMapPacked\" API parameters are provided.'\n      );\n    }\n    if (!name) {\n      throw new Error(\"CMap name must be specified.\");\n    }\n    const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n    const compressionType = this.isCompressed\n      ? CMapCompressionType.BINARY\n      : CMapCompressionType.NONE;\n\n    return this._fetchData(url, compressionType).catch(reason => {\n      throw new Error(\n        `Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`\n      );\n    });\n  }\n\n  /**\n   * @ignore\n   */\n  _fetchData(url, compressionType) {\n    unreachable(\"Abstract method `_fetchData` called.\");\n  }\n}\n\nclass BaseStandardFontDataFactory {\n  constructor({ baseUrl = null }) {\n    if (this.constructor === BaseStandardFontDataFactory) {\n      unreachable(\"Cannot initialize BaseStandardFontDataFactory.\");\n    }\n    this.baseUrl = baseUrl;\n  }\n\n  async fetch({ filename }) {\n    if (!this.baseUrl) {\n      throw new Error(\n        'The standard font \"baseUrl\" parameter must be specified, ensure that ' +\n          'the \"standardFontDataUrl\" API parameter is provided.'\n      );\n    }\n    if (!filename) {\n      throw new Error(\"Font filename must be specified.\");\n    }\n    const url = `${this.baseUrl}${filename}`;\n\n    return this._fetchData(url).catch(reason => {\n      throw new Error(`Unable to load font data at: ${url}`);\n    });\n  }\n\n  /**\n   * @ignore\n   */\n  _fetchData(url) {\n    unreachable(\"Abstract method `_fetchData` called.\");\n  }\n}\n\nclass BaseSVGFactory {\n  constructor() {\n    if (this.constructor === BaseSVGFactory) {\n      unreachable(\"Cannot initialize BaseSVGFactory.\");\n    }\n  }\n\n  create(width, height, skipDimensions = false) {\n    if (width <= 0 || height <= 0) {\n      throw new Error(\"Invalid SVG dimensions\");\n    }\n    const svg = this._createSVG(\"svg:svg\");\n    svg.setAttribute(\"version\", \"1.1\");\n\n    if (!skipDimensions) {\n      svg.setAttribute(\"width\", `${width}px`);\n      svg.setAttribute(\"height\", `${height}px`);\n    }\n\n    svg.setAttribute(\"preserveAspectRatio\", \"none\");\n    svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n\n    return svg;\n  }\n\n  createElement(type) {\n    if (typeof type !== \"string\") {\n      throw new Error(\"Invalid SVG element type\");\n    }\n    return this._createSVG(type);\n  }\n\n  /**\n   * @ignore\n   */\n  _createSVG(type) {\n    unreachable(\"Abstract method `_createSVG` called.\");\n  }\n}\n\nexport {\n  BaseCanvasFactory,\n  BaseCMapReaderFactory,\n  BaseStandardFontDataFactory,\n  BaseSVGFactory,\n};\n", "/* Copyright 2014 Opera Software ASA\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 * Based on https://code.google.com/p/smhasher/wiki/MurmurHash3.\n * Hashes roughly 100 KB per millisecond on i7 3.4 GHz.\n */\n\nimport { isArrayBuffer } from \"./util.js\";\n\nconst SEED = 0xc3d2e1f0;\n// Workaround for missing math precision in JS.\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\n\nclass MurmurHash3_64 {\n  constructor(seed) {\n    this.h1 = seed ? seed & 0xffffffff : SEED;\n    this.h2 = seed ? seed & 0xffffffff : SEED;\n  }\n\n  update(input) {\n    let data, length;\n    if (typeof input === \"string\") {\n      data = new Uint8Array(input.length * 2);\n      length = 0;\n      for (let i = 0, ii = input.length; i < ii; i++) {\n        const code = input.charCodeAt(i);\n        if (code <= 0xff) {\n          data[length++] = code;\n        } else {\n          data[length++] = code >>> 8;\n          data[length++] = code & 0xff;\n        }\n      }\n    } else if (isArrayBuffer(input)) {\n      data = input.slice();\n      length = data.byteLength;\n    } else {\n      throw new Error(\n        \"Wrong data format in MurmurHash3_64_update. \" +\n          \"Input must be a string or array.\"\n      );\n    }\n\n    const blockCounts = length >> 2;\n    const tailLength = length - blockCounts * 4;\n    // We don't care about endianness here.\n    const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n    let k1 = 0,\n      k2 = 0;\n    let h1 = this.h1,\n      h2 = this.h2;\n    const C1 = 0xcc9e2d51,\n      C2 = 0x1b873593;\n    const C1_LOW = C1 & MASK_LOW,\n      C2_LOW = C2 & MASK_LOW;\n\n    for (let i = 0; i < blockCounts; i++) {\n      if (i & 1) {\n        k1 = dataUint32[i];\n        k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n        k1 = (k1 << 15) | (k1 >>> 17);\n        k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n        h1 ^= k1;\n        h1 = (h1 << 13) | (h1 >>> 19);\n        h1 = h1 * 5 + 0xe6546b64;\n      } else {\n        k2 = dataUint32[i];\n        k2 = ((k2 * C1) & MASK_HIGH) | ((k2 * C1_LOW) & MASK_LOW);\n        k2 = (k2 << 15) | (k2 >>> 17);\n        k2 = ((k2 * C2) & MASK_HIGH) | ((k2 * C2_LOW) & MASK_LOW);\n        h2 ^= k2;\n        h2 = (h2 << 13) | (h2 >>> 19);\n        h2 = h2 * 5 + 0xe6546b64;\n      }\n    }\n\n    k1 = 0;\n\n    switch (tailLength) {\n      case 3:\n        k1 ^= data[blockCounts * 4 + 2] << 16;\n      /* falls through */\n      case 2:\n        k1 ^= data[blockCounts * 4 + 1] << 8;\n      /* falls through */\n      case 1:\n        k1 ^= data[blockCounts * 4];\n        /* falls through */\n\n        k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n        k1 = (k1 << 15) | (k1 >>> 17);\n        k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n        if (blockCounts & 1) {\n          h1 ^= k1;\n        } else {\n          h2 ^= k1;\n        }\n    }\n\n    this.h1 = h1;\n    this.h2 = h2;\n  }\n\n  hexdigest() {\n    let h1 = this.h1,\n      h2 = this.h2;\n\n    h1 ^= h2 >>> 1;\n    h1 = ((h1 * 0xed558ccd) & MASK_HIGH) | ((h1 * 0x8ccd) & MASK_LOW);\n    h2 =\n      ((h2 * 0xff51afd7) & MASK_HIGH) |\n      (((((h2 << 16) | (h1 >>> 16)) * 0xafd7ed55) & MASK_HIGH) >>> 16);\n    h1 ^= h2 >>> 1;\n    h1 = ((h1 * 0x1a85ec53) & MASK_HIGH) | ((h1 * 0xec53) & MASK_LOW);\n    h2 =\n      ((h2 * 0xc4ceb9fe) & MASK_HIGH) |\n      (((((h2 << 16) | (h1 >>> 16)) * 0xb9fe1a85) & MASK_HIGH) >>> 16);\n    h1 ^= h2 >>> 1;\n\n    const hex1 = (h1 >>> 0).toString(16),\n      hex2 = (h2 >>> 0).toString(16);\n    return hex1.padStart(8, \"0\") + hex2.padStart(8, \"0\");\n  }\n}\n\nexport { MurmurHash3_64 };\n", "/* Copyright 2012 Mozilla Foundation\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\nimport {\n  assert,\n  bytesToString,\n  FeatureTest,\n  shadow,\n  string32,\n  unreachable,\n  UNSUPPORTED_FEATURES,\n  warn,\n} from \"../shared/util.js\";\n\nclass BaseFontLoader {\n  constructor({\n    docId,\n    onUnsupportedFeature,\n    ownerDocument = globalThis.document,\n    // For testing only.\n    styleElement = null,\n  }) {\n    if (this.constructor === BaseFontLoader) {\n      unreachable(\"Cannot initialize BaseFontLoader.\");\n    }\n    this.docId = docId;\n    this._onUnsupportedFeature = onUnsupportedFeature;\n    this._document = ownerDocument;\n\n    this.nativeFontFaces = [];\n    this.styleElement =\n      typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"!PRODUCTION || TESTING\")\n        ? styleElement\n        : null;\n  }\n\n  addNativeFontFace(nativeFontFace) {\n    this.nativeFontFaces.push(nativeFontFace);\n    this._document.fonts.add(nativeFontFace);\n  }\n\n  insertRule(rule) {\n    let styleElement = this.styleElement;\n    if (!styleElement) {\n      styleElement = this.styleElement = this._document.createElement(\"style\");\n      styleElement.id = `PDFJS_FONT_STYLE_TAG_${this.docId}`;\n      this._document.documentElement\n        .getElementsByTagName(\"head\")[0]\n        .append(styleElement);\n    }\n    const styleSheet = styleElement.sheet;\n    styleSheet.insertRule(rule, styleSheet.cssRules.length);\n  }\n\n  clear() {\n    for (const nativeFontFace of this.nativeFontFaces) {\n      this._document.fonts.delete(nativeFontFace);\n    }\n    this.nativeFontFaces.length = 0;\n\n    if (this.styleElement) {\n      // Note: ChildNode.remove doesn't throw if the parentNode is undefined.\n      this.styleElement.remove();\n      this.styleElement = null;\n    }\n  }\n\n  async bind(font) {\n    // Add the font to the DOM only once; skip if the font is already loaded.\n    if (font.attached || font.missingFile) {\n      return;\n    }\n    font.attached = true;\n\n    if (this.isFontLoadingAPISupported) {\n      const nativeFontFace = font.createNativeFontFace();\n      if (nativeFontFace) {\n        this.addNativeFontFace(nativeFontFace);\n        try {\n          await nativeFontFace.loaded;\n        } catch (ex) {\n          this._onUnsupportedFeature({\n            featureId: UNSUPPORTED_FEATURES.errorFontLoadNative,\n          });\n          warn(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n\n          // When font loading failed, fall back to the built-in font renderer.\n          font.disableFontFace = true;\n          throw ex;\n        }\n      }\n      return; // The font was, asynchronously, loaded.\n    }\n\n    // !this.isFontLoadingAPISupported\n    const rule = font.createFontFaceRule();\n    if (rule) {\n      this.insertRule(rule);\n\n      if (this.isSyncFontLoadingSupported) {\n        return; // The font was, synchronously, loaded.\n      }\n      await new Promise(resolve => {\n        const request = this._queueLoadingCallback(resolve);\n        this._prepareFontLoadEvent([rule], [font], request);\n      });\n      // The font was, asynchronously, loaded.\n    }\n  }\n\n  _queueLoadingCallback(callback) {\n    unreachable(\"Abstract method `_queueLoadingCallback`.\");\n  }\n\n  get isFontLoadingAPISupported() {\n    const hasFonts = !!this._document?.fonts;\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      return shadow(\n        this,\n        \"isFontLoadingAPISupported\",\n        hasFonts && !this.styleElement\n      );\n    }\n    return shadow(this, \"isFontLoadingAPISupported\", hasFonts);\n  }\n\n  // eslint-disable-next-line getter-return\n  get isSyncFontLoadingSupported() {\n    unreachable(\"Abstract method `isSyncFontLoadingSupported`.\");\n  }\n\n  // eslint-disable-next-line getter-return\n  get _loadTestFont() {\n    unreachable(\"Abstract method `_loadTestFont`.\");\n  }\n\n  _prepareFontLoadEvent(rules, fontsToLoad, request) {\n    unreachable(\"Abstract method `_prepareFontLoadEvent`.\");\n  }\n}\n\nlet FontLoader;\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n  FontLoader = class MozcentralFontLoader extends BaseFontLoader {\n    get isSyncFontLoadingSupported() {\n      return shadow(this, \"isSyncFontLoadingSupported\", true);\n    }\n  };\n} else {\n  // PDFJSDev.test('CHROME || GENERIC')\n\n  FontLoader = class GenericFontLoader extends BaseFontLoader {\n    constructor(params) {\n      super(params);\n      this.loadingContext = {\n        requests: [],\n        nextRequestId: 0,\n      };\n      this.loadTestFontId = 0;\n    }\n\n    get isSyncFontLoadingSupported() {\n      let supported = false;\n      if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"CHROME\")) {\n        if (typeof navigator === \"undefined\") {\n          // Node.js - we can pretend that sync font loading is supported.\n          supported = true;\n        } else {\n          // User agent string sniffing is bad, but there is no reliable way to\n          // tell if the font is fully loaded and ready to be used with canvas.\n          const m = /Mozilla\\/5.0.*?rv:(\\d+).*? Gecko/.exec(\n            navigator.userAgent\n          );\n          if (m?.[1] >= 14) {\n            supported = true;\n          }\n          // TODO - other browsers...\n        }\n      }\n      return shadow(this, \"isSyncFontLoadingSupported\", supported);\n    }\n\n    _queueLoadingCallback(callback) {\n      function completeRequest() {\n        assert(!request.done, \"completeRequest() cannot be called twice.\");\n        request.done = true;\n\n        // Sending all completed requests in order of how they were queued.\n        while (context.requests.length > 0 && context.requests[0].done) {\n          const otherRequest = context.requests.shift();\n          setTimeout(otherRequest.callback, 0);\n        }\n      }\n\n      const context = this.loadingContext;\n      const request = {\n        id: `pdfjs-font-loading-${context.nextRequestId++}`,\n        done: false,\n        complete: completeRequest,\n        callback,\n      };\n      context.requests.push(request);\n      return request;\n    }\n\n    get _loadTestFont() {\n      const getLoadTestFont = function () {\n        // This is a CFF font with 1 glyph for '.' that fills its entire width\n        // and height.\n        return atob(\n          \"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" +\n            \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" +\n            \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" +\n            \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" +\n            \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" +\n            \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" +\n            \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" +\n            \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" +\n            \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" +\n            \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" +\n            \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" +\n            \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" +\n            \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n            \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n            \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n            \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n            \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n            \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" +\n            \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" +\n            \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" +\n            \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" +\n            \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\"\n        );\n      };\n      return shadow(this, \"_loadTestFont\", getLoadTestFont());\n    }\n\n    _prepareFontLoadEvent(rules, fonts, request) {\n      /** Hack begin */\n      // There's currently no event when a font has finished downloading so the\n      // following code is a dirty hack to 'guess' when a font is ready.\n      // It's assumed fonts are loaded in order, so add a known test font after\n      // the desired fonts and then test for the loading of that test font.\n\n      function int32(data, offset) {\n        return (\n          (data.charCodeAt(offset) << 24) |\n          (data.charCodeAt(offset + 1) << 16) |\n          (data.charCodeAt(offset + 2) << 8) |\n          (data.charCodeAt(offset + 3) & 0xff)\n        );\n      }\n      function spliceString(s, offset, remove, insert) {\n        const chunk1 = s.substring(0, offset);\n        const chunk2 = s.substring(offset + remove);\n        return chunk1 + insert + chunk2;\n      }\n      let i, ii;\n\n      // The temporary canvas is used to determine if fonts are loaded.\n      const canvas = this._document.createElement(\"canvas\");\n      canvas.width = 1;\n      canvas.height = 1;\n      const ctx = canvas.getContext(\"2d\");\n\n      let called = 0;\n      function isFontReady(name, callback) {\n        called++;\n        // With setTimeout clamping this gives the font ~100ms to load.\n        if (called > 30) {\n          warn(\"Load test font never loaded.\");\n          callback();\n          return;\n        }\n        ctx.font = \"30px \" + name;\n        ctx.fillText(\".\", 0, 20);\n        const imageData = ctx.getImageData(0, 0, 1, 1);\n        if (imageData.data[3] > 0) {\n          callback();\n          return;\n        }\n        setTimeout(isFontReady.bind(null, name, callback));\n      }\n\n      const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n      // Chromium seems to cache fonts based on a hash of the actual font data,\n      // so the font must be modified for each load test else it will appear to\n      // be loaded already.\n      // TODO: This could maybe be made faster by avoiding the btoa of the full\n      // font by splitting it in chunks before hand and padding the font id.\n      let data = this._loadTestFont;\n      const COMMENT_OFFSET = 976; // has to be on 4 byte boundary (for checksum)\n      data = spliceString(\n        data,\n        COMMENT_OFFSET,\n        loadTestFontId.length,\n        loadTestFontId\n      );\n      // CFF checksum is important for IE, adjusting it\n      const CFF_CHECKSUM_OFFSET = 16;\n      const XXXX_VALUE = 0x58585858; // the \"comment\" filled with 'X'\n      let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n      for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n        checksum = (checksum - XXXX_VALUE + int32(loadTestFontId, i)) | 0;\n      }\n      if (i < loadTestFontId.length) {\n        // align to 4 bytes boundary\n        checksum =\n          (checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i)) | 0;\n      }\n      data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\n\n      const url = `url(data:font/opentype;base64,${btoa(data)});`;\n      const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n      this.insertRule(rule);\n\n      const names = [];\n      for (const font of fonts) {\n        names.push(font.loadedName);\n      }\n      names.push(loadTestFontId);\n\n      const div = this._document.createElement(\"div\");\n      div.style.visibility = \"hidden\";\n      div.style.width = div.style.height = \"10px\";\n      div.style.position = \"absolute\";\n      div.style.top = div.style.left = \"0px\";\n\n      for (const name of names) {\n        const span = this._document.createElement(\"span\");\n        span.textContent = \"Hi\";\n        span.style.fontFamily = name;\n        div.append(span);\n      }\n      this._document.body.append(div);\n\n      isFontReady(loadTestFontId, () => {\n        div.remove();\n        request.complete();\n      });\n      /** Hack end */\n    }\n  };\n} // End of PDFJSDev.test('CHROME || GENERIC')\n\nclass FontFaceObject {\n  constructor(\n    translatedData,\n    {\n      isEvalSupported = true,\n      disableFontFace = false,\n      ignoreErrors = false,\n      onUnsupportedFeature,\n      fontRegistry = null,\n    }\n  ) {\n    this.compiledGlyphs = Object.create(null);\n    // importing translated data\n    for (const i in translatedData) {\n      this[i] = translatedData[i];\n    }\n    this.isEvalSupported = isEvalSupported !== false;\n    this.disableFontFace = disableFontFace === true;\n    this.ignoreErrors = ignoreErrors === true;\n    this._onUnsupportedFeature = onUnsupportedFeature;\n    this.fontRegistry = fontRegistry;\n  }\n\n  createNativeFontFace() {\n    if (!this.data || this.disableFontFace) {\n      return null;\n    }\n    let nativeFontFace;\n    if (!this.cssFontInfo) {\n      nativeFontFace = new FontFace(this.loadedName, this.data, {});\n    } else {\n      const css = {\n        weight: this.cssFontInfo.fontWeight,\n      };\n      if (this.cssFontInfo.italicAngle) {\n        css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\n      }\n      nativeFontFace = new FontFace(\n        this.cssFontInfo.fontFamily,\n        this.data,\n        css\n      );\n    }\n\n    if (this.fontRegistry) {\n      this.fontRegistry.registerFont(this);\n    }\n    return nativeFontFace;\n  }\n\n  createFontFaceRule() {\n    if (!this.data || this.disableFontFace) {\n      return null;\n    }\n    const data = bytesToString(this.data);\n    // Add the @font-face rule to the document.\n    const url = `url(data:${this.mimetype};base64,${btoa(data)});`;\n    let rule;\n    if (!this.cssFontInfo) {\n      rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n    } else {\n      let css = `font-weight: ${this.cssFontInfo.fontWeight};`;\n      if (this.cssFontInfo.italicAngle) {\n        css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;\n      }\n      rule = `@font-face {font-family:\"${this.cssFontInfo.fontFamily}\";${css}src:${url}}`;\n    }\n\n    if (this.fontRegistry) {\n      this.fontRegistry.registerFont(this, url);\n    }\n    return rule;\n  }\n\n  getPathGenerator(objs, character) {\n    if (this.compiledGlyphs[character] !== undefined) {\n      return this.compiledGlyphs[character];\n    }\n\n    let cmds;\n    try {\n      cmds = objs.get(this.loadedName + \"_path_\" + character);\n    } catch (ex) {\n      if (!this.ignoreErrors) {\n        throw ex;\n      }\n      this._onUnsupportedFeature({\n        featureId: UNSUPPORTED_FEATURES.errorFontGetPath,\n      });\n      warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n\n      return (this.compiledGlyphs[character] = function (c, size) {\n        // No-op function, to allow rendering to continue.\n      });\n    }\n\n    // If we can, compile cmds into JS for MAXIMUM SPEED...\n    if (this.isEvalSupported && FeatureTest.isEvalSupported) {\n      const jsBuf = [];\n      for (const current of cmds) {\n        const args = current.args !== undefined ? current.args.join(\",\") : \"\";\n        jsBuf.push(\"c.\", current.cmd, \"(\", args, \");\\n\");\n      }\n      // eslint-disable-next-line no-new-func\n      return (this.compiledGlyphs[character] = new Function(\n        \"c\",\n        \"size\",\n        jsBuf.join(\"\")\n      ));\n    }\n    // ... but fall back on using Function.prototype.apply() if we're\n    // blocked from using eval() for whatever reason (like CSP policies).\n    return (this.compiledGlyphs[character] = function (c, size) {\n      for (const current of cmds) {\n        if (current.cmd === \"scale\") {\n          current.args = [size, -size];\n        }\n        // eslint-disable-next-line prefer-spread\n        c[current.cmd].apply(c, current.args);\n      }\n    });\n  }\n}\n\nexport { FontFaceObject, FontLoader };\n", "/* Copyright 2012 Mozilla Foundation\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\nimport {\n  deprecated,\n  getCurrentTransform,\n  getCurrentTransformInverse,\n  getRGB,\n  PixelsPerInch,\n} from \"./display_utils.js\";\nimport {\n  FeatureTest,\n  FONT_IDENTITY_MATRIX,\n  IDENTITY_MATRIX,\n  ImageKind,\n  info,\n  OPS,\n  shadow,\n  TextRenderingMode,\n  unreachable,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  getShadingPattern,\n  PathType,\n  TilingPattern,\n} from \"./pattern_helper.js\";\nimport { applyMaskImageData } from \"../shared/image_utils.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\n\n// <canvas> contexts store most of the state we need natively.\n// However, PDF needs a bit more state, which we store here.\n// Minimal font size that would be used during canvas fillText operations.\nconst MIN_FONT_SIZE = 16;\n// Maximum font size that would be used during canvas fillText operations.\nconst MAX_FONT_SIZE = 100;\nconst MAX_GROUP_SIZE = 4096;\n\n// Defines the time the `executeOperatorList`-method is going to be executing\n// before it stops and schedules a continue of execution.\nconst EXECUTION_TIME = 15; // ms\n// Defines the number of steps before checking the execution time.\nconst EXECUTION_STEPS = 10;\n\n// To disable Type3 compilation, set the value to `-1`.\nconst MAX_SIZE_TO_COMPILE =\n  typeof PDFJSDev !== \"undefined\" &&\n  PDFJSDev.test(\"GENERIC\") &&\n  isNodeJS &&\n  typeof Path2D === \"undefined\"\n    ? -1\n    : 1000;\n\nconst FULL_CHUNK_HEIGHT = 16;\n\n/**\n * Overrides certain methods on a 2d ctx so that when they are called they\n * will also call the same method on the destCtx. The methods that are\n * overridden are all the transformation state modifiers, path creation, and\n * save/restore. We only forward these specific methods because they are the\n * only state modifiers that we cannot copy over when we switch contexts.\n *\n * To remove mirroring call `ctx._removeMirroring()`.\n *\n * @param {Object} ctx - The 2d canvas context that will duplicate its calls on\n *   the destCtx.\n * @param {Object} destCtx - The 2d canvas context that will receive the\n *   forwarded calls.\n */\nfunction mirrorContextOperations(ctx, destCtx) {\n  if (ctx._removeMirroring) {\n    throw new Error(\"Context is already forwarding operations.\");\n  }\n  ctx.__originalSave = ctx.save;\n  ctx.__originalRestore = ctx.restore;\n  ctx.__originalRotate = ctx.rotate;\n  ctx.__originalScale = ctx.scale;\n  ctx.__originalTranslate = ctx.translate;\n  ctx.__originalTransform = ctx.transform;\n  ctx.__originalSetTransform = ctx.setTransform;\n  ctx.__originalResetTransform = ctx.resetTransform;\n  ctx.__originalClip = ctx.clip;\n  ctx.__originalMoveTo = ctx.moveTo;\n  ctx.__originalLineTo = ctx.lineTo;\n  ctx.__originalBezierCurveTo = ctx.bezierCurveTo;\n  ctx.__originalRect = ctx.rect;\n  ctx.__originalClosePath = ctx.closePath;\n  ctx.__originalBeginPath = ctx.beginPath;\n\n  ctx._removeMirroring = () => {\n    ctx.save = ctx.__originalSave;\n    ctx.restore = ctx.__originalRestore;\n    ctx.rotate = ctx.__originalRotate;\n    ctx.scale = ctx.__originalScale;\n    ctx.translate = ctx.__originalTranslate;\n    ctx.transform = ctx.__originalTransform;\n    ctx.setTransform = ctx.__originalSetTransform;\n    ctx.resetTransform = ctx.__originalResetTransform;\n\n    ctx.clip = ctx.__originalClip;\n    ctx.moveTo = ctx.__originalMoveTo;\n    ctx.lineTo = ctx.__originalLineTo;\n    ctx.bezierCurveTo = ctx.__originalBezierCurveTo;\n    ctx.rect = ctx.__originalRect;\n    ctx.closePath = ctx.__originalClosePath;\n    ctx.beginPath = ctx.__originalBeginPath;\n    delete ctx._removeMirroring;\n  };\n\n  ctx.save = function ctxSave() {\n    destCtx.save();\n    this.__originalSave();\n  };\n\n  ctx.restore = function ctxRestore() {\n    destCtx.restore();\n    this.__originalRestore();\n  };\n\n  ctx.translate = function ctxTranslate(x, y) {\n    destCtx.translate(x, y);\n    this.__originalTranslate(x, y);\n  };\n\n  ctx.scale = function ctxScale(x, y) {\n    destCtx.scale(x, y);\n    this.__originalScale(x, y);\n  };\n\n  ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n    destCtx.transform(a, b, c, d, e, f);\n    this.__originalTransform(a, b, c, d, e, f);\n  };\n\n  ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n    destCtx.setTransform(a, b, c, d, e, f);\n    this.__originalSetTransform(a, b, c, d, e, f);\n  };\n\n  ctx.resetTransform = function ctxResetTransform() {\n    destCtx.resetTransform();\n    this.__originalResetTransform();\n  };\n\n  ctx.rotate = function ctxRotate(angle) {\n    destCtx.rotate(angle);\n    this.__originalRotate(angle);\n  };\n\n  ctx.clip = function ctxRotate(rule) {\n    destCtx.clip(rule);\n    this.__originalClip(rule);\n  };\n\n  ctx.moveTo = function (x, y) {\n    destCtx.moveTo(x, y);\n    this.__originalMoveTo(x, y);\n  };\n\n  ctx.lineTo = function (x, y) {\n    destCtx.lineTo(x, y);\n    this.__originalLineTo(x, y);\n  };\n\n  ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {\n    destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n    this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n  };\n\n  ctx.rect = function (x, y, width, height) {\n    destCtx.rect(x, y, width, height);\n    this.__originalRect(x, y, width, height);\n  };\n\n  ctx.closePath = function () {\n    destCtx.closePath();\n    this.__originalClosePath();\n  };\n\n  ctx.beginPath = function () {\n    destCtx.beginPath();\n    this.__originalBeginPath();\n  };\n}\n\nclass CachedCanvases {\n  constructor(canvasFactory) {\n    this.canvasFactory = canvasFactory;\n    this.cache = Object.create(null);\n  }\n\n  getCanvas(id, width, height) {\n    let canvasEntry;\n    if (this.cache[id] !== undefined) {\n      canvasEntry = this.cache[id];\n      this.canvasFactory.reset(canvasEntry, width, height);\n    } else {\n      canvasEntry = this.canvasFactory.create(width, height);\n      this.cache[id] = canvasEntry;\n    }\n    return canvasEntry;\n  }\n\n  delete(id) {\n    delete this.cache[id];\n  }\n\n  clear() {\n    for (const id in this.cache) {\n      const canvasEntry = this.cache[id];\n      this.canvasFactory.destroy(canvasEntry);\n      delete this.cache[id];\n    }\n  }\n}\n\nfunction drawImageAtIntegerCoords(\n  ctx,\n  srcImg,\n  srcX,\n  srcY,\n  srcW,\n  srcH,\n  destX,\n  destY,\n  destW,\n  destH\n) {\n  const [a, b, c, d, tx, ty] = getCurrentTransform(ctx);\n  if (b === 0 && c === 0) {\n    // top-left corner is at (X, Y) and\n    // bottom-right one is at (X + width, Y + height).\n\n    // If leftX is 4.321 then it's rounded to 4.\n    // If width is 10.432 then it's rounded to 11 because\n    // rightX = leftX + width = 14.753 which is rounded to 15\n    // so after rounding the total width is 11 (15 - 4).\n    // It's why we can't just floor/ceil uniformly, it just depends\n    // on the values we've.\n\n    const tlX = destX * a + tx;\n    const rTlX = Math.round(tlX);\n    const tlY = destY * d + ty;\n    const rTlY = Math.round(tlY);\n    const brX = (destX + destW) * a + tx;\n\n    // Some pdf contains images with 1x1 images so in case of 0-width after\n    // scaling we must fallback on 1 to be sure there is something.\n    const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n    const brY = (destY + destH) * d + ty;\n    const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n\n    // We must apply a transformation in order to apply it on the image itself.\n    // For example if a == 1 && d == -1, it means that the image itself is\n    // mirrored w.r.t. the x-axis.\n    ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY);\n    ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight);\n    ctx.setTransform(a, b, c, d, tx, ty);\n\n    return [rWidth, rHeight];\n  }\n\n  if (a === 0 && d === 0) {\n    // This path is taken in issue9462.pdf (page 3).\n    const tlX = destY * c + tx;\n    const rTlX = Math.round(tlX);\n    const tlY = destX * b + ty;\n    const rTlY = Math.round(tlY);\n    const brX = (destY + destH) * c + tx;\n    const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n    const brY = (destX + destW) * b + ty;\n    const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n\n    ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY);\n    ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth);\n    ctx.setTransform(a, b, c, d, tx, ty);\n\n    return [rHeight, rWidth];\n  }\n\n  // Not a scale matrix so let the render handle the case without rounding.\n  ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);\n\n  const scaleX = Math.hypot(a, b);\n  const scaleY = Math.hypot(c, d);\n  return [scaleX * destW, scaleY * destH];\n}\n\nfunction compileType3Glyph(imgData) {\n  const { width, height } = imgData;\n  if (width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) {\n    return null;\n  }\n\n  const POINT_TO_PROCESS_LIMIT = 1000;\n  const POINT_TYPES = new Uint8Array([\n    0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0,\n  ]);\n\n  const width1 = width + 1;\n  let points = new Uint8Array(width1 * (height + 1));\n  let i, j, j0;\n\n  // decodes bit-packed mask data\n  const lineSize = (width + 7) & ~7;\n  let data = new Uint8Array(lineSize * height),\n    pos = 0;\n  for (const elem of imgData.data) {\n    let mask = 128;\n    while (mask > 0) {\n      data[pos++] = elem & mask ? 0 : 255;\n      mask >>= 1;\n    }\n  }\n\n  // finding interesting points: every point is located between mask pixels,\n  // so there will be points of the (width + 1)x(height + 1) grid. Every point\n  // will have flags assigned based on neighboring mask pixels:\n  //   4 | 8\n  //   --P--\n  //   2 | 1\n  // We are interested only in points with the flags:\n  //   - outside corners: 1, 2, 4, 8;\n  //   - inside corners: 7, 11, 13, 14;\n  //   - and, intersections: 5, 10.\n  let count = 0;\n  pos = 0;\n  if (data[pos] !== 0) {\n    points[0] = 1;\n    ++count;\n  }\n  for (j = 1; j < width; j++) {\n    if (data[pos] !== data[pos + 1]) {\n      points[j] = data[pos] ? 2 : 1;\n      ++count;\n    }\n    pos++;\n  }\n  if (data[pos] !== 0) {\n    points[j] = 2;\n    ++count;\n  }\n  for (i = 1; i < height; i++) {\n    pos = i * lineSize;\n    j0 = i * width1;\n    if (data[pos - lineSize] !== data[pos]) {\n      points[j0] = data[pos] ? 1 : 8;\n      ++count;\n    }\n    // 'sum' is the position of the current pixel configuration in the 'TYPES'\n    // array (in order 8-1-2-4, so we can use '>>2' to shift the column).\n    let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n    for (j = 1; j < width; j++) {\n      sum =\n        (sum >> 2) +\n        (data[pos + 1] ? 4 : 0) +\n        (data[pos - lineSize + 1] ? 8 : 0);\n      if (POINT_TYPES[sum]) {\n        points[j0 + j] = POINT_TYPES[sum];\n        ++count;\n      }\n      pos++;\n    }\n    if (data[pos - lineSize] !== data[pos]) {\n      points[j0 + j] = data[pos] ? 2 : 4;\n      ++count;\n    }\n\n    if (count > POINT_TO_PROCESS_LIMIT) {\n      return null;\n    }\n  }\n\n  pos = lineSize * (height - 1);\n  j0 = i * width1;\n  if (data[pos] !== 0) {\n    points[j0] = 8;\n    ++count;\n  }\n  for (j = 1; j < width; j++) {\n    if (data[pos] !== data[pos + 1]) {\n      points[j0 + j] = data[pos] ? 4 : 8;\n      ++count;\n    }\n    pos++;\n  }\n  if (data[pos] !== 0) {\n    points[j0 + j] = 4;\n    ++count;\n  }\n  if (count > POINT_TO_PROCESS_LIMIT) {\n    return null;\n  }\n\n  // building outlines\n  const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n  const path = new Path2D();\n\n  for (i = 0; count && i <= height; i++) {\n    let p = i * width1;\n    const end = p + width;\n    while (p < end && !points[p]) {\n      p++;\n    }\n    if (p === end) {\n      continue;\n    }\n    path.moveTo(p % width1, i);\n\n    const p0 = p;\n    let type = points[p];\n    do {\n      const step = steps[type];\n      do {\n        p += step;\n      } while (!points[p]);\n\n      const pp = points[p];\n      if (pp !== 5 && pp !== 10) {\n        // set new direction\n        type = pp;\n        // delete mark\n        points[p] = 0;\n      } else {\n        // type is 5 or 10, ie, a crossing\n        // set new direction\n        type = pp & ((0x33 * type) >> 4);\n        // set new type for \"future hit\"\n        points[p] &= (type >> 2) | (type << 2);\n      }\n      path.lineTo(p % width1, (p / width1) | 0);\n\n      if (!points[p]) {\n        --count;\n      }\n    } while (p0 !== p);\n    --i;\n  }\n\n  // Immediately release the, potentially large, `Uint8Array`s after parsing.\n  data = null;\n  points = null;\n\n  const drawOutline = function (c) {\n    c.save();\n    // the path shall be painted in [0..1]x[0..1] space\n    c.scale(1 / width, -1 / height);\n    c.translate(0, -height);\n    c.fill(path);\n    c.beginPath();\n    c.restore();\n  };\n\n  return drawOutline;\n}\n\nclass CanvasExtraState {\n  constructor(width, height) {\n    // Are soft masks and alpha values shapes or opacities?\n    this.alphaIsShape = false;\n    this.fontSize = 0;\n    this.fontSizeScale = 1;\n    this.textMatrix = IDENTITY_MATRIX;\n    this.textMatrixScale = 1;\n    this.fontMatrix = FONT_IDENTITY_MATRIX;\n    this.leading = 0;\n    // Current point (in user coordinates)\n    this.x = 0;\n    this.y = 0;\n    // Start of text line (in text coordinates)\n    this.lineX = 0;\n    this.lineY = 0;\n    // Character and word spacing\n    this.charSpacing = 0;\n    this.wordSpacing = 0;\n    this.textHScale = 1;\n    this.textRenderingMode = TextRenderingMode.FILL;\n    this.textRise = 0;\n    // Default fore and background colors\n    this.fillColor = \"#000000\";\n    this.strokeColor = \"#000000\";\n    this.patternFill = false;\n    // Note: fill alpha applies to all non-stroking operations\n    this.fillAlpha = 1;\n    this.strokeAlpha = 1;\n    this.lineWidth = 1;\n    this.activeSMask = null;\n    this.transferMaps = null;\n\n    this.startNewPathAndClipBox([0, 0, width, height]);\n  }\n\n  clone() {\n    const clone = Object.create(this);\n    clone.clipBox = this.clipBox.slice();\n    return clone;\n  }\n\n  setCurrentPoint(x, y) {\n    this.x = x;\n    this.y = y;\n  }\n\n  updatePathMinMax(transform, x, y) {\n    [x, y] = Util.applyTransform([x, y], transform);\n    this.minX = Math.min(this.minX, x);\n    this.minY = Math.min(this.minY, y);\n    this.maxX = Math.max(this.maxX, x);\n    this.maxY = Math.max(this.maxY, y);\n  }\n\n  updateRectMinMax(transform, rect) {\n    const p1 = Util.applyTransform(rect, transform);\n    const p2 = Util.applyTransform(rect.slice(2), transform);\n    this.minX = Math.min(this.minX, p1[0], p2[0]);\n    this.minY = Math.min(this.minY, p1[1], p2[1]);\n    this.maxX = Math.max(this.maxX, p1[0], p2[0]);\n    this.maxY = Math.max(this.maxY, p1[1], p2[1]);\n  }\n\n  updateScalingPathMinMax(transform, minMax) {\n    Util.scaleMinMax(transform, minMax);\n    this.minX = Math.min(this.minX, minMax[0]);\n    this.maxX = Math.max(this.maxX, minMax[1]);\n    this.minY = Math.min(this.minY, minMax[2]);\n    this.maxY = Math.max(this.maxY, minMax[3]);\n  }\n\n  updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n    const box = Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3);\n    if (minMax) {\n      minMax[0] = Math.min(minMax[0], box[0], box[2]);\n      minMax[1] = Math.max(minMax[1], box[0], box[2]);\n      minMax[2] = Math.min(minMax[2], box[1], box[3]);\n      minMax[3] = Math.max(minMax[3], box[1], box[3]);\n      return;\n    }\n    this.updateRectMinMax(transform, box);\n  }\n\n  getPathBoundingBox(pathType = PathType.FILL, transform = null) {\n    const box = [this.minX, this.minY, this.maxX, this.maxY];\n    if (pathType === PathType.STROKE) {\n      if (!transform) {\n        unreachable(\"Stroke bounding box must include transform.\");\n      }\n      // Stroked paths can be outside of the path bounding box by 1/2 the line\n      // width.\n      const scale = Util.singularValueDecompose2dScale(transform);\n      const xStrokePad = (scale[0] * this.lineWidth) / 2;\n      const yStrokePad = (scale[1] * this.lineWidth) / 2;\n      box[0] -= xStrokePad;\n      box[1] -= yStrokePad;\n      box[2] += xStrokePad;\n      box[3] += yStrokePad;\n    }\n    return box;\n  }\n\n  updateClipFromPath() {\n    const intersect = Util.intersect(this.clipBox, this.getPathBoundingBox());\n    this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n  }\n\n  isEmptyClip() {\n    return this.minX === Infinity;\n  }\n\n  startNewPathAndClipBox(box) {\n    this.clipBox = box;\n    this.minX = Infinity;\n    this.minY = Infinity;\n    this.maxX = 0;\n    this.maxY = 0;\n  }\n\n  getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\n    return Util.intersect(\n      this.clipBox,\n      this.getPathBoundingBox(pathType, transform)\n    );\n  }\n}\n\nfunction putBinaryImageData(ctx, imgData, transferMaps = null) {\n  if (typeof ImageData !== \"undefined\" && imgData instanceof ImageData) {\n    ctx.putImageData(imgData, 0, 0);\n    return;\n  }\n\n  // Put the image data to the canvas in chunks, rather than putting the\n  // whole image at once.  This saves JS memory, because the ImageData object\n  // is smaller. It also possibly saves C++ memory within the implementation\n  // of putImageData(). (E.g. in Firefox we make two short-lived copies of\n  // the data passed to putImageData()). |n| shouldn't be too small, however,\n  // because too many putImageData() calls will slow things down.\n  //\n  // Note: as written, if the last chunk is partial, the putImageData() call\n  // will (conceptually) put pixels past the bounds of the canvas.  But\n  // that's ok; any such pixels are ignored.\n\n  const height = imgData.height,\n    width = imgData.width;\n  const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n  const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n  const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n\n  const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n  let srcPos = 0,\n    destPos;\n  const src = imgData.data;\n  const dest = chunkImgData.data;\n  let i, j, thisChunkHeight, elemsInThisChunk;\n\n  let transferMapRed, transferMapGreen, transferMapBlue, transferMapGray;\n  if (transferMaps) {\n    switch (transferMaps.length) {\n      case 1:\n        transferMapRed = transferMaps[0];\n        transferMapGreen = transferMaps[0];\n        transferMapBlue = transferMaps[0];\n        transferMapGray = transferMaps[0];\n        break;\n      case 4:\n        transferMapRed = transferMaps[0];\n        transferMapGreen = transferMaps[1];\n        transferMapBlue = transferMaps[2];\n        transferMapGray = transferMaps[3];\n        break;\n    }\n  }\n\n  // There are multiple forms in which the pixel data can be passed, and\n  // imgData.kind tells us which one this is.\n  if (imgData.kind === ImageKind.GRAYSCALE_1BPP) {\n    // Grayscale, 1 bit per pixel (i.e. black-and-white).\n    const srcLength = src.byteLength;\n    const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n    const dest32DataLength = dest32.length;\n    const fullSrcDiff = (width + 7) >> 3;\n    let white = 0xffffffff;\n    let black = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n\n    if (transferMapGray) {\n      if (transferMapGray[0] === 0xff && transferMapGray[0xff] === 0) {\n        [white, black] = [black, white];\n      }\n    }\n\n    for (i = 0; i < totalChunks; i++) {\n      thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n      destPos = 0;\n      for (j = 0; j < thisChunkHeight; j++) {\n        const srcDiff = srcLength - srcPos;\n        let k = 0;\n        const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n        const kEndUnrolled = kEnd & ~7;\n        let mask = 0;\n        let srcByte = 0;\n        for (; k < kEndUnrolled; k += 8) {\n          srcByte = src[srcPos++];\n          dest32[destPos++] = srcByte & 128 ? white : black;\n          dest32[destPos++] = srcByte & 64 ? white : black;\n          dest32[destPos++] = srcByte & 32 ? white : black;\n          dest32[destPos++] = srcByte & 16 ? white : black;\n          dest32[destPos++] = srcByte & 8 ? white : black;\n          dest32[destPos++] = srcByte & 4 ? white : black;\n          dest32[destPos++] = srcByte & 2 ? white : black;\n          dest32[destPos++] = srcByte & 1 ? white : black;\n        }\n        for (; k < kEnd; k++) {\n          if (mask === 0) {\n            srcByte = src[srcPos++];\n            mask = 128;\n          }\n\n          dest32[destPos++] = srcByte & mask ? white : black;\n          mask >>= 1;\n        }\n      }\n      // We ran out of input. Make all remaining pixels transparent.\n      while (destPos < dest32DataLength) {\n        dest32[destPos++] = 0;\n      }\n\n      ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n    }\n  } else if (imgData.kind === ImageKind.RGBA_32BPP) {\n    // RGBA, 32-bits per pixel.\n    const hasTransferMaps = !!(\n      transferMapRed ||\n      transferMapGreen ||\n      transferMapBlue\n    );\n\n    j = 0;\n    elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n    for (i = 0; i < fullChunks; i++) {\n      dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n      srcPos += elemsInThisChunk;\n\n      if (hasTransferMaps) {\n        for (let k = 0; k < elemsInThisChunk; k += 4) {\n          if (transferMapRed) {\n            dest[k + 0] = transferMapRed[dest[k + 0]];\n          }\n          if (transferMapGreen) {\n            dest[k + 1] = transferMapGreen[dest[k + 1]];\n          }\n          if (transferMapBlue) {\n            dest[k + 2] = transferMapBlue[dest[k + 2]];\n          }\n        }\n      }\n\n      ctx.putImageData(chunkImgData, 0, j);\n      j += FULL_CHUNK_HEIGHT;\n    }\n    if (i < totalChunks) {\n      elemsInThisChunk = width * partialChunkHeight * 4;\n      dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n\n      if (hasTransferMaps) {\n        for (let k = 0; k < elemsInThisChunk; k += 4) {\n          if (transferMapRed) {\n            dest[k + 0] = transferMapRed[dest[k + 0]];\n          }\n          if (transferMapGreen) {\n            dest[k + 1] = transferMapGreen[dest[k + 1]];\n          }\n          if (transferMapBlue) {\n            dest[k + 2] = transferMapBlue[dest[k + 2]];\n          }\n        }\n      }\n\n      ctx.putImageData(chunkImgData, 0, j);\n    }\n  } else if (imgData.kind === ImageKind.RGB_24BPP) {\n    // RGB, 24-bits per pixel.\n    const hasTransferMaps = !!(\n      transferMapRed ||\n      transferMapGreen ||\n      transferMapBlue\n    );\n\n    thisChunkHeight = FULL_CHUNK_HEIGHT;\n    elemsInThisChunk = width * thisChunkHeight;\n    for (i = 0; i < totalChunks; i++) {\n      if (i >= fullChunks) {\n        thisChunkHeight = partialChunkHeight;\n        elemsInThisChunk = width * thisChunkHeight;\n      }\n\n      destPos = 0;\n      for (j = elemsInThisChunk; j--; ) {\n        dest[destPos++] = src[srcPos++];\n        dest[destPos++] = src[srcPos++];\n        dest[destPos++] = src[srcPos++];\n        dest[destPos++] = 255;\n      }\n\n      if (hasTransferMaps) {\n        for (let k = 0; k < destPos; k += 4) {\n          if (transferMapRed) {\n            dest[k + 0] = transferMapRed[dest[k + 0]];\n          }\n          if (transferMapGreen) {\n            dest[k + 1] = transferMapGreen[dest[k + 1]];\n          }\n          if (transferMapBlue) {\n            dest[k + 2] = transferMapBlue[dest[k + 2]];\n          }\n        }\n      }\n\n      ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n    }\n  } else {\n    throw new Error(`bad image kind: ${imgData.kind}`);\n  }\n}\n\nfunction putBinaryImageMask(ctx, imgData) {\n  if (imgData.bitmap) {\n    // The bitmap has been created in the worker.\n    ctx.drawImage(imgData.bitmap, 0, 0);\n    return;\n  }\n\n  // Slow path: OffscreenCanvas isn't available in the worker.\n  const height = imgData.height,\n    width = imgData.width;\n  const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n  const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n  const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n\n  const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n  let srcPos = 0;\n  const src = imgData.data;\n  const dest = chunkImgData.data;\n\n  for (let i = 0; i < totalChunks; i++) {\n    const thisChunkHeight =\n      i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n\n    // Expand the mask so it can be used by the canvas.  Any required\n    // inversion has already been handled.\n\n    ({ srcPos } = applyMaskImageData({\n      src,\n      srcPos,\n      dest,\n      width,\n      height: thisChunkHeight,\n    }));\n\n    ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n  }\n}\n\nfunction copyCtxState(sourceCtx, destCtx) {\n  const properties = [\n    \"strokeStyle\",\n    \"fillStyle\",\n    \"fillRule\",\n    \"globalAlpha\",\n    \"lineWidth\",\n    \"lineCap\",\n    \"lineJoin\",\n    \"miterLimit\",\n    \"globalCompositeOperation\",\n    \"font\",\n  ];\n  for (let i = 0, ii = properties.length; i < ii; i++) {\n    const property = properties[i];\n    if (sourceCtx[property] !== undefined) {\n      destCtx[property] = sourceCtx[property];\n    }\n  }\n  if (sourceCtx.setLineDash !== undefined) {\n    destCtx.setLineDash(sourceCtx.getLineDash());\n    destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n  }\n}\n\nfunction resetCtxToDefault(ctx, foregroundColor) {\n  ctx.strokeStyle = ctx.fillStyle = foregroundColor || \"#000000\";\n  ctx.fillRule = \"nonzero\";\n  ctx.globalAlpha = 1;\n  ctx.lineWidth = 1;\n  ctx.lineCap = \"butt\";\n  ctx.lineJoin = \"miter\";\n  ctx.miterLimit = 10;\n  ctx.globalCompositeOperation = \"source-over\";\n  ctx.font = \"10px sans-serif\";\n  if (ctx.setLineDash !== undefined) {\n    ctx.setLineDash([]);\n    ctx.lineDashOffset = 0;\n  }\n}\n\nfunction composeSMaskBackdrop(bytes, r0, g0, b0) {\n  const length = bytes.length;\n  for (let i = 3; i < length; i += 4) {\n    const alpha = bytes[i];\n    if (alpha === 0) {\n      bytes[i - 3] = r0;\n      bytes[i - 2] = g0;\n      bytes[i - 1] = b0;\n    } else if (alpha < 255) {\n      const alpha_ = 255 - alpha;\n      bytes[i - 3] = (bytes[i - 3] * alpha + r0 * alpha_) >> 8;\n      bytes[i - 2] = (bytes[i - 2] * alpha + g0 * alpha_) >> 8;\n      bytes[i - 1] = (bytes[i - 1] * alpha + b0 * alpha_) >> 8;\n    }\n  }\n}\n\nfunction composeSMaskAlpha(maskData, layerData, transferMap) {\n  const length = maskData.length;\n  const scale = 1 / 255;\n  for (let i = 3; i < length; i += 4) {\n    const alpha = transferMap ? transferMap[maskData[i]] : maskData[i];\n    layerData[i] = (layerData[i] * alpha * scale) | 0;\n  }\n}\n\nfunction composeSMaskLuminosity(maskData, layerData, transferMap) {\n  const length = maskData.length;\n  for (let i = 3; i < length; i += 4) {\n    const y =\n      maskData[i - 3] * 77 + // * 0.3 / 255 * 0x10000\n      maskData[i - 2] * 152 + // * 0.59 ....\n      maskData[i - 1] * 28; // * 0.11 ....\n    layerData[i] = transferMap\n      ? (layerData[i] * transferMap[y >> 8]) >> 8\n      : (layerData[i] * y) >> 16;\n  }\n}\n\nfunction genericComposeSMask(\n  maskCtx,\n  layerCtx,\n  width,\n  height,\n  subtype,\n  backdrop,\n  transferMap,\n  layerOffsetX,\n  layerOffsetY,\n  maskOffsetX,\n  maskOffsetY\n) {\n  const hasBackdrop = !!backdrop;\n  const r0 = hasBackdrop ? backdrop[0] : 0;\n  const g0 = hasBackdrop ? backdrop[1] : 0;\n  const b0 = hasBackdrop ? backdrop[2] : 0;\n\n  let composeFn;\n  if (subtype === \"Luminosity\") {\n    composeFn = composeSMaskLuminosity;\n  } else {\n    composeFn = composeSMaskAlpha;\n  }\n\n  // processing image in chunks to save memory\n  const PIXELS_TO_PROCESS = 1048576;\n  const chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));\n  for (let row = 0; row < height; row += chunkSize) {\n    const chunkHeight = Math.min(chunkSize, height - row);\n    const maskData = maskCtx.getImageData(\n      layerOffsetX - maskOffsetX,\n      row + (layerOffsetY - maskOffsetY),\n      width,\n      chunkHeight\n    );\n    const layerData = layerCtx.getImageData(\n      layerOffsetX,\n      row + layerOffsetY,\n      width,\n      chunkHeight\n    );\n\n    if (hasBackdrop) {\n      composeSMaskBackdrop(maskData.data, r0, g0, b0);\n    }\n    composeFn(maskData.data, layerData.data, transferMap);\n\n    layerCtx.putImageData(layerData, layerOffsetX, row + layerOffsetY);\n  }\n}\n\nfunction composeSMask(ctx, smask, layerCtx, layerBox) {\n  const layerOffsetX = layerBox[0];\n  const layerOffsetY = layerBox[1];\n  const layerWidth = layerBox[2] - layerOffsetX;\n  const layerHeight = layerBox[3] - layerOffsetY;\n  if (layerWidth === 0 || layerHeight === 0) {\n    return;\n  }\n  genericComposeSMask(\n    smask.context,\n    layerCtx,\n    layerWidth,\n    layerHeight,\n    smask.subtype,\n    smask.backdrop,\n    smask.transferMap,\n    layerOffsetX,\n    layerOffsetY,\n    smask.offsetX,\n    smask.offsetY\n  );\n  ctx.save();\n  ctx.globalAlpha = 1;\n  ctx.globalCompositeOperation = \"source-over\";\n  ctx.setTransform(1, 0, 0, 1, 0, 0);\n  ctx.drawImage(layerCtx.canvas, 0, 0);\n  ctx.restore();\n}\n\nfunction getImageSmoothingEnabled(transform, interpolate) {\n  const scale = Util.singularValueDecompose2dScale(transform);\n  // Round to a 32bit float so that `<=` check below will pass for numbers that\n  // are very close, but not exactly the same 64bit floats.\n  scale[0] = Math.fround(scale[0]);\n  scale[1] = Math.fround(scale[1]);\n  const actualScale = Math.fround(\n    (globalThis.devicePixelRatio || 1) * PixelsPerInch.PDF_TO_CSS_UNITS\n  );\n  if (interpolate !== undefined) {\n    // If the value is explicitly set use it.\n    return interpolate;\n  } else if (scale[0] <= actualScale || scale[1] <= actualScale) {\n    // Smooth when downscaling.\n    return true;\n  }\n  // Don't smooth when upscaling.\n  return false;\n}\n\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\n\nclass CanvasGraphics {\n  constructor(\n    canvasCtx,\n    commonObjs,\n    objs,\n    canvasFactory,\n    imageLayer,\n    optionalContentConfig,\n    annotationCanvasMap,\n    pageColors\n  ) {\n    this.ctx = canvasCtx;\n    this.current = new CanvasExtraState(\n      this.ctx.canvas.width,\n      this.ctx.canvas.height\n    );\n    this.stateStack = [];\n    this.pendingClip = null;\n    this.pendingEOFill = false;\n    this.res = null;\n    this.xobjs = null;\n    this.commonObjs = commonObjs;\n    this.objs = objs;\n    this.canvasFactory = canvasFactory;\n    this.imageLayer = imageLayer;\n    this.groupStack = [];\n    this.processingType3 = null;\n    // Patterns are painted relative to the initial page/form transform, see\n    // PDF spec 8.7.2 NOTE 1.\n    this.baseTransform = null;\n    this.baseTransformStack = [];\n    this.groupLevel = 0;\n    this.smaskStack = [];\n    this.smaskCounter = 0;\n    this.tempSMask = null;\n    this.suspendedCtx = null;\n    this.contentVisible = true;\n    this.markedContentStack = [];\n    this.optionalContentConfig = optionalContentConfig;\n    this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n    this.cachedPatterns = new Map();\n    this.annotationCanvasMap = annotationCanvasMap;\n    this.viewportScale = 1;\n    this.outputScaleX = 1;\n    this.outputScaleY = 1;\n    this.backgroundColor = pageColors?.background || null;\n    this.foregroundColor = pageColors?.foreground || null;\n\n    this._cachedScaleForStroking = null;\n    this._cachedGetSinglePixelWidth = null;\n    this._cachedBitmapsMap = new Map();\n  }\n\n  getObject(data, fallback = null) {\n    if (typeof data === \"string\") {\n      return data.startsWith(\"g_\")\n        ? this.commonObjs.get(data)\n        : this.objs.get(data);\n    }\n    return fallback;\n  }\n\n  beginDrawing({\n    transform,\n    viewport,\n    transparency = false,\n    background = null,\n  }) {\n    // For pdfs that use blend modes we have to clear the canvas else certain\n    // blend modes can look wrong since we'd be blending with a white\n    // backdrop. The problem with a transparent backdrop though is we then\n    // don't get sub pixel anti aliasing on text, creating temporary\n    // transparent canvas when we have blend modes.\n    const width = this.ctx.canvas.width;\n    const height = this.ctx.canvas.height;\n    const defaultBackgroundColor = background || \"#ffffff\";\n    this.ctx.save();\n\n    if (this.foregroundColor && this.backgroundColor) {\n      // Get the #RRGGBB value of the color. If it's a name (e.g. CanvasText)\n      // then it'll be converted to its rgb value.\n      this.ctx.fillStyle = this.foregroundColor;\n      const fg = (this.foregroundColor = this.ctx.fillStyle);\n      this.ctx.fillStyle = this.backgroundColor;\n      const bg = (this.backgroundColor = this.ctx.fillStyle);\n      let isValidDefaultBg = true;\n      let defaultBg = defaultBackgroundColor;\n\n      if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n        this.ctx.fillStyle = defaultBackgroundColor;\n        defaultBg = this.ctx.fillStyle;\n        isValidDefaultBg =\n          typeof defaultBg === \"string\" && /^#[0-9A-Fa-f]{6}$/.test(defaultBg);\n      }\n\n      if (\n        (fg === \"#000000\" && bg === \"#ffffff\") ||\n        fg === bg ||\n        !isValidDefaultBg\n      ) {\n        // Ignore the `pageColors`-option when:\n        //  - The computed background/foreground colors have their default\n        //    values, i.e. white/black.\n        //  - The computed background/foreground colors are identical,\n        //    since that'd render the `canvas` mostly blank.\n        //  - The `background`-option has a value that's incompatible with\n        //    the `pageColors`-values.\n        //\n        this.foregroundColor = this.backgroundColor = null;\n      } else {\n        // https://developer.mozilla.org/en-US/docs/Web/Accessibility/Understanding_Colors_and_Luminance\n        //\n        // Relative luminance:\n        // https://www.w3.org/TR/WCAG20/#relativeluminancedef\n        //\n        // We compute the rounded luminance of the default background color.\n        // Then for every color in the pdf, if its rounded luminance is the\n        // same as the background one then it's replaced by the new\n        // background color else by the foreground one.\n        const [rB, gB, bB] = getRGB(defaultBg);\n        const newComp = x => {\n          x /= 255;\n          return x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n        };\n        const lumB = Math.round(\n          0.2126 * newComp(rB) + 0.7152 * newComp(gB) + 0.0722 * newComp(bB)\n        );\n        this.selectColor = (r, g, b) => {\n          const lumC =\n            0.2126 * newComp(r) + 0.7152 * newComp(g) + 0.0722 * newComp(b);\n          return Math.round(lumC) === lumB ? bg : fg;\n        };\n      }\n    }\n\n    this.ctx.fillStyle = this.backgroundColor || defaultBackgroundColor;\n    this.ctx.fillRect(0, 0, width, height);\n    this.ctx.restore();\n\n    if (transparency) {\n      const transparentCanvas = this.cachedCanvases.getCanvas(\n        \"transparent\",\n        width,\n        height\n      );\n      this.compositeCtx = this.ctx;\n      this.transparentCanvas = transparentCanvas.canvas;\n      this.ctx = transparentCanvas.context;\n      this.ctx.save();\n      // The transform can be applied before rendering, transferring it to\n      // the new canvas.\n      this.ctx.transform(...getCurrentTransform(this.compositeCtx));\n    }\n\n    this.ctx.save();\n    resetCtxToDefault(this.ctx, this.foregroundColor);\n    if (transform) {\n      this.ctx.transform(...transform);\n      this.outputScaleX = transform[0];\n      this.outputScaleY = transform[0];\n    }\n    this.ctx.transform(...viewport.transform);\n    this.viewportScale = viewport.scale;\n\n    this.baseTransform = getCurrentTransform(this.ctx);\n\n    if (this.imageLayer) {\n      deprecated(\n        \"The `imageLayer` functionality will be removed in the future.\"\n      );\n      this.imageLayer.beginLayout();\n    }\n  }\n\n  executeOperatorList(\n    operatorList,\n    executionStartIdx,\n    continueCallback,\n    stepper\n  ) {\n    const argsArray = operatorList.argsArray;\n    const fnArray = operatorList.fnArray;\n    let i = executionStartIdx || 0;\n    const argsArrayLen = argsArray.length;\n\n    // Sometimes the OperatorList to execute is empty.\n    if (argsArrayLen === i) {\n      return i;\n    }\n\n    const chunkOperations =\n      argsArrayLen - i > EXECUTION_STEPS &&\n      typeof continueCallback === \"function\";\n    const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n    let steps = 0;\n\n    const commonObjs = this.commonObjs;\n    const objs = this.objs;\n    let fnId;\n\n    while (true) {\n      if (stepper !== undefined && i === stepper.nextBreakPoint) {\n        stepper.breakIt(i, continueCallback);\n        return i;\n      }\n\n      fnId = fnArray[i];\n\n      if (fnId !== OPS.dependency) {\n        // eslint-disable-next-line prefer-spread\n        this[fnId].apply(this, argsArray[i]);\n      } else {\n        for (const depObjId of argsArray[i]) {\n          const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n\n          // If the promise isn't resolved yet, add the continueCallback\n          // to the promise and bail out.\n          if (!objsPool.has(depObjId)) {\n            objsPool.get(depObjId, continueCallback);\n            return i;\n          }\n        }\n      }\n\n      i++;\n\n      // If the entire operatorList was executed, stop as were done.\n      if (i === argsArrayLen) {\n        return i;\n      }\n\n      // If the execution took longer then a certain amount of time and\n      // `continueCallback` is specified, interrupt the execution.\n      if (chunkOperations && ++steps > EXECUTION_STEPS) {\n        if (Date.now() > endTime) {\n          continueCallback();\n          return i;\n        }\n        steps = 0;\n      }\n\n      // If the operatorList isn't executed completely yet OR the execution\n      // time was short enough, do another execution round.\n    }\n  }\n\n  #restoreInitialState() {\n    // Finishing all opened operations such as SMask group painting.\n    while (this.stateStack.length || this.inSMaskMode) {\n      this.restore();\n    }\n\n    this.ctx.restore();\n\n    if (this.transparentCanvas) {\n      this.ctx = this.compositeCtx;\n      this.ctx.save();\n      this.ctx.setTransform(1, 0, 0, 1, 0, 0); // Avoid apply transform twice\n      this.ctx.drawImage(this.transparentCanvas, 0, 0);\n      this.ctx.restore();\n      this.transparentCanvas = null;\n    }\n  }\n\n  endDrawing() {\n    this.#restoreInitialState();\n\n    this.cachedCanvases.clear();\n    this.cachedPatterns.clear();\n\n    for (const cache of this._cachedBitmapsMap.values()) {\n      for (const canvas of cache.values()) {\n        if (\n          typeof HTMLCanvasElement !== \"undefined\" &&\n          canvas instanceof HTMLCanvasElement\n        ) {\n          canvas.width = canvas.height = 0;\n        }\n      }\n      cache.clear();\n    }\n    this._cachedBitmapsMap.clear();\n\n    if (this.imageLayer) {\n      this.imageLayer.endLayout();\n    }\n  }\n\n  _scaleImage(img, inverseTransform) {\n    // Vertical or horizontal scaling shall not be more than 2 to not lose the\n    // pixels during drawImage operation, painting on the temporary canvas(es)\n    // that are twice smaller in size.\n    const width = img.width;\n    const height = img.height;\n    let widthScale = Math.max(\n      Math.hypot(inverseTransform[0], inverseTransform[1]),\n      1\n    );\n    let heightScale = Math.max(\n      Math.hypot(inverseTransform[2], inverseTransform[3]),\n      1\n    );\n\n    let paintWidth = width,\n      paintHeight = height;\n    let tmpCanvasId = \"prescale1\";\n    let tmpCanvas, tmpCtx;\n    while (\n      (widthScale > 2 && paintWidth > 1) ||\n      (heightScale > 2 && paintHeight > 1)\n    ) {\n      let newWidth = paintWidth,\n        newHeight = paintHeight;\n      if (widthScale > 2 && paintWidth > 1) {\n        newWidth = Math.ceil(paintWidth / 2);\n        widthScale /= paintWidth / newWidth;\n      }\n      if (heightScale > 2 && paintHeight > 1) {\n        newHeight = Math.ceil(paintHeight / 2);\n        heightScale /= paintHeight / newHeight;\n      }\n      tmpCanvas = this.cachedCanvases.getCanvas(\n        tmpCanvasId,\n        newWidth,\n        newHeight\n      );\n      tmpCtx = tmpCanvas.context;\n      tmpCtx.clearRect(0, 0, newWidth, newHeight);\n      tmpCtx.drawImage(\n        img,\n        0,\n        0,\n        paintWidth,\n        paintHeight,\n        0,\n        0,\n        newWidth,\n        newHeight\n      );\n      img = tmpCanvas.canvas;\n      paintWidth = newWidth;\n      paintHeight = newHeight;\n      tmpCanvasId = tmpCanvasId === \"prescale1\" ? \"prescale2\" : \"prescale1\";\n    }\n    return {\n      img,\n      paintWidth,\n      paintHeight,\n    };\n  }\n\n  _createMaskCanvas(img) {\n    const ctx = this.ctx;\n    const { width, height } = img;\n    const fillColor = this.current.fillColor;\n    const isPatternFill = this.current.patternFill;\n    const currentTransform = getCurrentTransform(ctx);\n\n    let cache, cacheKey, scaled, maskCanvas;\n    if ((img.bitmap || img.data) && img.count > 1) {\n      const mainKey = img.bitmap || img.data.buffer;\n      // We're reusing the same image several times, so we can cache it.\n      // In case we've a pattern fill we just keep the scaled version of\n      // the image.\n      // Only the scaling part matters, the translation part is just used\n      // to compute offsets.\n      // TODO: handle the case of a pattern fill if it's possible.\n      const withoutTranslation = currentTransform.slice(0, 4);\n      cacheKey = JSON.stringify(\n        isPatternFill ? withoutTranslation : [withoutTranslation, fillColor]\n      );\n\n      cache = this._cachedBitmapsMap.get(mainKey);\n      if (!cache) {\n        cache = new Map();\n        this._cachedBitmapsMap.set(mainKey, cache);\n      }\n      const cachedImage = cache.get(cacheKey);\n      if (cachedImage && !isPatternFill) {\n        const offsetX = Math.round(\n          Math.min(currentTransform[0], currentTransform[2]) +\n            currentTransform[4]\n        );\n        const offsetY = Math.round(\n          Math.min(currentTransform[1], currentTransform[3]) +\n            currentTransform[5]\n        );\n        return {\n          canvas: cachedImage,\n          offsetX,\n          offsetY,\n        };\n      }\n      scaled = cachedImage;\n    }\n\n    if (!scaled) {\n      maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n      putBinaryImageMask(maskCanvas.context, img);\n    }\n\n    // Create the mask canvas at the size it will be drawn at and also set\n    // its transform to match the current transform so if there are any\n    // patterns applied they will be applied relative to the correct\n    // transform.\n\n    let maskToCanvas = Util.transform(currentTransform, [\n      1 / width,\n      0,\n      0,\n      -1 / height,\n      0,\n      0,\n    ]);\n    maskToCanvas = Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n    const cord1 = Util.applyTransform([0, 0], maskToCanvas);\n    const cord2 = Util.applyTransform([width, height], maskToCanvas);\n    const rect = Util.normalizeRect([cord1[0], cord1[1], cord2[0], cord2[1]]);\n    const drawnWidth = Math.round(rect[2] - rect[0]) || 1;\n    const drawnHeight = Math.round(rect[3] - rect[1]) || 1;\n    const fillCanvas = this.cachedCanvases.getCanvas(\n      \"fillCanvas\",\n      drawnWidth,\n      drawnHeight\n    );\n    const fillCtx = fillCanvas.context;\n\n    // The offset will be the top-left cordinate mask.\n    // If objToCanvas is [a,b,c,d,e,f] then:\n    //   - offsetX = min(a, c) + e\n    //   - offsetY = min(b, d) + f\n    const offsetX = Math.min(cord1[0], cord2[0]);\n    const offsetY = Math.min(cord1[1], cord2[1]);\n    fillCtx.translate(-offsetX, -offsetY);\n    fillCtx.transform(...maskToCanvas);\n\n    if (!scaled) {\n      // Pre-scale if needed to improve image smoothing.\n      scaled = this._scaleImage(\n        maskCanvas.canvas,\n        getCurrentTransformInverse(fillCtx)\n      );\n      scaled = scaled.img;\n      if (cache && isPatternFill) {\n        cache.set(cacheKey, scaled);\n      }\n    }\n\n    fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(\n      getCurrentTransform(fillCtx),\n      img.interpolate\n    );\n\n    drawImageAtIntegerCoords(\n      fillCtx,\n      scaled,\n      0,\n      0,\n      scaled.width,\n      scaled.height,\n      0,\n      0,\n      width,\n      height\n    );\n    fillCtx.globalCompositeOperation = \"source-in\";\n\n    const inverse = Util.transform(getCurrentTransformInverse(fillCtx), [\n      1,\n      0,\n      0,\n      1,\n      -offsetX,\n      -offsetY,\n    ]);\n    fillCtx.fillStyle = isPatternFill\n      ? fillColor.getPattern(ctx, this, inverse, PathType.FILL)\n      : fillColor;\n\n    fillCtx.fillRect(0, 0, width, height);\n\n    if (cache && !isPatternFill) {\n      // The fill canvas is put in the cache associated to the mask image\n      // so we must remove from the cached canvas: it mustn't be used again.\n      this.cachedCanvases.delete(\"fillCanvas\");\n      cache.set(cacheKey, fillCanvas.canvas);\n    }\n\n    // Round the offsets to avoid drawing fractional pixels.\n    return {\n      canvas: fillCanvas.canvas,\n      offsetX: Math.round(offsetX),\n      offsetY: Math.round(offsetY),\n    };\n  }\n\n  // Graphics state\n  setLineWidth(width) {\n    if (width !== this.current.lineWidth) {\n      this._cachedScaleForStroking = null;\n    }\n    this.current.lineWidth = width;\n    this.ctx.lineWidth = width;\n  }\n\n  setLineCap(style) {\n    this.ctx.lineCap = LINE_CAP_STYLES[style];\n  }\n\n  setLineJoin(style) {\n    this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n  }\n\n  setMiterLimit(limit) {\n    this.ctx.miterLimit = limit;\n  }\n\n  setDash(dashArray, dashPhase) {\n    const ctx = this.ctx;\n    if (ctx.setLineDash !== undefined) {\n      ctx.setLineDash(dashArray);\n      ctx.lineDashOffset = dashPhase;\n    }\n  }\n\n  setRenderingIntent(intent) {\n    // This operation is ignored since we haven't found a use case for it yet.\n  }\n\n  setFlatness(flatness) {\n    // This operation is ignored since we haven't found a use case for it yet.\n  }\n\n  setGState(states) {\n    for (let i = 0, ii = states.length; i < ii; i++) {\n      const state = states[i];\n      const key = state[0];\n      const value = state[1];\n\n      switch (key) {\n        case \"LW\":\n          this.setLineWidth(value);\n          break;\n        case \"LC\":\n          this.setLineCap(value);\n          break;\n        case \"LJ\":\n          this.setLineJoin(value);\n          break;\n        case \"ML\":\n          this.setMiterLimit(value);\n          break;\n        case \"D\":\n          this.setDash(value[0], value[1]);\n          break;\n        case \"RI\":\n          this.setRenderingIntent(value);\n          break;\n        case \"FL\":\n          this.setFlatness(value);\n          break;\n        case \"Font\":\n          this.setFont(value[0], value[1]);\n          break;\n        case \"CA\":\n          this.current.strokeAlpha = state[1];\n          break;\n        case \"ca\":\n          this.current.fillAlpha = state[1];\n          this.ctx.globalAlpha = state[1];\n          break;\n        case \"BM\":\n          this.ctx.globalCompositeOperation = value;\n          break;\n        case \"SMask\":\n          this.current.activeSMask = value ? this.tempSMask : null;\n          this.tempSMask = null;\n          this.checkSMaskState();\n          break;\n        case \"TR\":\n          this.current.transferMaps = value;\n      }\n    }\n  }\n\n  get inSMaskMode() {\n    return !!this.suspendedCtx;\n  }\n\n  checkSMaskState() {\n    const inSMaskMode = this.inSMaskMode;\n    if (this.current.activeSMask && !inSMaskMode) {\n      this.beginSMaskMode();\n    } else if (!this.current.activeSMask && inSMaskMode) {\n      this.endSMaskMode();\n    }\n    // Else, the state is okay and nothing needs to be done.\n  }\n\n  /**\n   * Soft mask mode takes the current main drawing canvas and replaces it with\n   * a temporary canvas. Any drawing operations that happen on the temporary\n   * canvas need to be composed with the main canvas that was suspended (see\n   * `compose()`). The temporary canvas also duplicates many of its operations\n   * on the suspended canvas to keep them in sync, so that when the soft mask\n   * mode ends any clipping paths or transformations will still be active and in\n   * the right order on the canvas' graphics state stack.\n   */\n  beginSMaskMode() {\n    if (this.inSMaskMode) {\n      throw new Error(\"beginSMaskMode called while already in smask mode\");\n    }\n    const drawnWidth = this.ctx.canvas.width;\n    const drawnHeight = this.ctx.canvas.height;\n    const cacheId = \"smaskGroupAt\" + this.groupLevel;\n    const scratchCanvas = this.cachedCanvases.getCanvas(\n      cacheId,\n      drawnWidth,\n      drawnHeight\n    );\n    this.suspendedCtx = this.ctx;\n    this.ctx = scratchCanvas.context;\n    const ctx = this.ctx;\n    ctx.setTransform(...getCurrentTransform(this.suspendedCtx));\n    copyCtxState(this.suspendedCtx, ctx);\n    mirrorContextOperations(ctx, this.suspendedCtx);\n\n    this.setGState([\n      [\"BM\", \"source-over\"],\n      [\"ca\", 1],\n      [\"CA\", 1],\n    ]);\n  }\n\n  endSMaskMode() {\n    if (!this.inSMaskMode) {\n      throw new Error(\"endSMaskMode called while not in smask mode\");\n    }\n    // The soft mask is done, now restore the suspended canvas as the main\n    // drawing canvas.\n    this.ctx._removeMirroring();\n    copyCtxState(this.ctx, this.suspendedCtx);\n    this.ctx = this.suspendedCtx;\n\n    this.suspendedCtx = null;\n  }\n\n  compose(dirtyBox) {\n    if (!this.current.activeSMask) {\n      return;\n    }\n\n    if (!dirtyBox) {\n      dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\n    } else {\n      dirtyBox[0] = Math.floor(dirtyBox[0]);\n      dirtyBox[1] = Math.floor(dirtyBox[1]);\n      dirtyBox[2] = Math.ceil(dirtyBox[2]);\n      dirtyBox[3] = Math.ceil(dirtyBox[3]);\n    }\n    const smask = this.current.activeSMask;\n    const suspendedCtx = this.suspendedCtx;\n\n    composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\n    // Whatever was drawn has been moved to the suspended canvas, now clear it\n    // out of the current canvas.\n    this.ctx.save();\n    this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n    this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n    this.ctx.restore();\n  }\n\n  save() {\n    if (this.inSMaskMode) {\n      // SMask mode may be turned on/off causing us to lose graphics state.\n      // Copy the temporary canvas state to the main(suspended) canvas to keep\n      // it in sync.\n      copyCtxState(this.ctx, this.suspendedCtx);\n      // Don't bother calling save on the temporary canvas since state is not\n      // saved there.\n      this.suspendedCtx.save();\n    } else {\n      this.ctx.save();\n    }\n    const old = this.current;\n    this.stateStack.push(old);\n    this.current = old.clone();\n  }\n\n  restore() {\n    if (this.stateStack.length === 0 && this.inSMaskMode) {\n      this.endSMaskMode();\n    }\n    if (this.stateStack.length !== 0) {\n      this.current = this.stateStack.pop();\n      if (this.inSMaskMode) {\n        // Graphics state is stored on the main(suspended) canvas. Restore its\n        // state then copy it over to the temporary canvas.\n        this.suspendedCtx.restore();\n        copyCtxState(this.suspendedCtx, this.ctx);\n      } else {\n        this.ctx.restore();\n      }\n      this.checkSMaskState();\n\n      // Ensure that the clipping path is reset (fixes issue6413.pdf).\n      this.pendingClip = null;\n\n      this._cachedScaleForStroking = null;\n      this._cachedGetSinglePixelWidth = null;\n    }\n  }\n\n  transform(a, b, c, d, e, f) {\n    this.ctx.transform(a, b, c, d, e, f);\n\n    this._cachedScaleForStroking = null;\n    this._cachedGetSinglePixelWidth = null;\n  }\n\n  // Path\n  constructPath(ops, args, minMax) {\n    const ctx = this.ctx;\n    const current = this.current;\n    let x = current.x,\n      y = current.y;\n    let startX, startY;\n    const currentTransform = getCurrentTransform(ctx);\n\n    // Most of the time the current transform is a scaling matrix\n    // so we don't need to transform points before computing min/max:\n    // we can compute min/max first and then smartly \"apply\" the\n    // transform (see Util.scaleMinMax).\n    // For rectangle, moveTo and lineTo, min/max are computed in the\n    // worker (see evaluator.js).\n    const isScalingMatrix =\n      (currentTransform[0] === 0 && currentTransform[3] === 0) ||\n      (currentTransform[1] === 0 && currentTransform[2] === 0);\n    const minMaxForBezier = isScalingMatrix ? minMax.slice(0) : null;\n\n    for (let i = 0, j = 0, ii = ops.length; i < ii; i++) {\n      switch (ops[i] | 0) {\n        case OPS.rectangle:\n          x = args[j++];\n          y = args[j++];\n          const width = args[j++];\n          const height = args[j++];\n\n          const xw = x + width;\n          const yh = y + height;\n          ctx.moveTo(x, y);\n          if (width === 0 || height === 0) {\n            ctx.lineTo(xw, yh);\n          } else {\n            ctx.lineTo(xw, y);\n            ctx.lineTo(xw, yh);\n            ctx.lineTo(x, yh);\n          }\n          if (!isScalingMatrix) {\n            current.updateRectMinMax(currentTransform, [x, y, xw, yh]);\n          }\n          ctx.closePath();\n          break;\n        case OPS.moveTo:\n          x = args[j++];\n          y = args[j++];\n          ctx.moveTo(x, y);\n          if (!isScalingMatrix) {\n            current.updatePathMinMax(currentTransform, x, y);\n          }\n          break;\n        case OPS.lineTo:\n          x = args[j++];\n          y = args[j++];\n          ctx.lineTo(x, y);\n          if (!isScalingMatrix) {\n            current.updatePathMinMax(currentTransform, x, y);\n          }\n          break;\n        case OPS.curveTo:\n          startX = x;\n          startY = y;\n          x = args[j + 4];\n          y = args[j + 5];\n          ctx.bezierCurveTo(\n            args[j],\n            args[j + 1],\n            args[j + 2],\n            args[j + 3],\n            x,\n            y\n          );\n          current.updateCurvePathMinMax(\n            currentTransform,\n            startX,\n            startY,\n            args[j],\n            args[j + 1],\n            args[j + 2],\n            args[j + 3],\n            x,\n            y,\n            minMaxForBezier\n          );\n          j += 6;\n          break;\n        case OPS.curveTo2:\n          startX = x;\n          startY = y;\n          ctx.bezierCurveTo(\n            x,\n            y,\n            args[j],\n            args[j + 1],\n            args[j + 2],\n            args[j + 3]\n          );\n          current.updateCurvePathMinMax(\n            currentTransform,\n            startX,\n            startY,\n            x,\n            y,\n            args[j],\n            args[j + 1],\n            args[j + 2],\n            args[j + 3],\n            minMaxForBezier\n          );\n          x = args[j + 2];\n          y = args[j + 3];\n          j += 4;\n          break;\n        case OPS.curveTo3:\n          startX = x;\n          startY = y;\n          x = args[j + 2];\n          y = args[j + 3];\n          ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n          current.updateCurvePathMinMax(\n            currentTransform,\n            startX,\n            startY,\n            args[j],\n            args[j + 1],\n            x,\n            y,\n            x,\n            y,\n            minMaxForBezier\n          );\n          j += 4;\n          break;\n        case OPS.closePath:\n          ctx.closePath();\n          break;\n      }\n    }\n\n    if (isScalingMatrix) {\n      current.updateScalingPathMinMax(currentTransform, minMaxForBezier);\n    }\n\n    current.setCurrentPoint(x, y);\n  }\n\n  closePath() {\n    this.ctx.closePath();\n  }\n\n  stroke(consumePath) {\n    consumePath = typeof consumePath !== \"undefined\" ? consumePath : true;\n    const ctx = this.ctx;\n    const strokeColor = this.current.strokeColor;\n    // For stroke we want to temporarily change the global alpha to the\n    // stroking alpha.\n    ctx.globalAlpha = this.current.strokeAlpha;\n    if (this.contentVisible) {\n      if (typeof strokeColor === \"object\" && strokeColor?.getPattern) {\n        ctx.save();\n        ctx.strokeStyle = strokeColor.getPattern(\n          ctx,\n          this,\n          getCurrentTransformInverse(ctx),\n          PathType.STROKE\n        );\n        this.rescaleAndStroke(/* saveRestore */ false);\n        ctx.restore();\n      } else {\n        this.rescaleAndStroke(/* saveRestore */ true);\n      }\n    }\n    if (consumePath) {\n      this.consumePath(this.current.getClippedPathBoundingBox());\n    }\n    // Restore the global alpha to the fill alpha\n    ctx.globalAlpha = this.current.fillAlpha;\n  }\n\n  closeStroke() {\n    this.closePath();\n    this.stroke();\n  }\n\n  fill(consumePath) {\n    consumePath = typeof consumePath !== \"undefined\" ? consumePath : true;\n    const ctx = this.ctx;\n    const fillColor = this.current.fillColor;\n    const isPatternFill = this.current.patternFill;\n    let needRestore = false;\n\n    if (isPatternFill) {\n      ctx.save();\n      ctx.fillStyle = fillColor.getPattern(\n        ctx,\n        this,\n        getCurrentTransformInverse(ctx),\n        PathType.FILL\n      );\n      needRestore = true;\n    }\n\n    const intersect = this.current.getClippedPathBoundingBox();\n    if (this.contentVisible && intersect !== null) {\n      if (this.pendingEOFill) {\n        ctx.fill(\"evenodd\");\n        this.pendingEOFill = false;\n      } else {\n        ctx.fill();\n      }\n    }\n\n    if (needRestore) {\n      ctx.restore();\n    }\n    if (consumePath) {\n      this.consumePath(intersect);\n    }\n  }\n\n  eoFill() {\n    this.pendingEOFill = true;\n    this.fill();\n  }\n\n  fillStroke() {\n    this.fill(false);\n    this.stroke(false);\n\n    this.consumePath();\n  }\n\n  eoFillStroke() {\n    this.pendingEOFill = true;\n    this.fillStroke();\n  }\n\n  closeFillStroke() {\n    this.closePath();\n    this.fillStroke();\n  }\n\n  closeEOFillStroke() {\n    this.pendingEOFill = true;\n    this.closePath();\n    this.fillStroke();\n  }\n\n  endPath() {\n    this.consumePath();\n  }\n\n  // Clipping\n  clip() {\n    this.pendingClip = NORMAL_CLIP;\n  }\n\n  eoClip() {\n    this.pendingClip = EO_CLIP;\n  }\n\n  // Text\n  beginText() {\n    this.current.textMatrix = IDENTITY_MATRIX;\n    this.current.textMatrixScale = 1;\n    this.current.x = this.current.lineX = 0;\n    this.current.y = this.current.lineY = 0;\n  }\n\n  endText() {\n    const paths = this.pendingTextPaths;\n    const ctx = this.ctx;\n    if (paths === undefined) {\n      ctx.beginPath();\n      return;\n    }\n\n    ctx.save();\n    ctx.beginPath();\n    for (const path of paths) {\n      ctx.setTransform(...path.transform);\n      ctx.translate(path.x, path.y);\n      path.addToPath(ctx, path.fontSize);\n    }\n    ctx.restore();\n    ctx.clip();\n    ctx.beginPath();\n    delete this.pendingTextPaths;\n  }\n\n  setCharSpacing(spacing) {\n    this.current.charSpacing = spacing;\n  }\n\n  setWordSpacing(spacing) {\n    this.current.wordSpacing = spacing;\n  }\n\n  setHScale(scale) {\n    this.current.textHScale = scale / 100;\n  }\n\n  setLeading(leading) {\n    this.current.leading = -leading;\n  }\n\n  setFont(fontRefName, size) {\n    const fontObj = this.commonObjs.get(fontRefName);\n    const current = this.current;\n\n    if (!fontObj) {\n      throw new Error(`Can't find font for ${fontRefName}`);\n    }\n    current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n\n    // A valid matrix needs all main diagonal elements to be non-zero\n    // This also ensures we bypass FF bugzilla bug #719844.\n    if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n      warn(\"Invalid font matrix for font \" + fontRefName);\n    }\n\n    // The spec for Tf (setFont) says that 'size' specifies the font 'scale',\n    // and in some docs this can be negative (inverted x-y axes).\n    if (size < 0) {\n      size = -size;\n      current.fontDirection = -1;\n    } else {\n      current.fontDirection = 1;\n    }\n\n    this.current.font = fontObj;\n    this.current.fontSize = size;\n\n    if (fontObj.isType3Font) {\n      return; // we don't need ctx.font for Type3 fonts\n    }\n\n    const name = fontObj.loadedName || \"sans-serif\";\n\n    let bold = \"normal\";\n    if (fontObj.black) {\n      bold = \"900\";\n    } else if (fontObj.bold) {\n      bold = \"bold\";\n    }\n    const italic = fontObj.italic ? \"italic\" : \"normal\";\n    const typeface = `\"${name}\", ${fontObj.fallbackName}`;\n\n    // Some font backends cannot handle fonts below certain size.\n    // Keeping the font at minimal size and using the fontSizeScale to change\n    // the current transformation matrix before the fillText/strokeText.\n    // See https://bugzilla.mozilla.org/show_bug.cgi?id=726227\n    let browserFontSize = size;\n    if (size < MIN_FONT_SIZE) {\n      browserFontSize = MIN_FONT_SIZE;\n    } else if (size > MAX_FONT_SIZE) {\n      browserFontSize = MAX_FONT_SIZE;\n    }\n    this.current.fontSizeScale = size / browserFontSize;\n\n    this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n  }\n\n  setTextRenderingMode(mode) {\n    this.current.textRenderingMode = mode;\n  }\n\n  setTextRise(rise) {\n    this.current.textRise = rise;\n  }\n\n  moveText(x, y) {\n    this.current.x = this.current.lineX += x;\n    this.current.y = this.current.lineY += y;\n  }\n\n  setLeadingMoveText(x, y) {\n    this.setLeading(-y);\n    this.moveText(x, y);\n  }\n\n  setTextMatrix(a, b, c, d, e, f) {\n    this.current.textMatrix = [a, b, c, d, e, f];\n    this.current.textMatrixScale = Math.hypot(a, b);\n\n    this.current.x = this.current.lineX = 0;\n    this.current.y = this.current.lineY = 0;\n  }\n\n  nextLine() {\n    this.moveText(0, this.current.leading);\n  }\n\n  paintChar(character, x, y, patternTransform) {\n    const ctx = this.ctx;\n    const current = this.current;\n    const font = current.font;\n    const textRenderingMode = current.textRenderingMode;\n    const fontSize = current.fontSize / current.fontSizeScale;\n    const fillStrokeMode =\n      textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n    const isAddToPathSet = !!(\n      textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG\n    );\n    const patternFill = current.patternFill && !font.missingFile;\n\n    let addToPath;\n    if (font.disableFontFace || isAddToPathSet || patternFill) {\n      addToPath = font.getPathGenerator(this.commonObjs, character);\n    }\n\n    if (font.disableFontFace || patternFill) {\n      ctx.save();\n      ctx.translate(x, y);\n      ctx.beginPath();\n      addToPath(ctx, fontSize);\n      if (patternTransform) {\n        ctx.setTransform(...patternTransform);\n      }\n      if (\n        fillStrokeMode === TextRenderingMode.FILL ||\n        fillStrokeMode === TextRenderingMode.FILL_STROKE\n      ) {\n        ctx.fill();\n      }\n      if (\n        fillStrokeMode === TextRenderingMode.STROKE ||\n        fillStrokeMode === TextRenderingMode.FILL_STROKE\n      ) {\n        ctx.stroke();\n      }\n      ctx.restore();\n    } else {\n      if (\n        fillStrokeMode === TextRenderingMode.FILL ||\n        fillStrokeMode === TextRenderingMode.FILL_STROKE\n      ) {\n        ctx.fillText(character, x, y);\n      }\n      if (\n        fillStrokeMode === TextRenderingMode.STROKE ||\n        fillStrokeMode === TextRenderingMode.FILL_STROKE\n      ) {\n        ctx.strokeText(character, x, y);\n      }\n    }\n\n    if (isAddToPathSet) {\n      const paths = this.pendingTextPaths || (this.pendingTextPaths = []);\n      paths.push({\n        transform: getCurrentTransform(ctx),\n        x,\n        y,\n        fontSize,\n        addToPath,\n      });\n    }\n  }\n\n  get isFontSubpixelAAEnabled() {\n    // Checks if anti-aliasing is enabled when scaled text is painted.\n    // On Windows GDI scaled fonts looks bad.\n    const { context: ctx } = this.cachedCanvases.getCanvas(\n      \"isFontSubpixelAAEnabled\",\n      10,\n      10\n    );\n    ctx.scale(1.5, 1);\n    ctx.fillText(\"I\", 0, 10);\n    const data = ctx.getImageData(0, 0, 10, 10).data;\n    let enabled = false;\n    for (let i = 3; i < data.length; i += 4) {\n      if (data[i] > 0 && data[i] < 255) {\n        enabled = true;\n        break;\n      }\n    }\n    return shadow(this, \"isFontSubpixelAAEnabled\", enabled);\n  }\n\n  showText(glyphs) {\n    const current = this.current;\n    const font = current.font;\n    if (font.isType3Font) {\n      return this.showType3Text(glyphs);\n    }\n\n    const fontSize = current.fontSize;\n    if (fontSize === 0) {\n      return undefined;\n    }\n\n    const ctx = this.ctx;\n    const fontSizeScale = current.fontSizeScale;\n    const charSpacing = current.charSpacing;\n    const wordSpacing = current.wordSpacing;\n    const fontDirection = current.fontDirection;\n    const textHScale = current.textHScale * fontDirection;\n    const glyphsLength = glyphs.length;\n    const vertical = font.vertical;\n    const spacingDir = vertical ? 1 : -1;\n    const defaultVMetrics = font.defaultVMetrics;\n    const widthAdvanceScale = fontSize * current.fontMatrix[0];\n\n    const simpleFillText =\n      current.textRenderingMode === TextRenderingMode.FILL &&\n      !font.disableFontFace &&\n      !current.patternFill;\n\n    ctx.save();\n    ctx.transform(...current.textMatrix);\n    ctx.translate(current.x, current.y + current.textRise);\n\n    if (fontDirection > 0) {\n      ctx.scale(textHScale, -1);\n    } else {\n      ctx.scale(textHScale, 1);\n    }\n\n    let patternTransform;\n    if (current.patternFill) {\n      ctx.save();\n      const pattern = current.fillColor.getPattern(\n        ctx,\n        this,\n        getCurrentTransformInverse(ctx),\n        PathType.FILL\n      );\n      patternTransform = getCurrentTransform(ctx);\n      ctx.restore();\n      ctx.fillStyle = pattern;\n    }\n\n    let lineWidth = current.lineWidth;\n    const scale = current.textMatrixScale;\n    if (scale === 0 || lineWidth === 0) {\n      const fillStrokeMode =\n        current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n      if (\n        fillStrokeMode === TextRenderingMode.STROKE ||\n        fillStrokeMode === TextRenderingMode.FILL_STROKE\n      ) {\n        lineWidth = this.getSinglePixelWidth();\n      }\n    } else {\n      lineWidth /= scale;\n    }\n\n    if (fontSizeScale !== 1.0) {\n      ctx.scale(fontSizeScale, fontSizeScale);\n      lineWidth /= fontSizeScale;\n    }\n\n    ctx.lineWidth = lineWidth;\n\n    let x = 0,\n      i;\n    for (i = 0; i < glyphsLength; ++i) {\n      const glyph = glyphs[i];\n      if (typeof glyph === \"number\") {\n        x += (spacingDir * glyph * fontSize) / 1000;\n        continue;\n      }\n\n      let restoreNeeded = false;\n      const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n      const character = glyph.fontChar;\n      const accent = glyph.accent;\n      let scaledX, scaledY;\n      let width = glyph.width;\n      if (vertical) {\n        const vmetric = glyph.vmetric || defaultVMetrics;\n        const vx =\n          -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n        const vy = vmetric[2] * widthAdvanceScale;\n\n        width = vmetric ? -vmetric[0] : width;\n        scaledX = vx / fontSizeScale;\n        scaledY = (x + vy) / fontSizeScale;\n      } else {\n        scaledX = x / fontSizeScale;\n        scaledY = 0;\n      }\n\n      if (font.remeasure && width > 0) {\n        // Some standard fonts may not have the exact width: rescale per\n        // character if measured width is greater than expected glyph width\n        // and subpixel-aa is enabled, otherwise just center the glyph.\n        const measuredWidth =\n          ((ctx.measureText(character).width * 1000) / fontSize) *\n          fontSizeScale;\n        if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n          const characterScaleX = width / measuredWidth;\n          restoreNeeded = true;\n          ctx.save();\n          ctx.scale(characterScaleX, 1);\n          scaledX /= characterScaleX;\n        } else if (width !== measuredWidth) {\n          scaledX +=\n            (((width - measuredWidth) / 2000) * fontSize) / fontSizeScale;\n        }\n      }\n\n      // Only attempt to draw the glyph if it is actually in the embedded font\n      // file or if there isn't a font file so the fallback font is shown.\n      if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n        if (simpleFillText && !accent) {\n          // common case\n          ctx.fillText(character, scaledX, scaledY);\n        } else {\n          this.paintChar(character, scaledX, scaledY, patternTransform);\n          if (accent) {\n            const scaledAccentX =\n              scaledX + (fontSize * accent.offset.x) / fontSizeScale;\n            const scaledAccentY =\n              scaledY - (fontSize * accent.offset.y) / fontSizeScale;\n            this.paintChar(\n              accent.fontChar,\n              scaledAccentX,\n              scaledAccentY,\n              patternTransform\n            );\n          }\n        }\n      }\n\n      let charWidth;\n      if (vertical) {\n        charWidth = width * widthAdvanceScale - spacing * fontDirection;\n      } else {\n        charWidth = width * widthAdvanceScale + spacing * fontDirection;\n      }\n      x += charWidth;\n\n      if (restoreNeeded) {\n        ctx.restore();\n      }\n    }\n    if (vertical) {\n      current.y -= x;\n    } else {\n      current.x += x * textHScale;\n    }\n    ctx.restore();\n    this.compose();\n\n    return undefined;\n  }\n\n  showType3Text(glyphs) {\n    // Type3 fonts - each glyph is a \"mini-PDF\"\n    const ctx = this.ctx;\n    const current = this.current;\n    const font = current.font;\n    const fontSize = current.fontSize;\n    const fontDirection = current.fontDirection;\n    const spacingDir = font.vertical ? 1 : -1;\n    const charSpacing = current.charSpacing;\n    const wordSpacing = current.wordSpacing;\n    const textHScale = current.textHScale * fontDirection;\n    const fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;\n    const glyphsLength = glyphs.length;\n    const isTextInvisible =\n      current.textRenderingMode === TextRenderingMode.INVISIBLE;\n    let i, glyph, width, spacingLength;\n\n    if (isTextInvisible || fontSize === 0) {\n      return;\n    }\n    this._cachedScaleForStroking = null;\n    this._cachedGetSinglePixelWidth = null;\n\n    ctx.save();\n    ctx.transform(...current.textMatrix);\n    ctx.translate(current.x, current.y);\n\n    ctx.scale(textHScale, fontDirection);\n\n    for (i = 0; i < glyphsLength; ++i) {\n      glyph = glyphs[i];\n      if (typeof glyph === \"number\") {\n        spacingLength = (spacingDir * glyph * fontSize) / 1000;\n        this.ctx.translate(spacingLength, 0);\n        current.x += spacingLength * textHScale;\n        continue;\n      }\n\n      const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n      const operatorList = font.charProcOperatorList[glyph.operatorListId];\n      if (!operatorList) {\n        warn(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n        continue;\n      }\n      if (this.contentVisible) {\n        this.processingType3 = glyph;\n        this.save();\n        ctx.scale(fontSize, fontSize);\n        ctx.transform(...fontMatrix);\n        this.executeOperatorList(operatorList);\n        this.restore();\n      }\n\n      const transformed = Util.applyTransform([glyph.width, 0], fontMatrix);\n      width = transformed[0] * fontSize + spacing;\n\n      ctx.translate(width, 0);\n      current.x += width * textHScale;\n    }\n    ctx.restore();\n    this.processingType3 = null;\n  }\n\n  // Type3 fonts\n  setCharWidth(xWidth, yWidth) {\n    // We can safely ignore this since the width should be the same\n    // as the width in the Widths array.\n  }\n\n  setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {\n    this.ctx.rect(llx, lly, urx - llx, ury - lly);\n    this.ctx.clip();\n    this.endPath();\n  }\n\n  // Color\n  getColorN_Pattern(IR) {\n    let pattern;\n    if (IR[0] === \"TilingPattern\") {\n      const color = IR[1];\n      const baseTransform = this.baseTransform || getCurrentTransform(this.ctx);\n      const canvasGraphicsFactory = {\n        createCanvasGraphics: ctx => {\n          return new CanvasGraphics(\n            ctx,\n            this.commonObjs,\n            this.objs,\n            this.canvasFactory\n          );\n        },\n      };\n      pattern = new TilingPattern(\n        IR,\n        color,\n        this.ctx,\n        canvasGraphicsFactory,\n        baseTransform\n      );\n    } else {\n      pattern = this._getPattern(IR[1], IR[2]);\n    }\n    return pattern;\n  }\n\n  setStrokeColorN() {\n    this.current.strokeColor = this.getColorN_Pattern(arguments);\n  }\n\n  setFillColorN() {\n    this.current.fillColor = this.getColorN_Pattern(arguments);\n    this.current.patternFill = true;\n  }\n\n  setStrokeRGBColor(r, g, b) {\n    const color = this.selectColor?.(r, g, b) || Util.makeHexColor(r, g, b);\n    this.ctx.strokeStyle = color;\n    this.current.strokeColor = color;\n  }\n\n  setFillRGBColor(r, g, b) {\n    const color = this.selectColor?.(r, g, b) || Util.makeHexColor(r, g, b);\n    this.ctx.fillStyle = color;\n    this.current.fillColor = color;\n    this.current.patternFill = false;\n  }\n\n  _getPattern(objId, matrix = null) {\n    let pattern;\n    if (this.cachedPatterns.has(objId)) {\n      pattern = this.cachedPatterns.get(objId);\n    } else {\n      pattern = getShadingPattern(this.objs.get(objId));\n      this.cachedPatterns.set(objId, pattern);\n    }\n    if (matrix) {\n      pattern.matrix = matrix;\n    }\n    return pattern;\n  }\n\n  shadingFill(objId) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const ctx = this.ctx;\n\n    this.save();\n    const pattern = this._getPattern(objId);\n    ctx.fillStyle = pattern.getPattern(\n      ctx,\n      this,\n      getCurrentTransformInverse(ctx),\n      PathType.SHADING\n    );\n\n    const inv = getCurrentTransformInverse(ctx);\n    if (inv) {\n      const canvas = ctx.canvas;\n      const width = canvas.width;\n      const height = canvas.height;\n\n      const bl = Util.applyTransform([0, 0], inv);\n      const br = Util.applyTransform([0, height], inv);\n      const ul = Util.applyTransform([width, 0], inv);\n      const ur = Util.applyTransform([width, height], inv);\n\n      const x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n      const y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n      const x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n      const y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n\n      this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n    } else {\n      // HACK to draw the gradient onto an infinite rectangle.\n      // PDF gradients are drawn across the entire image while\n      // Canvas only allows gradients to be drawn in a rectangle\n      // The following bug should allow us to remove this.\n      // https://bugzilla.mozilla.org/show_bug.cgi?id=664884\n\n      this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n    }\n\n    this.compose(this.current.getClippedPathBoundingBox());\n    this.restore();\n  }\n\n  // Images\n  beginInlineImage() {\n    unreachable(\"Should not call beginInlineImage\");\n  }\n\n  beginImageData() {\n    unreachable(\"Should not call beginImageData\");\n  }\n\n  paintFormXObjectBegin(matrix, bbox) {\n    if (!this.contentVisible) {\n      return;\n    }\n    this.save();\n    this.baseTransformStack.push(this.baseTransform);\n\n    if (Array.isArray(matrix) && matrix.length === 6) {\n      this.transform(...matrix);\n    }\n\n    this.baseTransform = getCurrentTransform(this.ctx);\n\n    if (bbox) {\n      const width = bbox[2] - bbox[0];\n      const height = bbox[3] - bbox[1];\n      this.ctx.rect(bbox[0], bbox[1], width, height);\n      this.current.updateRectMinMax(getCurrentTransform(this.ctx), bbox);\n      this.clip();\n      this.endPath();\n    }\n  }\n\n  paintFormXObjectEnd() {\n    if (!this.contentVisible) {\n      return;\n    }\n    this.restore();\n    this.baseTransform = this.baseTransformStack.pop();\n  }\n\n  beginGroup(group) {\n    if (!this.contentVisible) {\n      return;\n    }\n\n    this.save();\n    // If there's an active soft mask we don't want it enabled for the group, so\n    // clear it out. The mask and suspended canvas will be restored in endGroup.\n    if (this.inSMaskMode) {\n      this.endSMaskMode();\n      this.current.activeSMask = null;\n    }\n\n    const currentCtx = this.ctx;\n    // TODO non-isolated groups - according to Rik at adobe non-isolated\n    // group results aren't usually that different and they even have tools\n    // that ignore this setting. Notes from Rik on implementing:\n    // - When you encounter an transparency group, create a new canvas with\n    // the dimensions of the bbox\n    // - copy the content from the previous canvas to the new canvas\n    // - draw as usual\n    // - remove the backdrop alpha:\n    // alphaNew = 1 - (1 - alpha)/(1 - alphaBackdrop) with 'alpha' the alpha\n    // value of your transparency group and 'alphaBackdrop' the alpha of the\n    // backdrop\n    // - remove background color:\n    // colorNew = color - alphaNew *colorBackdrop /(1 - alphaNew)\n    if (!group.isolated) {\n      info(\"TODO: Support non-isolated groups.\");\n    }\n\n    // TODO knockout - supposedly possible with the clever use of compositing\n    // modes.\n    if (group.knockout) {\n      warn(\"Knockout groups not supported.\");\n    }\n\n    const currentTransform = getCurrentTransform(currentCtx);\n    if (group.matrix) {\n      currentCtx.transform(...group.matrix);\n    }\n    if (!group.bbox) {\n      throw new Error(\"Bounding box is required.\");\n    }\n\n    // Based on the current transform figure out how big the bounding box\n    // will actually be.\n    let bounds = Util.getAxialAlignedBoundingBox(\n      group.bbox,\n      getCurrentTransform(currentCtx)\n    );\n    // Clip the bounding box to the current canvas.\n    const canvasBounds = [\n      0,\n      0,\n      currentCtx.canvas.width,\n      currentCtx.canvas.height,\n    ];\n    bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n    // Use ceil in case we're between sizes so we don't create canvas that is\n    // too small and make the canvas at least 1x1 pixels.\n    const offsetX = Math.floor(bounds[0]);\n    const offsetY = Math.floor(bounds[1]);\n    let drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n    let drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n    let scaleX = 1,\n      scaleY = 1;\n    if (drawnWidth > MAX_GROUP_SIZE) {\n      scaleX = drawnWidth / MAX_GROUP_SIZE;\n      drawnWidth = MAX_GROUP_SIZE;\n    }\n    if (drawnHeight > MAX_GROUP_SIZE) {\n      scaleY = drawnHeight / MAX_GROUP_SIZE;\n      drawnHeight = MAX_GROUP_SIZE;\n    }\n\n    this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n\n    let cacheId = \"groupAt\" + this.groupLevel;\n    if (group.smask) {\n      // Using two cache entries is case if masks are used one after another.\n      cacheId += \"_smask_\" + (this.smaskCounter++ % 2);\n    }\n    const scratchCanvas = this.cachedCanvases.getCanvas(\n      cacheId,\n      drawnWidth,\n      drawnHeight\n    );\n    const groupCtx = scratchCanvas.context;\n\n    // Since we created a new canvas that is just the size of the bounding box\n    // we have to translate the group ctx.\n    groupCtx.scale(1 / scaleX, 1 / scaleY);\n    groupCtx.translate(-offsetX, -offsetY);\n    groupCtx.transform(...currentTransform);\n\n    if (group.smask) {\n      // Saving state and cached mask to be used in setGState.\n      this.smaskStack.push({\n        canvas: scratchCanvas.canvas,\n        context: groupCtx,\n        offsetX,\n        offsetY,\n        scaleX,\n        scaleY,\n        subtype: group.smask.subtype,\n        backdrop: group.smask.backdrop,\n        transferMap: group.smask.transferMap || null,\n        startTransformInverse: null, // used during suspend operation\n      });\n    } else {\n      // Setup the current ctx so when the group is popped we draw it at the\n      // right location.\n      currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n      currentCtx.translate(offsetX, offsetY);\n      currentCtx.scale(scaleX, scaleY);\n      currentCtx.save();\n    }\n    // The transparency group inherits all off the current graphics state\n    // except the blend mode, soft mask, and alpha constants.\n    copyCtxState(currentCtx, groupCtx);\n    this.ctx = groupCtx;\n    this.setGState([\n      [\"BM\", \"source-over\"],\n      [\"ca\", 1],\n      [\"CA\", 1],\n    ]);\n    this.groupStack.push(currentCtx);\n    this.groupLevel++;\n  }\n\n  endGroup(group) {\n    if (!this.contentVisible) {\n      return;\n    }\n    this.groupLevel--;\n    const groupCtx = this.ctx;\n    const ctx = this.groupStack.pop();\n    this.ctx = ctx;\n    // Turn off image smoothing to avoid sub pixel interpolation which can\n    // look kind of blurry for some pdfs.\n    this.ctx.imageSmoothingEnabled = false;\n\n    if (group.smask) {\n      this.tempSMask = this.smaskStack.pop();\n      this.restore();\n    } else {\n      this.ctx.restore();\n      const currentMtx = getCurrentTransform(this.ctx);\n      this.restore();\n      this.ctx.save();\n      this.ctx.setTransform(...currentMtx);\n      const dirtyBox = Util.getAxialAlignedBoundingBox(\n        [0, 0, groupCtx.canvas.width, groupCtx.canvas.height],\n        currentMtx\n      );\n      this.ctx.drawImage(groupCtx.canvas, 0, 0);\n      this.ctx.restore();\n      this.compose(dirtyBox);\n    }\n  }\n\n  beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) {\n    // The annotations are drawn just after the page content.\n    // The page content drawing can potentially have set a transform,\n    // a clipping path, whatever...\n    // So in order to have something clean, we restore the initial state.\n    this.#restoreInitialState();\n    resetCtxToDefault(this.ctx, this.foregroundColor);\n\n    this.ctx.save();\n    this.save();\n\n    if (this.baseTransform) {\n      this.ctx.setTransform(...this.baseTransform);\n    }\n\n    if (Array.isArray(rect) && rect.length === 4) {\n      const width = rect[2] - rect[0];\n      const height = rect[3] - rect[1];\n\n      if (hasOwnCanvas && this.annotationCanvasMap) {\n        transform = transform.slice();\n        transform[4] -= rect[0];\n        transform[5] -= rect[1];\n\n        rect = rect.slice();\n        rect[0] = rect[1] = 0;\n        rect[2] = width;\n        rect[3] = height;\n\n        const [scaleX, scaleY] = Util.singularValueDecompose2dScale(\n          getCurrentTransform(this.ctx)\n        );\n        const { viewportScale } = this;\n        const canvasWidth = Math.ceil(\n          width * this.outputScaleX * viewportScale\n        );\n        const canvasHeight = Math.ceil(\n          height * this.outputScaleY * viewportScale\n        );\n\n        this.annotationCanvas = this.canvasFactory.create(\n          canvasWidth,\n          canvasHeight\n        );\n        const { canvas, context } = this.annotationCanvas;\n        this.annotationCanvasMap.set(id, canvas);\n        this.annotationCanvas.savedCtx = this.ctx;\n        this.ctx = context;\n        this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY);\n\n        resetCtxToDefault(this.ctx, this.foregroundColor);\n      } else {\n        resetCtxToDefault(this.ctx, this.foregroundColor);\n\n        this.ctx.rect(rect[0], rect[1], width, height);\n        this.ctx.clip();\n        this.endPath();\n      }\n    }\n\n    this.current = new CanvasExtraState(\n      this.ctx.canvas.width,\n      this.ctx.canvas.height\n    );\n\n    this.transform(...transform);\n    this.transform(...matrix);\n  }\n\n  endAnnotation() {\n    if (this.annotationCanvas) {\n      this.ctx = this.annotationCanvas.savedCtx;\n      delete this.annotationCanvas.savedCtx;\n      delete this.annotationCanvas;\n    }\n  }\n\n  paintImageMaskXObject(img) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const count = img.count;\n    img = this.getObject(img.data, img);\n    img.count = count;\n\n    const ctx = this.ctx;\n    const glyph = this.processingType3;\n\n    if (glyph) {\n      if (glyph.compiled === undefined) {\n        glyph.compiled = compileType3Glyph(img);\n      }\n\n      if (glyph.compiled) {\n        glyph.compiled(ctx);\n        return;\n      }\n    }\n    const mask = this._createMaskCanvas(img);\n    const maskCanvas = mask.canvas;\n\n    ctx.save();\n    // The mask is drawn with the transform applied. Reset the current\n    // transform to draw to the identity.\n    ctx.setTransform(1, 0, 0, 1, 0, 0);\n    ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\n    ctx.restore();\n    this.compose();\n  }\n\n  paintImageMaskXObjectRepeat(\n    img,\n    scaleX,\n    skewX = 0,\n    skewY = 0,\n    scaleY,\n    positions\n  ) {\n    if (!this.contentVisible) {\n      return;\n    }\n\n    img = this.getObject(img.data, img);\n\n    const ctx = this.ctx;\n    ctx.save();\n    const currentTransform = getCurrentTransform(ctx);\n    ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);\n    const mask = this._createMaskCanvas(img);\n\n    ctx.setTransform(1, 0, 0, 1, 0, 0);\n    for (let i = 0, ii = positions.length; i < ii; i += 2) {\n      const trans = Util.transform(currentTransform, [\n        scaleX,\n        skewX,\n        skewY,\n        scaleY,\n        positions[i],\n        positions[i + 1],\n      ]);\n\n      const [x, y] = Util.applyTransform([0, 0], trans);\n      ctx.drawImage(mask.canvas, x, y);\n    }\n    ctx.restore();\n    this.compose();\n  }\n\n  paintImageMaskXObjectGroup(images) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const ctx = this.ctx;\n\n    const fillColor = this.current.fillColor;\n    const isPatternFill = this.current.patternFill;\n\n    for (const image of images) {\n      const { data, width, height, transform } = image;\n\n      const maskCanvas = this.cachedCanvases.getCanvas(\n        \"maskCanvas\",\n        width,\n        height\n      );\n      const maskCtx = maskCanvas.context;\n      maskCtx.save();\n\n      const img = this.getObject(data, image);\n      putBinaryImageMask(maskCtx, img);\n\n      maskCtx.globalCompositeOperation = \"source-in\";\n\n      maskCtx.fillStyle = isPatternFill\n        ? fillColor.getPattern(\n            maskCtx,\n            this,\n            getCurrentTransformInverse(ctx),\n            PathType.FILL\n          )\n        : fillColor;\n      maskCtx.fillRect(0, 0, width, height);\n\n      maskCtx.restore();\n\n      ctx.save();\n      ctx.transform(...transform);\n      ctx.scale(1, -1);\n      drawImageAtIntegerCoords(\n        ctx,\n        maskCanvas.canvas,\n        0,\n        0,\n        width,\n        height,\n        0,\n        -1,\n        1,\n        1\n      );\n      ctx.restore();\n    }\n    this.compose();\n  }\n\n  paintImageXObject(objId) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const imgData = this.getObject(objId);\n    if (!imgData) {\n      warn(\"Dependent image isn't ready yet\");\n      return;\n    }\n\n    this.paintInlineImageXObject(imgData);\n  }\n\n  paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const imgData = this.getObject(objId);\n    if (!imgData) {\n      warn(\"Dependent image isn't ready yet\");\n      return;\n    }\n\n    const width = imgData.width;\n    const height = imgData.height;\n    const map = [];\n    for (let i = 0, ii = positions.length; i < ii; i += 2) {\n      map.push({\n        transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n        x: 0,\n        y: 0,\n        w: width,\n        h: height,\n      });\n    }\n    this.paintInlineImageXObjectGroup(imgData, map);\n  }\n\n  paintInlineImageXObject(imgData) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const width = imgData.width;\n    const height = imgData.height;\n    const ctx = this.ctx;\n\n    this.save();\n    // scale the image to the unit square\n    ctx.scale(1 / width, -1 / height);\n\n    let imgToPaint;\n    // typeof check is needed due to node.js support, see issue #8489\n    if (\n      (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement) ||\n      !imgData.data\n    ) {\n      imgToPaint = imgData;\n    } else {\n      const tmpCanvas = this.cachedCanvases.getCanvas(\n        \"inlineImage\",\n        width,\n        height\n      );\n      const tmpCtx = tmpCanvas.context;\n      putBinaryImageData(tmpCtx, imgData, this.current.transferMaps);\n      imgToPaint = tmpCanvas.canvas;\n    }\n\n    const scaled = this._scaleImage(\n      imgToPaint,\n      getCurrentTransformInverse(ctx)\n    );\n    ctx.imageSmoothingEnabled = getImageSmoothingEnabled(\n      getCurrentTransform(ctx),\n      imgData.interpolate\n    );\n\n    const [rWidth, rHeight] = drawImageAtIntegerCoords(\n      ctx,\n      scaled.img,\n      0,\n      0,\n      scaled.paintWidth,\n      scaled.paintHeight,\n      0,\n      -height,\n      width,\n      height\n    );\n\n    if (this.imageLayer) {\n      const [left, top] = Util.applyTransform(\n        [0, -height],\n        getCurrentTransform(this.ctx)\n      );\n      this.imageLayer.appendImage({\n        imgData,\n        left,\n        top,\n        width: rWidth,\n        height: rHeight,\n      });\n    }\n    this.compose();\n    this.restore();\n  }\n\n  paintInlineImageXObjectGroup(imgData, map) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const ctx = this.ctx;\n    const w = imgData.width;\n    const h = imgData.height;\n\n    const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", w, h);\n    const tmpCtx = tmpCanvas.context;\n    putBinaryImageData(tmpCtx, imgData, this.current.transferMaps);\n\n    for (const entry of map) {\n      ctx.save();\n      ctx.transform(...entry.transform);\n      ctx.scale(1, -1);\n      drawImageAtIntegerCoords(\n        ctx,\n        tmpCanvas.canvas,\n        entry.x,\n        entry.y,\n        entry.w,\n        entry.h,\n        0,\n        -1,\n        1,\n        1\n      );\n      if (this.imageLayer) {\n        const [left, top] = Util.applyTransform(\n          [entry.x, entry.y],\n          getCurrentTransform(this.ctx)\n        );\n        this.imageLayer.appendImage({\n          imgData,\n          left,\n          top,\n          width: w,\n          height: h,\n        });\n      }\n      ctx.restore();\n    }\n    this.compose();\n  }\n\n  paintSolidColorImageMask() {\n    if (!this.contentVisible) {\n      return;\n    }\n    this.ctx.fillRect(0, 0, 1, 1);\n    this.compose();\n  }\n\n  // Marked content\n\n  markPoint(tag) {\n    // TODO Marked content.\n  }\n\n  markPointProps(tag, properties) {\n    // TODO Marked content.\n  }\n\n  beginMarkedContent(tag) {\n    this.markedContentStack.push({\n      visible: true,\n    });\n  }\n\n  beginMarkedContentProps(tag, properties) {\n    if (tag === \"OC\") {\n      this.markedContentStack.push({\n        visible: this.optionalContentConfig.isVisible(properties),\n      });\n    } else {\n      this.markedContentStack.push({\n        visible: true,\n      });\n    }\n    this.contentVisible = this.isContentVisible();\n  }\n\n  endMarkedContent() {\n    this.markedContentStack.pop();\n    this.contentVisible = this.isContentVisible();\n  }\n\n  // Compatibility\n\n  beginCompat() {\n    // TODO ignore undefined operators (should we do that anyway?)\n  }\n\n  endCompat() {\n    // TODO stop ignoring undefined operators\n  }\n\n  // Helper functions\n\n  consumePath(clipBox) {\n    const isEmpty = this.current.isEmptyClip();\n    if (this.pendingClip) {\n      this.current.updateClipFromPath();\n    }\n    if (!this.pendingClip) {\n      this.compose(clipBox);\n    }\n    const ctx = this.ctx;\n    if (this.pendingClip) {\n      if (!isEmpty) {\n        if (this.pendingClip === EO_CLIP) {\n          ctx.clip(\"evenodd\");\n        } else {\n          ctx.clip();\n        }\n      }\n      this.pendingClip = null;\n    }\n    this.current.startNewPathAndClipBox(this.current.clipBox);\n    ctx.beginPath();\n  }\n\n  getSinglePixelWidth() {\n    if (!this._cachedGetSinglePixelWidth) {\n      const m = getCurrentTransform(this.ctx);\n      if (m[1] === 0 && m[2] === 0) {\n        // Fast path\n        this._cachedGetSinglePixelWidth =\n          1 / Math.min(Math.abs(m[0]), Math.abs(m[3]));\n      } else {\n        const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n        const normX = Math.hypot(m[0], m[2]);\n        const normY = Math.hypot(m[1], m[3]);\n        this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet;\n      }\n    }\n    return this._cachedGetSinglePixelWidth;\n  }\n\n  getScaleForStroking() {\n    // A pixel has thicknessX = thicknessY = 1;\n    // A transformed pixel is a parallelogram and the thicknesses\n    // corresponds to the heights.\n    // The goal of this function is to rescale before setting the\n    // lineWidth in order to have both thicknesses greater or equal\n    // to 1 after transform.\n    if (!this._cachedScaleForStroking) {\n      const { lineWidth } = this.current;\n      const m = getCurrentTransform(this.ctx);\n      let scaleX, scaleY;\n\n      if (m[1] === 0 && m[2] === 0) {\n        // Fast path\n        const normX = Math.abs(m[0]);\n        const normY = Math.abs(m[3]);\n        if (lineWidth === 0) {\n          scaleX = 1 / normX;\n          scaleY = 1 / normY;\n        } else {\n          const scaledXLineWidth = normX * lineWidth;\n          const scaledYLineWidth = normY * lineWidth;\n          scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1;\n          scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1;\n        }\n      } else {\n        // A pixel (base (x, y)) is transformed by M into a parallelogram:\n        //  - its area is |det(M)|;\n        //  - heightY (orthogonal to Mx) has a length: |det(M)| / norm(Mx);\n        //  - heightX (orthogonal to My) has a length: |det(M)| / norm(My).\n        // heightX and heightY are the thicknesses of the transformed pixel\n        // and they must be both greater or equal to 1.\n        const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n        const normX = Math.hypot(m[0], m[1]);\n        const normY = Math.hypot(m[2], m[3]);\n        if (lineWidth === 0) {\n          scaleX = normY / absDet;\n          scaleY = normX / absDet;\n        } else {\n          const baseArea = lineWidth * absDet;\n          scaleX = normY > baseArea ? normY / baseArea : 1;\n          scaleY = normX > baseArea ? normX / baseArea : 1;\n        }\n      }\n      this._cachedScaleForStroking = [scaleX, scaleY];\n    }\n    return this._cachedScaleForStroking;\n  }\n\n  // Rescale before stroking in order to have a final lineWidth\n  // with both thicknesses greater or equal to 1.\n  rescaleAndStroke(saveRestore) {\n    const { ctx } = this;\n    const { lineWidth } = this.current;\n    const [scaleX, scaleY] = this.getScaleForStroking();\n\n    ctx.lineWidth = lineWidth || 1;\n\n    if (scaleX === 1 && scaleY === 1) {\n      ctx.stroke();\n      return;\n    }\n\n    let savedMatrix, savedDashes, savedDashOffset;\n    if (saveRestore) {\n      savedMatrix = getCurrentTransform(ctx);\n      savedDashes = ctx.getLineDash().slice();\n      savedDashOffset = ctx.lineDashOffset;\n    }\n\n    ctx.scale(scaleX, scaleY);\n\n    // How the dashed line is rendered depends on the current transform...\n    // so we added a rescale to handle too thin lines and consequently\n    // the way the line is dashed will be modified.\n    // If scaleX === scaleY, the dashed lines will be rendered correctly\n    // else we'll have some bugs (but only with too thin lines).\n    // Here we take the max... why not taking the min... or something else.\n    // Anyway, as said it's buggy when scaleX !== scaleY.\n    const scale = Math.max(scaleX, scaleY);\n    ctx.setLineDash(ctx.getLineDash().map(x => x / scale));\n    ctx.lineDashOffset /= scale;\n\n    ctx.stroke();\n\n    if (saveRestore) {\n      ctx.setTransform(...savedMatrix);\n      ctx.setLineDash(savedDashes);\n      ctx.lineDashOffset = savedDashOffset;\n    }\n  }\n\n  isContentVisible() {\n    for (let i = this.markedContentStack.length - 1; i >= 0; i--) {\n      if (!this.markedContentStack[i].visible) {\n        return false;\n      }\n    }\n    return true;\n  }\n}\n\nfor (const op in OPS) {\n  if (CanvasGraphics.prototype[op] !== undefined) {\n    CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n  }\n}\n\nexport { CanvasGraphics };\n", "/* Copyright 2014 Mozilla Foundation\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\nimport {\n  FormatError,\n  info,\n  shadow,\n  unreachable,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport { getCurrentTransform } from \"./display_utils.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\n\nconst PathType = {\n  FILL: \"Fill\",\n  STROKE: \"Stroke\",\n  SHADING: \"Shading\",\n};\n\nfunction applyBoundingBox(ctx, bbox) {\n  if (!bbox || isNodeJS) {\n    return;\n  }\n  const width = bbox[2] - bbox[0];\n  const height = bbox[3] - bbox[1];\n  const region = new Path2D();\n  region.rect(bbox[0], bbox[1], width, height);\n  ctx.clip(region);\n}\n\nclass BaseShadingPattern {\n  constructor() {\n    if (this.constructor === BaseShadingPattern) {\n      unreachable(\"Cannot initialize BaseShadingPattern.\");\n    }\n  }\n\n  getPattern() {\n    unreachable(\"Abstract method `getPattern` called.\");\n  }\n}\n\nclass RadialAxialShadingPattern extends BaseShadingPattern {\n  constructor(IR) {\n    super();\n    this._type = IR[1];\n    this._bbox = IR[2];\n    this._colorStops = IR[3];\n    this._p0 = IR[4];\n    this._p1 = IR[5];\n    this._r0 = IR[6];\n    this._r1 = IR[7];\n    this.matrix = null;\n  }\n\n  _createGradient(ctx) {\n    let grad;\n    if (this._type === \"axial\") {\n      grad = ctx.createLinearGradient(\n        this._p0[0],\n        this._p0[1],\n        this._p1[0],\n        this._p1[1]\n      );\n    } else if (this._type === \"radial\") {\n      grad = ctx.createRadialGradient(\n        this._p0[0],\n        this._p0[1],\n        this._r0,\n        this._p1[0],\n        this._p1[1],\n        this._r1\n      );\n    }\n\n    for (const colorStop of this._colorStops) {\n      grad.addColorStop(colorStop[0], colorStop[1]);\n    }\n    return grad;\n  }\n\n  getPattern(ctx, owner, inverse, pathType) {\n    let pattern;\n    if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n      const ownerBBox = owner.current.getClippedPathBoundingBox(\n        pathType,\n        getCurrentTransform(ctx)\n      ) || [0, 0, 0, 0];\n      // Create a canvas that is only as big as the current path. This doesn't\n      // allow us to cache the pattern, but it generally creates much smaller\n      // canvases and saves memory use. See bug 1722807 for an example.\n      const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n      const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n\n      const tmpCanvas = owner.cachedCanvases.getCanvas(\n        \"pattern\",\n        width,\n        height,\n        true\n      );\n\n      const tmpCtx = tmpCanvas.context;\n      tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n      tmpCtx.beginPath();\n      tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n      // Non shading fill patterns are positioned relative to the base transform\n      // (usually the page's initial transform), but we may have created a\n      // smaller canvas based on the path, so we must account for the shift.\n      tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n      inverse = Util.transform(inverse, [\n        1,\n        0,\n        0,\n        1,\n        ownerBBox[0],\n        ownerBBox[1],\n      ]);\n\n      tmpCtx.transform(...owner.baseTransform);\n      if (this.matrix) {\n        tmpCtx.transform(...this.matrix);\n      }\n      applyBoundingBox(tmpCtx, this._bbox);\n\n      tmpCtx.fillStyle = this._createGradient(tmpCtx);\n      tmpCtx.fill();\n\n      pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n      const domMatrix = new DOMMatrix(inverse);\n      try {\n        pattern.setTransform(domMatrix);\n      } catch (ex) {\n        // Avoid rendering breaking completely in Firefox 78 ESR,\n        // and in Node.js (see issue 13724).\n        warn(`RadialAxialShadingPattern.getPattern: \"${ex?.message}\".`);\n      }\n    } else {\n      // Shading fills are applied relative to the current matrix which is also\n      // how canvas gradients work, so there's no need to do anything special\n      // here.\n      applyBoundingBox(ctx, this._bbox);\n      pattern = this._createGradient(ctx);\n    }\n    return pattern;\n  }\n}\n\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n  // Very basic Gouraud-shaded triangle rasterization algorithm.\n  const coords = context.coords,\n    colors = context.colors;\n  const bytes = data.data,\n    rowSize = data.width * 4;\n  let tmp;\n  if (coords[p1 + 1] > coords[p2 + 1]) {\n    tmp = p1;\n    p1 = p2;\n    p2 = tmp;\n    tmp = c1;\n    c1 = c2;\n    c2 = tmp;\n  }\n  if (coords[p2 + 1] > coords[p3 + 1]) {\n    tmp = p2;\n    p2 = p3;\n    p3 = tmp;\n    tmp = c2;\n    c2 = c3;\n    c3 = tmp;\n  }\n  if (coords[p1 + 1] > coords[p2 + 1]) {\n    tmp = p1;\n    p1 = p2;\n    p2 = tmp;\n    tmp = c1;\n    c1 = c2;\n    c2 = tmp;\n  }\n  const x1 = (coords[p1] + context.offsetX) * context.scaleX;\n  const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n  const x2 = (coords[p2] + context.offsetX) * context.scaleX;\n  const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n  const x3 = (coords[p3] + context.offsetX) * context.scaleX;\n  const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n  if (y1 >= y3) {\n    return;\n  }\n  const c1r = colors[c1],\n    c1g = colors[c1 + 1],\n    c1b = colors[c1 + 2];\n  const c2r = colors[c2],\n    c2g = colors[c2 + 1],\n    c2b = colors[c2 + 2];\n  const c3r = colors[c3],\n    c3g = colors[c3 + 1],\n    c3b = colors[c3 + 2];\n\n  const minY = Math.round(y1),\n    maxY = Math.round(y3);\n  let xa, car, cag, cab;\n  let xb, cbr, cbg, cbb;\n  for (let y = minY; y <= maxY; y++) {\n    if (y < y2) {\n      let k;\n      if (y < y1) {\n        k = 0;\n      } else {\n        k = (y1 - y) / (y1 - y2);\n      }\n      xa = x1 - (x1 - x2) * k;\n      car = c1r - (c1r - c2r) * k;\n      cag = c1g - (c1g - c2g) * k;\n      cab = c1b - (c1b - c2b) * k;\n    } else {\n      let k;\n      if (y > y3) {\n        k = 1;\n      } else if (y2 === y3) {\n        k = 0;\n      } else {\n        k = (y2 - y) / (y2 - y3);\n      }\n      xa = x2 - (x2 - x3) * k;\n      car = c2r - (c2r - c3r) * k;\n      cag = c2g - (c2g - c3g) * k;\n      cab = c2b - (c2b - c3b) * k;\n    }\n\n    let k;\n    if (y < y1) {\n      k = 0;\n    } else if (y > y3) {\n      k = 1;\n    } else {\n      k = (y1 - y) / (y1 - y3);\n    }\n    xb = x1 - (x1 - x3) * k;\n    cbr = c1r - (c1r - c3r) * k;\n    cbg = c1g - (c1g - c3g) * k;\n    cbb = c1b - (c1b - c3b) * k;\n    const x1_ = Math.round(Math.min(xa, xb));\n    const x2_ = Math.round(Math.max(xa, xb));\n    let j = rowSize * y + x1_ * 4;\n    for (let x = x1_; x <= x2_; x++) {\n      k = (xa - x) / (xa - xb);\n      if (k < 0) {\n        k = 0;\n      } else if (k > 1) {\n        k = 1;\n      }\n      bytes[j++] = (car - (car - cbr) * k) | 0;\n      bytes[j++] = (cag - (cag - cbg) * k) | 0;\n      bytes[j++] = (cab - (cab - cbb) * k) | 0;\n      bytes[j++] = 255;\n    }\n  }\n}\n\nfunction drawFigure(data, figure, context) {\n  const ps = figure.coords;\n  const cs = figure.colors;\n  let i, ii;\n  switch (figure.type) {\n    case \"lattice\":\n      const verticesPerRow = figure.verticesPerRow;\n      const rows = Math.floor(ps.length / verticesPerRow) - 1;\n      const cols = verticesPerRow - 1;\n      for (i = 0; i < rows; i++) {\n        let q = i * verticesPerRow;\n        for (let j = 0; j < cols; j++, q++) {\n          drawTriangle(\n            data,\n            context,\n            ps[q],\n            ps[q + 1],\n            ps[q + verticesPerRow],\n            cs[q],\n            cs[q + 1],\n            cs[q + verticesPerRow]\n          );\n          drawTriangle(\n            data,\n            context,\n            ps[q + verticesPerRow + 1],\n            ps[q + 1],\n            ps[q + verticesPerRow],\n            cs[q + verticesPerRow + 1],\n            cs[q + 1],\n            cs[q + verticesPerRow]\n          );\n        }\n      }\n      break;\n    case \"triangles\":\n      for (i = 0, ii = ps.length; i < ii; i += 3) {\n        drawTriangle(\n          data,\n          context,\n          ps[i],\n          ps[i + 1],\n          ps[i + 2],\n          cs[i],\n          cs[i + 1],\n          cs[i + 2]\n        );\n      }\n      break;\n    default:\n      throw new Error(\"illegal figure\");\n  }\n}\n\nclass MeshShadingPattern extends BaseShadingPattern {\n  constructor(IR) {\n    super();\n    this._coords = IR[2];\n    this._colors = IR[3];\n    this._figures = IR[4];\n    this._bounds = IR[5];\n    this._bbox = IR[7];\n    this._background = IR[8];\n    this.matrix = null;\n  }\n\n  _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n    // we will increase scale on some weird factor to let antialiasing take\n    // care of \"rough\" edges\n    const EXPECTED_SCALE = 1.1;\n    // MAX_PATTERN_SIZE is used to avoid OOM situation.\n    const MAX_PATTERN_SIZE = 3000; // 10in @ 300dpi shall be enough\n    // We need to keep transparent border around our pattern for fill():\n    // createPattern with 'no-repeat' will bleed edges across entire area.\n    const BORDER_SIZE = 2;\n\n    const offsetX = Math.floor(this._bounds[0]);\n    const offsetY = Math.floor(this._bounds[1]);\n    const boundsWidth = Math.ceil(this._bounds[2]) - offsetX;\n    const boundsHeight = Math.ceil(this._bounds[3]) - offsetY;\n\n    const width = Math.min(\n      Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)),\n      MAX_PATTERN_SIZE\n    );\n    const height = Math.min(\n      Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)),\n      MAX_PATTERN_SIZE\n    );\n    const scaleX = boundsWidth / width;\n    const scaleY = boundsHeight / height;\n\n    const context = {\n      coords: this._coords,\n      colors: this._colors,\n      offsetX: -offsetX,\n      offsetY: -offsetY,\n      scaleX: 1 / scaleX,\n      scaleY: 1 / scaleY,\n    };\n\n    const paddedWidth = width + BORDER_SIZE * 2;\n    const paddedHeight = height + BORDER_SIZE * 2;\n\n    const tmpCanvas = cachedCanvases.getCanvas(\n      \"mesh\",\n      paddedWidth,\n      paddedHeight,\n      false\n    );\n    const tmpCtx = tmpCanvas.context;\n\n    const data = tmpCtx.createImageData(width, height);\n    if (backgroundColor) {\n      const bytes = data.data;\n      for (let i = 0, ii = bytes.length; i < ii; i += 4) {\n        bytes[i] = backgroundColor[0];\n        bytes[i + 1] = backgroundColor[1];\n        bytes[i + 2] = backgroundColor[2];\n        bytes[i + 3] = 255;\n      }\n    }\n    for (const figure of this._figures) {\n      drawFigure(data, figure, context);\n    }\n    tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n    const canvas = tmpCanvas.canvas;\n\n    return {\n      canvas,\n      offsetX: offsetX - BORDER_SIZE * scaleX,\n      offsetY: offsetY - BORDER_SIZE * scaleY,\n      scaleX,\n      scaleY,\n    };\n  }\n\n  getPattern(ctx, owner, inverse, pathType) {\n    applyBoundingBox(ctx, this._bbox);\n    let scale;\n    if (pathType === PathType.SHADING) {\n      scale = Util.singularValueDecompose2dScale(getCurrentTransform(ctx));\n    } else {\n      // Obtain scale from matrix and current transformation matrix.\n      scale = Util.singularValueDecompose2dScale(owner.baseTransform);\n      if (this.matrix) {\n        const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n        scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];\n      }\n    }\n\n    // Rasterizing on the main thread since sending/queue large canvases\n    // might cause OOM.\n    const temporaryPatternCanvas = this._createMeshCanvas(\n      scale,\n      pathType === PathType.SHADING ? null : this._background,\n      owner.cachedCanvases\n    );\n\n    if (pathType !== PathType.SHADING) {\n      ctx.setTransform(...owner.baseTransform);\n      if (this.matrix) {\n        ctx.transform(...this.matrix);\n      }\n    }\n\n    ctx.translate(\n      temporaryPatternCanvas.offsetX,\n      temporaryPatternCanvas.offsetY\n    );\n    ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n\n    return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n  }\n}\n\nclass DummyShadingPattern extends BaseShadingPattern {\n  getPattern() {\n    return \"hotpink\";\n  }\n}\n\nfunction getShadingPattern(IR) {\n  switch (IR[0]) {\n    case \"RadialAxial\":\n      return new RadialAxialShadingPattern(IR);\n    case \"Mesh\":\n      return new MeshShadingPattern(IR);\n    case \"Dummy\":\n      return new DummyShadingPattern();\n  }\n  throw new Error(`Unknown IR type: ${IR[0]}`);\n}\n\nconst PaintType = {\n  COLORED: 1,\n  UNCOLORED: 2,\n};\n\nclass TilingPattern {\n  // 10in @ 300dpi shall be enough.\n  static get MAX_PATTERN_SIZE() {\n    return shadow(this, \"MAX_PATTERN_SIZE\", 3000);\n  }\n\n  constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n    this.operatorList = IR[2];\n    this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];\n    this.bbox = IR[4];\n    this.xstep = IR[5];\n    this.ystep = IR[6];\n    this.paintType = IR[7];\n    this.tilingType = IR[8];\n    this.color = color;\n    this.ctx = ctx;\n    this.canvasGraphicsFactory = canvasGraphicsFactory;\n    this.baseTransform = baseTransform;\n  }\n\n  createPatternCanvas(owner) {\n    const operatorList = this.operatorList;\n    const bbox = this.bbox;\n    const xstep = this.xstep;\n    const ystep = this.ystep;\n    const paintType = this.paintType;\n    const tilingType = this.tilingType;\n    const color = this.color;\n    const canvasGraphicsFactory = this.canvasGraphicsFactory;\n\n    info(\"TilingType: \" + tilingType);\n\n    // A tiling pattern as defined by PDF spec 8.7.2 is a cell whose size is\n    // described by bbox, and may repeat regularly by shifting the cell by\n    // xstep and ystep.\n    // Because the HTML5 canvas API does not support pattern repetition with\n    // gaps in between, we use the xstep/ystep instead of the bbox's size.\n    //\n    // This has the following consequences (similarly for ystep):\n    //\n    // - If xstep is the same as bbox, then there is no observable difference.\n    //\n    // - If xstep is larger than bbox, then the pattern canvas is partially\n    //   empty: the area bounded by bbox is painted, the outside area is void.\n    //\n    // - If xstep is smaller than bbox, then the pixels between xstep and the\n    //   bbox boundary will be missing. This is INCORRECT behavior.\n    //   \"Figures on adjacent tiles should not overlap\" (PDF spec 8.7.3.1),\n    //   but overlapping cells without common pixels are still valid.\n    //   TODO: Fix the implementation, to allow this scenario to be painted\n    //   correctly.\n\n    const x0 = bbox[0],\n      y0 = bbox[1],\n      x1 = bbox[2],\n      y1 = bbox[3];\n\n    // Obtain scale from matrix and current transformation matrix.\n    const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n    const curMatrixScale = Util.singularValueDecompose2dScale(\n      this.baseTransform\n    );\n    const combinedScale = [\n      matrixScale[0] * curMatrixScale[0],\n      matrixScale[1] * curMatrixScale[1],\n    ];\n\n    // Use width and height values that are as close as possible to the end\n    // result when the pattern is used. Too low value makes the pattern look\n    // blurry. Too large value makes it look too crispy.\n    const dimx = this.getSizeAndScale(\n      xstep,\n      this.ctx.canvas.width,\n      combinedScale[0]\n    );\n    const dimy = this.getSizeAndScale(\n      ystep,\n      this.ctx.canvas.height,\n      combinedScale[1]\n    );\n\n    const tmpCanvas = owner.cachedCanvases.getCanvas(\n      \"pattern\",\n      dimx.size,\n      dimy.size,\n      true\n    );\n    const tmpCtx = tmpCanvas.context;\n    const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n    graphics.groupLevel = owner.groupLevel;\n\n    this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n\n    let adjustedX0 = x0;\n    let adjustedY0 = y0;\n    let adjustedX1 = x1;\n    let adjustedY1 = y1;\n    // Some bounding boxes have negative x0/y0 coordinates which will cause the\n    // some of the drawing to be off of the canvas. To avoid this shift the\n    // bounding box over.\n    if (x0 < 0) {\n      adjustedX0 = 0;\n      adjustedX1 += Math.abs(x0);\n    }\n    if (y0 < 0) {\n      adjustedY0 = 0;\n      adjustedY1 += Math.abs(y0);\n    }\n    tmpCtx.translate(-(dimx.scale * adjustedX0), -(dimy.scale * adjustedY0));\n    graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\n\n    // To match CanvasGraphics beginDrawing we must save the context here or\n    // else we end up with unbalanced save/restores.\n    tmpCtx.save();\n\n    this.clipBbox(graphics, adjustedX0, adjustedY0, adjustedX1, adjustedY1);\n\n    graphics.baseTransform = getCurrentTransform(graphics.ctx);\n\n    graphics.executeOperatorList(operatorList);\n\n    graphics.endDrawing();\n\n    return {\n      canvas: tmpCanvas.canvas,\n      scaleX: dimx.scale,\n      scaleY: dimy.scale,\n      offsetX: adjustedX0,\n      offsetY: adjustedY0,\n    };\n  }\n\n  getSizeAndScale(step, realOutputSize, scale) {\n    // xstep / ystep may be negative -- normalize.\n    step = Math.abs(step);\n    // MAX_PATTERN_SIZE is used to avoid OOM situation.\n    // Use the destination canvas's size if it is bigger than the hard-coded\n    // limit of MAX_PATTERN_SIZE to avoid clipping patterns that cover the\n    // whole canvas.\n    const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\n    let size = Math.ceil(step * scale);\n    if (size >= maxSize) {\n      size = maxSize;\n    } else {\n      scale = size / step;\n    }\n    return { scale, size };\n  }\n\n  clipBbox(graphics, x0, y0, x1, y1) {\n    const bboxWidth = x1 - x0;\n    const bboxHeight = y1 - y0;\n    graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n    graphics.current.updateRectMinMax(getCurrentTransform(graphics.ctx), [\n      x0,\n      y0,\n      x1,\n      y1,\n    ]);\n    graphics.clip();\n    graphics.endPath();\n  }\n\n  setFillAndStrokeStyleToContext(graphics, paintType, color) {\n    const context = graphics.ctx,\n      current = graphics.current;\n    switch (paintType) {\n      case PaintType.COLORED:\n        const ctx = this.ctx;\n        context.fillStyle = ctx.fillStyle;\n        context.strokeStyle = ctx.strokeStyle;\n        current.fillColor = ctx.fillStyle;\n        current.strokeColor = ctx.strokeStyle;\n        break;\n      case PaintType.UNCOLORED:\n        const cssColor = Util.makeHexColor(color[0], color[1], color[2]);\n        context.fillStyle = cssColor;\n        context.strokeStyle = cssColor;\n        // Set color needed by image masks (fixes issues 3226 and 8741).\n        current.fillColor = cssColor;\n        current.strokeColor = cssColor;\n        break;\n      default:\n        throw new FormatError(`Unsupported paint type: ${paintType}`);\n    }\n  }\n\n  getPattern(ctx, owner, inverse, pathType) {\n    // PDF spec 8.7.2 NOTE 1: pattern's matrix is relative to initial matrix.\n    let matrix = inverse;\n    if (pathType !== PathType.SHADING) {\n      matrix = Util.transform(matrix, owner.baseTransform);\n      if (this.matrix) {\n        matrix = Util.transform(matrix, this.matrix);\n      }\n    }\n\n    const temporaryPatternCanvas = this.createPatternCanvas(owner);\n\n    let domMatrix = new DOMMatrix(matrix);\n    // Rescale and so that the ctx.createPattern call generates a pattern with\n    // the desired size.\n    domMatrix = domMatrix.translate(\n      temporaryPatternCanvas.offsetX,\n      temporaryPatternCanvas.offsetY\n    );\n    domMatrix = domMatrix.scale(\n      1 / temporaryPatternCanvas.scaleX,\n      1 / temporaryPatternCanvas.scaleY\n    );\n\n    const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n    try {\n      pattern.setTransform(domMatrix);\n    } catch (ex) {\n      // Avoid rendering breaking completely in Firefox 78 ESR,\n      // and in Node.js (see issue 13724).\n      warn(`TilingPattern.getPattern: \"${ex?.message}\".`);\n    }\n    return pattern;\n  }\n}\n\nexport { getShadingPattern, PathType, TilingPattern };\n", "/* Copyright 2022 Mozilla Foundation\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\nimport { FeatureTest } from \"./util.js\";\n\nfunction applyMaskImageData({\n  src,\n  srcPos = 0,\n  dest,\n  destPos = 0,\n  width,\n  height,\n  inverseDecode = false,\n}) {\n  const opaque = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n  const [zeroMapping, oneMapping] = !inverseDecode ? [opaque, 0] : [0, opaque];\n  const widthInSource = width >> 3;\n  const widthRemainder = width & 7;\n  const srcLength = src.length;\n  dest = new Uint32Array(dest.buffer);\n\n  for (let i = 0; i < height; i++) {\n    for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {\n      const elem = srcPos < srcLength ? src[srcPos] : 255;\n      dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\n    }\n    if (widthRemainder === 0) {\n      continue;\n    }\n    const elem = srcPos < srcLength ? src[srcPos++] : 255;\n    for (let j = 0; j < widthRemainder; j++) {\n      dest[destPos++] = elem & (1 << (7 - j)) ? oneMapping : zeroMapping;\n    }\n  }\n\n  return { srcPos, destPos };\n}\n\nexport { applyMaskImageData };\n", "/* Copyright 2018 Mozilla Foundation\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 * @typedef {Object} GlobalWorkerOptionsType\n * @property {Worker | null} workerPort - Defines global port for worker\n *   process. Overrides the `workerSrc` option.\n * @property {string} workerSrc - A string containing the path and filename\n *   of the worker file.\n *\n *   NOTE: The `workerSrc` option should always be set, in order to prevent any\n *         issues when using the PDF.js library.\n */\n\n/** @type {GlobalWorkerOptionsType} */\nconst GlobalWorkerOptions = Object.create(null);\n\nGlobalWorkerOptions.workerPort =\n  GlobalWorkerOptions.workerPort === undefined\n    ? null\n    : GlobalWorkerOptions.workerPort;\n\nGlobalWorkerOptions.workerSrc =\n  GlobalWorkerOptions.workerSrc === undefined\n    ? \"\"\n    : GlobalWorkerOptions.workerSrc;\n\nexport { GlobalWorkerOptions };\n", "/* Copyright 2018 Mozilla Foundation\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\nimport {\n  AbortException,\n  assert,\n  createPromiseCapability,\n  MissingPDFException,\n  PasswordException,\n  UnexpectedResponseException,\n  UnknownErrorException,\n  unreachable,\n} from \"./util.js\";\n\nconst CallbackKind = {\n  UNKNOWN: 0,\n  DATA: 1,\n  ERROR: 2,\n};\n\nconst StreamKind = {\n  UNKNOWN: 0,\n  CANCEL: 1,\n  CANCEL_COMPLETE: 2,\n  CLOSE: 3,\n  ENQUEUE: 4,\n  ERROR: 5,\n  PULL: 6,\n  PULL_COMPLETE: 7,\n  START_COMPLETE: 8,\n};\n\nfunction wrapReason(reason) {\n  if (\n    !(\n      reason instanceof Error ||\n      (typeof reason === \"object\" && reason !== null)\n    )\n  ) {\n    unreachable(\n      'wrapReason: Expected \"reason\" to be a (possibly cloned) Error.'\n    );\n  }\n  switch (reason.name) {\n    case \"AbortException\":\n      return new AbortException(reason.message);\n    case \"MissingPDFException\":\n      return new MissingPDFException(reason.message);\n    case \"PasswordException\":\n      return new PasswordException(reason.message, reason.code);\n    case \"UnexpectedResponseException\":\n      return new UnexpectedResponseException(reason.message, reason.status);\n    case \"UnknownErrorException\":\n      return new UnknownErrorException(reason.message, reason.details);\n    default:\n      return new UnknownErrorException(reason.message, reason.toString());\n  }\n}\n\nclass MessageHandler {\n  constructor(sourceName, targetName, comObj) {\n    this.sourceName = sourceName;\n    this.targetName = targetName;\n    this.comObj = comObj;\n    this.callbackId = 1;\n    this.streamId = 1;\n    this.streamSinks = Object.create(null);\n    this.streamControllers = Object.create(null);\n    this.callbackCapabilities = Object.create(null);\n    this.actionHandler = Object.create(null);\n\n    this._onComObjOnMessage = event => {\n      const data = event.data;\n      if (data.targetName !== this.sourceName) {\n        return;\n      }\n      if (data.stream) {\n        this._processStreamMessage(data);\n        return;\n      }\n      if (data.callback) {\n        const callbackId = data.callbackId;\n        const capability = this.callbackCapabilities[callbackId];\n        if (!capability) {\n          throw new Error(`Cannot resolve callback ${callbackId}`);\n        }\n        delete this.callbackCapabilities[callbackId];\n\n        if (data.callback === CallbackKind.DATA) {\n          capability.resolve(data.data);\n        } else if (data.callback === CallbackKind.ERROR) {\n          capability.reject(wrapReason(data.reason));\n        } else {\n          throw new Error(\"Unexpected callback case\");\n        }\n        return;\n      }\n      const action = this.actionHandler[data.action];\n      if (!action) {\n        throw new Error(`Unknown action from worker: ${data.action}`);\n      }\n      if (data.callbackId) {\n        const cbSourceName = this.sourceName;\n        const cbTargetName = data.sourceName;\n\n        new Promise(function (resolve) {\n          resolve(action(data.data));\n        }).then(\n          function (result) {\n            comObj.postMessage({\n              sourceName: cbSourceName,\n              targetName: cbTargetName,\n              callback: CallbackKind.DATA,\n              callbackId: data.callbackId,\n              data: result,\n            });\n          },\n          function (reason) {\n            comObj.postMessage({\n              sourceName: cbSourceName,\n              targetName: cbTargetName,\n              callback: CallbackKind.ERROR,\n              callbackId: data.callbackId,\n              reason: wrapReason(reason),\n            });\n          }\n        );\n        return;\n      }\n      if (data.streamId) {\n        this._createStreamSink(data);\n        return;\n      }\n      action(data.data);\n    };\n    comObj.addEventListener(\"message\", this._onComObjOnMessage);\n  }\n\n  on(actionName, handler) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        typeof handler === \"function\",\n        'MessageHandler.on: Expected \"handler\" to be a function.'\n      );\n    }\n    const ah = this.actionHandler;\n    if (ah[actionName]) {\n      throw new Error(`There is already an actionName called \"${actionName}\"`);\n    }\n    ah[actionName] = handler;\n  }\n\n  /**\n   * Sends a message to the comObj to invoke the action with the supplied data.\n   * @param {string} actionName - Action to call.\n   * @param {JSON} data - JSON data to send.\n   * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n   */\n  send(actionName, data, transfers) {\n    this.comObj.postMessage(\n      {\n        sourceName: this.sourceName,\n        targetName: this.targetName,\n        action: actionName,\n        data,\n      },\n      transfers\n    );\n  }\n\n  /**\n   * Sends a message to the comObj to invoke the action with the supplied data.\n   * Expects that the other side will callback with the response.\n   * @param {string} actionName - Action to call.\n   * @param {JSON} data - JSON data to send.\n   * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n   * @returns {Promise} Promise to be resolved with response data.\n   */\n  sendWithPromise(actionName, data, transfers) {\n    const callbackId = this.callbackId++;\n    const capability = createPromiseCapability();\n    this.callbackCapabilities[callbackId] = capability;\n    try {\n      this.comObj.postMessage(\n        {\n          sourceName: this.sourceName,\n          targetName: this.targetName,\n          action: actionName,\n          callbackId,\n          data,\n        },\n        transfers\n      );\n    } catch (ex) {\n      capability.reject(ex);\n    }\n    return capability.promise;\n  }\n\n  /**\n   * Sends a message to the comObj to invoke the action with the supplied data.\n   * Expect that the other side will callback to signal 'start_complete'.\n   * @param {string} actionName - Action to call.\n   * @param {JSON} data - JSON data to send.\n   * @param {Object} queueingStrategy - Strategy to signal backpressure based on\n   *                 internal queue.\n   * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n   * @returns {ReadableStream} ReadableStream to read data in chunks.\n   */\n  sendWithStream(actionName, data, queueingStrategy, transfers) {\n    const streamId = this.streamId++,\n      sourceName = this.sourceName,\n      targetName = this.targetName,\n      comObj = this.comObj;\n\n    return new ReadableStream(\n      {\n        start: controller => {\n          const startCapability = createPromiseCapability();\n          this.streamControllers[streamId] = {\n            controller,\n            startCall: startCapability,\n            pullCall: null,\n            cancelCall: null,\n            isClosed: false,\n          };\n          comObj.postMessage(\n            {\n              sourceName,\n              targetName,\n              action: actionName,\n              streamId,\n              data,\n              desiredSize: controller.desiredSize,\n            },\n            transfers\n          );\n          // Return Promise for Async process, to signal success/failure.\n          return startCapability.promise;\n        },\n\n        pull: controller => {\n          const pullCapability = createPromiseCapability();\n          this.streamControllers[streamId].pullCall = pullCapability;\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.PULL,\n            streamId,\n            desiredSize: controller.desiredSize,\n          });\n          // Returning Promise will not call \"pull\"\n          // again until current pull is resolved.\n          return pullCapability.promise;\n        },\n\n        cancel: reason => {\n          assert(reason instanceof Error, \"cancel must have a valid reason\");\n          const cancelCapability = createPromiseCapability();\n          this.streamControllers[streamId].cancelCall = cancelCapability;\n          this.streamControllers[streamId].isClosed = true;\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.CANCEL,\n            streamId,\n            reason: wrapReason(reason),\n          });\n          // Return Promise to signal success or failure.\n          return cancelCapability.promise;\n        },\n      },\n      queueingStrategy\n    );\n  }\n\n  /**\n   * @private\n   */\n  _createStreamSink(data) {\n    const streamId = data.streamId,\n      sourceName = this.sourceName,\n      targetName = data.sourceName,\n      comObj = this.comObj;\n    const self = this,\n      action = this.actionHandler[data.action];\n\n    const streamSink = {\n      enqueue(chunk, size = 1, transfers) {\n        if (this.isCancelled) {\n          return;\n        }\n        const lastDesiredSize = this.desiredSize;\n        this.desiredSize -= size;\n        // Enqueue decreases the desiredSize property of sink,\n        // so when it changes from positive to negative,\n        // set ready as unresolved promise.\n        if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n          this.sinkCapability = createPromiseCapability();\n          this.ready = this.sinkCapability.promise;\n        }\n        comObj.postMessage(\n          {\n            sourceName,\n            targetName,\n            stream: StreamKind.ENQUEUE,\n            streamId,\n            chunk,\n          },\n          transfers\n        );\n      },\n\n      close() {\n        if (this.isCancelled) {\n          return;\n        }\n        this.isCancelled = true;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.CLOSE,\n          streamId,\n        });\n        delete self.streamSinks[streamId];\n      },\n\n      error(reason) {\n        assert(reason instanceof Error, \"error must have a valid reason\");\n        if (this.isCancelled) {\n          return;\n        }\n        this.isCancelled = true;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.ERROR,\n          streamId,\n          reason: wrapReason(reason),\n        });\n      },\n\n      sinkCapability: createPromiseCapability(),\n      onPull: null,\n      onCancel: null,\n      isCancelled: false,\n      desiredSize: data.desiredSize,\n      ready: null,\n    };\n\n    streamSink.sinkCapability.resolve();\n    streamSink.ready = streamSink.sinkCapability.promise;\n    this.streamSinks[streamId] = streamSink;\n\n    new Promise(function (resolve) {\n      resolve(action(data.data, streamSink));\n    }).then(\n      function () {\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.START_COMPLETE,\n          streamId,\n          success: true,\n        });\n      },\n      function (reason) {\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.START_COMPLETE,\n          streamId,\n          reason: wrapReason(reason),\n        });\n      }\n    );\n  }\n\n  /**\n   * @private\n   */\n  _processStreamMessage(data) {\n    const streamId = data.streamId,\n      sourceName = this.sourceName,\n      targetName = data.sourceName,\n      comObj = this.comObj;\n    const streamController = this.streamControllers[streamId],\n      streamSink = this.streamSinks[streamId];\n\n    switch (data.stream) {\n      case StreamKind.START_COMPLETE:\n        if (data.success) {\n          streamController.startCall.resolve();\n        } else {\n          streamController.startCall.reject(wrapReason(data.reason));\n        }\n        break;\n      case StreamKind.PULL_COMPLETE:\n        if (data.success) {\n          streamController.pullCall.resolve();\n        } else {\n          streamController.pullCall.reject(wrapReason(data.reason));\n        }\n        break;\n      case StreamKind.PULL:\n        // Ignore any pull after close is called.\n        if (!streamSink) {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.PULL_COMPLETE,\n            streamId,\n            success: true,\n          });\n          break;\n        }\n        // Pull increases the desiredSize property of sink, so when it changes\n        // from negative to positive, set ready property as resolved promise.\n        if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n          streamSink.sinkCapability.resolve();\n        }\n        // Reset desiredSize property of sink on every pull.\n        streamSink.desiredSize = data.desiredSize;\n\n        new Promise(function (resolve) {\n          resolve(streamSink.onPull && streamSink.onPull());\n        }).then(\n          function () {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.PULL_COMPLETE,\n              streamId,\n              success: true,\n            });\n          },\n          function (reason) {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.PULL_COMPLETE,\n              streamId,\n              reason: wrapReason(reason),\n            });\n          }\n        );\n        break;\n      case StreamKind.ENQUEUE:\n        assert(streamController, \"enqueue should have stream controller\");\n        if (streamController.isClosed) {\n          break;\n        }\n        streamController.controller.enqueue(data.chunk);\n        break;\n      case StreamKind.CLOSE:\n        assert(streamController, \"close should have stream controller\");\n        if (streamController.isClosed) {\n          break;\n        }\n        streamController.isClosed = true;\n        streamController.controller.close();\n        this._deleteStreamController(streamController, streamId);\n        break;\n      case StreamKind.ERROR:\n        assert(streamController, \"error should have stream controller\");\n        streamController.controller.error(wrapReason(data.reason));\n        this._deleteStreamController(streamController, streamId);\n        break;\n      case StreamKind.CANCEL_COMPLETE:\n        if (data.success) {\n          streamController.cancelCall.resolve();\n        } else {\n          streamController.cancelCall.reject(wrapReason(data.reason));\n        }\n        this._deleteStreamController(streamController, streamId);\n        break;\n      case StreamKind.CANCEL:\n        if (!streamSink) {\n          break;\n        }\n\n        new Promise(function (resolve) {\n          resolve(\n            streamSink.onCancel && streamSink.onCancel(wrapReason(data.reason))\n          );\n        }).then(\n          function () {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.CANCEL_COMPLETE,\n              streamId,\n              success: true,\n            });\n          },\n          function (reason) {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.CANCEL_COMPLETE,\n              streamId,\n              reason: wrapReason(reason),\n            });\n          }\n        );\n        streamSink.sinkCapability.reject(wrapReason(data.reason));\n        streamSink.isCancelled = true;\n        delete this.streamSinks[streamId];\n        break;\n      default:\n        throw new Error(\"Unexpected stream case\");\n    }\n  }\n\n  /**\n   * @private\n   */\n  async _deleteStreamController(streamController, streamId) {\n    // Delete the `streamController` only when the start, pull, and cancel\n    // capabilities have settled, to prevent `TypeError`s.\n    await Promise.allSettled([\n      streamController.startCall && streamController.startCall.promise,\n      streamController.pullCall && streamController.pullCall.promise,\n      streamController.cancelCall && streamController.cancelCall.promise,\n    ]);\n    delete this.streamControllers[streamId];\n  }\n\n  destroy() {\n    this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n  }\n}\n\nexport { MessageHandler };\n", "/* Copyright 2012 Mozilla Foundation\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\nimport { objectFromMap } from \"../shared/util.js\";\n\nclass Metadata {\n  #metadataMap;\n\n  #data;\n\n  constructor({ parsedData, rawData }) {\n    this.#metadataMap = parsedData;\n    this.#data = rawData;\n  }\n\n  getRaw() {\n    return this.#data;\n  }\n\n  get(name) {\n    return this.#metadataMap.get(name) ?? null;\n  }\n\n  getAll() {\n    return objectFromMap(this.#metadataMap);\n  }\n\n  has(name) {\n    return this.#metadataMap.has(name);\n  }\n}\n\nexport { Metadata };\n", "/* Copyright 2020 Mozilla Foundation\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\nimport { objectFromMap, unreachable, warn } from \"../shared/util.js\";\n\nconst INTERNAL = Symbol(\"INTERNAL\");\n\nclass OptionalContentGroup {\n  #visible = true;\n\n  constructor(name, intent) {\n    this.name = name;\n    this.intent = intent;\n  }\n\n  /**\n   * @type {boolean}\n   */\n  get visible() {\n    return this.#visible;\n  }\n\n  /**\n   * @ignore\n   */\n  _setVisible(internal, visible) {\n    if (internal !== INTERNAL) {\n      unreachable(\"Internal method `_setVisible` called.\");\n    }\n    this.#visible = visible;\n  }\n}\n\nclass OptionalContentConfig {\n  #cachedHasInitialVisibility = true;\n\n  #groups = new Map();\n\n  #initialVisibility = null;\n\n  #order = null;\n\n  constructor(data) {\n    this.name = null;\n    this.creator = null;\n\n    if (data === null) {\n      return;\n    }\n    this.name = data.name;\n    this.creator = data.creator;\n    this.#order = data.order;\n    for (const group of data.groups) {\n      this.#groups.set(\n        group.id,\n        new OptionalContentGroup(group.name, group.intent)\n      );\n    }\n\n    if (data.baseState === \"OFF\") {\n      for (const group of this.#groups.values()) {\n        group._setVisible(INTERNAL, false);\n      }\n    }\n\n    for (const on of data.on) {\n      this.#groups.get(on)._setVisible(INTERNAL, true);\n    }\n\n    for (const off of data.off) {\n      this.#groups.get(off)._setVisible(INTERNAL, false);\n    }\n\n    // The following code must always run *last* in the constructor.\n    this.#initialVisibility = new Map();\n    for (const [id, group] of this.#groups) {\n      this.#initialVisibility.set(id, group.visible);\n    }\n  }\n\n  #evaluateVisibilityExpression(array) {\n    const length = array.length;\n    if (length < 2) {\n      return true;\n    }\n    const operator = array[0];\n    for (let i = 1; i < length; i++) {\n      const element = array[i];\n      let state;\n      if (Array.isArray(element)) {\n        state = this.#evaluateVisibilityExpression(element);\n      } else if (this.#groups.has(element)) {\n        state = this.#groups.get(element).visible;\n      } else {\n        warn(`Optional content group not found: ${element}`);\n        return true;\n      }\n      switch (operator) {\n        case \"And\":\n          if (!state) {\n            return false;\n          }\n          break;\n        case \"Or\":\n          if (state) {\n            return true;\n          }\n          break;\n        case \"Not\":\n          return !state;\n        default:\n          return true;\n      }\n    }\n    return operator === \"And\";\n  }\n\n  isVisible(group) {\n    if (this.#groups.size === 0) {\n      return true;\n    }\n    if (!group) {\n      warn(\"Optional content group not defined.\");\n      return true;\n    }\n    if (group.type === \"OCG\") {\n      if (!this.#groups.has(group.id)) {\n        warn(`Optional content group not found: ${group.id}`);\n        return true;\n      }\n      return this.#groups.get(group.id).visible;\n    } else if (group.type === \"OCMD\") {\n      // Per the spec, the expression should be preferred if available.\n      if (group.expression) {\n        return this.#evaluateVisibilityExpression(group.expression);\n      }\n      if (!group.policy || group.policy === \"AnyOn\") {\n        // Default\n        for (const id of group.ids) {\n          if (!this.#groups.has(id)) {\n            warn(`Optional content group not found: ${id}`);\n            return true;\n          }\n          if (this.#groups.get(id).visible) {\n            return true;\n          }\n        }\n        return false;\n      } else if (group.policy === \"AllOn\") {\n        for (const id of group.ids) {\n          if (!this.#groups.has(id)) {\n            warn(`Optional content group not found: ${id}`);\n            return true;\n          }\n          if (!this.#groups.get(id).visible) {\n            return false;\n          }\n        }\n        return true;\n      } else if (group.policy === \"AnyOff\") {\n        for (const id of group.ids) {\n          if (!this.#groups.has(id)) {\n            warn(`Optional content group not found: ${id}`);\n            return true;\n          }\n          if (!this.#groups.get(id).visible) {\n            return true;\n          }\n        }\n        return false;\n      } else if (group.policy === \"AllOff\") {\n        for (const id of group.ids) {\n          if (!this.#groups.has(id)) {\n            warn(`Optional content group not found: ${id}`);\n            return true;\n          }\n          if (this.#groups.get(id).visible) {\n            return false;\n          }\n        }\n        return true;\n      }\n      warn(`Unknown optional content policy ${group.policy}.`);\n      return true;\n    }\n    warn(`Unknown group type ${group.type}.`);\n    return true;\n  }\n\n  setVisibility(id, visible = true) {\n    if (!this.#groups.has(id)) {\n      warn(`Optional content group not found: ${id}`);\n      return;\n    }\n    this.#groups.get(id)._setVisible(INTERNAL, !!visible);\n\n    this.#cachedHasInitialVisibility = null;\n  }\n\n  get hasInitialVisibility() {\n    if (this.#cachedHasInitialVisibility !== null) {\n      return this.#cachedHasInitialVisibility;\n    }\n    for (const [id, group] of this.#groups) {\n      const visible = this.#initialVisibility.get(id);\n      if (group.visible !== visible) {\n        return (this.#cachedHasInitialVisibility = false);\n      }\n    }\n    return (this.#cachedHasInitialVisibility = true);\n  }\n\n  getOrder() {\n    if (!this.#groups.size) {\n      return null;\n    }\n    if (this.#order) {\n      return this.#order.slice();\n    }\n    return [...this.#groups.keys()];\n  }\n\n  getGroups() {\n    return this.#groups.size > 0 ? objectFromMap(this.#groups) : null;\n  }\n\n  getGroup(id) {\n    return this.#groups.get(id) || null;\n  }\n}\n\nexport { OptionalContentConfig };\n", "/* Copyright 2012 Mozilla Foundation\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\nimport { assert, createPromiseCapability } from \"../shared/util.js\";\nimport { isPdfFile } from \"./display_utils.js\";\n\n/** @implements {IPDFStream} */\nclass PDFDataTransportStream {\n  constructor(params, pdfDataRangeTransport) {\n    assert(\n      pdfDataRangeTransport,\n      'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.'\n    );\n\n    this._queuedChunks = [];\n    this._progressiveDone = params.progressiveDone || false;\n    this._contentDispositionFilename =\n      params.contentDispositionFilename || null;\n\n    const initialData = params.initialData;\n    if (initialData?.length > 0) {\n      const buffer = new Uint8Array(initialData).buffer;\n      this._queuedChunks.push(buffer);\n    }\n\n    this._pdfDataRangeTransport = pdfDataRangeTransport;\n    this._isStreamingSupported = !params.disableStream;\n    this._isRangeSupported = !params.disableRange;\n    this._contentLength = params.length;\n\n    this._fullRequestReader = null;\n    this._rangeReaders = [];\n\n    this._pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n      this._onReceiveData({ begin, chunk });\n    });\n\n    this._pdfDataRangeTransport.addProgressListener((loaded, total) => {\n      this._onProgress({ loaded, total });\n    });\n\n    this._pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n      this._onReceiveData({ chunk });\n    });\n\n    this._pdfDataRangeTransport.addProgressiveDoneListener(() => {\n      this._onProgressiveDone();\n    });\n\n    this._pdfDataRangeTransport.transportReady();\n  }\n\n  _onReceiveData(args) {\n    const buffer = new Uint8Array(args.chunk).buffer;\n    if (args.begin === undefined) {\n      if (this._fullRequestReader) {\n        this._fullRequestReader._enqueue(buffer);\n      } else {\n        this._queuedChunks.push(buffer);\n      }\n    } else {\n      const found = this._rangeReaders.some(function (rangeReader) {\n        if (rangeReader._begin !== args.begin) {\n          return false;\n        }\n        rangeReader._enqueue(buffer);\n        return true;\n      });\n      assert(\n        found,\n        \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\"\n      );\n    }\n  }\n\n  get _progressiveDataLength() {\n    return this._fullRequestReader?._loaded ?? 0;\n  }\n\n  _onProgress(evt) {\n    if (evt.total === undefined) {\n      // Reporting to first range reader, if it exists.\n      const firstReader = this._rangeReaders[0];\n      if (firstReader?.onProgress) {\n        firstReader.onProgress({ loaded: evt.loaded });\n      }\n    } else {\n      const fullReader = this._fullRequestReader;\n      if (fullReader?.onProgress) {\n        fullReader.onProgress({ loaded: evt.loaded, total: evt.total });\n      }\n    }\n  }\n\n  _onProgressiveDone() {\n    if (this._fullRequestReader) {\n      this._fullRequestReader.progressiveDone();\n    }\n    this._progressiveDone = true;\n  }\n\n  _removeRangeReader(reader) {\n    const i = this._rangeReaders.indexOf(reader);\n    if (i >= 0) {\n      this._rangeReaders.splice(i, 1);\n    }\n  }\n\n  getFullReader() {\n    assert(\n      !this._fullRequestReader,\n      \"PDFDataTransportStream.getFullReader can only be called once.\"\n    );\n    const queuedChunks = this._queuedChunks;\n    this._queuedChunks = null;\n    return new PDFDataTransportStreamReader(\n      this,\n      queuedChunks,\n      this._progressiveDone,\n      this._contentDispositionFilename\n    );\n  }\n\n  getRangeReader(begin, end) {\n    if (end <= this._progressiveDataLength) {\n      return null;\n    }\n    const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n    this._pdfDataRangeTransport.requestDataRange(begin, end);\n    this._rangeReaders.push(reader);\n    return reader;\n  }\n\n  cancelAllRequests(reason) {\n    if (this._fullRequestReader) {\n      this._fullRequestReader.cancel(reason);\n    }\n    for (const reader of this._rangeReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n    this._pdfDataRangeTransport.abort();\n  }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFDataTransportStreamReader {\n  constructor(\n    stream,\n    queuedChunks,\n    progressiveDone = false,\n    contentDispositionFilename = null\n  ) {\n    this._stream = stream;\n    this._done = progressiveDone || false;\n    this._filename = isPdfFile(contentDispositionFilename)\n      ? contentDispositionFilename\n      : null;\n    this._queuedChunks = queuedChunks || [];\n    this._loaded = 0;\n    for (const chunk of this._queuedChunks) {\n      this._loaded += chunk.byteLength;\n    }\n    this._requests = [];\n    this._headersReady = Promise.resolve();\n    stream._fullRequestReader = this;\n\n    this.onProgress = null;\n  }\n\n  _enqueue(chunk) {\n    if (this._done) {\n      return; // Ignore new data.\n    }\n    if (this._requests.length > 0) {\n      const requestCapability = this._requests.shift();\n      requestCapability.resolve({ value: chunk, done: false });\n    } else {\n      this._queuedChunks.push(chunk);\n    }\n    this._loaded += chunk.byteLength;\n  }\n\n  get headersReady() {\n    return this._headersReady;\n  }\n\n  get filename() {\n    return this._filename;\n  }\n\n  get isRangeSupported() {\n    return this._stream._isRangeSupported;\n  }\n\n  get isStreamingSupported() {\n    return this._stream._isStreamingSupported;\n  }\n\n  get contentLength() {\n    return this._stream._contentLength;\n  }\n\n  async read() {\n    if (this._queuedChunks.length > 0) {\n      const chunk = this._queuedChunks.shift();\n      return { value: chunk, done: false };\n    }\n    if (this._done) {\n      return { value: undefined, done: true };\n    }\n    const requestCapability = createPromiseCapability();\n    this._requests.push(requestCapability);\n    return requestCapability.promise;\n  }\n\n  cancel(reason) {\n    this._done = true;\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({ value: undefined, done: true });\n    }\n    this._requests.length = 0;\n  }\n\n  progressiveDone() {\n    if (this._done) {\n      return;\n    }\n    this._done = true;\n  }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFDataTransportStreamRangeReader {\n  constructor(stream, begin, end) {\n    this._stream = stream;\n    this._begin = begin;\n    this._end = end;\n    this._queuedChunk = null;\n    this._requests = [];\n    this._done = false;\n\n    this.onProgress = null;\n  }\n\n  _enqueue(chunk) {\n    if (this._done) {\n      return; // ignore new data\n    }\n    if (this._requests.length === 0) {\n      this._queuedChunk = chunk;\n    } else {\n      const requestsCapability = this._requests.shift();\n      requestsCapability.resolve({ value: chunk, done: false });\n      for (const requestCapability of this._requests) {\n        requestCapability.resolve({ value: undefined, done: true });\n      }\n      this._requests.length = 0;\n    }\n    this._done = true;\n    this._stream._removeRangeReader(this);\n  }\n\n  get isStreamingSupported() {\n    return false;\n  }\n\n  async read() {\n    if (this._queuedChunk) {\n      const chunk = this._queuedChunk;\n      this._queuedChunk = null;\n      return { value: chunk, done: false };\n    }\n    if (this._done) {\n      return { value: undefined, done: true };\n    }\n    const requestCapability = createPromiseCapability();\n    this._requests.push(requestCapability);\n    return requestCapability.promise;\n  }\n\n  cancel(reason) {\n    this._done = true;\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({ value: undefined, done: true });\n    }\n    this._requests.length = 0;\n    this._stream._removeRangeReader(this);\n  }\n}\n\nexport { PDFDataTransportStream };\n", "/* Copyright 2021 Mozilla Foundation\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\nclass XfaText {\n  /**\n   * Walk an XFA tree and create an array of text nodes that is compatible\n   * with a regular PDFs TextContent. Currently, only TextItem.str is supported,\n   * all other fields and styles haven't been implemented.\n   *\n   * @param {Object} xfa - An XFA fake DOM object.\n   *\n   * @returns {TextContent}\n   */\n  static textContent(xfa) {\n    const items = [];\n    const output = {\n      items,\n      styles: Object.create(null),\n    };\n    function walk(node) {\n      if (!node) {\n        return;\n      }\n      let str = null;\n      const name = node.name;\n      if (name === \"#text\") {\n        str = node.value;\n      } else if (!XfaText.shouldBuildText(name)) {\n        return;\n      } else if (node?.attributes?.textContent) {\n        str = node.attributes.textContent;\n      } else if (node.value) {\n        str = node.value;\n      }\n      if (str !== null) {\n        items.push({\n          str,\n        });\n      }\n      if (!node.children) {\n        return;\n      }\n      for (const child of node.children) {\n        walk(child);\n      }\n    }\n    walk(xfa);\n    return output;\n  }\n\n  /**\n   * @param {string} name - DOM node name. (lower case)\n   *\n   * @returns {boolean} true if the DOM node should have a corresponding text\n   * node.\n   */\n  static shouldBuildText(name) {\n    return !(\n      name === \"textarea\" ||\n      name === \"input\" ||\n      name === \"option\" ||\n      name === \"select\"\n    );\n  }\n}\n\nexport { XfaText };\n", "/* Copyright 2020 Mozilla Foundation\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/* globals __non_webpack_require__ */\n\nimport {\n  BaseCanvasFactory,\n  BaseCMapReaderFactory,\n  BaseStandardFontDataFactory,\n} from \"./base_factory.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n  throw new Error(\n    'Module \"./node_utils.js\" shall not be used with MOZCENTRAL builds.'\n  );\n}\n\nconst fetchData = function (url) {\n  return new Promise((resolve, reject) => {\n    const fs = __non_webpack_require__(\"fs\");\n    fs.readFile(url, (error, data) => {\n      if (error || !data) {\n        reject(new Error(error));\n        return;\n      }\n      resolve(new Uint8Array(data));\n    });\n  });\n};\n\nclass NodeCanvasFactory extends BaseCanvasFactory {\n  /**\n   * @ignore\n   */\n  _createCanvas(width, height) {\n    const Canvas = __non_webpack_require__(\"canvas\");\n    return Canvas.createCanvas(width, height);\n  }\n}\n\nclass NodeCMapReaderFactory extends BaseCMapReaderFactory {\n  /**\n   * @ignore\n   */\n  _fetchData(url, compressionType) {\n    return fetchData(url).then(data => {\n      return { cMapData: data, compressionType };\n    });\n  }\n}\n\nclass NodeStandardFontDataFactory extends BaseStandardFontDataFactory {\n  /**\n   * @ignore\n   */\n  _fetchData(url) {\n    return fetchData(url);\n  }\n}\n\nexport {\n  NodeCanvasFactory,\n  NodeCMapReaderFactory,\n  NodeStandardFontDataFactory,\n};\n", "/* Copyright 2022 Mozilla Foundation\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/** @typedef {import(\"./editor.js\").AnnotationEditor} AnnotationEditor */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./tools.js\").AnnotationEditorUIManager} AnnotationEditorUIManager */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../annotation_storage.js\").AnnotationStorage} AnnotationStorage */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../../web/text_accessibility.js\").TextAccessibilityManager} TextAccessibilityManager */\n/** @typedef {import(\"../../web/interfaces\").IL10n} IL10n */\n\nimport { bindEvents, KeyboardManager } from \"./tools.js\";\nimport { AnnotationEditorType } from \"../../shared/util.js\";\nimport { FreeTextEditor } from \"./freetext.js\";\nimport { InkEditor } from \"./ink.js\";\n\n/**\n * @typedef {Object} AnnotationEditorLayerOptions\n * @property {Object} mode\n * @property {HTMLDivElement} div\n * @property {AnnotationEditorUIManager} uiManager\n * @property {boolean} enabled\n * @property {AnnotationStorage} annotationStorage\n * @property {TextAccessibilityManager} [accessibilityManager]\n * @property {number} pageIndex\n * @property {IL10n} l10n\n */\n\n/**\n * Manage all the different editors on a page.\n */\nclass AnnotationEditorLayer {\n  #accessibilityManager;\n\n  #allowClick = false;\n\n  #boundPointerup = this.pointerup.bind(this);\n\n  #boundPointerdown = this.pointerdown.bind(this);\n\n  #editors = new Map();\n\n  #hadPointerDown = false;\n\n  #isCleaningUp = false;\n\n  #uiManager;\n\n  static _initialized = false;\n\n  /**\n   * @param {AnnotationEditorLayerOptions} options\n   */\n  constructor(options) {\n    if (!AnnotationEditorLayer._initialized) {\n      AnnotationEditorLayer._initialized = true;\n      FreeTextEditor.initialize(options.l10n);\n      InkEditor.initialize(options.l10n);\n\n      options.uiManager.registerEditorTypes([FreeTextEditor, InkEditor]);\n    }\n    this.#uiManager = options.uiManager;\n    this.annotationStorage = options.annotationStorage;\n    this.pageIndex = options.pageIndex;\n    this.div = options.div;\n    this.#accessibilityManager = options.accessibilityManager;\n\n    this.#uiManager.addLayer(this);\n  }\n\n  /**\n   * Update the toolbar if it's required to reflect the tool currently used.\n   * @param {number} mode\n   */\n  updateToolbar(mode) {\n    this.#uiManager.updateToolbar(mode);\n  }\n\n  /**\n   * The mode has changed: it must be updated.\n   * @param {number} mode\n   */\n  updateMode(mode = this.#uiManager.getMode()) {\n    this.#cleanup();\n    if (mode === AnnotationEditorType.INK) {\n      // We always want to an ink editor ready to draw in.\n      this.addInkEditorIfNeeded(false);\n      this.disableClick();\n    } else {\n      this.enableClick();\n    }\n    this.#uiManager.unselectAll();\n  }\n\n  addInkEditorIfNeeded(isCommitting) {\n    if (\n      !isCommitting &&\n      this.#uiManager.getMode() !== AnnotationEditorType.INK\n    ) {\n      return;\n    }\n\n    if (!isCommitting) {\n      // We're removing an editor but an empty one can already exist so in this\n      // case we don't need to create a new one.\n      for (const editor of this.#editors.values()) {\n        if (editor.isEmpty()) {\n          editor.setInBackground();\n          return;\n        }\n      }\n    }\n\n    const editor = this.#createAndAddNewEditor({ offsetX: 0, offsetY: 0 });\n    editor.setInBackground();\n  }\n\n  /**\n   * Set the editing state.\n   * @param {boolean} isEditing\n   */\n  setEditingState(isEditing) {\n    this.#uiManager.setEditingState(isEditing);\n  }\n\n  /**\n   * Add some commands into the CommandManager (undo/redo stuff).\n   * @param {Object} params\n   */\n  addCommands(params) {\n    this.#uiManager.addCommands(params);\n  }\n\n  /**\n   * Enable pointer events on the main div in order to enable\n   * editor creation.\n   */\n  enable() {\n    this.div.style.pointerEvents = \"auto\";\n    for (const editor of this.#editors.values()) {\n      editor.enableEditing();\n    }\n  }\n\n  /**\n   * Disable editor creation.\n   */\n  disable() {\n    this.div.style.pointerEvents = \"none\";\n    for (const editor of this.#editors.values()) {\n      editor.disableEditing();\n    }\n  }\n\n  /**\n   * Set the current editor.\n   * @param {AnnotationEditor} editor\n   */\n  setActiveEditor(editor) {\n    const currentActive = this.#uiManager.getActive();\n    if (currentActive === editor) {\n      return;\n    }\n\n    this.#uiManager.setActiveEditor(editor);\n  }\n\n  enableClick() {\n    this.div.addEventListener(\"pointerdown\", this.#boundPointerdown);\n    this.div.addEventListener(\"pointerup\", this.#boundPointerup);\n  }\n\n  disableClick() {\n    this.div.removeEventListener(\"pointerdown\", this.#boundPointerdown);\n    this.div.removeEventListener(\"pointerup\", this.#boundPointerup);\n  }\n\n  attach(editor) {\n    this.#editors.set(editor.id, editor);\n  }\n\n  detach(editor) {\n    this.#editors.delete(editor.id);\n    this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n  }\n\n  /**\n   * Remove an editor.\n   * @param {AnnotationEditor} editor\n   */\n  remove(editor) {\n    // Since we can undo a removal we need to keep the\n    // parent property as it is, so don't null it!\n\n    this.#uiManager.removeEditor(editor);\n    this.detach(editor);\n    this.annotationStorage.remove(editor.id);\n    editor.div.style.display = \"none\";\n    setTimeout(() => {\n      // When the div is removed from DOM the focus can move on the\n      // document.body, so we just slightly postpone the removal in\n      // order to let an element potentially grab the focus before\n      // the body.\n      editor.div.style.display = \"\";\n      editor.div.remove();\n      editor.isAttachedToDOM = false;\n      if (document.activeElement === document.body) {\n        this.#uiManager.focusMainContainer();\n      }\n    }, 0);\n\n    if (!this.#isCleaningUp) {\n      this.addInkEditorIfNeeded(/* isCommitting = */ false);\n    }\n  }\n\n  /**\n   * An editor can have a different parent, for example after having\n   * being dragged and droped from a page to another.\n   * @param {AnnotationEditor} editor\n   */\n  #changeParent(editor) {\n    if (editor.parent === this) {\n      return;\n    }\n\n    this.attach(editor);\n    editor.pageIndex = this.pageIndex;\n    editor.parent?.detach(editor);\n    editor.parent = this;\n    if (editor.div && editor.isAttachedToDOM) {\n      editor.div.remove();\n      this.div.append(editor.div);\n    }\n  }\n\n  /**\n   * Add a new editor in the current view.\n   * @param {AnnotationEditor} editor\n   */\n  add(editor) {\n    this.#changeParent(editor);\n    this.#uiManager.addEditor(editor);\n    this.attach(editor);\n\n    if (!editor.isAttachedToDOM) {\n      const div = editor.render();\n      this.div.append(div);\n      editor.isAttachedToDOM = true;\n    }\n\n    this.moveEditorInDOM(editor);\n    editor.onceAdded();\n    this.addToAnnotationStorage(editor);\n  }\n\n  moveEditorInDOM(editor) {\n    this.#accessibilityManager?.moveElementInDOM(\n      this.div,\n      editor.div,\n      editor.contentDiv,\n      /* isRemovable = */ true\n    );\n  }\n\n  /**\n   * Add an editor in the annotation storage.\n   * @param {AnnotationEditor} editor\n   */\n  addToAnnotationStorage(editor) {\n    if (!editor.isEmpty() && !this.annotationStorage.has(editor.id)) {\n      this.annotationStorage.setValue(editor.id, editor);\n    }\n  }\n\n  /**\n   * Add or rebuild depending if it has been removed or not.\n   * @param {AnnotationEditor} editor\n   */\n  addOrRebuild(editor) {\n    if (editor.needsToBeRebuilt()) {\n      editor.rebuild();\n    } else {\n      this.add(editor);\n    }\n  }\n\n  /**\n   * Add a new editor and make this addition undoable.\n   * @param {AnnotationEditor} editor\n   */\n  addANewEditor(editor) {\n    const cmd = () => {\n      this.addOrRebuild(editor);\n    };\n    const undo = () => {\n      editor.remove();\n    };\n\n    this.addCommands({ cmd, undo, mustExec: true });\n  }\n\n  /**\n   * Add a new editor and make this addition undoable.\n   * @param {AnnotationEditor} editor\n   */\n  addUndoableEditor(editor) {\n    const cmd = () => {\n      this.addOrRebuild(editor);\n    };\n    const undo = () => {\n      editor.remove();\n    };\n\n    this.addCommands({ cmd, undo, mustExec: false });\n  }\n\n  /**\n   * Get an id for an editor.\n   * @returns {string}\n   */\n  getNextId() {\n    return this.#uiManager.getId();\n  }\n\n  /**\n   * Create a new editor\n   * @param {Object} params\n   * @returns {AnnotationEditor}\n   */\n  #createNewEditor(params) {\n    switch (this.#uiManager.getMode()) {\n      case AnnotationEditorType.FREETEXT:\n        return new FreeTextEditor(params);\n      case AnnotationEditorType.INK:\n        return new InkEditor(params);\n    }\n    return null;\n  }\n\n  /**\n   * Create a new editor\n   * @param {Object} data\n   * @returns {AnnotationEditor}\n   */\n  deserialize(data) {\n    switch (data.annotationType) {\n      case AnnotationEditorType.FREETEXT:\n        return FreeTextEditor.deserialize(data, this);\n      case AnnotationEditorType.INK:\n        return InkEditor.deserialize(data, this);\n    }\n    return null;\n  }\n\n  /**\n   * Create and add a new editor.\n   * @param {PointerEvent} event\n   * @returns {AnnotationEditor}\n   */\n  #createAndAddNewEditor(event) {\n    const id = this.getNextId();\n    const editor = this.#createNewEditor({\n      parent: this,\n      id,\n      x: event.offsetX,\n      y: event.offsetY,\n    });\n    if (editor) {\n      this.add(editor);\n    }\n\n    return editor;\n  }\n\n  /**\n   * Set the last selected editor.\n   * @param {AnnotationEditor} editor\n   */\n  setSelected(editor) {\n    this.#uiManager.setSelected(editor);\n  }\n\n  /**\n   * Add or remove an editor the current selection.\n   * @param {AnnotationEditor} editor\n   */\n  toggleSelected(editor) {\n    this.#uiManager.toggleSelected(editor);\n  }\n\n  /**\n   * Check if the editor is selected.\n   * @param {AnnotationEditor} editor\n   */\n  isSelected(editor) {\n    return this.#uiManager.isSelected(editor);\n  }\n\n  /**\n   * Unselect an editor.\n   * @param {AnnotationEditor} editor\n   */\n  unselect(editor) {\n    this.#uiManager.unselect(editor);\n  }\n\n  /**\n   * Pointerup callback.\n   * @param {PointerEvent} event\n   */\n  pointerup(event) {\n    const isMac = KeyboardManager.platform.isMac;\n    if (event.button !== 0 || (event.ctrlKey && isMac)) {\n      // Don't create an editor on right click.\n      return;\n    }\n\n    if (event.target !== this.div) {\n      return;\n    }\n\n    if (!this.#hadPointerDown) {\n      // It can happen when the user starts a drag inside a text editor\n      // and then releases the mouse button outside of it. In such a case\n      // we don't want to create a new editor, hence we check that a pointerdown\n      // occured on this div previously.\n      return;\n    }\n    this.#hadPointerDown = false;\n\n    if (!this.#allowClick) {\n      this.#allowClick = true;\n      return;\n    }\n\n    this.#createAndAddNewEditor(event);\n  }\n\n  /**\n   * Pointerdown callback.\n   * @param {PointerEvent} event\n   */\n  pointerdown(event) {\n    const isMac = KeyboardManager.platform.isMac;\n    if (event.button !== 0 || (event.ctrlKey && isMac)) {\n      // Do nothing on right click.\n      return;\n    }\n\n    if (event.target !== this.div) {\n      return;\n    }\n\n    this.#hadPointerDown = true;\n\n    const editor = this.#uiManager.getActive();\n    this.#allowClick = !editor || editor.isEmpty();\n  }\n\n  /**\n   * Drag callback.\n   * @param {DragEvent} event\n   */\n  drop(event) {\n    const id = event.dataTransfer.getData(\"text/plain\");\n    const editor = this.#uiManager.getEditor(id);\n    if (!editor) {\n      return;\n    }\n\n    event.preventDefault();\n    event.dataTransfer.dropEffect = \"move\";\n\n    this.#changeParent(editor);\n\n    const rect = this.div.getBoundingClientRect();\n    const endX = event.clientX - rect.x;\n    const endY = event.clientY - rect.y;\n\n    editor.translate(endX - editor.startX, endY - editor.startY);\n    this.moveEditorInDOM(editor);\n    editor.div.focus();\n  }\n\n  /**\n   * Dragover callback.\n   * @param {DragEvent} event\n   */\n  dragover(event) {\n    event.preventDefault();\n  }\n\n  /**\n   * Destroy the main editor.\n   */\n  destroy() {\n    if (this.#uiManager.getActive()?.parent === this) {\n      this.#uiManager.setActiveEditor(null);\n    }\n\n    for (const editor of this.#editors.values()) {\n      this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n      editor.isAttachedToDOM = false;\n      editor.div.remove();\n      editor.parent = null;\n    }\n    this.div = null;\n    this.#editors.clear();\n    this.#uiManager.removeLayer(this);\n  }\n\n  #cleanup() {\n    // When we're cleaning up, some editors are removed but we don't want\n    // to add a new one which will induce an addition in this.#editors, hence\n    // an infinite loop.\n    this.#isCleaningUp = true;\n    for (const editor of this.#editors.values()) {\n      if (editor.isEmpty()) {\n        editor.remove();\n      }\n    }\n    this.#isCleaningUp = false;\n  }\n\n  /**\n   * Render the main editor.\n   * @param {Object} parameters\n   */\n  render(parameters) {\n    this.viewport = parameters.viewport;\n    bindEvents(this, this.div, [\"dragover\", \"drop\"]);\n    this.setDimensions();\n    for (const editor of this.#uiManager.getEditors(this.pageIndex)) {\n      this.add(editor);\n    }\n    this.updateMode();\n  }\n\n  /**\n   * Update the main editor.\n   * @param {Object} parameters\n   */\n  update(parameters) {\n    this.viewport = parameters.viewport;\n    this.setDimensions();\n    this.updateMode();\n  }\n\n  /**\n   * Get the scale factor from the viewport.\n   * @returns {number}\n   */\n  get scaleFactor() {\n    return this.viewport.scale;\n  }\n\n  /**\n   * Get page dimensions.\n   * @returns {Object} dimensions.\n   */\n  get pageDimensions() {\n    const [pageLLx, pageLLy, pageURx, pageURy] = this.viewport.viewBox;\n    const width = pageURx - pageLLx;\n    const height = pageURy - pageLLy;\n\n    return [width, height];\n  }\n\n  get viewportBaseDimensions() {\n    const { width, height, rotation } = this.viewport;\n    return rotation % 180 === 0 ? [width, height] : [height, width];\n  }\n\n  /**\n   * Set the dimensions of the main div.\n   */\n  setDimensions() {\n    const { width, height, rotation } = this.viewport;\n\n    const flipOrientation = rotation % 180 !== 0,\n      widthStr = Math.floor(width) + \"px\",\n      heightStr = Math.floor(height) + \"px\";\n\n    this.div.style.width = flipOrientation ? heightStr : widthStr;\n    this.div.style.height = flipOrientation ? widthStr : heightStr;\n    this.div.setAttribute(\"data-main-rotation\", rotation);\n  }\n}\n\nexport { AnnotationEditorLayer };\n", "/* Copyright 2022 Mozilla Foundation\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// eslint-disable-next-line max-len\n/** @typedef {import(\"./annotation_editor_layer.js\").AnnotationEditorLayer} AnnotationEditorLayer */\n\nimport {\n  AnnotationEditorParamsType,\n  AnnotationEditorType,\n  assert,\n  LINE_FACTOR,\n  Util,\n} from \"../../shared/util.js\";\nimport { bindEvents, KeyboardManager } from \"./tools.js\";\nimport { AnnotationEditor } from \"./editor.js\";\n\n/**\n * Basic text editor in order to create a FreeTex annotation.\n */\nclass FreeTextEditor extends AnnotationEditor {\n  #boundEditorDivBlur = this.editorDivBlur.bind(this);\n\n  #boundEditorDivFocus = this.editorDivFocus.bind(this);\n\n  #boundEditorDivKeydown = this.editorDivKeydown.bind(this);\n\n  #color;\n\n  #content = \"\";\n\n  #hasAlreadyBeenCommitted = false;\n\n  #fontSize;\n\n  static _freeTextDefaultContent = \"\";\n\n  static _l10nPromise;\n\n  static _internalPadding = 0;\n\n  static _defaultColor = null;\n\n  static _defaultFontSize = 10;\n\n  static _keyboardManager = new KeyboardManager([\n    [\n      [\"ctrl+Enter\", \"mac+meta+Enter\", \"Escape\", \"mac+Escape\"],\n      FreeTextEditor.prototype.commitOrRemove,\n    ],\n  ]);\n\n  static _type = \"freetext\";\n\n  constructor(params) {\n    super({ ...params, name: \"freeTextEditor\" });\n    this.#color =\n      params.color ||\n      FreeTextEditor._defaultColor ||\n      AnnotationEditor._defaultLineColor;\n    this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;\n  }\n\n  static initialize(l10n) {\n    this._l10nPromise = new Map(\n      [\"free_text_default_content\", \"editor_free_text_aria_label\"].map(str => [\n        str,\n        l10n.get(str),\n      ])\n    );\n\n    const style = getComputedStyle(document.documentElement);\n\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      const lineHeight = parseFloat(\n        style.getPropertyValue(\"--freetext-line-height\")\n      );\n      assert(\n        lineHeight === LINE_FACTOR,\n        \"Update the CSS variable to agree with the constant.\"\n      );\n    }\n\n    this._internalPadding = parseFloat(\n      style.getPropertyValue(\"--freetext-padding\")\n    );\n  }\n\n  static updateDefaultParams(type, value) {\n    switch (type) {\n      case AnnotationEditorParamsType.FREETEXT_SIZE:\n        FreeTextEditor._defaultFontSize = value;\n        break;\n      case AnnotationEditorParamsType.FREETEXT_COLOR:\n        FreeTextEditor._defaultColor = value;\n        break;\n    }\n  }\n\n  /** @inheritdoc */\n  updateParams(type, value) {\n    switch (type) {\n      case AnnotationEditorParamsType.FREETEXT_SIZE:\n        this.#updateFontSize(value);\n        break;\n      case AnnotationEditorParamsType.FREETEXT_COLOR:\n        this.#updateColor(value);\n        break;\n    }\n  }\n\n  static get defaultPropertiesToUpdate() {\n    return [\n      [\n        AnnotationEditorParamsType.FREETEXT_SIZE,\n        FreeTextEditor._defaultFontSize,\n      ],\n      [\n        AnnotationEditorParamsType.FREETEXT_COLOR,\n        FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor,\n      ],\n    ];\n  }\n\n  get propertiesToUpdate() {\n    return [\n      [AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize],\n      [AnnotationEditorParamsType.FREETEXT_COLOR, this.#color],\n    ];\n  }\n\n  /**\n   * Update the font size and make this action as undoable.\n   * @param {number} fontSize\n   */\n  #updateFontSize(fontSize) {\n    const setFontsize = size => {\n      this.editorDiv.style.fontSize = `calc(${size}px * var(--scale-factor))`;\n      this.translate(0, -(size - this.#fontSize) * this.parent.scaleFactor);\n      this.#fontSize = size;\n      this.#setEditorDimensions();\n    };\n    const savedFontsize = this.#fontSize;\n    this.parent.addCommands({\n      cmd: () => {\n        setFontsize(fontSize);\n      },\n      undo: () => {\n        setFontsize(savedFontsize);\n      },\n      mustExec: true,\n      type: AnnotationEditorParamsType.FREETEXT_SIZE,\n      overwriteIfSameType: true,\n      keepUndo: true,\n    });\n  }\n\n  /**\n   * Update the color and make this action undoable.\n   * @param {string} color\n   */\n  #updateColor(color) {\n    const savedColor = this.#color;\n    this.parent.addCommands({\n      cmd: () => {\n        this.#color = color;\n        this.editorDiv.style.color = color;\n      },\n      undo: () => {\n        this.#color = savedColor;\n        this.editorDiv.style.color = savedColor;\n      },\n      mustExec: true,\n      type: AnnotationEditorParamsType.FREETEXT_COLOR,\n      overwriteIfSameType: true,\n      keepUndo: true,\n    });\n  }\n\n  /** @inheritdoc */\n  getInitialTranslation() {\n    // The start of the base line is where the user clicked.\n    return [\n      -FreeTextEditor._internalPadding * this.parent.scaleFactor,\n      -(FreeTextEditor._internalPadding + this.#fontSize) *\n        this.parent.scaleFactor,\n    ];\n  }\n\n  /** @inheritdoc */\n  rebuild() {\n    super.rebuild();\n    if (this.div === null) {\n      return;\n    }\n\n    if (!this.isAttachedToDOM) {\n      // At some point this editor was removed and we're rebuilting it,\n      // hence we must add it to its parent.\n      this.parent.add(this);\n    }\n  }\n\n  /** @inheritdoc */\n  enableEditMode() {\n    if (this.isInEditMode()) {\n      return;\n    }\n\n    this.parent.setEditingState(false);\n    this.parent.updateToolbar(AnnotationEditorType.FREETEXT);\n    super.enableEditMode();\n    this.enableEditing();\n    this.overlayDiv.classList.remove(\"enabled\");\n    this.editorDiv.contentEditable = true;\n    this.div.draggable = false;\n    this.editorDiv.addEventListener(\"keydown\", this.#boundEditorDivKeydown);\n    this.editorDiv.addEventListener(\"focus\", this.#boundEditorDivFocus);\n    this.editorDiv.addEventListener(\"blur\", this.#boundEditorDivBlur);\n  }\n\n  /** @inheritdoc */\n  disableEditMode() {\n    if (!this.isInEditMode()) {\n      return;\n    }\n\n    this.parent.setEditingState(true);\n    super.disableEditMode();\n    this.disableEditing();\n    this.overlayDiv.classList.add(\"enabled\");\n    this.editorDiv.contentEditable = false;\n    this.div.draggable = true;\n    this.editorDiv.removeEventListener(\"keydown\", this.#boundEditorDivKeydown);\n    this.editorDiv.removeEventListener(\"focus\", this.#boundEditorDivFocus);\n    this.editorDiv.removeEventListener(\"blur\", this.#boundEditorDivBlur);\n\n    // On Chrome, the focus is given to <body> when contentEditable is set to\n    // false, hence we focus the div.\n    this.div.focus();\n\n    // In case the blur callback hasn't been called.\n    this.isEditing = false;\n  }\n\n  /** @inheritdoc */\n  focusin(event) {\n    super.focusin(event);\n    if (event.target !== this.editorDiv) {\n      this.editorDiv.focus();\n    }\n  }\n\n  /** @inheritdoc */\n  onceAdded() {\n    if (this.width) {\n      // The editor was created in using ctrl+c.\n      return;\n    }\n    this.enableEditMode();\n    this.editorDiv.focus();\n  }\n\n  /** @inheritdoc */\n  isEmpty() {\n    return !this.editorDiv || this.editorDiv.innerText.trim() === \"\";\n  }\n\n  /** @inheritdoc */\n  remove() {\n    this.isEditing = false;\n    this.parent.setEditingState(true);\n    super.remove();\n  }\n\n  /**\n   * Extract the text from this editor.\n   * @returns {string}\n   */\n  #extractText() {\n    const divs = this.editorDiv.getElementsByTagName(\"div\");\n    if (divs.length === 0) {\n      return this.editorDiv.innerText;\n    }\n    const buffer = [];\n    for (let i = 0, ii = divs.length; i < ii; i++) {\n      const div = divs[i];\n      const first = div.firstChild;\n      if (first?.nodeName === \"#text\") {\n        buffer.push(first.data);\n      } else {\n        buffer.push(\"\");\n      }\n    }\n    return buffer.join(\"\\n\");\n  }\n\n  #setEditorDimensions() {\n    const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions;\n    const rect = this.div.getBoundingClientRect();\n\n    this.width = rect.width / parentWidth;\n    this.height = rect.height / parentHeight;\n  }\n\n  /**\n   * Commit the content we have in this editor.\n   * @returns {undefined}\n   */\n  commit() {\n    super.commit();\n    if (!this.#hasAlreadyBeenCommitted) {\n      // This editor has something and it's the first time\n      // it's commited so we can add it in the undo/redo stack.\n      this.#hasAlreadyBeenCommitted = true;\n      this.parent.addUndoableEditor(this);\n    }\n\n    this.disableEditMode();\n    this.#content = this.#extractText().trimEnd();\n\n    this.#setEditorDimensions();\n  }\n\n  /** @inheritdoc */\n  shouldGetKeyboardEvents() {\n    return this.isInEditMode();\n  }\n\n  /**\n   * ondblclick callback.\n   * @param {MouseEvent} event\n   */\n  dblclick(event) {\n    this.enableEditMode();\n    this.editorDiv.focus();\n  }\n\n  /**\n   * onkeydown callback.\n   * @param {KeyboardEvent} event\n   */\n  keydown(event) {\n    if (event.target === this.div && event.key === \"Enter\") {\n      this.enableEditMode();\n      this.editorDiv.focus();\n    }\n  }\n\n  editorDivKeydown(event) {\n    FreeTextEditor._keyboardManager.exec(this, event);\n  }\n\n  editorDivFocus(event) {\n    this.isEditing = true;\n  }\n\n  editorDivBlur(event) {\n    this.isEditing = false;\n  }\n\n  /** @inheritdoc */\n  disableEditing() {\n    this.editorDiv.setAttribute(\"role\", \"comment\");\n    this.editorDiv.removeAttribute(\"aria-multiline\");\n  }\n\n  /** @inheritdoc */\n  enableEditing() {\n    this.editorDiv.setAttribute(\"role\", \"textbox\");\n    this.editorDiv.setAttribute(\"aria-multiline\", true);\n  }\n\n  /** @inheritdoc */\n  render() {\n    if (this.div) {\n      return this.div;\n    }\n\n    let baseX, baseY;\n    if (this.width) {\n      baseX = this.x;\n      baseY = this.y;\n    }\n\n    super.render();\n    this.editorDiv = document.createElement(\"div\");\n    this.editorDiv.className = \"internal\";\n\n    this.editorDiv.setAttribute(\"id\", `${this.id}-editor`);\n    this.enableEditing();\n\n    FreeTextEditor._l10nPromise\n      .get(\"editor_free_text_aria_label\")\n      .then(msg => this.editorDiv?.setAttribute(\"aria-label\", msg));\n\n    FreeTextEditor._l10nPromise\n      .get(\"free_text_default_content\")\n      .then(msg => this.editorDiv?.setAttribute(\"default-content\", msg));\n    this.editorDiv.contentEditable = true;\n\n    const { style } = this.editorDiv;\n    style.fontSize = `calc(${this.#fontSize}px * var(--scale-factor))`;\n    style.color = this.#color;\n\n    this.div.append(this.editorDiv);\n\n    this.overlayDiv = document.createElement(\"div\");\n    this.overlayDiv.classList.add(\"overlay\", \"enabled\");\n    this.div.append(this.overlayDiv);\n\n    // TODO: implement paste callback.\n    // The goal is to sanitize and have something suitable for this\n    // editor.\n    bindEvents(this, this.div, [\"dblclick\", \"keydown\"]);\n\n    if (this.width) {\n      // This editor was created in using copy (ctrl+c).\n      const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions;\n      this.setAt(\n        baseX * parentWidth,\n        baseY * parentHeight,\n        this.width * parentWidth,\n        this.height * parentHeight\n      );\n\n      for (const line of this.#content.split(\"\\n\")) {\n        const div = document.createElement(\"div\");\n        div.append(\n          line ? document.createTextNode(line) : document.createElement(\"br\")\n        );\n        this.editorDiv.append(div);\n      }\n\n      this.div.draggable = true;\n      this.editorDiv.contentEditable = false;\n    } else {\n      this.div.draggable = false;\n      this.editorDiv.contentEditable = true;\n    }\n\n    return this.div;\n  }\n\n  get contentDiv() {\n    return this.editorDiv;\n  }\n\n  /** @inheritdoc */\n  static deserialize(data, parent) {\n    const editor = super.deserialize(data, parent);\n\n    editor.#fontSize = data.fontSize;\n    editor.#color = Util.makeHexColor(...data.color);\n    editor.#content = data.value;\n\n    return editor;\n  }\n\n  /** @inheritdoc */\n  serialize() {\n    if (this.isEmpty()) {\n      return null;\n    }\n\n    const padding = FreeTextEditor._internalPadding * this.parent.scaleFactor;\n    const rect = this.getRect(padding, padding);\n\n    const color = AnnotationEditor._colorManager.convert(\n      getComputedStyle(this.editorDiv).color\n    );\n\n    return {\n      annotationType: AnnotationEditorType.FREETEXT,\n      color,\n      fontSize: this.#fontSize,\n      value: this.#content,\n      pageIndex: this.parent.pageIndex,\n      rect,\n      rotation: this.rotation,\n    };\n  }\n}\n\nexport { FreeTextEditor };\n", "/* Copyright 2022 Mozilla Foundation\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\nimport {\n  AnnotationEditorParamsType,\n  AnnotationEditorType,\n  Util,\n} from \"../../shared/util.js\";\nimport { AnnotationEditor } from \"./editor.js\";\nimport { fitCurve } from \"pdfjs-fitCurve\";\nimport { opacityToHex } from \"./tools.js\";\n\n// The dimensions of the resizer is 15x15:\n// https://searchfox.org/mozilla-central/rev/1ce190047b9556c3c10ab4de70a0e61d893e2954/toolkit/content/minimal-xul.css#136-137\n// so each dimension must be greater than RESIZER_SIZE.\nconst RESIZER_SIZE = 16;\n\n/**\n * Basic draw editor in order to generate an Ink annotation.\n */\nclass InkEditor extends AnnotationEditor {\n  #aspectRatio = 0;\n\n  #baseHeight = 0;\n\n  #baseWidth = 0;\n\n  #boundCanvasPointermove = this.canvasPointermove.bind(this);\n\n  #boundCanvasPointerleave = this.canvasPointerleave.bind(this);\n\n  #boundCanvasPointerup = this.canvasPointerup.bind(this);\n\n  #boundCanvasPointerdown = this.canvasPointerdown.bind(this);\n\n  #disableEditing = false;\n\n  #isCanvasInitialized = false;\n\n  #lastPoint = null;\n\n  #observer = null;\n\n  #realWidth = 0;\n\n  #realHeight = 0;\n\n  #requestFrameCallback = null;\n\n  static _defaultColor = null;\n\n  static _defaultOpacity = 1;\n\n  static _defaultThickness = 1;\n\n  static _l10nPromise;\n\n  static _type = \"ink\";\n\n  constructor(params) {\n    super({ ...params, name: \"inkEditor\" });\n    this.color = params.color || null;\n    this.thickness = params.thickness || null;\n    this.opacity = params.opacity || null;\n    this.paths = [];\n    this.bezierPath2D = [];\n    this.currentPath = [];\n    this.scaleFactor = 1;\n    this.translationX = this.translationY = 0;\n    this.x = 0;\n    this.y = 0;\n  }\n\n  static initialize(l10n) {\n    this._l10nPromise = new Map(\n      [\"editor_ink_canvas_aria_label\", \"editor_ink_aria_label\"].map(str => [\n        str,\n        l10n.get(str),\n      ])\n    );\n  }\n\n  static updateDefaultParams(type, value) {\n    switch (type) {\n      case AnnotationEditorParamsType.INK_THICKNESS:\n        InkEditor._defaultThickness = value;\n        break;\n      case AnnotationEditorParamsType.INK_COLOR:\n        InkEditor._defaultColor = value;\n        break;\n      case AnnotationEditorParamsType.INK_OPACITY:\n        InkEditor._defaultOpacity = value / 100;\n        break;\n    }\n  }\n\n  /** @inheritdoc */\n  updateParams(type, value) {\n    switch (type) {\n      case AnnotationEditorParamsType.INK_THICKNESS:\n        this.#updateThickness(value);\n        break;\n      case AnnotationEditorParamsType.INK_COLOR:\n        this.#updateColor(value);\n        break;\n      case AnnotationEditorParamsType.INK_OPACITY:\n        this.#updateOpacity(value);\n        break;\n    }\n  }\n\n  static get defaultPropertiesToUpdate() {\n    return [\n      [AnnotationEditorParamsType.INK_THICKNESS, InkEditor._defaultThickness],\n      [\n        AnnotationEditorParamsType.INK_COLOR,\n        InkEditor._defaultColor || AnnotationEditor._defaultLineColor,\n      ],\n      [\n        AnnotationEditorParamsType.INK_OPACITY,\n        Math.round(InkEditor._defaultOpacity * 100),\n      ],\n    ];\n  }\n\n  /** @inheritdoc */\n  get propertiesToUpdate() {\n    return [\n      [\n        AnnotationEditorParamsType.INK_THICKNESS,\n        this.thickness || InkEditor._defaultThickness,\n      ],\n      [\n        AnnotationEditorParamsType.INK_COLOR,\n        this.color ||\n          InkEditor._defaultColor ||\n          AnnotationEditor._defaultLineColor,\n      ],\n      [\n        AnnotationEditorParamsType.INK_OPACITY,\n        Math.round(100 * (this.opacity ?? InkEditor._defaultOpacity)),\n      ],\n    ];\n  }\n\n  /**\n   * Update the thickness and make this action undoable.\n   * @param {number} thickness\n   */\n  #updateThickness(thickness) {\n    const savedThickness = this.thickness;\n    this.parent.addCommands({\n      cmd: () => {\n        this.thickness = thickness;\n        this.#fitToContent();\n      },\n      undo: () => {\n        this.thickness = savedThickness;\n        this.#fitToContent();\n      },\n      mustExec: true,\n      type: AnnotationEditorParamsType.INK_THICKNESS,\n      overwriteIfSameType: true,\n      keepUndo: true,\n    });\n  }\n\n  /**\n   * Update the color and make this action undoable.\n   * @param {string} color\n   */\n  #updateColor(color) {\n    const savedColor = this.color;\n    this.parent.addCommands({\n      cmd: () => {\n        this.color = color;\n        this.#redraw();\n      },\n      undo: () => {\n        this.color = savedColor;\n        this.#redraw();\n      },\n      mustExec: true,\n      type: AnnotationEditorParamsType.INK_COLOR,\n      overwriteIfSameType: true,\n      keepUndo: true,\n    });\n  }\n\n  /**\n   * Update the opacity and make this action undoable.\n   * @param {number} opacity\n   */\n  #updateOpacity(opacity) {\n    opacity /= 100;\n    const savedOpacity = this.opacity;\n    this.parent.addCommands({\n      cmd: () => {\n        this.opacity = opacity;\n        this.#redraw();\n      },\n      undo: () => {\n        this.opacity = savedOpacity;\n        this.#redraw();\n      },\n      mustExec: true,\n      type: AnnotationEditorParamsType.INK_OPACITY,\n      overwriteIfSameType: true,\n      keepUndo: true,\n    });\n  }\n\n  /** @inheritdoc */\n  rebuild() {\n    super.rebuild();\n    if (this.div === null) {\n      return;\n    }\n\n    if (!this.canvas) {\n      this.#createCanvas();\n      this.#createObserver();\n    }\n\n    if (!this.isAttachedToDOM) {\n      // At some point this editor was removed and we're rebuilding it,\n      // hence we must add it to its parent.\n      this.parent.add(this);\n      this.#setCanvasDims();\n    }\n    this.#fitToContent();\n  }\n\n  /** @inheritdoc */\n  remove() {\n    if (this.canvas === null) {\n      return;\n    }\n\n    if (!this.isEmpty()) {\n      this.commit();\n    }\n\n    // Destroy the canvas.\n    this.canvas.width = this.canvas.height = 0;\n    this.canvas.remove();\n    this.canvas = null;\n\n    this.#observer.disconnect();\n    this.#observer = null;\n\n    super.remove();\n  }\n\n  /** @inheritdoc */\n  enableEditMode() {\n    if (this.#disableEditing || this.canvas === null) {\n      return;\n    }\n\n    super.enableEditMode();\n    this.div.draggable = false;\n    this.canvas.addEventListener(\"pointerdown\", this.#boundCanvasPointerdown);\n    this.canvas.addEventListener(\"pointerup\", this.#boundCanvasPointerup);\n  }\n\n  /** @inheritdoc */\n  disableEditMode() {\n    if (!this.isInEditMode() || this.canvas === null) {\n      return;\n    }\n\n    super.disableEditMode();\n    this.div.draggable = !this.isEmpty();\n    this.div.classList.remove(\"editing\");\n\n    this.canvas.removeEventListener(\n      \"pointerdown\",\n      this.#boundCanvasPointerdown\n    );\n    this.canvas.removeEventListener(\"pointerup\", this.#boundCanvasPointerup);\n  }\n\n  /** @inheritdoc */\n  onceAdded() {\n    this.div.draggable = !this.isEmpty();\n  }\n\n  /** @inheritdoc */\n  isEmpty() {\n    return (\n      this.paths.length === 0 ||\n      (this.paths.length === 1 && this.paths[0].length === 0)\n    );\n  }\n\n  #getInitialBBox() {\n    const { width, height, rotation } = this.parent.viewport;\n    switch (rotation) {\n      case 90:\n        return [0, width, width, height];\n      case 180:\n        return [width, height, width, height];\n      case 270:\n        return [height, 0, width, height];\n      default:\n        return [0, 0, width, height];\n    }\n  }\n\n  /**\n   * Set line styles.\n   */\n  #setStroke() {\n    this.ctx.lineWidth =\n      (this.thickness * this.parent.scaleFactor) / this.scaleFactor;\n    this.ctx.lineCap = \"round\";\n    this.ctx.lineJoin = \"round\";\n    this.ctx.miterLimit = 10;\n    this.ctx.strokeStyle = `${this.color}${opacityToHex(this.opacity)}`;\n  }\n\n  /**\n   * Start to draw on the canvas.\n   * @param {number} x\n   * @param {number} y\n   */\n  #startDrawing(x, y) {\n    this.isEditing = true;\n    if (!this.#isCanvasInitialized) {\n      this.#isCanvasInitialized = true;\n      this.#setCanvasDims();\n      this.thickness ||= InkEditor._defaultThickness;\n      this.color ||=\n        InkEditor._defaultColor || AnnotationEditor._defaultLineColor;\n      this.opacity ??= InkEditor._defaultOpacity;\n    }\n    this.currentPath.push([x, y]);\n    this.#lastPoint = null;\n    this.#setStroke();\n    this.ctx.beginPath();\n    this.ctx.moveTo(x, y);\n\n    this.#requestFrameCallback = () => {\n      if (!this.#requestFrameCallback) {\n        return;\n      }\n\n      if (this.#lastPoint) {\n        if (this.isEmpty()) {\n          this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n          this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n        } else {\n          this.#redraw();\n        }\n\n        this.ctx.lineTo(...this.#lastPoint);\n        this.#lastPoint = null;\n        this.ctx.stroke();\n      }\n\n      window.requestAnimationFrame(this.#requestFrameCallback);\n    };\n    window.requestAnimationFrame(this.#requestFrameCallback);\n  }\n\n  /**\n   * Draw on the canvas.\n   * @param {number} x\n   * @param {number} y\n   */\n  #draw(x, y) {\n    const [lastX, lastY] = this.currentPath.at(-1);\n    if (x === lastX && y === lastY) {\n      return;\n    }\n    this.currentPath.push([x, y]);\n    this.#lastPoint = [x, y];\n  }\n\n  /**\n   * Stop to draw on the canvas.\n   * @param {number} x\n   * @param {number} y\n   */\n  #stopDrawing(x, y) {\n    this.ctx.closePath();\n    this.#requestFrameCallback = null;\n\n    x = Math.min(Math.max(x, 0), this.canvas.width);\n    y = Math.min(Math.max(y, 0), this.canvas.height);\n\n    const [lastX, lastY] = this.currentPath.at(-1);\n    if (x !== lastX || y !== lastY) {\n      this.currentPath.push([x, y]);\n    }\n\n    // Interpolate the path entered by the user with some\n    // Bezier's curves in order to have a smoother path and\n    // to reduce the data size used to draw it in the PDF.\n    let bezier;\n    if (this.currentPath.length !== 1) {\n      bezier = fitCurve(this.currentPath, 30, null);\n    } else {\n      // We have only one point finally.\n      const xy = [x, y];\n      bezier = [[xy, xy.slice(), xy.slice(), xy]];\n    }\n    const path2D = InkEditor.#buildPath2D(bezier);\n    this.currentPath.length = 0;\n\n    const cmd = () => {\n      this.paths.push(bezier);\n      this.bezierPath2D.push(path2D);\n      this.rebuild();\n    };\n\n    const undo = () => {\n      this.paths.pop();\n      this.bezierPath2D.pop();\n      if (this.paths.length === 0) {\n        this.remove();\n      } else {\n        if (!this.canvas) {\n          this.#createCanvas();\n          this.#createObserver();\n        }\n        this.#fitToContent();\n      }\n    };\n\n    this.parent.addCommands({ cmd, undo, mustExec: true });\n  }\n\n  /**\n   * Redraw all the paths.\n   */\n  #redraw() {\n    if (this.isEmpty()) {\n      this.#updateTransform();\n      return;\n    }\n    this.#setStroke();\n\n    const { canvas, ctx } = this;\n    ctx.setTransform(1, 0, 0, 1, 0, 0);\n    ctx.clearRect(0, 0, canvas.width, canvas.height);\n    this.#updateTransform();\n    for (const path of this.bezierPath2D) {\n      ctx.stroke(path);\n    }\n  }\n\n  /**\n   * Commit the curves we have in this editor.\n   */\n  commit() {\n    if (this.#disableEditing) {\n      return;\n    }\n\n    super.commit();\n\n    this.isEditing = false;\n    this.disableEditMode();\n\n    // This editor must be on top of the main ink editor.\n    this.setInForeground();\n\n    this.#disableEditing = true;\n    this.div.classList.add(\"disabled\");\n\n    this.#fitToContent(/* firstTime = */ true);\n\n    this.parent.addInkEditorIfNeeded(/* isCommitting = */ true);\n\n    // When commiting, the position of this editor is changed, hence we must\n    // move it to the right position in the DOM.\n    this.parent.moveEditorInDOM(this);\n    // After the div has been moved in the DOM, the focus may have been stolen\n    // by document.body, hence we just keep it here.\n    this.div.focus();\n  }\n\n  /** @inheritdoc */\n  focusin(event) {\n    super.focusin(event);\n    this.enableEditMode();\n  }\n\n  /**\n   * onpointerdown callback for the canvas we're drawing on.\n   * @param {PointerEvent} event\n   */\n  canvasPointerdown(event) {\n    if (event.button !== 0 || !this.isInEditMode() || this.#disableEditing) {\n      return;\n    }\n\n    // We want to draw on top of any other editors.\n    // Since it's the last child, there's no need to give it a higher z-index.\n    this.setInForeground();\n\n    if (event.type !== \"mouse\") {\n      this.div.focus();\n    }\n\n    event.stopPropagation();\n\n    this.canvas.addEventListener(\"pointerleave\", this.#boundCanvasPointerleave);\n    this.canvas.addEventListener(\"pointermove\", this.#boundCanvasPointermove);\n\n    this.#startDrawing(event.offsetX, event.offsetY);\n  }\n\n  /**\n   * onpointermove callback for the canvas we're drawing on.\n   * @param {PointerEvent} event\n   */\n  canvasPointermove(event) {\n    event.stopPropagation();\n    this.#draw(event.offsetX, event.offsetY);\n  }\n\n  /**\n   * onpointerup callback for the canvas we're drawing on.\n   * @param {PointerEvent} event\n   */\n  canvasPointerup(event) {\n    if (event.button !== 0) {\n      return;\n    }\n    if (this.isInEditMode() && this.currentPath.length !== 0) {\n      event.stopPropagation();\n      this.#endDrawing(event);\n\n      // Since the ink editor covers all of the page and we want to be able\n      // to select another editor, we just put this one in the background.\n      this.setInBackground();\n    }\n  }\n\n  /**\n   * onpointerleave callback for the canvas we're drawing on.\n   * @param {PointerEvent} event\n   */\n  canvasPointerleave(event) {\n    this.#endDrawing(event);\n    this.setInBackground();\n  }\n\n  /**\n   * End the drawing.\n   * @param {PointerEvent} event\n   */\n  #endDrawing(event) {\n    this.#stopDrawing(event.offsetX, event.offsetY);\n\n    this.canvas.removeEventListener(\n      \"pointerleave\",\n      this.#boundCanvasPointerleave\n    );\n    this.canvas.removeEventListener(\n      \"pointermove\",\n      this.#boundCanvasPointermove\n    );\n\n    this.parent.addToAnnotationStorage(this);\n  }\n\n  /**\n   * Create the canvas element.\n   */\n  #createCanvas() {\n    this.canvas = document.createElement(\"canvas\");\n    this.canvas.width = this.canvas.height = 0;\n    this.canvas.className = \"inkEditorCanvas\";\n\n    InkEditor._l10nPromise\n      .get(\"editor_ink_canvas_aria_label\")\n      .then(msg => this.canvas?.setAttribute(\"aria-label\", msg));\n    this.div.append(this.canvas);\n    this.ctx = this.canvas.getContext(\"2d\");\n  }\n\n  /**\n   * Create the resize observer.\n   */\n  #createObserver() {\n    this.#observer = new ResizeObserver(entries => {\n      const rect = entries[0].contentRect;\n      if (rect.width && rect.height) {\n        this.setDimensions(rect.width, rect.height);\n      }\n    });\n    this.#observer.observe(this.div);\n  }\n\n  /** @inheritdoc */\n  render() {\n    if (this.div) {\n      return this.div;\n    }\n\n    let baseX, baseY;\n    if (this.width) {\n      baseX = this.x;\n      baseY = this.y;\n    }\n\n    super.render();\n\n    InkEditor._l10nPromise\n      .get(\"editor_ink_aria_label\")\n      .then(msg => this.div?.setAttribute(\"aria-label\", msg));\n\n    const [x, y, w, h] = this.#getInitialBBox();\n    this.setAt(x, y, 0, 0);\n    this.setDims(w, h);\n\n    this.#createCanvas();\n\n    if (this.width) {\n      // This editor was created in using copy (ctrl+c).\n      const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions;\n      this.setAt(\n        baseX * parentWidth,\n        baseY * parentHeight,\n        this.width * parentWidth,\n        this.height * parentHeight\n      );\n      this.#isCanvasInitialized = true;\n      this.#setCanvasDims();\n      this.setDims(this.width * parentWidth, this.height * parentHeight);\n      this.#redraw();\n      this.#setMinDims();\n      this.div.classList.add(\"disabled\");\n    } else {\n      this.div.classList.add(\"editing\");\n      this.enableEditMode();\n    }\n\n    this.#createObserver();\n\n    return this.div;\n  }\n\n  #setCanvasDims() {\n    if (!this.#isCanvasInitialized) {\n      return;\n    }\n    const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions;\n    this.canvas.width = Math.ceil(this.width * parentWidth);\n    this.canvas.height = Math.ceil(this.height * parentHeight);\n    this.#updateTransform();\n  }\n\n  /**\n   * When the dimensions of the div change the inner canvas must\n   * renew its dimensions, hence it must redraw its own contents.\n   * @param {number} width - the new width of the div\n   * @param {number} height - the new height of the div\n   * @returns\n   */\n  setDimensions(width, height) {\n    const roundedWidth = Math.round(width);\n    const roundedHeight = Math.round(height);\n    if (\n      this.#realWidth === roundedWidth &&\n      this.#realHeight === roundedHeight\n    ) {\n      return;\n    }\n\n    this.#realWidth = roundedWidth;\n    this.#realHeight = roundedHeight;\n\n    this.canvas.style.visibility = \"hidden\";\n\n    if (\n      this.#aspectRatio &&\n      Math.abs(this.#aspectRatio - width / height) > 1e-2\n    ) {\n      height = Math.ceil(width / this.#aspectRatio);\n      this.setDims(width, height);\n    }\n\n    const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions;\n    this.width = width / parentWidth;\n    this.height = height / parentHeight;\n\n    if (this.#disableEditing) {\n      this.#setScaleFactor(width, height);\n    }\n\n    this.#setCanvasDims();\n    this.#redraw();\n\n    this.canvas.style.visibility = \"visible\";\n  }\n\n  #setScaleFactor(width, height) {\n    const padding = this.#getPadding();\n    const scaleFactorW = (width - padding) / this.#baseWidth;\n    const scaleFactorH = (height - padding) / this.#baseHeight;\n    this.scaleFactor = Math.min(scaleFactorW, scaleFactorH);\n  }\n\n  /**\n   * Update the canvas transform.\n   */\n  #updateTransform() {\n    const padding = this.#getPadding() / 2;\n    this.ctx.setTransform(\n      this.scaleFactor,\n      0,\n      0,\n      this.scaleFactor,\n      this.translationX * this.scaleFactor + padding,\n      this.translationY * this.scaleFactor + padding\n    );\n  }\n\n  /**\n   * Convert the output of fitCurve in some Path2D.\n   * @param {Arra<Array<number>} bezier\n   * @returns {Path2D}\n   */\n  static #buildPath2D(bezier) {\n    const path2D = new Path2D();\n    for (let i = 0, ii = bezier.length; i < ii; i++) {\n      const [first, control1, control2, second] = bezier[i];\n      if (i === 0) {\n        path2D.moveTo(...first);\n      }\n      path2D.bezierCurveTo(\n        control1[0],\n        control1[1],\n        control2[0],\n        control2[1],\n        second[0],\n        second[1]\n      );\n    }\n    return path2D;\n  }\n\n  /**\n   * Transform and serialize the paths.\n   * @param {number} s - scale factor\n   * @param {number} tx - abscissa of the translation\n   * @param {number} ty - ordinate of the translation\n   * @param {number} h - height of the bounding box\n   */\n  #serializePaths(s, tx, ty, h) {\n    const NUMBER_OF_POINTS_ON_BEZIER_CURVE = 4;\n    const paths = [];\n    const padding = this.thickness / 2;\n    let buffer, points;\n\n    for (const bezier of this.paths) {\n      buffer = [];\n      points = [];\n      for (let i = 0, ii = bezier.length; i < ii; i++) {\n        const [first, control1, control2, second] = bezier[i];\n        const p10 = s * (first[0] + tx) + padding;\n        const p11 = h - s * (first[1] + ty) - padding;\n        const p20 = s * (control1[0] + tx) + padding;\n        const p21 = h - s * (control1[1] + ty) - padding;\n        const p30 = s * (control2[0] + tx) + padding;\n        const p31 = h - s * (control2[1] + ty) - padding;\n        const p40 = s * (second[0] + tx) + padding;\n        const p41 = h - s * (second[1] + ty) - padding;\n\n        if (i === 0) {\n          buffer.push(p10, p11);\n          points.push(p10, p11);\n        }\n        buffer.push(p20, p21, p30, p31, p40, p41);\n        this.#extractPointsOnBezier(\n          p10,\n          p11,\n          p20,\n          p21,\n          p30,\n          p31,\n          p40,\n          p41,\n          NUMBER_OF_POINTS_ON_BEZIER_CURVE,\n          points\n        );\n      }\n      paths.push({ bezier: buffer, points });\n    }\n\n    return paths;\n  }\n\n  /**\n   * Extract n-1 points from the cubic Bezier curve.\n   * @param {number} p10\n   * @param {number} p11\n   * @param {number} p20\n   * @param {number} p21\n   * @param {number} p30\n   * @param {number} p31\n   * @param {number} p40\n   * @param {number} p41\n   * @param {number} n\n   * @param {Array<number>} points\n   * @returns {undefined}\n   */\n  #extractPointsOnBezier(p10, p11, p20, p21, p30, p31, p40, p41, n, points) {\n    // If we can save few points thanks to the flatness we must do it.\n    if (this.#isAlmostFlat(p10, p11, p20, p21, p30, p31, p40, p41)) {\n      points.push(p40, p41);\n      return;\n    }\n\n    // Apply the de Casteljau's algorithm in order to get n points belonging\n    // to the Bezier's curve:\n    // https://en.wikipedia.org/wiki/De_Casteljau%27s_algorithm\n\n    // The first point is the last point of the previous Bezier curve\n    // so no need to push the first point.\n    for (let i = 1; i < n - 1; i++) {\n      const t = i / n;\n      const mt = 1 - t;\n\n      let q10 = t * p10 + mt * p20;\n      let q11 = t * p11 + mt * p21;\n\n      let q20 = t * p20 + mt * p30;\n      let q21 = t * p21 + mt * p31;\n\n      const q30 = t * p30 + mt * p40;\n      const q31 = t * p31 + mt * p41;\n\n      q10 = t * q10 + mt * q20;\n      q11 = t * q11 + mt * q21;\n\n      q20 = t * q20 + mt * q30;\n      q21 = t * q21 + mt * q31;\n\n      q10 = t * q10 + mt * q20;\n      q11 = t * q11 + mt * q21;\n\n      points.push(q10, q11);\n    }\n\n    points.push(p40, p41);\n  }\n\n  /**\n   * Check if a cubic Bezier curve is almost flat.\n   * @param {number} p10\n   * @param {number} p11\n   * @param {number} p20\n   * @param {number} p21\n   * @param {number} p30\n   * @param {number} p31\n   * @param {number} p40\n   * @param {number} p41\n   * @returns {boolean}\n   */\n  #isAlmostFlat(p10, p11, p20, p21, p30, p31, p40, p41) {\n    // For reference:\n    //   https://jeremykun.com/tag/bezier-curves/\n    const tol = 10;\n\n    const ax = (3 * p20 - 2 * p10 - p40) ** 2;\n    const ay = (3 * p21 - 2 * p11 - p41) ** 2;\n    const bx = (3 * p30 - p10 - 2 * p40) ** 2;\n    const by = (3 * p31 - p11 - 2 * p41) ** 2;\n\n    return Math.max(ax, bx) + Math.max(ay, by) <= tol;\n  }\n\n  /**\n   * Get the bounding box containing all the paths.\n   * @returns {Array<number>}\n   */\n  #getBbox() {\n    let xMin = Infinity;\n    let xMax = -Infinity;\n    let yMin = Infinity;\n    let yMax = -Infinity;\n\n    for (const path of this.paths) {\n      for (const [first, control1, control2, second] of path) {\n        const bbox = Util.bezierBoundingBox(\n          ...first,\n          ...control1,\n          ...control2,\n          ...second\n        );\n        xMin = Math.min(xMin, bbox[0]);\n        yMin = Math.min(yMin, bbox[1]);\n        xMax = Math.max(xMax, bbox[2]);\n        yMax = Math.max(yMax, bbox[3]);\n      }\n    }\n\n    return [xMin, yMin, xMax, yMax];\n  }\n\n  /**\n   * The bounding box is computed with null thickness, so we must take\n   * it into account for the display.\n   * It corresponds to the total padding, hence it should be divided by 2\n   * in order to have left/right paddings.\n   * @returns {number}\n   */\n  #getPadding() {\n    return this.#disableEditing\n      ? Math.ceil(this.thickness * this.parent.scaleFactor)\n      : 0;\n  }\n\n  /**\n   * Set the div position and dimensions in order to fit to\n   * the bounding box of the contents.\n   * @returns {undefined}\n   */\n  #fitToContent(firstTime = false) {\n    if (this.isEmpty()) {\n      return;\n    }\n\n    if (!this.#disableEditing) {\n      this.#redraw();\n      return;\n    }\n\n    const bbox = this.#getBbox();\n    const padding = this.#getPadding();\n    this.#baseWidth = Math.max(RESIZER_SIZE, bbox[2] - bbox[0]);\n    this.#baseHeight = Math.max(RESIZER_SIZE, bbox[3] - bbox[1]);\n\n    const width = Math.ceil(padding + this.#baseWidth * this.scaleFactor);\n    const height = Math.ceil(padding + this.#baseHeight * this.scaleFactor);\n\n    const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions;\n    this.width = width / parentWidth;\n    this.height = height / parentHeight;\n\n    this.#aspectRatio = width / height;\n    this.#setMinDims();\n\n    const prevTranslationX = this.translationX;\n    const prevTranslationY = this.translationY;\n\n    this.translationX = -bbox[0];\n    this.translationY = -bbox[1];\n    this.#setCanvasDims();\n    this.#redraw();\n\n    this.#realWidth = width;\n    this.#realHeight = height;\n\n    this.setDims(width, height);\n    const unscaledPadding = firstTime ? padding / this.scaleFactor / 2 : 0;\n    this.translate(\n      prevTranslationX - this.translationX - unscaledPadding,\n      prevTranslationY - this.translationY - unscaledPadding\n    );\n  }\n\n  #setMinDims() {\n    const { style } = this.div;\n    if (this.#aspectRatio >= 1) {\n      style.minHeight = `${RESIZER_SIZE}px`;\n      style.minWidth = `${Math.round(this.#aspectRatio * RESIZER_SIZE)}px`;\n    } else {\n      style.minWidth = `${RESIZER_SIZE}px`;\n      style.minHeight = `${Math.round(RESIZER_SIZE / this.#aspectRatio)}px`;\n    }\n  }\n\n  /** @inheritdoc */\n  static deserialize(data, parent) {\n    const editor = super.deserialize(data, parent);\n\n    editor.thickness = data.thickness;\n    editor.color = Util.makeHexColor(...data.color);\n    editor.opacity = data.opacity;\n\n    const [pageWidth, pageHeight] = parent.pageDimensions;\n    const width = editor.width * pageWidth;\n    const height = editor.height * pageHeight;\n    const scaleFactor = parent.scaleFactor;\n    const padding = data.thickness / 2;\n\n    editor.#aspectRatio = width / height;\n    editor.#disableEditing = true;\n    editor.#realWidth = Math.round(width);\n    editor.#realHeight = Math.round(height);\n\n    for (const { bezier } of data.paths) {\n      const path = [];\n      editor.paths.push(path);\n      let p0 = scaleFactor * (bezier[0] - padding);\n      let p1 = scaleFactor * (height - bezier[1] - padding);\n      for (let i = 2, ii = bezier.length; i < ii; i += 6) {\n        const p10 = scaleFactor * (bezier[i] - padding);\n        const p11 = scaleFactor * (height - bezier[i + 1] - padding);\n        const p20 = scaleFactor * (bezier[i + 2] - padding);\n        const p21 = scaleFactor * (height - bezier[i + 3] - padding);\n        const p30 = scaleFactor * (bezier[i + 4] - padding);\n        const p31 = scaleFactor * (height - bezier[i + 5] - padding);\n        path.push([\n          [p0, p1],\n          [p10, p11],\n          [p20, p21],\n          [p30, p31],\n        ]);\n        p0 = p30;\n        p1 = p31;\n      }\n      const path2D = this.#buildPath2D(path);\n      editor.bezierPath2D.push(path2D);\n    }\n\n    const bbox = editor.#getBbox();\n    editor.#baseWidth = Math.max(RESIZER_SIZE, bbox[2] - bbox[0]);\n    editor.#baseHeight = Math.max(RESIZER_SIZE, bbox[3] - bbox[1]);\n    editor.#setScaleFactor(width, height);\n\n    return editor;\n  }\n\n  /** @inheritdoc */\n  serialize() {\n    if (this.isEmpty()) {\n      return null;\n    }\n\n    const rect = this.getRect(0, 0);\n    const height =\n      this.rotation % 180 === 0 ? rect[3] - rect[1] : rect[2] - rect[0];\n\n    const color = AnnotationEditor._colorManager.convert(this.ctx.strokeStyle);\n\n    return {\n      annotationType: AnnotationEditorType.INK,\n      color,\n      thickness: this.thickness,\n      opacity: this.opacity,\n      paths: this.#serializePaths(\n        this.scaleFactor / this.parent.scaleFactor,\n        this.translationX,\n        this.translationY,\n        height\n      ),\n      pageIndex: this.parent.pageIndex,\n      rect,\n      rotation: this.rotation,\n    };\n  }\n}\n\nexport { fitCurve, InkEditor };\n", "/* Copyright 2022 Mozilla Foundation\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\nconst fitCurve = require(PDFJSDev.test(\"LIB\")\n  ? \"fit-curve\"\n  : \"fit-curve/src/fit-curve.js\");\n\nexport { fitCurve };\n", "/**\n *  @preserve  JavaScript implementation of\n *  Algorithm for Automatically Fitting Digitized Curves\n *  by Philip J. Schneider\n *  \"Graphics Gems\", Academic Press, 1990\n *\n *  The MIT License (MIT)\n *\n *  https://github.com/soswow/fit-curves\n */\n\n/**\n * Fit one or more Bezier curves to a set of points.\n *\n * @param {Array<Array<Number>>} points - Array of digitized points, e.g. [[5,5],[5,50],[110,140],[210,160],[320,110]]\n * @param {Number} maxError - Tolerance, squared error between points and fitted curve\n * @returns {Array<Array<Array<Number>>>} Array of Bezier curves, where each element is [first-point, control-point-1, control-point-2, second-point] and points are [x, y]\n */\nfunction fitCurve(points, maxError, progressCallback) {\n    if (!Array.isArray(points)) {\n        throw new TypeError(\"First argument should be an array\");\n    }\n    points.forEach((point) => {\n        if(!Array.isArray(point) || point.some(item => typeof item !== 'number')\n        || point.length !== points[0].length) {\n            throw Error(\"Each point should be an array of numbers. Each point should have the same amount of numbers.\");\n        }\n    });\n\n    // Remove duplicate points\n    points = points.filter((point, i) =>\n      i === 0 || !point.every((val, j) => val === points[i-1][j])\n    );\n\n    if (points.length < 2) {\n        return [];\n    }\n\n    const len = points.length;\n    const leftTangent = createTangent(points[1], points[0]);\n    const rightTangent = createTangent(points[len - 2], points[len - 1]);\n\n    return fitCubic(points, leftTangent, rightTangent, maxError, progressCallback);\n}\n\n/**\n * Fit a Bezier curve to a (sub)set of digitized points.\n * Your code should not call this function directly. Use {@link fitCurve} instead.\n *\n * @param {Array<Array<Number>>} points - Array of digitized points, e.g. [[5,5],[5,50],[110,140],[210,160],[320,110]]\n * @param {Array<Number>} leftTangent - Unit tangent vector at start point\n * @param {Array<Number>} rightTangent - Unit tangent vector at end point\n * @param {Number} error - Tolerance, squared error between points and fitted curve\n * @returns {Array<Array<Array<Number>>>} Array of Bezier curves, where each element is [first-point, control-point-1, control-point-2, second-point] and points are [x, y]\n */\nfunction fitCubic(points, leftTangent, rightTangent, error, progressCallback) {\n    const MaxIterations = 20;   //Max times to try iterating (to find an acceptable curve)\n\n    var bezCurve,               //Control points of fitted Bezier curve\n        u,                      //Parameter values for point\n        uPrime,                 //Improved parameter values\n        maxError, prevErr,      //Maximum fitting error\n        splitPoint, prevSplit,  //Point to split point set at if we need more than one curve\n        centerVector, toCenterTangent, fromCenterTangent,  //Unit tangent vector(s) at splitPoint\n        beziers,                //Array of fitted Bezier curves if we need more than one curve\n        dist, i;\n\n    //console.log('fitCubic, ', points.length);\n\n    //Use heuristic if region only has two points in it\n    if (points.length === 2) {\n        dist = maths.vectorLen(maths.subtract(points[0], points[1])) / 3.0;\n        bezCurve = [\n            points[0],\n            maths.addArrays(points[0], maths.mulItems(leftTangent,  dist)),\n            maths.addArrays(points[1], maths.mulItems(rightTangent, dist)),\n            points[1]\n        ];\n        return [bezCurve];\n    }\n\n\n    //Parameterize points, and attempt to fit curve\n    u = chordLengthParameterize(points);\n    [bezCurve, maxError, splitPoint] = generateAndReport(points, u, u, leftTangent, rightTangent, progressCallback)\n\n    if ((maxError === 0) || (maxError < error)) {\n        return [bezCurve];\n    }\n    //If error not too large, try some reparameterization and iteration\n    if (maxError < (error*error)) {\n\n        uPrime = u;\n        prevErr = maxError;\n        prevSplit = splitPoint;\n\n        for (i = 0; i < MaxIterations; i++) {\n\n            uPrime = reparameterize(bezCurve, points, uPrime);\n            [bezCurve, maxError, splitPoint] = generateAndReport(points, u, uPrime, leftTangent, rightTangent, progressCallback);\n\n            if (maxError < error) {\n                return [bezCurve];\n            }\n            //If the development of the fitted curve grinds to a halt,\n            //we abort this attempt (and try a shorter curve):\n            else if(splitPoint === prevSplit) {\n                let errChange = maxError/prevErr;\n                if((errChange > .9999) && (errChange < 1.0001)) {\n                    break;\n                }\n            }\n\n            prevErr = maxError;\n            prevSplit = splitPoint;\n        }\n    }\n\n    //Fitting failed -- split at max error point and fit recursively\n    beziers = [];\n\n    //To create a smooth transition from one curve segment to the next, we\n    //calculate the line between the points directly before and after the\n    //center, and use that as the tangent both to and from the center point.\n    centerVector = maths.subtract(points[splitPoint-1], points[splitPoint+1]);\n    //However, this won't work if they're the same point, because the line we\n    //want to use as a tangent would be 0. Instead, we calculate the line from\n    //that \"double-point\" to the center point, and use its tangent.\n    if(centerVector.every(val => val === 0)) {\n        //[x,y] -> [-y,x]: http://stackoverflow.com/a/4780141/1869660\n        centerVector = maths.subtract(points[splitPoint-1], points[splitPoint]);\n        [centerVector[0],centerVector[1]] = [-centerVector[1],centerVector[0]];\n    }\n    toCenterTangent = maths.normalize(centerVector);\n    //To and from need to point in opposite directions:\n    fromCenterTangent = maths.mulItems(toCenterTangent, -1);\n\n    /*\n    Note: An alternative to this \"divide and conquer\" recursion could be to always\n          let new curve segments start by trying to go all the way to the end,\n          instead of only to the end of the current subdivided polyline.\n          That might let many segments fit a few points more, reducing the number of total segments.\n\n          However, a few tests have shown that the segment reduction is insignificant\n          (240 pts, 100 err: 25 curves vs 27 curves. 140 pts, 100 err: 17 curves on both),\n          and the results take twice as many steps and milliseconds to finish,\n          without looking any better than what we already have.\n    */\n    beziers = beziers.concat(fitCubic(points.slice(0, splitPoint + 1), leftTangent, toCenterTangent,    error, progressCallback));\n    beziers = beziers.concat(fitCubic(points.slice(splitPoint),        fromCenterTangent, rightTangent, error, progressCallback));\n    return beziers;\n};\n\nfunction generateAndReport(points, paramsOrig, paramsPrime, leftTangent, rightTangent, progressCallback) {\n    var bezCurve, maxError, splitPoint;\n\n    bezCurve = generateBezier(points, paramsPrime, leftTangent, rightTangent, progressCallback);\n    //Find max deviation of points to fitted curve.\n    //Here we always use the original parameters (from chordLengthParameterize()),\n    //because we need to compare the current curve to the actual source polyline,\n    //and not the currently iterated parameters which reparameterize() & generateBezier() use,\n    //as those have probably drifted far away and may no longer be in ascending order.\n    [maxError, splitPoint] = computeMaxError(points, bezCurve, paramsOrig);\n\n    if(progressCallback) {\n        progressCallback({\n            bez: bezCurve,\n            points: points,\n            params: paramsOrig,\n            maxErr: maxError,\n            maxPoint: splitPoint,\n        });\n    }\n\n    return [bezCurve, maxError, splitPoint];\n}\n\n/**\n * Use least-squares method to find Bezier control points for region.\n *\n * @param {Array<Array<Number>>} points - Array of digitized points\n * @param {Array<Number>} parameters - Parameter values for region\n * @param {Array<Number>} leftTangent - Unit tangent vector at start point\n * @param {Array<Number>} rightTangent - Unit tangent vector at end point\n * @returns {Array<Array<Number>>} Approximated Bezier curve: [first-point, control-point-1, control-point-2, second-point] where points are [x, y]\n */\nfunction generateBezier(points, parameters, leftTangent, rightTangent) {\n    var bezCurve,                       //Bezier curve ctl pts\n        A, a,                           //Precomputed rhs for eqn\n        C, X,                           //Matrices C & X\n        det_C0_C1, det_C0_X, det_X_C1,  //Determinants of matrices\n        alpha_l, alpha_r,               //Alpha values, left and right\n\n        epsilon, segLength,\n        i, len, tmp, u, ux,\n        firstPoint = points[0],\n        lastPoint = points[points.length-1];\n\n    bezCurve = [firstPoint, null, null, lastPoint];\n    //console.log('gb', parameters.length);\n\n    //Compute the A's\n    A = maths.zeros_Xx2x2(parameters.length);\n    for (i = 0, len = parameters.length; i < len; i++) {\n        u = parameters[i];\n        ux = 1 - u;\n        a = A[i];\n\n        a[0] = maths.mulItems(leftTangent,  3 * u  * (ux*ux));\n        a[1] = maths.mulItems(rightTangent, 3 * ux * (u*u));\n    }\n\n    //Create the C and X matrices\n    C = [[0,0], [0,0]];\n    X = [0,0];\n    for (i = 0, len = points.length; i < len; i++) {\n        u = parameters[i];\n        a = A[i];\n\n        C[0][0] += maths.dot(a[0], a[0]);\n        C[0][1] += maths.dot(a[0], a[1]);\n        C[1][0] += maths.dot(a[0], a[1]);\n        C[1][1] += maths.dot(a[1], a[1]);\n\n        tmp = maths.subtract(points[i], bezier.q([firstPoint, firstPoint, lastPoint, lastPoint], u));\n\n        X[0] += maths.dot(a[0], tmp);\n        X[1] += maths.dot(a[1], tmp);\n    }\n\n    //Compute the determinants of C and X\n    det_C0_C1 = (C[0][0] * C[1][1]) - (C[1][0] * C[0][1]);\n    det_C0_X  = (C[0][0] * X[1]   ) - (C[1][0] * X[0]   );\n    det_X_C1  = (X[0]    * C[1][1]) - (X[1]    * C[0][1]);\n\n    //Finally, derive alpha values\n    alpha_l = det_C0_C1 === 0 ? 0 : det_X_C1 / det_C0_C1;\n    alpha_r = det_C0_C1 === 0 ? 0 : det_C0_X / det_C0_C1;\n\n    //If alpha negative, use the Wu/Barsky heuristic (see text).\n    //If alpha is 0, you get coincident control points that lead to\n    //divide by zero in any subsequent NewtonRaphsonRootFind() call.\n    segLength = maths.vectorLen(maths.subtract(firstPoint, lastPoint));\n    epsilon = 1.0e-6 * segLength;\n    if (alpha_l < epsilon || alpha_r < epsilon) {\n        //Fall back on standard (probably inaccurate) formula, and subdivide further if needed.\n        bezCurve[1] = maths.addArrays(firstPoint, maths.mulItems(leftTangent,  segLength / 3.0));\n        bezCurve[2] = maths.addArrays(lastPoint,  maths.mulItems(rightTangent, segLength / 3.0));\n    } else {\n        //First and last control points of the Bezier curve are\n        //positioned exactly at the first and last data points\n        //Control points 1 and 2 are positioned an alpha distance out\n        //on the tangent vectors, left and right, respectively\n        bezCurve[1] = maths.addArrays(firstPoint, maths.mulItems(leftTangent,  alpha_l));\n        bezCurve[2] = maths.addArrays(lastPoint,  maths.mulItems(rightTangent, alpha_r));\n    }\n\n    return bezCurve;\n};\n\n/**\n * Given set of points and their parameterization, try to find a better parameterization.\n *\n * @param {Array<Array<Number>>} bezier - Current fitted curve\n * @param {Array<Array<Number>>} points - Array of digitized points\n * @param {Array<Number>} parameters - Current parameter values\n * @returns {Array<Number>} New parameter values\n */\nfunction reparameterize(bezier, points, parameters) {\n    /*\n    var j, len, point, results, u;\n    results = [];\n    for (j = 0, len = points.length; j < len; j++) {\n        point = points[j], u = parameters[j];\n\n        results.push(newtonRaphsonRootFind(bezier, point, u));\n    }\n    return results;\n    //*/\n    return parameters.map((p, i) => newtonRaphsonRootFind(bezier, points[i], p));\n};\n\n/**\n * Use Newton-Raphson iteration to find better root.\n *\n * @param {Array<Array<Number>>} bez - Current fitted curve\n * @param {Array<Number>} point - Digitized point\n * @param {Number} u - Parameter value for \"P\"\n * @returns {Number} New u\n */\nfunction newtonRaphsonRootFind(bez, point, u) {\n    /*\n        Newton's root finding algorithm calculates f(x)=0 by reiterating\n        x_n+1 = x_n - f(x_n)/f'(x_n)\n        We are trying to find curve parameter u for some point p that minimizes\n        the distance from that point to the curve. Distance point to curve is d=q(u)-p.\n        At minimum distance the point is perpendicular to the curve.\n        We are solving\n        f = q(u)-p * q'(u) = 0\n        with\n        f' = q'(u) * q'(u) + q(u)-p * q''(u)\n        gives\n        u_n+1 = u_n - |q(u_n)-p * q'(u_n)| / |q'(u_n)**2 + q(u_n)-p * q''(u_n)|\n    */\n\n    var d = maths.subtract(bezier.q(bez, u), point),\n        qprime = bezier.qprime(bez, u),\n        numerator = maths.mulMatrix(d, qprime),\n        denominator = maths.sum(maths.squareItems(qprime)) + 2 * maths.mulMatrix(d, bezier.qprimeprime(bez, u));\n\n    if (denominator === 0) {\n        return u;\n    } else {\n        return u - (numerator/denominator);\n    }\n};\n\n/**\n * Assign parameter values to digitized points using relative distances between points.\n *\n * @param {Array<Array<Number>>} points - Array of digitized points\n * @returns {Array<Number>} Parameter values\n */\nfunction chordLengthParameterize(points) {\n    var u = [], currU, prevU, prevP;\n\n    points.forEach((p, i) => {\n        currU = i ? prevU + maths.vectorLen(maths.subtract(p, prevP))\n                  : 0;\n        u.push(currU);\n\n        prevU = currU;\n        prevP = p;\n    })\n    u = u.map(x => x/prevU);\n\n    return u;\n};\n\n/**\n * Find the maximum squared distance of digitized points to fitted curve.\n *\n * @param {Array<Array<Number>>} points - Array of digitized points\n * @param {Array<Array<Number>>} bez - Fitted curve\n * @param {Array<Number>} parameters - Parameterization of points\n * @returns {Array<Number>} Maximum error (squared) and point of max error\n */\nfunction computeMaxError(points, bez, parameters) {\n    var dist,       //Current error\n        maxDist,    //Maximum error\n        splitPoint, //Point of maximum error\n        v,          //Vector from point to curve\n        i, count, point, t;\n\n    maxDist = 0;\n    splitPoint = Math.floor(points.length / 2);\n\n    const t_distMap = mapTtoRelativeDistances(bez, 10);\n\n    for (i = 0, count = points.length; i < count; i++) {\n        point = points[i];\n        //Find 't' for a point on the bez curve that's as close to 'point' as possible:\n        t = find_t(bez, parameters[i], t_distMap, 10);\n\n        v = maths.subtract(bezier.q(bez, t), point);\n        dist = v[0]*v[0] + v[1]*v[1];\n\n        if (dist > maxDist) {\n            maxDist = dist;\n            splitPoint = i;\n        }\n    }\n\n    return [maxDist, splitPoint];\n};\n\n//Sample 't's and map them to relative distances along the curve:\nvar mapTtoRelativeDistances = function (bez, B_parts) {\n    var B_t_curr;\n    var B_t_dist = [0];\n    var B_t_prev = bez[0];\n    var sumLen = 0;\n\n    for (var i=1; i<=B_parts; i++) {\n      B_t_curr = bezier.q(bez, i/B_parts);\n\n      sumLen += maths.vectorLen(maths.subtract(B_t_curr, B_t_prev));\n\n      B_t_dist.push(sumLen);\n      B_t_prev = B_t_curr;\n    }\n\n    //Normalize B_length to the same interval as the parameter distances; 0 to 1:\n    B_t_dist = B_t_dist.map(x => x/sumLen);\n    return B_t_dist;\n};\n\nfunction find_t(bez, param, t_distMap, B_parts) {\n    if(param < 0) { return 0; }\n    if(param > 1) { return 1; }\n\n    /*\n        'param' is a value between 0 and 1 telling us the relative position\n        of a point on the source polyline (linearly from the start (0) to the end (1)).\n        To see if a given curve - 'bez' - is a close approximation of the polyline,\n        we compare such a poly-point to the point on the curve that's the same\n        relative distance along the curve's length.\n\n        But finding that curve-point takes a little work:\n        There is a function \"B(t)\" to find points along a curve from the parametric parameter 't'\n        (also relative from 0 to 1: http://stackoverflow.com/a/32841764/1869660\n                                    http://pomax.github.io/bezierinfo/#explanation),\n        but 't' isn't linear by length (http://gamedev.stackexchange.com/questions/105230).\n\n        So, we sample some points along the curve using a handful of values for 't'.\n        Then, we calculate the length between those samples via plain euclidean distance;\n        B(t) concentrates the points around sharp turns, so this should give us a good-enough outline of the curve.\n        Thus, for a given relative distance ('param'), we can now find an upper and lower value\n        for the corresponding 't' by searching through those sampled distances.\n        Finally, we just use linear interpolation to find a better value for the exact 't'.\n\n        More info:\n            http://gamedev.stackexchange.com/questions/105230/points-evenly-spaced-along-a-bezier-curve\n            http://stackoverflow.com/questions/29438398/cheap-way-of-calculating-cubic-bezier-length\n            http://steve.hollasch.net/cgindex/curves/cbezarclen.html\n            https://github.com/retuxx/tinyspline\n    */\n    var lenMax, lenMin, tMax, tMin, t;\n\n    //Find the two t-s that the current param distance lies between,\n    //and then interpolate a somewhat accurate value for the exact t:\n    for(var i = 1; i <= B_parts; i++) {\n\n        if(param <= t_distMap[i]) {\n            tMin   = (i-1) / B_parts;\n            tMax   = i / B_parts;\n            lenMin = t_distMap[i-1];\n            lenMax = t_distMap[i];\n\n            t = (param-lenMin)/(lenMax-lenMin) * (tMax-tMin) + tMin;\n            break;\n        }\n    }\n    return t;\n}\n\n/**\n * Creates a vector of length 1 which shows the direction from B to A\n */\nfunction createTangent(pointA, pointB) {\n    return maths.normalize(maths.subtract(pointA, pointB));\n}\n\n/*\n    Simplified versions of what we need from math.js\n    Optimized for our input, which is only numbers and 1x2 arrays (i.e. [x, y] coordinates).\n*/\nclass maths {\n    //zeros = logAndRun(math.zeros);\n    static zeros_Xx2x2(x) {\n        var zs = [];\n        while(x--) { zs.push([0,0]); }\n        return zs\n    }\n\n    //multiply = logAndRun(math.multiply);\n    static mulItems(items, multiplier) {\n        return items.map(x => x*multiplier);\n    }\n    static mulMatrix(m1, m2) {\n        //https://en.wikipedia.org/wiki/Matrix_multiplication#Matrix_product_.28two_matrices.29\n        //Simplified to only handle 1-dimensional matrices (i.e. arrays) of equal length:\n         return m1.reduce((sum,x1,i) => sum + (x1*m2[i]), 0);\n    }\n\n    //Only used to subract to points (or at least arrays):\n    //  subtract = logAndRun(math.subtract);\n    static subtract(arr1, arr2) {\n        return arr1.map((x1, i) => x1 - arr2[i]);\n    }\n\n    //add = logAndRun(math.add);\n    static addArrays(arr1, arr2) {\n        return arr1.map((x1, i) => x1 + arr2[i]);\n    }\n    static addItems(items, addition) {\n        return items.map(x => x+addition);\n    }\n\n    //var sum = logAndRun(math.sum);\n    static sum(items) {\n        return items.reduce((sum,x) => sum + x);\n    }\n\n    //chain = math.chain;\n\n    //Only used on two arrays. The dot product is equal to the matrix product in this case:\n    //  dot = logAndRun(math.dot);\n    static dot(m1, m2) {\n        return maths.mulMatrix(m1, m2);\n    }\n\n    //https://en.wikipedia.org/wiki/Norm_(mathematics)#Euclidean_norm\n    //  var norm = logAndRun(math.norm);\n    static vectorLen(v) {\n        return Math.hypot(...v);\n    }\n\n    //math.divide = logAndRun(math.divide);\n    static divItems(items, divisor) {\n        return items.map(x => x/divisor);\n    }\n\n    //var dotPow = logAndRun(math.dotPow);\n    static squareItems(items) {\n        return items.map(x => x*x);\n    }\n\n    static normalize(v) {\n        return this.divItems(v, this.vectorLen(v));\n    }\n\n    //Math.pow = logAndRun(Math.pow);\n}\n\n\nclass bezier {\n    //Evaluates cubic bezier at t, return point\n    static q(ctrlPoly, t) {\n        var tx = 1.0 - t;\n        var pA = maths.mulItems( ctrlPoly[0],      tx * tx * tx ),\n            pB = maths.mulItems( ctrlPoly[1],  3 * tx * tx *  t ),\n            pC = maths.mulItems( ctrlPoly[2],  3 * tx *  t *  t ),\n            pD = maths.mulItems( ctrlPoly[3],       t *  t *  t );\n        return maths.addArrays(maths.addArrays(pA, pB), maths.addArrays(pC, pD));\n    }\n\n    //Evaluates cubic bezier first derivative at t, return point\n    static qprime(ctrlPoly, t) {\n        var tx = 1.0 - t;\n        var pA = maths.mulItems( maths.subtract(ctrlPoly[1], ctrlPoly[0]),  3 * tx * tx ),\n            pB = maths.mulItems( maths.subtract(ctrlPoly[2], ctrlPoly[1]),  6 * tx *  t ),\n            pC = maths.mulItems( maths.subtract(ctrlPoly[3], ctrlPoly[2]),  3 *  t *  t );\n        return maths.addArrays(maths.addArrays(pA, pB), pC);\n    }\n\n    //Evaluates cubic bezier second derivative at t, return point\n    static qprimeprime(ctrlPoly, t) {\n        return maths.addArrays(maths.mulItems( maths.addArrays(maths.subtract(ctrlPoly[2], maths.mulItems(ctrlPoly[1], 2)), ctrlPoly[0]),  6 * (1.0 - t) ),\n                               maths.mulItems( maths.addArrays(maths.subtract(ctrlPoly[3], maths.mulItems(ctrlPoly[2], 2)), ctrlPoly[1]),  6 *        t  ));\n    }\n}\n\nmodule.exports = fitCurve;\nmodule.exports.fitCubic = fitCubic;\nmodule.exports.createTangent = createTangent;", "/* Copyright 2014 Mozilla Foundation\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/** @typedef {import(\"./api\").PDFPageProxy} PDFPageProxy */\n/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"./interfaces\").IDownloadManager} IDownloadManager */\n/** @typedef {import(\"../../web/interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport {\n  AnnotationBorderStyleType,\n  AnnotationType,\n  assert,\n  LINE_FACTOR,\n  shadow,\n  unreachable,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  AnnotationPrefix,\n  DOMSVGFactory,\n  getFilenameFromUrl,\n  PDFDateString,\n} from \"./display_utils.js\";\nimport { AnnotationStorage } from \"./annotation_storage.js\";\nimport { ColorConverters } from \"../shared/scripting_utils.js\";\nimport { XfaLayer } from \"./xfa_layer.js\";\n\nconst DEFAULT_TAB_INDEX = 1000;\nconst DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\n\nfunction getRectDims(rect) {\n  return {\n    width: rect[2] - rect[0],\n    height: rect[3] - rect[1],\n  };\n}\n\n/**\n * @typedef {Object} AnnotationElementParameters\n * @property {Object} data\n * @property {HTMLDivElement} layer\n * @property {PDFPageProxy} page\n * @property {PageViewport} viewport\n * @property {IPDFLinkService} linkService\n * @property {IDownloadManager} downloadManager\n * @property {AnnotationStorage} [annotationStorage]\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n *   for annotation icons. Include trailing slash.\n * @property {boolean} renderForms\n * @property {Object} svgFactory\n * @property {boolean} [enableScripting]\n * @property {boolean} [hasJSActions]\n * @property {Object} [fieldObjects]\n * @property {Object} [mouseState]\n */\n\nclass AnnotationElementFactory {\n  /**\n   * @param {AnnotationElementParameters} parameters\n   * @returns {AnnotationElement}\n   */\n  static create(parameters) {\n    const subtype = parameters.data.annotationType;\n\n    switch (subtype) {\n      case AnnotationType.LINK:\n        return new LinkAnnotationElement(parameters);\n\n      case AnnotationType.TEXT:\n        return new TextAnnotationElement(parameters);\n\n      case AnnotationType.WIDGET:\n        const fieldType = parameters.data.fieldType;\n\n        switch (fieldType) {\n          case \"Tx\":\n            return new TextWidgetAnnotationElement(parameters);\n          case \"Btn\":\n            if (parameters.data.radioButton) {\n              return new RadioButtonWidgetAnnotationElement(parameters);\n            } else if (parameters.data.checkBox) {\n              return new CheckboxWidgetAnnotationElement(parameters);\n            }\n            return new PushButtonWidgetAnnotationElement(parameters);\n          case \"Ch\":\n            return new ChoiceWidgetAnnotationElement(parameters);\n        }\n        return new WidgetAnnotationElement(parameters);\n\n      case AnnotationType.POPUP:\n        return new PopupAnnotationElement(parameters);\n\n      case AnnotationType.FREETEXT:\n        return new FreeTextAnnotationElement(parameters);\n\n      case AnnotationType.LINE:\n        return new LineAnnotationElement(parameters);\n\n      case AnnotationType.SQUARE:\n        return new SquareAnnotationElement(parameters);\n\n      case AnnotationType.CIRCLE:\n        return new CircleAnnotationElement(parameters);\n\n      case AnnotationType.POLYLINE:\n        return new PolylineAnnotationElement(parameters);\n\n      case AnnotationType.CARET:\n        return new CaretAnnotationElement(parameters);\n\n      case AnnotationType.INK:\n        return new InkAnnotationElement(parameters);\n\n      case AnnotationType.POLYGON:\n        return new PolygonAnnotationElement(parameters);\n\n      case AnnotationType.HIGHLIGHT:\n        return new HighlightAnnotationElement(parameters);\n\n      case AnnotationType.UNDERLINE:\n        return new UnderlineAnnotationElement(parameters);\n\n      case AnnotationType.SQUIGGLY:\n        return new SquigglyAnnotationElement(parameters);\n\n      case AnnotationType.STRIKEOUT:\n        return new StrikeOutAnnotationElement(parameters);\n\n      case AnnotationType.STAMP:\n        return new StampAnnotationElement(parameters);\n\n      case AnnotationType.FILEATTACHMENT:\n        return new FileAttachmentAnnotationElement(parameters);\n\n      default:\n        return new AnnotationElement(parameters);\n    }\n  }\n}\n\nclass AnnotationElement {\n  constructor(\n    parameters,\n    {\n      isRenderable = false,\n      ignoreBorder = false,\n      createQuadrilaterals = false,\n    } = {}\n  ) {\n    this.isRenderable = isRenderable;\n    this.data = parameters.data;\n    this.layer = parameters.layer;\n    this.page = parameters.page;\n    this.viewport = parameters.viewport;\n    this.linkService = parameters.linkService;\n    this.downloadManager = parameters.downloadManager;\n    this.imageResourcesPath = parameters.imageResourcesPath;\n    this.renderForms = parameters.renderForms;\n    this.svgFactory = parameters.svgFactory;\n    this.annotationStorage = parameters.annotationStorage;\n    this.enableScripting = parameters.enableScripting;\n    this.hasJSActions = parameters.hasJSActions;\n    this._fieldObjects = parameters.fieldObjects;\n    this._mouseState = parameters.mouseState;\n\n    if (isRenderable) {\n      this.container = this._createContainer(ignoreBorder);\n    }\n    if (createQuadrilaterals) {\n      this.quadrilaterals = this._createQuadrilaterals(ignoreBorder);\n    }\n  }\n\n  /**\n   * Create an empty container for the annotation's HTML element.\n   *\n   * @private\n   * @param {boolean} ignoreBorder\n   * @memberof AnnotationElement\n   * @returns {HTMLElement} A section element.\n   */\n  _createContainer(ignoreBorder = false) {\n    const data = this.data,\n      page = this.page,\n      viewport = this.viewport;\n    const container = document.createElement(\"section\");\n    const { width, height } = getRectDims(data.rect);\n\n    const [pageLLx, pageLLy, pageURx, pageURy] = viewport.viewBox;\n    const pageWidth = pageURx - pageLLx;\n    const pageHeight = pageURy - pageLLy;\n\n    container.setAttribute(\"data-annotation-id\", data.id);\n\n    // Do *not* modify `data.rect`, since that will corrupt the annotation\n    // position on subsequent calls to `_createContainer` (see issue 6804).\n    const rect = Util.normalizeRect([\n      data.rect[0],\n      page.view[3] - data.rect[1] + page.view[1],\n      data.rect[2],\n      page.view[3] - data.rect[3] + page.view[1],\n    ]);\n\n    if (!ignoreBorder && data.borderStyle.width > 0) {\n      container.style.borderWidth = `${data.borderStyle.width}px`;\n\n      const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n      const verticalRadius = data.borderStyle.verticalCornerRadius;\n      if (horizontalRadius > 0 || verticalRadius > 0) {\n        const radius = `calc(${horizontalRadius}px * var(--scale-factor)) / calc(${verticalRadius}px * var(--scale-factor))`;\n        container.style.borderRadius = radius;\n      } else if (this instanceof RadioButtonWidgetAnnotationElement) {\n        const radius = `calc(${width}px * var(--scale-factor)) / calc(${height}px * var(--scale-factor))`;\n        container.style.borderRadius = radius;\n      }\n\n      switch (data.borderStyle.style) {\n        case AnnotationBorderStyleType.SOLID:\n          container.style.borderStyle = \"solid\";\n          break;\n\n        case AnnotationBorderStyleType.DASHED:\n          container.style.borderStyle = \"dashed\";\n          break;\n\n        case AnnotationBorderStyleType.BEVELED:\n          warn(\"Unimplemented border style: beveled\");\n          break;\n\n        case AnnotationBorderStyleType.INSET:\n          warn(\"Unimplemented border style: inset\");\n          break;\n\n        case AnnotationBorderStyleType.UNDERLINE:\n          container.style.borderBottomStyle = \"solid\";\n          break;\n\n        default:\n          break;\n      }\n\n      const borderColor = data.borderColor || null;\n      if (borderColor) {\n        container.style.borderColor = Util.makeHexColor(\n          borderColor[0] | 0,\n          borderColor[1] | 0,\n          borderColor[2] | 0\n        );\n      } else {\n        // Transparent (invisible) border, so do not draw it at all.\n        container.style.borderWidth = 0;\n      }\n    }\n\n    container.style.left = `${(100 * (rect[0] - pageLLx)) / pageWidth}%`;\n    container.style.top = `${(100 * (rect[1] - pageLLy)) / pageHeight}%`;\n\n    const { rotation } = data;\n    if (data.hasOwnCanvas || rotation === 0) {\n      container.style.width = `${(100 * width) / pageWidth}%`;\n      container.style.height = `${(100 * height) / pageHeight}%`;\n    } else {\n      this.setRotation(rotation, container);\n    }\n\n    return container;\n  }\n\n  setRotation(angle, container = this.container) {\n    const [pageLLx, pageLLy, pageURx, pageURy] = this.viewport.viewBox;\n    const pageWidth = pageURx - pageLLx;\n    const pageHeight = pageURy - pageLLy;\n    const { width, height } = getRectDims(this.data.rect);\n\n    let elementWidth, elementHeight;\n    if (angle % 180 === 0) {\n      elementWidth = (100 * width) / pageWidth;\n      elementHeight = (100 * height) / pageHeight;\n    } else {\n      elementWidth = (100 * height) / pageWidth;\n      elementHeight = (100 * width) / pageHeight;\n    }\n\n    container.style.width = `${elementWidth}%`;\n    container.style.height = `${elementHeight}%`;\n\n    container.setAttribute(\"data-main-rotation\", (360 - angle) % 360);\n  }\n\n  get _commonActions() {\n    const setColor = (jsName, styleName, event) => {\n      const color = event.detail[jsName];\n      event.target.style[styleName] = ColorConverters[`${color[0]}_HTML`](\n        color.slice(1)\n      );\n    };\n\n    return shadow(this, \"_commonActions\", {\n      display: event => {\n        const hidden = event.detail.display % 2 === 1;\n        this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n        this.annotationStorage.setValue(this.data.id, {\n          hidden,\n          print: event.detail.display === 0 || event.detail.display === 3,\n        });\n      },\n      print: event => {\n        this.annotationStorage.setValue(this.data.id, {\n          print: event.detail.print,\n        });\n      },\n      hidden: event => {\n        this.container.style.visibility = event.detail.hidden\n          ? \"hidden\"\n          : \"visible\";\n        this.annotationStorage.setValue(this.data.id, {\n          hidden: event.detail.hidden,\n        });\n      },\n      focus: event => {\n        setTimeout(() => event.target.focus({ preventScroll: false }), 0);\n      },\n      userName: event => {\n        // tooltip\n        event.target.title = event.detail.userName;\n      },\n      readonly: event => {\n        if (event.detail.readonly) {\n          event.target.setAttribute(\"readonly\", \"\");\n        } else {\n          event.target.removeAttribute(\"readonly\");\n        }\n      },\n      required: event => {\n        this._setRequired(event.target, event.detail.required);\n      },\n      bgColor: event => {\n        setColor(\"bgColor\", \"backgroundColor\", event);\n      },\n      fillColor: event => {\n        setColor(\"fillColor\", \"backgroundColor\", event);\n      },\n      fgColor: event => {\n        setColor(\"fgColor\", \"color\", event);\n      },\n      textColor: event => {\n        setColor(\"textColor\", \"color\", event);\n      },\n      borderColor: event => {\n        setColor(\"borderColor\", \"borderColor\", event);\n      },\n      strokeColor: event => {\n        setColor(\"strokeColor\", \"borderColor\", event);\n      },\n      rotation: event => {\n        const angle = event.detail.rotation;\n        this.setRotation(angle);\n        this.annotationStorage.setValue(this.data.id, {\n          rotation: angle,\n        });\n      },\n    });\n  }\n\n  _dispatchEventFromSandbox(actions, jsEvent) {\n    const commonActions = this._commonActions;\n    for (const name of Object.keys(jsEvent.detail)) {\n      const action = actions[name] || commonActions[name];\n      if (action) {\n        action(jsEvent);\n      }\n    }\n  }\n\n  _setDefaultPropertiesFromJS(element) {\n    if (!this.enableScripting) {\n      return;\n    }\n\n    // Some properties may have been updated thanks to JS.\n    const storedData = this.annotationStorage.getRawValue(this.data.id);\n    if (!storedData) {\n      return;\n    }\n\n    const commonActions = this._commonActions;\n    for (const [actionName, detail] of Object.entries(storedData)) {\n      const action = commonActions[actionName];\n      if (action) {\n        const eventProxy = {\n          detail: {\n            [actionName]: detail,\n          },\n          target: element,\n        };\n        action(eventProxy);\n        // The action has been consumed: no need to keep it.\n        delete storedData[actionName];\n      }\n    }\n  }\n\n  /**\n   * Create quadrilaterals from the annotation's quadpoints.\n   *\n   * @private\n   * @param {boolean} ignoreBorder\n   * @memberof AnnotationElement\n   * @returns {Array<HTMLElement>} An array of section elements.\n   */\n  _createQuadrilaterals(ignoreBorder = false) {\n    if (!this.data.quadPoints) {\n      return null;\n    }\n\n    const quadrilaterals = [];\n    const savedRect = this.data.rect;\n    for (const quadPoint of this.data.quadPoints) {\n      this.data.rect = [\n        quadPoint[2].x,\n        quadPoint[2].y,\n        quadPoint[1].x,\n        quadPoint[1].y,\n      ];\n      quadrilaterals.push(this._createContainer(ignoreBorder));\n    }\n    this.data.rect = savedRect;\n    return quadrilaterals;\n  }\n\n  /**\n   * Create a popup for the annotation's HTML element. This is used for\n   * annotations that do not have a Popup entry in the dictionary, but\n   * are of a type that works with popups (such as Highlight annotations).\n   *\n   * @private\n   * @param {HTMLDivElement|HTMLImageElement|null} trigger\n   * @param {Object} data\n   * @memberof AnnotationElement\n   */\n  _createPopup(trigger, data) {\n    let container = this.container;\n    if (this.quadrilaterals) {\n      trigger = trigger || this.quadrilaterals;\n      container = this.quadrilaterals[0];\n    }\n\n    // If no trigger element is specified, create it.\n    if (!trigger) {\n      trigger = document.createElement(\"div\");\n      trigger.className = \"popupTriggerArea\";\n      container.append(trigger);\n    }\n\n    const popupElement = new PopupElement({\n      container,\n      trigger,\n      color: data.color,\n      titleObj: data.titleObj,\n      modificationDate: data.modificationDate,\n      contentsObj: data.contentsObj,\n      richText: data.richText,\n      hideWrapper: true,\n    });\n    const popup = popupElement.render();\n\n    // Position the popup next to the annotation's container.\n    popup.style.left = \"100%\";\n\n    container.append(popup);\n  }\n\n  /**\n   * Render the quadrilaterals of the annotation.\n   *\n   * @private\n   * @param {string} className\n   * @memberof AnnotationElement\n   * @returns {Array<HTMLElement>} An array of section elements.\n   */\n  _renderQuadrilaterals(className) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(this.quadrilaterals, \"Missing quadrilaterals during rendering\");\n    }\n\n    for (const quadrilateral of this.quadrilaterals) {\n      quadrilateral.className = className;\n    }\n    return this.quadrilaterals;\n  }\n\n  /**\n   * Render the annotation's HTML element(s).\n   *\n   * @public\n   * @memberof AnnotationElement\n   * @returns {HTMLElement|Array<HTMLElement>} A section element or\n   *   an array of section elements.\n   */\n  render() {\n    unreachable(\"Abstract method `AnnotationElement.render` called\");\n  }\n\n  /**\n   * @private\n   * @returns {Array}\n   */\n  _getElementsByName(name, skipId = null) {\n    const fields = [];\n\n    if (this._fieldObjects) {\n      const fieldObj = this._fieldObjects[name];\n      if (fieldObj) {\n        for (const { page, id, exportValues } of fieldObj) {\n          if (page === -1) {\n            continue;\n          }\n          if (id === skipId) {\n            continue;\n          }\n          const exportValue =\n            typeof exportValues === \"string\" ? exportValues : null;\n\n          const domElement = document.querySelector(\n            `[data-element-id=\"${id}\"]`\n          );\n          if (domElement && !GetElementsByNameSet.has(domElement)) {\n            warn(`_getElementsByName - element not allowed: ${id}`);\n            continue;\n          }\n          fields.push({ id, exportValue, domElement });\n        }\n      }\n      return fields;\n    }\n    // Fallback to a regular DOM lookup, to ensure that the standalone\n    // viewer components won't break.\n    for (const domElement of document.getElementsByName(name)) {\n      const { id, exportValue } = domElement;\n      if (id === skipId) {\n        continue;\n      }\n      if (!GetElementsByNameSet.has(domElement)) {\n        continue;\n      }\n      fields.push({ id, exportValue, domElement });\n    }\n    return fields;\n  }\n\n  static get platform() {\n    const platform = typeof navigator !== \"undefined\" ? navigator.platform : \"\";\n\n    return shadow(this, \"platform\", {\n      isWin: platform.includes(\"Win\"),\n      isMac: platform.includes(\"Mac\"),\n    });\n  }\n}\n\nclass LinkAnnotationElement extends AnnotationElement {\n  constructor(parameters, options = null) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: !!options?.ignoreBorder,\n      createQuadrilaterals: true,\n    });\n    this.isTooltipOnly = parameters.data.isTooltipOnly;\n  }\n\n  render() {\n    const { data, linkService } = this;\n    const link = document.createElement(\"a\");\n    link.setAttribute(\"data-element-id\", data.id);\n    let isBound = false;\n\n    if (data.url) {\n      linkService.addLinkAttributes(link, data.url, data.newWindow);\n      isBound = true;\n    } else if (data.action) {\n      this._bindNamedAction(link, data.action);\n      isBound = true;\n    } else if (data.dest) {\n      this._bindLink(link, data.dest);\n      isBound = true;\n    } else {\n      if (\n        data.actions &&\n        (data.actions.Action ||\n          data.actions[\"Mouse Up\"] ||\n          data.actions[\"Mouse Down\"]) &&\n        this.enableScripting &&\n        this.hasJSActions\n      ) {\n        this._bindJSAction(link, data);\n        isBound = true;\n      }\n\n      if (data.resetForm) {\n        this._bindResetFormAction(link, data.resetForm);\n        isBound = true;\n      } else if (this.isTooltipOnly && !isBound) {\n        this._bindLink(link, \"\");\n        isBound = true;\n      }\n    }\n\n    if (this.quadrilaterals) {\n      return this._renderQuadrilaterals(\"linkAnnotation\").map(\n        (quadrilateral, index) => {\n          const linkElement = index === 0 ? link : link.cloneNode();\n          quadrilateral.append(linkElement);\n          return quadrilateral;\n        }\n      );\n    }\n\n    this.container.className = \"linkAnnotation\";\n    if (isBound) {\n      this.container.append(link);\n    }\n\n    return this.container;\n  }\n\n  /**\n   * Bind internal links to the link element.\n   *\n   * @private\n   * @param {Object} link\n   * @param {Object} destination\n   * @memberof LinkAnnotationElement\n   */\n  _bindLink(link, destination) {\n    link.href = this.linkService.getDestinationHash(destination);\n    link.onclick = () => {\n      if (destination) {\n        this.linkService.goToDestination(destination);\n      }\n      return false;\n    };\n    if (destination || destination === /* isTooltipOnly = */ \"\") {\n      link.className = \"internalLink\";\n    }\n  }\n\n  /**\n   * Bind named actions to the link element.\n   *\n   * @private\n   * @param {Object} link\n   * @param {Object} action\n   * @memberof LinkAnnotationElement\n   */\n  _bindNamedAction(link, action) {\n    link.href = this.linkService.getAnchorUrl(\"\");\n    link.onclick = () => {\n      this.linkService.executeNamedAction(action);\n      return false;\n    };\n    link.className = \"internalLink\";\n  }\n\n  /**\n   * Bind JS actions to the link element.\n   *\n   * @private\n   * @param {Object} link\n   * @param {Object} data\n   * @memberof LinkAnnotationElement\n   */\n  _bindJSAction(link, data) {\n    link.href = this.linkService.getAnchorUrl(\"\");\n    const map = new Map([\n      [\"Action\", \"onclick\"],\n      [\"Mouse Up\", \"onmouseup\"],\n      [\"Mouse Down\", \"onmousedown\"],\n    ]);\n    for (const name of Object.keys(data.actions)) {\n      const jsName = map.get(name);\n      if (!jsName) {\n        continue;\n      }\n      link[jsName] = () => {\n        this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n          source: this,\n          detail: {\n            id: data.id,\n            name,\n          },\n        });\n        return false;\n      };\n    }\n\n    if (!link.onclick) {\n      link.onclick = () => false;\n    }\n    link.className = \"internalLink\";\n  }\n\n  _bindResetFormAction(link, resetForm) {\n    const otherClickAction = link.onclick;\n    if (!otherClickAction) {\n      link.href = this.linkService.getAnchorUrl(\"\");\n    }\n    link.className = \"internalLink\";\n\n    if (!this._fieldObjects) {\n      warn(\n        `_bindResetFormAction - \"resetForm\" action not supported, ` +\n          \"ensure that the `fieldObjects` parameter is provided.\"\n      );\n      if (!otherClickAction) {\n        link.onclick = () => false;\n      }\n      return;\n    }\n\n    link.onclick = () => {\n      if (otherClickAction) {\n        otherClickAction();\n      }\n\n      const {\n        fields: resetFormFields,\n        refs: resetFormRefs,\n        include,\n      } = resetForm;\n\n      const allFields = [];\n      if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\n        const fieldIds = new Set(resetFormRefs);\n        for (const fieldName of resetFormFields) {\n          const fields = this._fieldObjects[fieldName] || [];\n          for (const { id } of fields) {\n            fieldIds.add(id);\n          }\n        }\n        for (const fields of Object.values(this._fieldObjects)) {\n          for (const field of fields) {\n            if (fieldIds.has(field.id) === include) {\n              allFields.push(field);\n            }\n          }\n        }\n      } else {\n        for (const fields of Object.values(this._fieldObjects)) {\n          allFields.push(...fields);\n        }\n      }\n\n      const storage = this.annotationStorage;\n      const allIds = [];\n      for (const field of allFields) {\n        const { id } = field;\n        allIds.push(id);\n        switch (field.type) {\n          case \"text\": {\n            const value = field.defaultValue || \"\";\n            storage.setValue(id, { value });\n            break;\n          }\n          case \"checkbox\":\n          case \"radiobutton\": {\n            const value = field.defaultValue === field.exportValues;\n            storage.setValue(id, { value });\n            break;\n          }\n          case \"combobox\":\n          case \"listbox\": {\n            const value = field.defaultValue || \"\";\n            storage.setValue(id, { value });\n            break;\n          }\n          default:\n            continue;\n        }\n\n        const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n        if (!domElement) {\n          continue;\n        } else if (!GetElementsByNameSet.has(domElement)) {\n          warn(`_bindResetFormAction - element not allowed: ${id}`);\n          continue;\n        }\n        domElement.dispatchEvent(new Event(\"resetform\"));\n      }\n\n      if (this.enableScripting) {\n        // Update the values in the sandbox.\n        this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n          source: this,\n          detail: {\n            id: \"app\",\n            ids: allIds,\n            name: \"ResetForm\",\n          },\n        });\n      }\n\n      return false;\n    };\n  }\n}\n\nclass TextAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    const isRenderable = !!(\n      parameters.data.hasPopup ||\n      parameters.data.titleObj?.str ||\n      parameters.data.contentsObj?.str ||\n      parameters.data.richText?.str\n    );\n    super(parameters, { isRenderable });\n  }\n\n  render() {\n    this.container.className = \"textAnnotation\";\n\n    const image = document.createElement(\"img\");\n    image.src =\n      this.imageResourcesPath +\n      \"annotation-\" +\n      this.data.name.toLowerCase() +\n      \".svg\";\n    image.alt = \"[{{type}} Annotation]\";\n    image.dataset.l10nId = \"text_annotation_type\";\n    image.dataset.l10nArgs = JSON.stringify({ type: this.data.name });\n\n    if (!this.data.hasPopup) {\n      this._createPopup(image, this.data);\n    }\n\n    this.container.append(image);\n    return this.container;\n  }\n}\n\nclass WidgetAnnotationElement extends AnnotationElement {\n  render() {\n    // Show only the container for unsupported field types.\n    if (this.data.alternativeText) {\n      this.container.title = this.data.alternativeText;\n    }\n\n    return this.container;\n  }\n\n  _getKeyModifier(event) {\n    const { isWin, isMac } = AnnotationElement.platform;\n    return (isWin && event.ctrlKey) || (isMac && event.metaKey);\n  }\n\n  _setEventListener(element, baseName, eventName, valueGetter) {\n    if (baseName.includes(\"mouse\")) {\n      // Mouse events\n      element.addEventListener(baseName, event => {\n        this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n          source: this,\n          detail: {\n            id: this.data.id,\n            name: eventName,\n            value: valueGetter(event),\n            shift: event.shiftKey,\n            modifier: this._getKeyModifier(event),\n          },\n        });\n      });\n    } else {\n      // Non mouse event\n      element.addEventListener(baseName, event => {\n        this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n          source: this,\n          detail: {\n            id: this.data.id,\n            name: eventName,\n            value: valueGetter(event),\n          },\n        });\n      });\n    }\n  }\n\n  _setEventListeners(element, names, getter) {\n    for (const [baseName, eventName] of names) {\n      if (eventName === \"Action\" || this.data.actions?.[eventName]) {\n        this._setEventListener(element, baseName, eventName, getter);\n      }\n    }\n  }\n\n  _setBackgroundColor(element) {\n    const color = this.data.backgroundColor || null;\n    element.style.backgroundColor =\n      color === null\n        ? \"transparent\"\n        : Util.makeHexColor(color[0], color[1], color[2]);\n  }\n\n  /**\n   * Apply text styles to the text in the element.\n   *\n   * @private\n   * @param {HTMLDivElement} element\n   * @memberof TextWidgetAnnotationElement\n   */\n  _setTextStyle(element) {\n    const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n    const { fontColor } = this.data.defaultAppearanceData;\n    const fontSize =\n      this.data.defaultAppearanceData.fontSize || DEFAULT_FONT_SIZE;\n\n    const style = element.style;\n\n    // TODO: If the font-size is zero, calculate it based on the height and\n    //       width of the element.\n    // Not setting `style.fontSize` will use the default font-size for now.\n\n    // We don't use the font, as specified in the PDF document, for the <input>\n    // element. Hence using the original `fontSize` could look bad, which is why\n    // it's instead based on the field height.\n    // If the height is \"big\" then it could lead to a too big font size\n    // so in this case use the one we've in the pdf (hence the min).\n    let computedFontSize;\n    if (this.data.multiLine) {\n      const height = Math.abs(this.data.rect[3] - this.data.rect[1]);\n      const numberOfLines = Math.round(height / (LINE_FACTOR * fontSize)) || 1;\n      const lineHeight = height / numberOfLines;\n      computedFontSize = Math.min(\n        fontSize,\n        Math.round(lineHeight / LINE_FACTOR)\n      );\n    } else {\n      const height = Math.abs(this.data.rect[3] - this.data.rect[1]);\n      computedFontSize = Math.min(fontSize, Math.round(height / LINE_FACTOR));\n    }\n    style.fontSize = `calc(${computedFontSize}px * var(--scale-factor))`;\n\n    style.color = Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n\n    if (this.data.textAlignment !== null) {\n      style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n    }\n  }\n\n  _setRequired(element, isRequired) {\n    if (isRequired) {\n      element.setAttribute(\"required\", true);\n    } else {\n      element.removeAttribute(\"required\");\n    }\n    element.setAttribute(\"aria-required\", isRequired);\n  }\n}\n\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    const isRenderable =\n      parameters.renderForms ||\n      (!parameters.data.hasAppearance && !!parameters.data.fieldValue);\n    super(parameters, { isRenderable });\n  }\n\n  setPropertyOnSiblings(base, key, value, keyInStorage) {\n    const storage = this.annotationStorage;\n    for (const element of this._getElementsByName(\n      base.name,\n      /* skipId = */ base.id\n    )) {\n      if (element.domElement) {\n        element.domElement[key] = value;\n      }\n      storage.setValue(element.id, { [keyInStorage]: value });\n    }\n  }\n\n  render() {\n    const storage = this.annotationStorage;\n    const id = this.data.id;\n\n    this.container.className = \"textWidgetAnnotation\";\n\n    let element = null;\n    if (this.renderForms) {\n      // NOTE: We cannot set the values using `element.value` below, since it\n      //       prevents the AnnotationLayer rasterizer in `test/driver.js`\n      //       from parsing the elements correctly for the reference tests.\n      const storedData = storage.getValue(id, {\n        value: this.data.fieldValue,\n      });\n      let textContent = storedData.formattedValue || storedData.value || \"\";\n      const maxLen = storage.getValue(id, {\n        charLimit: this.data.maxLen,\n      }).charLimit;\n      if (maxLen && textContent.length > maxLen) {\n        textContent = textContent.slice(0, maxLen);\n      }\n\n      const elementData = {\n        userValue: textContent,\n        formattedValue: null,\n        valueOnFocus: \"\",\n      };\n\n      if (this.data.multiLine) {\n        element = document.createElement(\"textarea\");\n        element.textContent = textContent;\n        if (this.data.doNotScroll) {\n          element.style.overflowY = \"hidden\";\n        }\n      } else {\n        element = document.createElement(\"input\");\n        element.type = \"text\";\n        element.setAttribute(\"value\", textContent);\n        if (this.data.doNotScroll) {\n          element.style.overflowX = \"hidden\";\n        }\n      }\n      GetElementsByNameSet.add(element);\n      element.setAttribute(\"data-element-id\", id);\n\n      element.disabled = this.data.readOnly;\n      element.name = this.data.fieldName;\n      element.tabIndex = DEFAULT_TAB_INDEX;\n\n      this._setRequired(element, this.data.required);\n\n      if (maxLen) {\n        element.maxLength = maxLen;\n      }\n\n      element.addEventListener(\"input\", event => {\n        storage.setValue(id, { value: event.target.value });\n        this.setPropertyOnSiblings(\n          element,\n          \"value\",\n          event.target.value,\n          \"value\"\n        );\n      });\n\n      element.addEventListener(\"resetform\", event => {\n        const defaultValue = this.data.defaultFieldValue ?? \"\";\n        element.value = elementData.userValue = defaultValue;\n        elementData.formattedValue = null;\n      });\n\n      let blurListener = event => {\n        const { formattedValue } = elementData;\n        if (formattedValue !== null && formattedValue !== undefined) {\n          event.target.value = formattedValue;\n        }\n        // Reset the cursor position to the start of the field (issue 12359).\n        event.target.scrollLeft = 0;\n      };\n\n      if (this.enableScripting && this.hasJSActions) {\n        element.addEventListener(\"focus\", event => {\n          if (elementData.userValue) {\n            event.target.value = elementData.userValue;\n          }\n          elementData.valueOnFocus = event.target.value;\n        });\n\n        element.addEventListener(\"updatefromsandbox\", jsEvent => {\n          const actions = {\n            value(event) {\n              elementData.userValue = event.detail.value ?? \"\";\n              storage.setValue(id, { value: elementData.userValue.toString() });\n              event.target.value = elementData.userValue;\n            },\n            formattedValue(event) {\n              const { formattedValue } = event.detail;\n              elementData.formattedValue = formattedValue;\n              if (\n                formattedValue !== null &&\n                formattedValue !== undefined &&\n                event.target !== document.activeElement\n              ) {\n                // Input hasn't the focus so display formatted string\n                event.target.value = formattedValue;\n              }\n              storage.setValue(id, {\n                formattedValue,\n              });\n            },\n            selRange(event) {\n              event.target.setSelectionRange(...event.detail.selRange);\n            },\n            charLimit: event => {\n              const { charLimit } = event.detail;\n              const { target } = event;\n              if (charLimit === 0) {\n                target.removeAttribute(\"maxLength\");\n                return;\n              }\n\n              target.setAttribute(\"maxLength\", charLimit);\n              let value = elementData.userValue;\n              if (!value || value.length <= charLimit) {\n                return;\n              }\n              value = value.slice(0, charLimit);\n              target.value = elementData.userValue = value;\n              storage.setValue(id, { value });\n\n              this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n                source: this,\n                detail: {\n                  id,\n                  name: \"Keystroke\",\n                  value,\n                  willCommit: true,\n                  commitKey: 1,\n                  selStart: target.selectionStart,\n                  selEnd: target.selectionEnd,\n                },\n              });\n            },\n          };\n          this._dispatchEventFromSandbox(actions, jsEvent);\n        });\n\n        // Even if the field hasn't any actions\n        // leaving it can still trigger some actions with Calculate\n        element.addEventListener(\"keydown\", event => {\n          // if the key is one of Escape, Enter or Tab\n          // then the data are committed\n          let commitKey = -1;\n          if (event.key === \"Escape\") {\n            commitKey = 0;\n          } else if (event.key === \"Enter\") {\n            commitKey = 2;\n          } else if (event.key === \"Tab\") {\n            commitKey = 3;\n          }\n          if (commitKey === -1) {\n            return;\n          }\n          const { value } = event.target;\n          if (elementData.valueOnFocus === value) {\n            return;\n          }\n          // Save the entered value\n          elementData.userValue = value;\n          this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n            source: this,\n            detail: {\n              id,\n              name: \"Keystroke\",\n              value,\n              willCommit: true,\n              commitKey,\n              selStart: event.target.selectionStart,\n              selEnd: event.target.selectionEnd,\n            },\n          });\n        });\n        const _blurListener = blurListener;\n        blurListener = null;\n        element.addEventListener(\"blur\", event => {\n          const { value } = event.target;\n          elementData.userValue = value;\n          if (this._mouseState.isDown && elementData.valueOnFocus !== value) {\n            // Focus out using the mouse: data are committed\n            this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n              source: this,\n              detail: {\n                id,\n                name: \"Keystroke\",\n                value,\n                willCommit: true,\n                commitKey: 1,\n                selStart: event.target.selectionStart,\n                selEnd: event.target.selectionEnd,\n              },\n            });\n          }\n          _blurListener(event);\n        });\n\n        if (this.data.actions?.Keystroke) {\n          element.addEventListener(\"beforeinput\", event => {\n            const { data, target } = event;\n            const { value, selectionStart, selectionEnd } = target;\n\n            let selStart = selectionStart,\n              selEnd = selectionEnd;\n\n            switch (event.inputType) {\n              // https://rawgit.com/w3c/input-events/v1/index.html#interface-InputEvent-Attributes\n              case \"deleteWordBackward\": {\n                const match = value\n                  .substring(0, selectionStart)\n                  .match(/\\w*[^\\w]*$/);\n                if (match) {\n                  selStart -= match[0].length;\n                }\n                break;\n              }\n              case \"deleteWordForward\": {\n                const match = value\n                  .substring(selectionStart)\n                  .match(/^[^\\w]*\\w*/);\n                if (match) {\n                  selEnd += match[0].length;\n                }\n                break;\n              }\n              case \"deleteContentBackward\":\n                if (selectionStart === selectionEnd) {\n                  selStart -= 1;\n                }\n                break;\n              case \"deleteContentForward\":\n                if (selectionStart === selectionEnd) {\n                  selEnd += 1;\n                }\n                break;\n            }\n\n            // We handle the event ourselves.\n            event.preventDefault();\n            this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n              source: this,\n              detail: {\n                id,\n                name: \"Keystroke\",\n                value,\n                change: data || \"\",\n                willCommit: false,\n                selStart,\n                selEnd,\n              },\n            });\n          });\n        }\n\n        this._setEventListeners(\n          element,\n          [\n            [\"focus\", \"Focus\"],\n            [\"blur\", \"Blur\"],\n            [\"mousedown\", \"Mouse Down\"],\n            [\"mouseenter\", \"Mouse Enter\"],\n            [\"mouseleave\", \"Mouse Exit\"],\n            [\"mouseup\", \"Mouse Up\"],\n          ],\n          event => event.target.value\n        );\n      }\n\n      if (blurListener) {\n        element.addEventListener(\"blur\", blurListener);\n      }\n\n      if (this.data.comb) {\n        const fieldWidth = this.data.rect[2] - this.data.rect[0];\n        const combWidth = fieldWidth / maxLen;\n\n        element.classList.add(\"comb\");\n        element.style.letterSpacing = `calc(${combWidth}px * var(--scale-factor) - 1ch)`;\n      }\n    } else {\n      element = document.createElement(\"div\");\n      element.textContent = this.data.fieldValue;\n      element.style.verticalAlign = \"middle\";\n      element.style.display = \"table-cell\";\n    }\n\n    this._setTextStyle(element);\n    this._setBackgroundColor(element);\n    this._setDefaultPropertiesFromJS(element);\n\n    this.container.append(element);\n    return this.container;\n  }\n}\n\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    super(parameters, { isRenderable: parameters.renderForms });\n  }\n\n  render() {\n    const storage = this.annotationStorage;\n    const data = this.data;\n    const id = data.id;\n    let value = storage.getValue(id, {\n      value: data.exportValue === data.fieldValue,\n    }).value;\n    if (typeof value === \"string\") {\n      // The value has been changed through js and set in annotationStorage.\n      value = value !== \"Off\";\n      storage.setValue(id, { value });\n    }\n\n    this.container.className = \"buttonWidgetAnnotation checkBox\";\n\n    const element = document.createElement(\"input\");\n    GetElementsByNameSet.add(element);\n    element.setAttribute(\"data-element-id\", id);\n\n    element.disabled = data.readOnly;\n    this._setRequired(element, this.data.required);\n    element.type = \"checkbox\";\n    element.name = data.fieldName;\n    if (value) {\n      element.setAttribute(\"checked\", true);\n    }\n    element.setAttribute(\"exportValue\", data.exportValue);\n    element.tabIndex = DEFAULT_TAB_INDEX;\n\n    element.addEventListener(\"change\", event => {\n      const { name, checked } = event.target;\n      for (const checkbox of this._getElementsByName(name, /* skipId = */ id)) {\n        const curChecked = checked && checkbox.exportValue === data.exportValue;\n        if (checkbox.domElement) {\n          checkbox.domElement.checked = curChecked;\n        }\n        storage.setValue(checkbox.id, { value: curChecked });\n      }\n      storage.setValue(id, { value: checked });\n    });\n\n    element.addEventListener(\"resetform\", event => {\n      const defaultValue = data.defaultFieldValue || \"Off\";\n      event.target.checked = defaultValue === data.exportValue;\n    });\n\n    if (this.enableScripting && this.hasJSActions) {\n      element.addEventListener(\"updatefromsandbox\", jsEvent => {\n        const actions = {\n          value(event) {\n            event.target.checked = event.detail.value !== \"Off\";\n            storage.setValue(id, { value: event.target.checked });\n          },\n        };\n        this._dispatchEventFromSandbox(actions, jsEvent);\n      });\n\n      this._setEventListeners(\n        element,\n        [\n          [\"change\", \"Validate\"],\n          [\"change\", \"Action\"],\n          [\"focus\", \"Focus\"],\n          [\"blur\", \"Blur\"],\n          [\"mousedown\", \"Mouse Down\"],\n          [\"mouseenter\", \"Mouse Enter\"],\n          [\"mouseleave\", \"Mouse Exit\"],\n          [\"mouseup\", \"Mouse Up\"],\n        ],\n        event => event.target.checked\n      );\n    }\n\n    this._setBackgroundColor(element);\n    this._setDefaultPropertiesFromJS(element);\n\n    this.container.append(element);\n    return this.container;\n  }\n}\n\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    super(parameters, { isRenderable: parameters.renderForms });\n  }\n\n  render() {\n    this.container.className = \"buttonWidgetAnnotation radioButton\";\n    const storage = this.annotationStorage;\n    const data = this.data;\n    const id = data.id;\n    let value = storage.getValue(id, {\n      value: data.fieldValue === data.buttonValue,\n    }).value;\n    if (typeof value === \"string\") {\n      // The value has been changed through js and set in annotationStorage.\n      value = value !== data.buttonValue;\n      storage.setValue(id, { value });\n    }\n\n    const element = document.createElement(\"input\");\n    GetElementsByNameSet.add(element);\n    element.setAttribute(\"data-element-id\", id);\n\n    element.disabled = data.readOnly;\n    this._setRequired(element, this.data.required);\n    element.type = \"radio\";\n    element.name = data.fieldName;\n    if (value) {\n      element.setAttribute(\"checked\", true);\n    }\n    element.tabIndex = DEFAULT_TAB_INDEX;\n\n    element.addEventListener(\"change\", event => {\n      const { name, checked } = event.target;\n      for (const radio of this._getElementsByName(name, /* skipId = */ id)) {\n        storage.setValue(radio.id, { value: false });\n      }\n      storage.setValue(id, { value: checked });\n    });\n\n    element.addEventListener(\"resetform\", event => {\n      const defaultValue = data.defaultFieldValue;\n      event.target.checked =\n        defaultValue !== null &&\n        defaultValue !== undefined &&\n        defaultValue === data.buttonValue;\n    });\n\n    if (this.enableScripting && this.hasJSActions) {\n      const pdfButtonValue = data.buttonValue;\n      element.addEventListener(\"updatefromsandbox\", jsEvent => {\n        const actions = {\n          value: event => {\n            const checked = pdfButtonValue === event.detail.value;\n            for (const radio of this._getElementsByName(event.target.name)) {\n              const curChecked = checked && radio.id === id;\n              if (radio.domElement) {\n                radio.domElement.checked = curChecked;\n              }\n              storage.setValue(radio.id, { value: curChecked });\n            }\n          },\n        };\n        this._dispatchEventFromSandbox(actions, jsEvent);\n      });\n\n      this._setEventListeners(\n        element,\n        [\n          [\"change\", \"Validate\"],\n          [\"change\", \"Action\"],\n          [\"focus\", \"Focus\"],\n          [\"blur\", \"Blur\"],\n          [\"mousedown\", \"Mouse Down\"],\n          [\"mouseenter\", \"Mouse Enter\"],\n          [\"mouseleave\", \"Mouse Exit\"],\n          [\"mouseup\", \"Mouse Up\"],\n        ],\n        event => event.target.checked\n      );\n    }\n\n    this._setBackgroundColor(element);\n    this._setDefaultPropertiesFromJS(element);\n\n    this.container.append(element);\n    return this.container;\n  }\n}\n\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n  constructor(parameters) {\n    super(parameters, { ignoreBorder: parameters.data.hasAppearance });\n  }\n\n  render() {\n    // The rendering and functionality of a push button widget annotation is\n    // equal to that of a link annotation, but may have more functionality, such\n    // as performing actions on form fields (resetting, submitting, et cetera).\n    const container = super.render();\n    container.className = \"buttonWidgetAnnotation pushButton\";\n\n    if (this.data.alternativeText) {\n      container.title = this.data.alternativeText;\n    }\n\n    const linkElement = container.lastChild;\n    if (this.enableScripting && this.hasJSActions && linkElement) {\n      this._setDefaultPropertiesFromJS(linkElement);\n\n      linkElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n        this._dispatchEventFromSandbox({}, jsEvent);\n      });\n    }\n\n    return container;\n  }\n}\n\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    super(parameters, { isRenderable: parameters.renderForms });\n  }\n\n  render() {\n    this.container.className = \"choiceWidgetAnnotation\";\n    const storage = this.annotationStorage;\n    const id = this.data.id;\n\n    const storedData = storage.getValue(id, {\n      value: this.data.fieldValue,\n    });\n\n    const selectElement = document.createElement(\"select\");\n    GetElementsByNameSet.add(selectElement);\n    selectElement.setAttribute(\"data-element-id\", id);\n\n    selectElement.disabled = this.data.readOnly;\n    this._setRequired(selectElement, this.data.required);\n    selectElement.name = this.data.fieldName;\n    selectElement.tabIndex = DEFAULT_TAB_INDEX;\n\n    let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\n\n    if (!this.data.combo) {\n      // List boxes have a size and (optionally) multiple selection.\n      selectElement.size = this.data.options.length;\n      if (this.data.multiSelect) {\n        selectElement.multiple = true;\n      }\n    }\n\n    selectElement.addEventListener(\"resetform\", event => {\n      const defaultValue = this.data.defaultFieldValue;\n      for (const option of selectElement.options) {\n        option.selected = option.value === defaultValue;\n      }\n    });\n\n    // Insert the options into the choice field.\n    for (const option of this.data.options) {\n      const optionElement = document.createElement(\"option\");\n      optionElement.textContent = option.displayValue;\n      optionElement.value = option.exportValue;\n      if (storedData.value.includes(option.exportValue)) {\n        optionElement.setAttribute(\"selected\", true);\n        addAnEmptyEntry = false;\n      }\n      selectElement.append(optionElement);\n    }\n\n    let removeEmptyEntry = null;\n    if (addAnEmptyEntry) {\n      const noneOptionElement = document.createElement(\"option\");\n      noneOptionElement.value = \" \";\n      noneOptionElement.setAttribute(\"hidden\", true);\n      noneOptionElement.setAttribute(\"selected\", true);\n      selectElement.prepend(noneOptionElement);\n\n      removeEmptyEntry = () => {\n        noneOptionElement.remove();\n        selectElement.removeEventListener(\"input\", removeEmptyEntry);\n        removeEmptyEntry = null;\n      };\n      selectElement.addEventListener(\"input\", removeEmptyEntry);\n    }\n\n    const getValue = (event, isExport) => {\n      const name = isExport ? \"value\" : \"textContent\";\n      const options = event.target.options;\n      if (!event.target.multiple) {\n        return options.selectedIndex === -1\n          ? null\n          : options[options.selectedIndex][name];\n      }\n      return Array.prototype.filter\n        .call(options, option => option.selected)\n        .map(option => option[name]);\n    };\n\n    const getItems = event => {\n      const options = event.target.options;\n      return Array.prototype.map.call(options, option => {\n        return { displayValue: option.textContent, exportValue: option.value };\n      });\n    };\n\n    if (this.enableScripting && this.hasJSActions) {\n      selectElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n        const actions = {\n          value(event) {\n            removeEmptyEntry?.();\n            const value = event.detail.value;\n            const values = new Set(Array.isArray(value) ? value : [value]);\n            for (const option of selectElement.options) {\n              option.selected = values.has(option.value);\n            }\n            storage.setValue(id, {\n              value: getValue(event, /* isExport */ true),\n            });\n          },\n          multipleSelection(event) {\n            selectElement.multiple = true;\n          },\n          remove(event) {\n            const options = selectElement.options;\n            const index = event.detail.remove;\n            options[index].selected = false;\n            selectElement.remove(index);\n            if (options.length > 0) {\n              const i = Array.prototype.findIndex.call(\n                options,\n                option => option.selected\n              );\n              if (i === -1) {\n                options[0].selected = true;\n              }\n            }\n            storage.setValue(id, {\n              value: getValue(event, /* isExport */ true),\n              items: getItems(event),\n            });\n          },\n          clear(event) {\n            while (selectElement.length !== 0) {\n              selectElement.remove(0);\n            }\n            storage.setValue(id, { value: null, items: [] });\n          },\n          insert(event) {\n            const { index, displayValue, exportValue } = event.detail.insert;\n            const selectChild = selectElement.children[index];\n            const optionElement = document.createElement(\"option\");\n            optionElement.textContent = displayValue;\n            optionElement.value = exportValue;\n\n            if (selectChild) {\n              selectChild.before(optionElement);\n            } else {\n              selectElement.append(optionElement);\n            }\n            storage.setValue(id, {\n              value: getValue(event, /* isExport */ true),\n              items: getItems(event),\n            });\n          },\n          items(event) {\n            const { items } = event.detail;\n            while (selectElement.length !== 0) {\n              selectElement.remove(0);\n            }\n            for (const item of items) {\n              const { displayValue, exportValue } = item;\n              const optionElement = document.createElement(\"option\");\n              optionElement.textContent = displayValue;\n              optionElement.value = exportValue;\n              selectElement.append(optionElement);\n            }\n            if (selectElement.options.length > 0) {\n              selectElement.options[0].selected = true;\n            }\n            storage.setValue(id, {\n              value: getValue(event, /* isExport */ true),\n              items: getItems(event),\n            });\n          },\n          indices(event) {\n            const indices = new Set(event.detail.indices);\n            for (const option of event.target.options) {\n              option.selected = indices.has(option.index);\n            }\n            storage.setValue(id, {\n              value: getValue(event, /* isExport */ true),\n            });\n          },\n          editable(event) {\n            event.target.disabled = !event.detail.editable;\n          },\n        };\n        this._dispatchEventFromSandbox(actions, jsEvent);\n      });\n\n      selectElement.addEventListener(\"input\", event => {\n        const exportValue = getValue(event, /* isExport */ true);\n        const value = getValue(event, /* isExport */ false);\n        storage.setValue(id, { value: exportValue });\n\n        this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n          source: this,\n          detail: {\n            id,\n            name: \"Keystroke\",\n            value,\n            changeEx: exportValue,\n            willCommit: true,\n            commitKey: 1,\n            keyDown: false,\n          },\n        });\n      });\n\n      this._setEventListeners(\n        selectElement,\n        [\n          [\"focus\", \"Focus\"],\n          [\"blur\", \"Blur\"],\n          [\"mousedown\", \"Mouse Down\"],\n          [\"mouseenter\", \"Mouse Enter\"],\n          [\"mouseleave\", \"Mouse Exit\"],\n          [\"mouseup\", \"Mouse Up\"],\n          [\"input\", \"Action\"],\n        ],\n        event => event.target.checked\n      );\n    } else {\n      selectElement.addEventListener(\"input\", function (event) {\n        storage.setValue(id, { value: getValue(event, /* isExport */ true) });\n      });\n    }\n\n    if (this.data.combo) {\n      this._setTextStyle(selectElement);\n    } else {\n      // Just use the default font size...\n      // it's a bit hard to guess what is a good size.\n    }\n    this._setBackgroundColor(selectElement);\n    this._setDefaultPropertiesFromJS(selectElement);\n\n    this.container.append(selectElement);\n    return this.container;\n  }\n}\n\nclass PopupAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    const isRenderable = !!(\n      parameters.data.titleObj?.str ||\n      parameters.data.contentsObj?.str ||\n      parameters.data.richText?.str\n    );\n    super(parameters, { isRenderable });\n  }\n\n  render() {\n    // Do not render popup annotations for parent elements with these types as\n    // they create the popups themselves (because of custom trigger divs).\n    const IGNORE_TYPES = [\n      \"Line\",\n      \"Square\",\n      \"Circle\",\n      \"PolyLine\",\n      \"Polygon\",\n      \"Ink\",\n    ];\n\n    this.container.className = \"popupAnnotation\";\n\n    if (IGNORE_TYPES.includes(this.data.parentType)) {\n      return this.container;\n    }\n\n    const selector = `[data-annotation-id=\"${this.data.parentId}\"]`;\n    const parentElements = this.layer.querySelectorAll(selector);\n    if (parentElements.length === 0) {\n      return this.container;\n    }\n\n    const popup = new PopupElement({\n      container: this.container,\n      trigger: Array.from(parentElements),\n      color: this.data.color,\n      titleObj: this.data.titleObj,\n      modificationDate: this.data.modificationDate,\n      contentsObj: this.data.contentsObj,\n      richText: this.data.richText,\n    });\n\n    // Position the popup next to the parent annotation's container.\n    // PDF viewers ignore a popup annotation's rectangle.\n    const page = this.page;\n    const rect = Util.normalizeRect([\n      this.data.parentRect[0],\n      page.view[3] - this.data.parentRect[1] + page.view[1],\n      this.data.parentRect[2],\n      page.view[3] - this.data.parentRect[3] + page.view[1],\n    ]);\n    const popupLeft =\n      rect[0] + this.data.parentRect[2] - this.data.parentRect[0];\n    const popupTop = rect[1];\n\n    const [pageLLx, pageLLy, pageURx, pageURy] = this.viewport.viewBox;\n    const pageWidth = pageURx - pageLLx;\n    const pageHeight = pageURy - pageLLy;\n\n    this.container.style.left = `${(100 * (popupLeft - pageLLx)) / pageWidth}%`;\n    this.container.style.top = `${(100 * (popupTop - pageLLy)) / pageHeight}%`;\n\n    this.container.append(popup.render());\n    return this.container;\n  }\n}\n\nclass PopupElement {\n  constructor(parameters) {\n    this.container = parameters.container;\n    this.trigger = parameters.trigger;\n    this.color = parameters.color;\n    this.titleObj = parameters.titleObj;\n    this.modificationDate = parameters.modificationDate;\n    this.contentsObj = parameters.contentsObj;\n    this.richText = parameters.richText;\n    this.hideWrapper = parameters.hideWrapper || false;\n\n    this.pinned = false;\n  }\n\n  render() {\n    const BACKGROUND_ENLIGHT = 0.7;\n\n    const wrapper = document.createElement(\"div\");\n    wrapper.className = \"popupWrapper\";\n\n    // For Popup annotations we hide the entire section because it contains\n    // only the popup. However, for Text annotations without a separate Popup\n    // annotation, we cannot hide the entire container as the image would\n    // disappear too. In that special case, hiding the wrapper suffices.\n    this.hideElement = this.hideWrapper ? wrapper : this.container;\n    this.hideElement.hidden = true;\n\n    const popup = document.createElement(\"div\");\n    popup.className = \"popup\";\n\n    const color = this.color;\n    if (color) {\n      // Enlighten the color.\n      const r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0];\n      const g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1];\n      const b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2];\n      popup.style.backgroundColor = Util.makeHexColor(r | 0, g | 0, b | 0);\n    }\n\n    const title = document.createElement(\"h1\");\n    title.dir = this.titleObj.dir;\n    title.textContent = this.titleObj.str;\n    popup.append(title);\n\n    // The modification date is shown in the popup instead of the creation\n    // date if it is available and can be parsed correctly, which is\n    // consistent with other viewers such as Adobe Acrobat.\n    const dateObject = PDFDateString.toDateObject(this.modificationDate);\n    if (dateObject) {\n      const modificationDate = document.createElement(\"span\");\n      modificationDate.className = \"popupDate\";\n      modificationDate.textContent = \"{{date}}, {{time}}\";\n      modificationDate.dataset.l10nId = \"annotation_date_string\";\n      modificationDate.dataset.l10nArgs = JSON.stringify({\n        date: dateObject.toLocaleDateString(),\n        time: dateObject.toLocaleTimeString(),\n      });\n      popup.append(modificationDate);\n    }\n\n    if (\n      this.richText?.str &&\n      (!this.contentsObj?.str || this.contentsObj.str === this.richText.str)\n    ) {\n      XfaLayer.render({\n        xfaHtml: this.richText.html,\n        intent: \"richText\",\n        div: popup,\n      });\n      popup.lastChild.className = \"richText popupContent\";\n    } else {\n      const contents = this._formatContents(this.contentsObj);\n      popup.append(contents);\n    }\n\n    if (!Array.isArray(this.trigger)) {\n      this.trigger = [this.trigger];\n    }\n\n    // Attach the event listeners to the trigger element.\n    for (const element of this.trigger) {\n      element.addEventListener(\"click\", this._toggle.bind(this));\n      element.addEventListener(\"mouseover\", this._show.bind(this, false));\n      element.addEventListener(\"mouseout\", this._hide.bind(this, false));\n    }\n    popup.addEventListener(\"click\", this._hide.bind(this, true));\n\n    wrapper.append(popup);\n    return wrapper;\n  }\n\n  /**\n   * Format the contents of the popup by adding newlines where necessary.\n   *\n   * @private\n   * @param {Object<string, string>} contentsObj\n   * @memberof PopupElement\n   * @returns {HTMLParagraphElement}\n   */\n  _formatContents({ str, dir }) {\n    const p = document.createElement(\"p\");\n    p.className = \"popupContent\";\n    p.dir = dir;\n    const lines = str.split(/(?:\\r\\n?|\\n)/);\n    for (let i = 0, ii = lines.length; i < ii; ++i) {\n      const line = lines[i];\n      p.append(document.createTextNode(line));\n      if (i < ii - 1) {\n        p.append(document.createElement(\"br\"));\n      }\n    }\n    return p;\n  }\n\n  /**\n   * Toggle the visibility of the popup.\n   *\n   * @private\n   * @memberof PopupElement\n   */\n  _toggle() {\n    if (this.pinned) {\n      this._hide(true);\n    } else {\n      this._show(true);\n    }\n  }\n\n  /**\n   * Show the popup.\n   *\n   * @private\n   * @param {boolean} pin\n   * @memberof PopupElement\n   */\n  _show(pin = false) {\n    if (pin) {\n      this.pinned = true;\n    }\n    if (this.hideElement.hidden) {\n      this.hideElement.hidden = false;\n      this.container.style.zIndex =\n        parseInt(this.container.style.zIndex) + 1000;\n    }\n  }\n\n  /**\n   * Hide the popup.\n   *\n   * @private\n   * @param {boolean} unpin\n   * @memberof PopupElement\n   */\n  _hide(unpin = true) {\n    if (unpin) {\n      this.pinned = false;\n    }\n    if (!this.hideElement.hidden && !this.pinned) {\n      this.hideElement.hidden = true;\n      this.container.style.zIndex =\n        parseInt(this.container.style.zIndex) - 1000;\n    }\n  }\n}\n\nclass FreeTextAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    const isRenderable = !!(\n      parameters.data.hasPopup ||\n      parameters.data.titleObj?.str ||\n      parameters.data.contentsObj?.str ||\n      parameters.data.richText?.str\n    );\n    super(parameters, { isRenderable, ignoreBorder: true });\n    this.textContent = parameters.data.textContent;\n  }\n\n  render() {\n    this.container.className = \"freeTextAnnotation\";\n\n    if (this.textContent) {\n      const content = document.createElement(\"div\");\n      content.className = \"annotationTextContent\";\n      content.setAttribute(\"role\", \"comment\");\n      for (const line of this.textContent) {\n        const lineSpan = document.createElement(\"span\");\n        lineSpan.textContent = line;\n        content.append(lineSpan);\n      }\n      this.container.append(content);\n    }\n\n    if (!this.data.hasPopup) {\n      this._createPopup(null, this.data);\n    }\n    return this.container;\n  }\n}\n\nclass LineAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    const isRenderable = !!(\n      parameters.data.hasPopup ||\n      parameters.data.titleObj?.str ||\n      parameters.data.contentsObj?.str ||\n      parameters.data.richText?.str\n    );\n    super(parameters, { isRenderable, ignoreBorder: true });\n  }\n\n  render() {\n    this.container.className = \"lineAnnotation\";\n\n    // Create an invisible line with the same starting and ending coordinates\n    // that acts as the trigger for the popup. Only the line itself should\n    // trigger the popup, not the entire container.\n    const data = this.data;\n    const { width, height } = getRectDims(data.rect);\n    const svg = this.svgFactory.create(\n      width,\n      height,\n      /* skipDimensions = */ true\n    );\n\n    // PDF coordinates are calculated from a bottom left origin, so transform\n    // the line coordinates to a top left origin for the SVG element.\n    const line = this.svgFactory.createElement(\"svg:line\");\n    line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n    line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n    line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n    line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n    // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n    // won't be possible to open/close the popup (note e.g. issue 11122).\n    line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n    line.setAttribute(\"stroke\", \"transparent\");\n    line.setAttribute(\"fill\", \"transparent\");\n\n    svg.append(line);\n    this.container.append(svg);\n\n    // Create the popup ourselves so that we can bind it to the line instead\n    // of to the entire container (which is the default).\n    this._createPopup(line, data);\n\n    return this.container;\n  }\n}\n\nclass SquareAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    const isRenderable = !!(\n      parameters.data.hasPopup ||\n      parameters.data.titleObj?.str ||\n      parameters.data.contentsObj?.str ||\n      parameters.data.richText?.str\n    );\n    super(parameters, { isRenderable, ignoreBorder: true });\n  }\n\n  render() {\n    this.container.className = \"squareAnnotation\";\n\n    // Create an invisible square with the same rectangle that acts as the\n    // trigger for the popup. Only the square itself should trigger the\n    // popup, not the entire container.\n    const data = this.data;\n    const { width, height } = getRectDims(data.rect);\n    const svg = this.svgFactory.create(\n      width,\n      height,\n      /* skipDimensions = */ true\n    );\n\n    // The browser draws half of the borders inside the square and half of\n    // the borders outside the square by default. This behavior cannot be\n    // changed programmatically, so correct for that here.\n    const borderWidth = data.borderStyle.width;\n    const square = this.svgFactory.createElement(\"svg:rect\");\n    square.setAttribute(\"x\", borderWidth / 2);\n    square.setAttribute(\"y\", borderWidth / 2);\n    square.setAttribute(\"width\", width - borderWidth);\n    square.setAttribute(\"height\", height - borderWidth);\n    // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n    // won't be possible to open/close the popup (note e.g. issue 11122).\n    square.setAttribute(\"stroke-width\", borderWidth || 1);\n    square.setAttribute(\"stroke\", \"transparent\");\n    square.setAttribute(\"fill\", \"transparent\");\n\n    svg.append(square);\n    this.container.append(svg);\n\n    // Create the popup ourselves so that we can bind it to the square instead\n    // of to the entire container (which is the default).\n    this._createPopup(square, data);\n\n    return this.container;\n  }\n}\n\nclass CircleAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    const isRenderable = !!(\n      parameters.data.hasPopup ||\n      parameters.data.titleObj?.str ||\n      parameters.data.contentsObj?.str ||\n      parameters.data.richText?.str\n    );\n    super(parameters, { isRenderable, ignoreBorder: true });\n  }\n\n  render() {\n    this.container.className = \"circleAnnotation\";\n\n    // Create an invisible circle with the same ellipse that acts as the\n    // trigger for the popup. Only the circle itself should trigger the\n    // popup, not the entire container.\n    const data = this.data;\n    const { width, height } = getRectDims(data.rect);\n    const svg = this.svgFactory.create(\n      width,\n      height,\n      /* skipDimensions = */ true\n    );\n\n    // The browser draws half of the borders inside the circle and half of\n    // the borders outside the circle by default. This behavior cannot be\n    // changed programmatically, so correct for that here.\n    const borderWidth = data.borderStyle.width;\n    const circle = this.svgFactory.createElement(\"svg:ellipse\");\n    circle.setAttribute(\"cx\", width / 2);\n    circle.setAttribute(\"cy\", height / 2);\n    circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n    circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n    // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n    // won't be possible to open/close the popup (note e.g. issue 11122).\n    circle.setAttribute(\"stroke-width\", borderWidth || 1);\n    circle.setAttribute(\"stroke\", \"transparent\");\n    circle.setAttribute(\"fill\", \"transparent\");\n\n    svg.append(circle);\n    this.container.append(svg);\n\n    // Create the popup ourselves so that we can bind it to the circle instead\n    // of to the entire container (which is the default).\n    this._createPopup(circle, data);\n\n    return this.container;\n  }\n}\n\nclass PolylineAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    const isRenderable = !!(\n      parameters.data.hasPopup ||\n      parameters.data.titleObj?.str ||\n      parameters.data.contentsObj?.str ||\n      parameters.data.richText?.str\n    );\n    super(parameters, { isRenderable, ignoreBorder: true });\n\n    this.containerClassName = \"polylineAnnotation\";\n    this.svgElementName = \"svg:polyline\";\n  }\n\n  render() {\n    this.container.className = this.containerClassName;\n\n    // Create an invisible polyline with the same points that acts as the\n    // trigger for the popup. Only the polyline itself should trigger the\n    // popup, not the entire container.\n    const data = this.data;\n    const { width, height } = getRectDims(data.rect);\n    const svg = this.svgFactory.create(\n      width,\n      height,\n      /* skipDimensions = */ true\n    );\n\n    // Convert the vertices array to a single points string that the SVG\n    // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n    // calculated from a bottom left origin, so transform the polyline\n    // coordinates to a top left origin for the SVG element.\n    let points = [];\n    for (const coordinate of data.vertices) {\n      const x = coordinate.x - data.rect[0];\n      const y = data.rect[3] - coordinate.y;\n      points.push(x + \",\" + y);\n    }\n    points = points.join(\" \");\n\n    const polyline = this.svgFactory.createElement(this.svgElementName);\n    polyline.setAttribute(\"points\", points);\n    // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n    // won't be possible to open/close the popup (note e.g. issue 11122).\n    polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n    polyline.setAttribute(\"stroke\", \"transparent\");\n    polyline.setAttribute(\"fill\", \"transparent\");\n\n    svg.append(polyline);\n    this.container.append(svg);\n\n    // Create the popup ourselves so that we can bind it to the polyline\n    // instead of to the entire container (which is the default).\n    this._createPopup(polyline, data);\n\n    return this.container;\n  }\n}\n\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n  constructor(parameters) {\n    // Polygons are specific forms of polylines, so reuse their logic.\n    super(parameters);\n\n    this.containerClassName = \"polygonAnnotation\";\n    this.svgElementName = \"svg:polygon\";\n  }\n}\n\nclass CaretAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    const isRenderable = !!(\n      parameters.data.hasPopup ||\n      parameters.data.titleObj?.str ||\n      parameters.data.contentsObj?.str ||\n      parameters.data.richText?.str\n    );\n    super(parameters, { isRenderable, ignoreBorder: true });\n  }\n\n  render() {\n    this.container.className = \"caretAnnotation\";\n\n    if (!this.data.hasPopup) {\n      this._createPopup(null, this.data);\n    }\n    return this.container;\n  }\n}\n\nclass InkAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    const isRenderable = !!(\n      parameters.data.hasPopup ||\n      parameters.data.titleObj?.str ||\n      parameters.data.contentsObj?.str ||\n      parameters.data.richText?.str\n    );\n    super(parameters, { isRenderable, ignoreBorder: true });\n\n    this.containerClassName = \"inkAnnotation\";\n\n    // Use the polyline SVG element since it allows us to use coordinates\n    // directly and to draw both straight lines and curves.\n    this.svgElementName = \"svg:polyline\";\n  }\n\n  render() {\n    this.container.className = this.containerClassName;\n\n    // Create an invisible polyline with the same points that acts as the\n    // trigger for the popup.\n    const data = this.data;\n    const { width, height } = getRectDims(data.rect);\n    const svg = this.svgFactory.create(\n      width,\n      height,\n      /* skipDimensions = */ true\n    );\n\n    for (const inkList of data.inkLists) {\n      // Convert the ink list to a single points string that the SVG\n      // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n      // calculated from a bottom left origin, so transform the polyline\n      // coordinates to a top left origin for the SVG element.\n      let points = [];\n      for (const coordinate of inkList) {\n        const x = coordinate.x - data.rect[0];\n        const y = data.rect[3] - coordinate.y;\n        points.push(`${x},${y}`);\n      }\n      points = points.join(\" \");\n\n      const polyline = this.svgFactory.createElement(this.svgElementName);\n      polyline.setAttribute(\"points\", points);\n      // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n      // won't be possible to open/close the popup (note e.g. issue 11122).\n      polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n      polyline.setAttribute(\"stroke\", \"transparent\");\n      polyline.setAttribute(\"fill\", \"transparent\");\n\n      // Create the popup ourselves so that we can bind it to the polyline\n      // instead of to the entire container (which is the default).\n      this._createPopup(polyline, data);\n\n      svg.append(polyline);\n    }\n\n    this.container.append(svg);\n    return this.container;\n  }\n}\n\nclass HighlightAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    const isRenderable = !!(\n      parameters.data.hasPopup ||\n      parameters.data.titleObj?.str ||\n      parameters.data.contentsObj?.str ||\n      parameters.data.richText?.str\n    );\n    super(parameters, {\n      isRenderable,\n      ignoreBorder: true,\n      createQuadrilaterals: true,\n    });\n  }\n\n  render() {\n    if (!this.data.hasPopup) {\n      this._createPopup(null, this.data);\n    }\n\n    if (this.quadrilaterals) {\n      return this._renderQuadrilaterals(\"highlightAnnotation\");\n    }\n\n    this.container.className = \"highlightAnnotation\";\n    return this.container;\n  }\n}\n\nclass UnderlineAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    const isRenderable = !!(\n      parameters.data.hasPopup ||\n      parameters.data.titleObj?.str ||\n      parameters.data.contentsObj?.str ||\n      parameters.data.richText?.str\n    );\n    super(parameters, {\n      isRenderable,\n      ignoreBorder: true,\n      createQuadrilaterals: true,\n    });\n  }\n\n  render() {\n    if (!this.data.hasPopup) {\n      this._createPopup(null, this.data);\n    }\n\n    if (this.quadrilaterals) {\n      return this._renderQuadrilaterals(\"underlineAnnotation\");\n    }\n\n    this.container.className = \"underlineAnnotation\";\n    return this.container;\n  }\n}\n\nclass SquigglyAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    const isRenderable = !!(\n      parameters.data.hasPopup ||\n      parameters.data.titleObj?.str ||\n      parameters.data.contentsObj?.str ||\n      parameters.data.richText?.str\n    );\n    super(parameters, {\n      isRenderable,\n      ignoreBorder: true,\n      createQuadrilaterals: true,\n    });\n  }\n\n  render() {\n    if (!this.data.hasPopup) {\n      this._createPopup(null, this.data);\n    }\n\n    if (this.quadrilaterals) {\n      return this._renderQuadrilaterals(\"squigglyAnnotation\");\n    }\n\n    this.container.className = \"squigglyAnnotation\";\n    return this.container;\n  }\n}\n\nclass StrikeOutAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    const isRenderable = !!(\n      parameters.data.hasPopup ||\n      parameters.data.titleObj?.str ||\n      parameters.data.contentsObj?.str ||\n      parameters.data.richText?.str\n    );\n    super(parameters, {\n      isRenderable,\n      ignoreBorder: true,\n      createQuadrilaterals: true,\n    });\n  }\n\n  render() {\n    if (!this.data.hasPopup) {\n      this._createPopup(null, this.data);\n    }\n\n    if (this.quadrilaterals) {\n      return this._renderQuadrilaterals(\"strikeoutAnnotation\");\n    }\n\n    this.container.className = \"strikeoutAnnotation\";\n    return this.container;\n  }\n}\n\nclass StampAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    const isRenderable = !!(\n      parameters.data.hasPopup ||\n      parameters.data.titleObj?.str ||\n      parameters.data.contentsObj?.str ||\n      parameters.data.richText?.str\n    );\n    super(parameters, { isRenderable, ignoreBorder: true });\n  }\n\n  render() {\n    this.container.className = \"stampAnnotation\";\n\n    if (!this.data.hasPopup) {\n      this._createPopup(null, this.data);\n    }\n    return this.container;\n  }\n}\n\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, { isRenderable: true });\n\n    const { filename, content } = this.data.file;\n    this.filename = getFilenameFromUrl(filename);\n    this.content = content;\n\n    this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n      source: this,\n      filename,\n      content,\n    });\n  }\n\n  render() {\n    this.container.className = \"fileAttachmentAnnotation\";\n\n    const trigger = document.createElement(\"div\");\n    trigger.className = \"popupTriggerArea\";\n    trigger.addEventListener(\"dblclick\", this._download.bind(this));\n\n    if (\n      !this.data.hasPopup &&\n      (this.data.titleObj?.str ||\n        this.data.contentsObj?.str ||\n        this.data.richText)\n    ) {\n      this._createPopup(trigger, this.data);\n    }\n\n    this.container.append(trigger);\n    return this.container;\n  }\n\n  /**\n   * Download the file attachment associated with this annotation.\n   *\n   * @private\n   * @memberof FileAttachmentAnnotationElement\n   */\n  _download() {\n    this.downloadManager?.openOrDownloadData(\n      this.container,\n      this.content,\n      this.filename\n    );\n  }\n}\n\n/**\n * @typedef {Object} AnnotationLayerParameters\n * @property {PageViewport} viewport\n * @property {HTMLDivElement} div\n * @property {Array} annotations\n * @property {PDFPageProxy} page\n * @property {IPDFLinkService} linkService\n * @property {IDownloadManager} downloadManager\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n *   for annotation icons. Include trailing slash.\n * @property {boolean} renderForms\n * @property {boolean} [enableScripting] - Enable embedded script execution.\n * @property {boolean} [hasJSActions] - Some fields have JS actions.\n *   The default value is `false`.\n * @property {Map<string, HTMLCanvasElement>} [annotationCanvasMap]\n */\n\nclass AnnotationLayer {\n  static #appendElement(element, id, div, accessibilityManager) {\n    const contentElement = element.firstChild || element;\n    contentElement.id = `${AnnotationPrefix}${id}`;\n\n    div.append(element);\n    accessibilityManager?.moveElementInDOM(\n      div,\n      element,\n      contentElement,\n      /* isRemovable = */ false\n    );\n  }\n\n  /**\n   * Render a new annotation layer with all annotation elements.\n   *\n   * @public\n   * @param {AnnotationLayerParameters} parameters\n   * @memberof AnnotationLayer\n   */\n  static render(parameters) {\n    const { annotations, div, viewport, accessibilityManager } = parameters;\n\n    this.#setDimensions(div, viewport);\n    let zIndex = 0;\n\n    for (const data of annotations) {\n      if (data.annotationType !== AnnotationType.POPUP) {\n        const { width, height } = getRectDims(data.rect);\n        if (width <= 0 || height <= 0) {\n          continue; // Ignore empty annotations.\n        }\n      }\n      const element = AnnotationElementFactory.create({\n        data,\n        layer: div,\n        page: parameters.page,\n        viewport,\n        linkService: parameters.linkService,\n        downloadManager: parameters.downloadManager,\n        imageResourcesPath: parameters.imageResourcesPath || \"\",\n        renderForms: parameters.renderForms !== false,\n        svgFactory: new DOMSVGFactory(),\n        annotationStorage:\n          parameters.annotationStorage || new AnnotationStorage(),\n        enableScripting: parameters.enableScripting,\n        hasJSActions: parameters.hasJSActions,\n        fieldObjects: parameters.fieldObjects,\n        mouseState: parameters.mouseState || { isDown: false },\n      });\n      if (element.isRenderable) {\n        const rendered = element.render();\n        if (data.hidden) {\n          rendered.style.visibility = \"hidden\";\n        }\n        if (Array.isArray(rendered)) {\n          for (const renderedElement of rendered) {\n            renderedElement.style.zIndex = zIndex++;\n            AnnotationLayer.#appendElement(\n              renderedElement,\n              data.id,\n              div,\n              accessibilityManager\n            );\n          }\n        } else {\n          // The accessibility manager will move the annotation in the DOM in\n          // order to match the visual ordering.\n          // But if an annotation is above an other one, then we must draw it\n          // after the other one whatever the order is in the DOM, hence the\n          // use of the z-index.\n          rendered.style.zIndex = zIndex++;\n\n          if (element instanceof PopupAnnotationElement) {\n            // Popup annotation elements should not be on top of other\n            // annotation elements to prevent interfering with mouse events.\n            div.prepend(rendered);\n          } else {\n            AnnotationLayer.#appendElement(\n              rendered,\n              data.id,\n              div,\n              accessibilityManager\n            );\n          }\n        }\n      }\n    }\n\n    this.#setAnnotationCanvasMap(div, parameters.annotationCanvasMap);\n  }\n\n  /**\n   * Update the annotation elements on existing annotation layer.\n   *\n   * @public\n   * @param {AnnotationLayerParameters} parameters\n   * @memberof AnnotationLayer\n   */\n  static update(parameters) {\n    const { annotationCanvasMap, div, viewport } = parameters;\n\n    this.#setDimensions(div, viewport);\n    this.#setAnnotationCanvasMap(div, annotationCanvasMap);\n    div.hidden = false;\n  }\n\n  /**\n   * @param {HTMLDivElement} div\n   * @param {PageViewport} viewport\n   */\n  static #setDimensions(div, { width, height, rotation }) {\n    const { style } = div;\n\n    const flipOrientation = rotation % 180 !== 0,\n      widthStr = Math.floor(width) + \"px\",\n      heightStr = Math.floor(height) + \"px\";\n\n    style.width = flipOrientation ? heightStr : widthStr;\n    style.height = flipOrientation ? widthStr : heightStr;\n    div.setAttribute(\"data-main-rotation\", rotation);\n  }\n\n  static #setAnnotationCanvasMap(div, annotationCanvasMap) {\n    if (!annotationCanvasMap) {\n      return;\n    }\n    for (const [id, canvas] of annotationCanvasMap) {\n      const element = div.querySelector(`[data-annotation-id=\"${id}\"]`);\n      if (!element) {\n        continue;\n      }\n\n      const { firstChild } = element;\n      if (!firstChild) {\n        element.append(canvas);\n      } else if (firstChild.nodeName === \"CANVAS\") {\n        firstChild.replaceWith(canvas);\n      } else {\n        firstChild.before(canvas);\n      }\n    }\n    annotationCanvasMap.clear();\n  }\n}\n\nexport { AnnotationLayer };\n", "/* Copyright 2020 Mozilla Foundation\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 * PLEASE NOTE: This file is currently imported in both the `../display/` and\n *              `../scripting_api/` folders, hence be EXTREMELY careful about\n *              introducing any dependencies here since that can lead to an\n *              unexpected/unnecessary size increase of the *built* files.\n */\n\nfunction makeColorComp(n) {\n  return Math.floor(Math.max(0, Math.min(1, n)) * 255)\n    .toString(16)\n    .padStart(2, \"0\");\n}\n\n// PDF specifications section 10.3\nclass ColorConverters {\n  static CMYK_G([c, y, m, k]) {\n    return [\"G\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n  }\n\n  static G_CMYK([g]) {\n    return [\"CMYK\", 0, 0, 0, 1 - g];\n  }\n\n  static G_RGB([g]) {\n    return [\"RGB\", g, g, g];\n  }\n\n  static G_HTML([g]) {\n    const G = makeColorComp(g);\n    return `#${G}${G}${G}`;\n  }\n\n  static RGB_G([r, g, b]) {\n    return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n  }\n\n  static RGB_HTML([r, g, b]) {\n    const R = makeColorComp(r);\n    const G = makeColorComp(g);\n    const B = makeColorComp(b);\n    return `#${R}${G}${B}`;\n  }\n\n  static T_HTML() {\n    return \"#00000000\";\n  }\n\n  static CMYK_RGB([c, y, m, k]) {\n    return [\n      \"RGB\",\n      1 - Math.min(1, c + k),\n      1 - Math.min(1, m + k),\n      1 - Math.min(1, y + k),\n    ];\n  }\n\n  static CMYK_HTML(components) {\n    const rgb = this.CMYK_RGB(components).slice(1);\n    return this.RGB_HTML(rgb);\n  }\n\n  static RGB_CMYK([r, g, b]) {\n    const c = 1 - r;\n    const m = 1 - g;\n    const y = 1 - b;\n    const k = Math.min(c, m, y);\n    return [\"CMYK\", c, m, y, k];\n  }\n}\n\nexport { ColorConverters };\n", "/* Copyright 2021 Mozilla Foundation\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/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"../../web/interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport { XfaText } from \"./xfa_text.js\";\n\n/**\n * @typedef {Object} XfaLayerParameters\n * @property {PageViewport} viewport\n * @property {HTMLDivElement} div\n * @property {Object} xfaHtml\n * @property {AnnotationStorage} [annotationStorage]\n * @property {IPDFLinkService} linkService\n * @property {string} [intent] - (default value is 'display').\n */\n\nclass XfaLayer {\n  static setupStorage(html, id, element, storage, intent) {\n    const storedData = storage.getValue(id, { value: null });\n    switch (element.name) {\n      case \"textarea\":\n        if (storedData.value !== null) {\n          html.textContent = storedData.value;\n        }\n        if (intent === \"print\") {\n          break;\n        }\n        html.addEventListener(\"input\", event => {\n          storage.setValue(id, { value: event.target.value });\n        });\n        break;\n      case \"input\":\n        if (\n          element.attributes.type === \"radio\" ||\n          element.attributes.type === \"checkbox\"\n        ) {\n          if (storedData.value === element.attributes.xfaOn) {\n            html.setAttribute(\"checked\", true);\n          } else if (storedData.value === element.attributes.xfaOff) {\n            // The checked attribute may have been set when opening the file,\n            // unset through the UI and we're here because of printing.\n            html.removeAttribute(\"checked\");\n          }\n          if (intent === \"print\") {\n            break;\n          }\n          html.addEventListener(\"change\", event => {\n            storage.setValue(id, {\n              value: event.target.checked\n                ? event.target.getAttribute(\"xfaOn\")\n                : event.target.getAttribute(\"xfaOff\"),\n            });\n          });\n        } else {\n          if (storedData.value !== null) {\n            html.setAttribute(\"value\", storedData.value);\n          }\n          if (intent === \"print\") {\n            break;\n          }\n          html.addEventListener(\"input\", event => {\n            storage.setValue(id, { value: event.target.value });\n          });\n        }\n        break;\n      case \"select\":\n        if (storedData.value !== null) {\n          for (const option of element.children) {\n            if (option.attributes.value === storedData.value) {\n              option.attributes.selected = true;\n            }\n          }\n        }\n        html.addEventListener(\"input\", event => {\n          const options = event.target.options;\n          const value =\n            options.selectedIndex === -1\n              ? \"\"\n              : options[options.selectedIndex].value;\n          storage.setValue(id, { value });\n        });\n        break;\n    }\n  }\n\n  static setAttributes({ html, element, storage = null, intent, linkService }) {\n    const { attributes } = element;\n    const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n\n    if (attributes.type === \"radio\") {\n      // Avoid to have a radio group when printing with the same as one\n      // already displayed.\n      attributes.name = `${attributes.name}-${intent}`;\n    }\n    for (const [key, value] of Object.entries(attributes)) {\n      if (value === null || value === undefined) {\n        continue;\n      }\n\n      switch (key) {\n        case \"class\":\n          if (value.length) {\n            html.setAttribute(key, value.join(\" \"));\n          }\n          break;\n        case \"dataId\":\n          // We don't need to add dataId in the html object but it can\n          // be useful to know its value when writing printing tests:\n          // in this case, don't skip dataId to have its value.\n          break;\n        case \"id\":\n          html.setAttribute(\"data-element-id\", value);\n          break;\n        case \"style\":\n          Object.assign(html.style, value);\n          break;\n        case \"textContent\":\n          html.textContent = value;\n          break;\n        default:\n          if (!isHTMLAnchorElement || (key !== \"href\" && key !== \"newWindow\")) {\n            html.setAttribute(key, value);\n          }\n      }\n    }\n\n    if (isHTMLAnchorElement) {\n      linkService.addLinkAttributes(\n        html,\n        attributes.href,\n        attributes.newWindow\n      );\n    }\n\n    // Set the value after the others to be sure to overwrite any other values.\n    if (storage && attributes.dataId) {\n      this.setupStorage(html, attributes.dataId, element, storage);\n    }\n  }\n\n  /**\n   * Render the XFA layer.\n   *\n   * @param {XfaLayerParameters} parameters\n   */\n  static render(parameters) {\n    const storage = parameters.annotationStorage;\n    const linkService = parameters.linkService;\n    const root = parameters.xfaHtml;\n    const intent = parameters.intent || \"display\";\n    const rootHtml = document.createElement(root.name);\n    if (root.attributes) {\n      this.setAttributes({\n        html: rootHtml,\n        element: root,\n        intent,\n        linkService,\n      });\n    }\n    const stack = [[root, -1, rootHtml]];\n\n    const rootDiv = parameters.div;\n    rootDiv.append(rootHtml);\n\n    if (parameters.viewport) {\n      const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n      rootDiv.style.transform = transform;\n    }\n\n    // Set defaults.\n    if (intent !== \"richText\") {\n      rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n    }\n\n    // Text nodes used for the text highlighter.\n    const textDivs = [];\n\n    while (stack.length > 0) {\n      const [parent, i, html] = stack.at(-1);\n      if (i + 1 === parent.children.length) {\n        stack.pop();\n        continue;\n      }\n\n      const child = parent.children[++stack.at(-1)[1]];\n      if (child === null) {\n        continue;\n      }\n\n      const { name } = child;\n      if (name === \"#text\") {\n        const node = document.createTextNode(child.value);\n        textDivs.push(node);\n        html.append(node);\n        continue;\n      }\n\n      let childHtml;\n      if (child?.attributes?.xmlns) {\n        childHtml = document.createElementNS(child.attributes.xmlns, name);\n      } else {\n        childHtml = document.createElement(name);\n      }\n\n      html.append(childHtml);\n      if (child.attributes) {\n        this.setAttributes({\n          html: childHtml,\n          element: child,\n          storage,\n          intent,\n          linkService,\n        });\n      }\n\n      if (child.children && child.children.length > 0) {\n        stack.push([child, -1, childHtml]);\n      } else if (child.value) {\n        const node = document.createTextNode(child.value);\n        if (XfaText.shouldBuildText(name)) {\n          textDivs.push(node);\n        }\n        childHtml.append(node);\n      }\n    }\n\n    /**\n     * TODO: re-enable that stuff once we've JS implementation.\n     * See https://bugzilla.mozilla.org/show_bug.cgi?id=1719465.\n     *\n     * for (const el of rootDiv.querySelectorAll(\n     * \".xfaDisabled input, .xfaDisabled textarea\"\n     * )) {\n     * el.setAttribute(\"disabled\", true);\n     * }\n     * for (const el of rootDiv.querySelectorAll(\n     * \".xfaReadOnly input, .xfaReadOnly textarea\"\n     * )) {\n     * el.setAttribute(\"readOnly\", true);\n     * }\n     */\n\n    for (const el of rootDiv.querySelectorAll(\n      \".xfaNonInteractive input, .xfaNonInteractive textarea\"\n    )) {\n      el.setAttribute(\"readOnly\", true);\n    }\n\n    return {\n      textDivs,\n    };\n  }\n\n  /**\n   * Update the XFA layer.\n   *\n   * @param {XfaLayerParameters} parameters\n   */\n  static update(parameters) {\n    const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n    parameters.div.style.transform = transform;\n    parameters.div.hidden = false;\n  }\n}\n\nexport { XfaLayer };\n", "/* Copyright 2015 Mozilla Foundation\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\nimport {\n  AbortException,\n  createPromiseCapability,\n  Util,\n} from \"../shared/util.js\";\nimport { deprecated } from \"./display_utils.js\";\n\n/**\n * Text layer render parameters.\n *\n * @typedef {Object} TextLayerRenderParameters\n * @property {import(\"./api\").TextContent} [textContent] - Text content to\n *   render (the object is returned by the page's `getTextContent` method).\n * @property {ReadableStream} [textContentStream] - Text content stream to\n *   render (the stream is returned by the page's `streamTextContent` method).\n * @property {DocumentFragment | HTMLElement} container - The DOM node that\n *   will contain the text runs.\n * @property {import(\"./display_utils\").PageViewport} viewport - The target\n *   viewport to properly layout the text runs.\n * @property {Array<HTMLElement>} [textDivs] - HTML elements that correspond to\n *   the text items of the textContent input.\n *   This is output and shall initially be set to an empty array.\n * @property {Array<string>} [textContentItemsStr] - Strings that correspond to\n *   the `str` property of the text items of the textContent input.\n *   This is output and shall initially be set to an empty array.\n * @property {number} [timeout] - Delay in milliseconds before rendering of the\n *   text runs occurs.\n * @property {boolean} [enhanceTextSelection] - Whether to turn on the text\n *   selection enhancement.\n */\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\nconst DEFAULT_FONT_ASCENT = 0.8;\nconst ascentCache = new Map();\nconst AllWhitespaceRegexp = /^\\s+$/g;\n\nfunction getAscent(fontFamily, ctx) {\n  const cachedAscent = ascentCache.get(fontFamily);\n  if (cachedAscent) {\n    return cachedAscent;\n  }\n\n  ctx.save();\n  ctx.font = `${DEFAULT_FONT_SIZE}px ${fontFamily}`;\n  const metrics = ctx.measureText(\"\");\n\n  // Both properties aren't available by default in Firefox.\n  let ascent = metrics.fontBoundingBoxAscent;\n  let descent = Math.abs(metrics.fontBoundingBoxDescent);\n  if (ascent) {\n    ctx.restore();\n    const ratio = ascent / (ascent + descent);\n    ascentCache.set(fontFamily, ratio);\n    return ratio;\n  }\n\n  // Try basic heuristic to guess ascent/descent.\n  // Draw a g with baseline at 0,0 and then get the line\n  // number where a pixel has non-null red component (starting\n  // from bottom).\n  ctx.strokeStyle = \"red\";\n  ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n  ctx.strokeText(\"g\", 0, 0);\n  let pixels = ctx.getImageData(\n    0,\n    0,\n    DEFAULT_FONT_SIZE,\n    DEFAULT_FONT_SIZE\n  ).data;\n  descent = 0;\n  for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) {\n    if (pixels[i] > 0) {\n      descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE);\n      break;\n    }\n  }\n\n  // Draw an A with baseline at 0,DEFAULT_FONT_SIZE and then get the line\n  // number where a pixel has non-null red component (starting\n  // from top).\n  ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n  ctx.strokeText(\"A\", 0, DEFAULT_FONT_SIZE);\n  pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n  ascent = 0;\n  for (let i = 0, ii = pixels.length; i < ii; i += 4) {\n    if (pixels[i] > 0) {\n      ascent = DEFAULT_FONT_SIZE - Math.floor(i / 4 / DEFAULT_FONT_SIZE);\n      break;\n    }\n  }\n\n  ctx.restore();\n\n  if (ascent) {\n    const ratio = ascent / (ascent + descent);\n    ascentCache.set(fontFamily, ratio);\n    return ratio;\n  }\n\n  ascentCache.set(fontFamily, DEFAULT_FONT_ASCENT);\n  return DEFAULT_FONT_ASCENT;\n}\n\nfunction appendText(task, geom, styles, ctx) {\n  // Initialize all used properties to keep the caches monomorphic.\n  const textDiv = document.createElement(\"span\");\n  const textDivProperties = task._enhanceTextSelection\n    ? {\n        angle: 0,\n        canvasWidth: 0,\n        hasText: geom.str !== \"\",\n        hasEOL: geom.hasEOL,\n        originalTransform: null,\n        paddingBottom: 0,\n        paddingLeft: 0,\n        paddingRight: 0,\n        paddingTop: 0,\n        scale: 1,\n        fontSize: 0,\n      }\n    : {\n        angle: 0,\n        canvasWidth: 0,\n        hasText: geom.str !== \"\",\n        hasEOL: geom.hasEOL,\n        fontSize: 0,\n      };\n\n  task._textDivs.push(textDiv);\n\n  const tx = Util.transform(task._viewport.transform, geom.transform);\n  let angle = Math.atan2(tx[1], tx[0]);\n  const style = styles[geom.fontName];\n  if (style.vertical) {\n    angle += Math.PI / 2;\n  }\n  const fontHeight = Math.hypot(tx[2], tx[3]);\n  const fontAscent = fontHeight * getAscent(style.fontFamily, ctx);\n\n  let left, top;\n  if (angle === 0) {\n    left = tx[4];\n    top = tx[5] - fontAscent;\n  } else {\n    left = tx[4] + fontAscent * Math.sin(angle);\n    top = tx[5] - fontAscent * Math.cos(angle);\n  }\n  // Setting the style properties individually, rather than all at once,\n  // should be OK since the `textDiv` isn't appended to the document yet.\n  textDiv.style.left = `${left}px`;\n  textDiv.style.top = `${top}px`;\n  textDiv.style.fontSize = `${fontHeight}px`;\n  textDiv.style.fontFamily = style.fontFamily;\n\n  textDivProperties.fontSize = fontHeight;\n\n  // Keeps screen readers from pausing on every new text span.\n  textDiv.setAttribute(\"role\", \"presentation\");\n\n  textDiv.textContent = geom.str;\n  // geom.dir may be 'ttb' for vertical texts.\n  textDiv.dir = geom.dir;\n\n  // `fontName` is only used by the FontInspector, and we only use `dataset`\n  // here to make the font name available in the debugger.\n  if (task._fontInspectorEnabled) {\n    textDiv.dataset.fontName = geom.fontName;\n  }\n  if (angle !== 0) {\n    textDivProperties.angle = angle * (180 / Math.PI);\n  }\n  // We don't bother scaling single-char text divs, because it has very\n  // little effect on text highlighting. This makes scrolling on docs with\n  // lots of such divs a lot faster.\n  let shouldScaleText = false;\n  if (\n    geom.str.length > 1 ||\n    (task._enhanceTextSelection && AllWhitespaceRegexp.test(geom.str))\n  ) {\n    shouldScaleText = true;\n  } else if (geom.str !== \" \" && geom.transform[0] !== geom.transform[3]) {\n    const absScaleX = Math.abs(geom.transform[0]),\n      absScaleY = Math.abs(geom.transform[3]);\n    // When the horizontal/vertical scaling differs significantly, also scale\n    // even single-char text to improve highlighting (fixes issue11713.pdf).\n    if (\n      absScaleX !== absScaleY &&\n      Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5\n    ) {\n      shouldScaleText = true;\n    }\n  }\n  if (shouldScaleText) {\n    if (style.vertical) {\n      textDivProperties.canvasWidth = geom.height * task._viewport.scale;\n    } else {\n      textDivProperties.canvasWidth = geom.width * task._viewport.scale;\n    }\n  }\n  task._textDivProperties.set(textDiv, textDivProperties);\n  if (task._textContentStream) {\n    task._layoutText(textDiv);\n  }\n\n  if (task._enhanceTextSelection && textDivProperties.hasText) {\n    let angleCos = 1,\n      angleSin = 0;\n    if (angle !== 0) {\n      angleCos = Math.cos(angle);\n      angleSin = Math.sin(angle);\n    }\n    const divWidth =\n      (style.vertical ? geom.height : geom.width) * task._viewport.scale;\n    const divHeight = fontHeight;\n\n    let m, b;\n    if (angle !== 0) {\n      m = [angleCos, angleSin, -angleSin, angleCos, left, top];\n      b = Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m);\n    } else {\n      b = [left, top, left + divWidth, top + divHeight];\n    }\n\n    task._bounds.push({\n      left: b[0],\n      top: b[1],\n      right: b[2],\n      bottom: b[3],\n      div: textDiv,\n      size: [divWidth, divHeight],\n      m,\n    });\n  }\n}\n\nfunction render(task) {\n  if (task._canceled) {\n    return;\n  }\n  const textDivs = task._textDivs;\n  const capability = task._capability;\n  const textDivsLength = textDivs.length;\n\n  // No point in rendering many divs as it would make the browser\n  // unusable even after the divs are rendered.\n  if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {\n    task._renderingDone = true;\n    capability.resolve();\n    return;\n  }\n\n  if (!task._textContentStream) {\n    for (let i = 0; i < textDivsLength; i++) {\n      task._layoutText(textDivs[i]);\n    }\n  }\n\n  task._renderingDone = true;\n  capability.resolve();\n}\n\nfunction findPositiveMin(ts, offset, count) {\n  let result = 0;\n  for (let i = 0; i < count; i++) {\n    const t = ts[offset++];\n    if (t > 0) {\n      result = result ? Math.min(t, result) : t;\n    }\n  }\n  return result;\n}\n\nfunction expand(task) {\n  const bounds = task._bounds;\n  const viewport = task._viewport;\n\n  const expanded = expandBounds(viewport.width, viewport.height, bounds);\n  for (let i = 0; i < expanded.length; i++) {\n    const div = bounds[i].div;\n    const divProperties = task._textDivProperties.get(div);\n    if (divProperties.angle === 0) {\n      divProperties.paddingLeft = bounds[i].left - expanded[i].left;\n      divProperties.paddingTop = bounds[i].top - expanded[i].top;\n      divProperties.paddingRight = expanded[i].right - bounds[i].right;\n      divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom;\n      task._textDivProperties.set(div, divProperties);\n      continue;\n    }\n    // Box is rotated -- trying to find padding so rotated div will not\n    // exceed its expanded bounds.\n    const e = expanded[i],\n      b = bounds[i];\n    const m = b.m,\n      c = m[0],\n      s = m[1];\n    // Finding intersections with expanded box.\n    const points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size];\n    const ts = new Float64Array(64);\n    for (let j = 0, jj = points.length; j < jj; j++) {\n      const t = Util.applyTransform(points[j], m);\n      ts[j + 0] = c && (e.left - t[0]) / c;\n      ts[j + 4] = s && (e.top - t[1]) / s;\n      ts[j + 8] = c && (e.right - t[0]) / c;\n      ts[j + 12] = s && (e.bottom - t[1]) / s;\n\n      ts[j + 16] = s && (e.left - t[0]) / -s;\n      ts[j + 20] = c && (e.top - t[1]) / c;\n      ts[j + 24] = s && (e.right - t[0]) / -s;\n      ts[j + 28] = c && (e.bottom - t[1]) / c;\n\n      ts[j + 32] = c && (e.left - t[0]) / -c;\n      ts[j + 36] = s && (e.top - t[1]) / -s;\n      ts[j + 40] = c && (e.right - t[0]) / -c;\n      ts[j + 44] = s && (e.bottom - t[1]) / -s;\n\n      ts[j + 48] = s && (e.left - t[0]) / s;\n      ts[j + 52] = c && (e.top - t[1]) / -c;\n      ts[j + 56] = s && (e.right - t[0]) / s;\n      ts[j + 60] = c && (e.bottom - t[1]) / -c;\n    }\n    // Not based on math, but to simplify calculations, using cos and sin\n    // absolute values to not exceed the box (it can but insignificantly).\n    const boxScale = 1 + Math.min(Math.abs(c), Math.abs(s));\n    divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale;\n    divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale;\n    divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale;\n    divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale;\n    task._textDivProperties.set(div, divProperties);\n  }\n}\n\nfunction expandBounds(width, height, boxes) {\n  const bounds = boxes.map(function (box, i) {\n    return {\n      x1: box.left,\n      y1: box.top,\n      x2: box.right,\n      y2: box.bottom,\n      index: i,\n      x1New: undefined,\n      x2New: undefined,\n    };\n  });\n  expandBoundsLTR(width, bounds);\n\n  const expanded = new Array(boxes.length);\n  for (const b of bounds) {\n    const i = b.index;\n    expanded[i] = {\n      left: b.x1New,\n      top: 0,\n      right: b.x2New,\n      bottom: 0,\n    };\n  }\n\n  // Rotating on 90 degrees and extending extended boxes. Reusing the bounds\n  // array and objects.\n  boxes.map(function (box, i) {\n    const e = expanded[i],\n      b = bounds[i];\n    b.x1 = box.top;\n    b.y1 = width - e.right;\n    b.x2 = box.bottom;\n    b.y2 = width - e.left;\n    b.index = i;\n    b.x1New = undefined;\n    b.x2New = undefined;\n  });\n  expandBoundsLTR(height, bounds);\n\n  for (const b of bounds) {\n    const i = b.index;\n    expanded[i].top = b.x1New;\n    expanded[i].bottom = b.x2New;\n  }\n  return expanded;\n}\n\nfunction expandBoundsLTR(width, bounds) {\n  // Sorting by x1 coordinate and walk by the bounds in the same order.\n  bounds.sort(function (a, b) {\n    return a.x1 - b.x1 || a.index - b.index;\n  });\n\n  // First we see on the horizon is a fake boundary.\n  const fakeBoundary = {\n    x1: -Infinity,\n    y1: -Infinity,\n    x2: 0,\n    y2: Infinity,\n    index: -1,\n    x1New: 0,\n    x2New: 0,\n  };\n  const horizon = [\n    {\n      start: -Infinity,\n      end: Infinity,\n      boundary: fakeBoundary,\n    },\n  ];\n\n  for (const boundary of bounds) {\n    // Searching for the affected part of horizon.\n    // TODO red-black tree or simple binary search\n    let i = 0;\n    while (i < horizon.length && horizon[i].end <= boundary.y1) {\n      i++;\n    }\n    let j = horizon.length - 1;\n    while (j >= 0 && horizon[j].start >= boundary.y2) {\n      j--;\n    }\n\n    let horizonPart, affectedBoundary;\n    let q,\n      k,\n      maxXNew = -Infinity;\n    for (q = i; q <= j; q++) {\n      horizonPart = horizon[q];\n      affectedBoundary = horizonPart.boundary;\n      let xNew;\n      if (affectedBoundary.x2 > boundary.x1) {\n        // In the middle of the previous element, new x shall be at the\n        // boundary start. Extending if further if the affected boundary\n        // placed on top of the current one.\n        xNew =\n          affectedBoundary.index > boundary.index\n            ? affectedBoundary.x1New\n            : boundary.x1;\n      } else if (affectedBoundary.x2New === undefined) {\n        // We have some space in between, new x in middle will be a fair\n        // choice.\n        xNew = (affectedBoundary.x2 + boundary.x1) / 2;\n      } else {\n        // Affected boundary has x2new set, using it as new x.\n        xNew = affectedBoundary.x2New;\n      }\n      if (xNew > maxXNew) {\n        maxXNew = xNew;\n      }\n    }\n\n    // Set new x1 for current boundary.\n    boundary.x1New = maxXNew;\n\n    // Adjusts new x2 for the affected boundaries.\n    for (q = i; q <= j; q++) {\n      horizonPart = horizon[q];\n      affectedBoundary = horizonPart.boundary;\n      if (affectedBoundary.x2New === undefined) {\n        // Was not set yet, choosing new x if possible.\n        if (affectedBoundary.x2 > boundary.x1) {\n          // Current and affected boundaries intersect. If affected boundary\n          // is placed on top of the current, shrinking the affected.\n          if (affectedBoundary.index > boundary.index) {\n            affectedBoundary.x2New = affectedBoundary.x2;\n          }\n        } else {\n          affectedBoundary.x2New = maxXNew;\n        }\n      } else if (affectedBoundary.x2New > maxXNew) {\n        // Affected boundary is touching new x, pushing it back.\n        affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2);\n      }\n    }\n\n    // Fixing the horizon.\n    const changedHorizon = [];\n    let lastBoundary = null;\n    for (q = i; q <= j; q++) {\n      horizonPart = horizon[q];\n      affectedBoundary = horizonPart.boundary;\n      // Checking which boundary will be visible.\n      const useBoundary =\n        affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary;\n      if (lastBoundary === useBoundary) {\n        // Merging with previous.\n        changedHorizon.at(-1).end = horizonPart.end;\n      } else {\n        changedHorizon.push({\n          start: horizonPart.start,\n          end: horizonPart.end,\n          boundary: useBoundary,\n        });\n        lastBoundary = useBoundary;\n      }\n    }\n    if (horizon[i].start < boundary.y1) {\n      changedHorizon[0].start = boundary.y1;\n      changedHorizon.unshift({\n        start: horizon[i].start,\n        end: boundary.y1,\n        boundary: horizon[i].boundary,\n      });\n    }\n    if (boundary.y2 < horizon[j].end) {\n      changedHorizon.at(-1).end = boundary.y2;\n      changedHorizon.push({\n        start: boundary.y2,\n        end: horizon[j].end,\n        boundary: horizon[j].boundary,\n      });\n    }\n\n    // Set x2 new of boundary that is no longer visible (see overlapping case\n    // above).\n    // TODO more efficient, e.g. via reference counting.\n    for (q = i; q <= j; q++) {\n      horizonPart = horizon[q];\n      affectedBoundary = horizonPart.boundary;\n      if (affectedBoundary.x2New !== undefined) {\n        continue;\n      }\n      let used = false;\n      for (\n        k = i - 1;\n        !used && k >= 0 && horizon[k].start >= affectedBoundary.y1;\n        k--\n      ) {\n        used = horizon[k].boundary === affectedBoundary;\n      }\n      for (\n        k = j + 1;\n        !used && k < horizon.length && horizon[k].end <= affectedBoundary.y2;\n        k++\n      ) {\n        used = horizon[k].boundary === affectedBoundary;\n      }\n      for (k = 0; !used && k < changedHorizon.length; k++) {\n        used = changedHorizon[k].boundary === affectedBoundary;\n      }\n      if (!used) {\n        affectedBoundary.x2New = maxXNew;\n      }\n    }\n\n    Array.prototype.splice.apply(horizon, [i, j - i + 1, ...changedHorizon]);\n  }\n\n  // Set new x2 for all unset boundaries.\n  for (const horizonPart of horizon) {\n    const affectedBoundary = horizonPart.boundary;\n    if (affectedBoundary.x2New === undefined) {\n      affectedBoundary.x2New = Math.max(width, affectedBoundary.x2);\n    }\n  }\n}\n\nclass TextLayerRenderTask {\n  constructor({\n    textContent,\n    textContentStream,\n    container,\n    viewport,\n    textDivs,\n    textContentItemsStr,\n    enhanceTextSelection,\n  }) {\n    if (enhanceTextSelection) {\n      deprecated(\n        \"The `enhanceTextSelection` functionality will be removed in the future.\"\n      );\n    }\n    this._textContent = textContent;\n    this._textContentStream = textContentStream;\n    this._container = container;\n    this._document = container.ownerDocument;\n    this._viewport = viewport;\n    this._textDivs = textDivs || [];\n    this._textContentItemsStr = textContentItemsStr || [];\n    this._enhanceTextSelection = !!enhanceTextSelection;\n    this._fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n\n    this._reader = null;\n    this._layoutTextLastFontSize = null;\n    this._layoutTextLastFontFamily = null;\n    this._layoutTextCtx = null;\n    this._textDivProperties = new WeakMap();\n    this._renderingDone = false;\n    this._canceled = false;\n    this._capability = createPromiseCapability();\n    this._renderTimer = null;\n    this._bounds = [];\n    this._devicePixelRatio = globalThis.devicePixelRatio || 1;\n\n    // Always clean-up the temporary canvas once rendering is no longer pending.\n    this._capability.promise\n      .finally(() => {\n        if (!this._enhanceTextSelection) {\n          // The `textDiv` properties are no longer needed.\n          this._textDivProperties = null;\n        }\n\n        if (this._layoutTextCtx) {\n          // Zeroing the width and height cause Firefox to release graphics\n          // resources immediately, which can greatly reduce memory consumption.\n          this._layoutTextCtx.canvas.width = 0;\n          this._layoutTextCtx.canvas.height = 0;\n          this._layoutTextCtx = null;\n        }\n      })\n      .catch(() => {\n        // Avoid \"Uncaught promise\" messages in the console.\n      });\n  }\n\n  /**\n   * Promise for textLayer rendering task completion.\n   * @type {Promise<void>}\n   */\n  get promise() {\n    return this._capability.promise;\n  }\n\n  /**\n   * Cancel rendering of the textLayer.\n   */\n  cancel() {\n    this._canceled = true;\n    if (this._reader) {\n      this._reader\n        .cancel(new AbortException(\"TextLayer task cancelled.\"))\n        .catch(() => {\n          // Avoid \"Uncaught promise\" messages in the console.\n        });\n      this._reader = null;\n    }\n    if (this._renderTimer !== null) {\n      clearTimeout(this._renderTimer);\n      this._renderTimer = null;\n    }\n    this._capability.reject(new Error(\"TextLayer task cancelled.\"));\n  }\n\n  /**\n   * @private\n   */\n  _processItems(items, styleCache) {\n    for (let i = 0, len = items.length; i < len; i++) {\n      if (items[i].str === undefined) {\n        if (\n          items[i].type === \"beginMarkedContentProps\" ||\n          items[i].type === \"beginMarkedContent\"\n        ) {\n          const parent = this._container;\n          this._container = document.createElement(\"span\");\n          this._container.classList.add(\"markedContent\");\n          if (items[i].id !== null) {\n            this._container.setAttribute(\"id\", `${items[i].id}`);\n          }\n          parent.append(this._container);\n        } else if (items[i].type === \"endMarkedContent\") {\n          this._container = this._container.parentNode;\n        }\n        continue;\n      }\n      this._textContentItemsStr.push(items[i].str);\n      appendText(this, items[i], styleCache, this._layoutTextCtx);\n    }\n  }\n\n  /**\n   * @private\n   */\n  _layoutText(textDiv) {\n    const textDivProperties = this._textDivProperties.get(textDiv);\n\n    let transform = \"\";\n    if (textDivProperties.canvasWidth !== 0 && textDivProperties.hasText) {\n      const { fontFamily } = textDiv.style;\n      const { fontSize } = textDivProperties;\n\n      // Only build font string and set to context if different from last.\n      if (\n        fontSize !== this._layoutTextLastFontSize ||\n        fontFamily !== this._layoutTextLastFontFamily\n      ) {\n        this._layoutTextCtx.font = `${\n          fontSize * this._devicePixelRatio\n        }px ${fontFamily}`;\n        this._layoutTextLastFontSize = fontSize;\n        this._layoutTextLastFontFamily = fontFamily;\n      }\n      // Only measure the width for multi-char text divs, see `appendText`.\n      const { width } = this._layoutTextCtx.measureText(textDiv.textContent);\n\n      if (width > 0) {\n        const scale =\n          (this._devicePixelRatio * textDivProperties.canvasWidth) / width;\n        if (this._enhanceTextSelection) {\n          textDivProperties.scale = scale;\n        }\n        transform = `scaleX(${scale})`;\n      }\n    }\n    if (textDivProperties.angle !== 0) {\n      transform = `rotate(${textDivProperties.angle}deg) ${transform}`;\n    }\n    if (transform.length > 0) {\n      if (this._enhanceTextSelection) {\n        textDivProperties.originalTransform = transform;\n      }\n      textDiv.style.transform = transform;\n    }\n\n    if (textDivProperties.hasText) {\n      this._container.append(textDiv);\n    }\n    if (textDivProperties.hasEOL) {\n      const br = document.createElement(\"br\");\n      br.setAttribute(\"role\", \"presentation\");\n      this._container.append(br);\n    }\n  }\n\n  /**\n   * @private\n   */\n  _render(timeout = 0) {\n    const capability = createPromiseCapability();\n    let styleCache = Object.create(null);\n\n    // The temporary canvas is used to measure text length in the DOM.\n    const canvas = this._document.createElement(\"canvas\");\n    canvas.height = canvas.width = DEFAULT_FONT_SIZE;\n\n    this._layoutTextCtx = canvas.getContext(\"2d\", { alpha: false });\n\n    if (this._textContent) {\n      const textItems = this._textContent.items;\n      const textStyles = this._textContent.styles;\n      this._processItems(textItems, textStyles);\n      capability.resolve();\n    } else if (this._textContentStream) {\n      const pump = () => {\n        this._reader.read().then(({ value, done }) => {\n          if (done) {\n            capability.resolve();\n            return;\n          }\n\n          Object.assign(styleCache, value.styles);\n          this._processItems(value.items, styleCache);\n          pump();\n        }, capability.reject);\n      };\n\n      this._reader = this._textContentStream.getReader();\n      pump();\n    } else {\n      throw new Error(\n        'Neither \"textContent\" nor \"textContentStream\" parameters specified.'\n      );\n    }\n\n    capability.promise.then(() => {\n      styleCache = null;\n      if (!timeout) {\n        // Render right away\n        render(this);\n      } else {\n        // Schedule\n        this._renderTimer = setTimeout(() => {\n          render(this);\n          this._renderTimer = null;\n        }, timeout);\n      }\n    }, this._capability.reject);\n  }\n\n  /**\n   * @param {boolean} [expandDivs]\n   */\n  expandTextDivs(expandDivs = false) {\n    if (!this._enhanceTextSelection || !this._renderingDone) {\n      return;\n    }\n    if (this._bounds !== null) {\n      expand(this);\n      this._bounds = null;\n    }\n    const transformBuf = [],\n      paddingBuf = [];\n\n    for (let i = 0, ii = this._textDivs.length; i < ii; i++) {\n      const div = this._textDivs[i];\n      const divProps = this._textDivProperties.get(div);\n\n      if (!divProps.hasText) {\n        continue;\n      }\n      if (expandDivs) {\n        transformBuf.length = 0;\n        paddingBuf.length = 0;\n\n        if (divProps.originalTransform) {\n          transformBuf.push(divProps.originalTransform);\n        }\n        if (divProps.paddingTop > 0) {\n          paddingBuf.push(`${divProps.paddingTop}px`);\n          transformBuf.push(`translateY(${-divProps.paddingTop}px)`);\n        } else {\n          paddingBuf.push(0);\n        }\n        if (divProps.paddingRight > 0) {\n          paddingBuf.push(`${divProps.paddingRight / divProps.scale}px`);\n        } else {\n          paddingBuf.push(0);\n        }\n        if (divProps.paddingBottom > 0) {\n          paddingBuf.push(`${divProps.paddingBottom}px`);\n        } else {\n          paddingBuf.push(0);\n        }\n        if (divProps.paddingLeft > 0) {\n          paddingBuf.push(`${divProps.paddingLeft / divProps.scale}px`);\n          transformBuf.push(\n            `translateX(${-divProps.paddingLeft / divProps.scale}px)`\n          );\n        } else {\n          paddingBuf.push(0);\n        }\n\n        div.style.padding = paddingBuf.join(\" \");\n        if (transformBuf.length) {\n          div.style.transform = transformBuf.join(\" \");\n        }\n      } else {\n        div.style.padding = null;\n        div.style.transform = divProps.originalTransform;\n      }\n    }\n  }\n}\n\n/**\n * @param {TextLayerRenderParameters} renderParameters\n * @returns {TextLayerRenderTask}\n */\nfunction renderTextLayer(renderParameters) {\n  const task = new TextLayerRenderTask({\n    textContent: renderParameters.textContent,\n    textContentStream: renderParameters.textContentStream,\n    container: renderParameters.container,\n    viewport: renderParameters.viewport,\n    textDivs: renderParameters.textDivs,\n    textContentItemsStr: renderParameters.textContentItemsStr,\n    enhanceTextSelection: renderParameters.enhanceTextSelection,\n  });\n  task._render(renderParameters.timeout);\n  return task;\n}\n\nexport { renderTextLayer, TextLayerRenderTask };\n", "/* Copyright 2012 Mozilla Foundation\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/* globals __non_webpack_require__ */\n\nimport { deprecated, DOMSVGFactory } from \"./display_utils.js\";\nimport {\n  FONT_IDENTITY_MATRIX,\n  IDENTITY_MATRIX,\n  ImageKind,\n  OPS,\n  TextRenderingMode,\n  unreachable,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\n\n/** @type {any} */\nlet SVGGraphics = class {\n  constructor() {\n    unreachable(\"Not implemented: SVGGraphics\");\n  }\n};\n\nif (\n  typeof PDFJSDev === \"undefined\" ||\n  PDFJSDev.test(\"!PRODUCTION || GENERIC\")\n) {\n  const SVG_DEFAULTS = {\n    fontStyle: \"normal\",\n    fontWeight: \"normal\",\n    fillColor: \"#000000\",\n  };\n  const XML_NS = \"http://www.w3.org/XML/1998/namespace\";\n  const XLINK_NS = \"http://www.w3.org/1999/xlink\";\n  const LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\n  const LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\n\n  const createObjectURL = function (\n    data,\n    contentType = \"\",\n    forceDataSchema = false\n  ) {\n    if (\n      URL.createObjectURL &&\n      typeof Blob !== \"undefined\" &&\n      !forceDataSchema\n    ) {\n      return URL.createObjectURL(new Blob([data], { type: contentType }));\n    }\n    // Blob/createObjectURL is not available, falling back to data schema.\n    const digits =\n      \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n    let buffer = `data:${contentType};base64,`;\n    for (let i = 0, ii = data.length; i < ii; i += 3) {\n      const b1 = data[i] & 0xff;\n      const b2 = data[i + 1] & 0xff;\n      const b3 = data[i + 2] & 0xff;\n      const d1 = b1 >> 2,\n        d2 = ((b1 & 3) << 4) | (b2 >> 4);\n      const d3 = i + 1 < ii ? ((b2 & 0xf) << 2) | (b3 >> 6) : 64;\n      const d4 = i + 2 < ii ? b3 & 0x3f : 64;\n      buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n    }\n    return buffer;\n  };\n\n  const convertImgDataToPng = (function () {\n    const PNG_HEADER = new Uint8Array([\n      0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a,\n    ]);\n    const CHUNK_WRAPPER_SIZE = 12;\n\n    const crcTable = new Int32Array(256);\n    for (let i = 0; i < 256; i++) {\n      let c = i;\n      for (let h = 0; h < 8; h++) {\n        if (c & 1) {\n          c = 0xedb88320 ^ ((c >> 1) & 0x7fffffff);\n        } else {\n          c = (c >> 1) & 0x7fffffff;\n        }\n      }\n      crcTable[i] = c;\n    }\n\n    function crc32(data, start, end) {\n      let crc = -1;\n      for (let i = start; i < end; i++) {\n        const a = (crc ^ data[i]) & 0xff;\n        const b = crcTable[a];\n        crc = (crc >>> 8) ^ b;\n      }\n      return crc ^ -1;\n    }\n\n    function writePngChunk(type, body, data, offset) {\n      let p = offset;\n      const len = body.length;\n\n      data[p] = (len >> 24) & 0xff;\n      data[p + 1] = (len >> 16) & 0xff;\n      data[p + 2] = (len >> 8) & 0xff;\n      data[p + 3] = len & 0xff;\n      p += 4;\n\n      data[p] = type.charCodeAt(0) & 0xff;\n      data[p + 1] = type.charCodeAt(1) & 0xff;\n      data[p + 2] = type.charCodeAt(2) & 0xff;\n      data[p + 3] = type.charCodeAt(3) & 0xff;\n      p += 4;\n\n      data.set(body, p);\n      p += body.length;\n\n      const crc = crc32(data, offset + 4, p);\n      data[p] = (crc >> 24) & 0xff;\n      data[p + 1] = (crc >> 16) & 0xff;\n      data[p + 2] = (crc >> 8) & 0xff;\n      data[p + 3] = crc & 0xff;\n    }\n\n    function adler32(data, start, end) {\n      let a = 1;\n      let b = 0;\n      for (let i = start; i < end; ++i) {\n        a = (a + (data[i] & 0xff)) % 65521;\n        b = (b + a) % 65521;\n      }\n      return (b << 16) | a;\n    }\n\n    /**\n     * @param {Uint8Array} literals The input data.\n     * @returns {Uint8Array} The DEFLATE-compressed data stream in zlib format.\n     *   This is the required format for compressed streams in the PNG format:\n     *   http://www.libpng.org/pub/png/spec/1.2/PNG-Compression.html\n     */\n    function deflateSync(literals) {\n      if (!isNodeJS) {\n        // zlib is certainly not available outside of Node.js. We can either use\n        // the pako library for client-side DEFLATE compression, or use the\n        // canvas API of the browser to obtain a more optimal PNG file.\n        return deflateSyncUncompressed(literals);\n      }\n      try {\n        // NOTE: This implementation is far from perfect, but already way better\n        // than not applying any compression.\n        //\n        // A better algorithm will try to choose a good predictor/filter and\n        // then choose a suitable zlib compression strategy (e.g. 3,Z_RLE).\n        //\n        // Node v0.11.12 zlib.deflateSync is introduced (and returns a Buffer).\n        // Node v3.0.0   Buffer inherits from Uint8Array.\n        // Node v8.0.0   zlib.deflateSync accepts Uint8Array as input.\n        let input;\n        // eslint-disable-next-line no-undef\n        if (parseInt(process.versions.node) >= 8) {\n          input = literals;\n        } else {\n          // eslint-disable-next-line no-undef\n          input = Buffer.from(literals);\n        }\n        const output = __non_webpack_require__(\"zlib\").deflateSync(input, {\n          level: 9,\n        });\n        return output instanceof Uint8Array ? output : new Uint8Array(output);\n      } catch (e) {\n        warn(\n          \"Not compressing PNG because zlib.deflateSync is unavailable: \" + e\n        );\n      }\n\n      return deflateSyncUncompressed(literals);\n    }\n\n    // An implementation of DEFLATE with compression level 0 (Z_NO_COMPRESSION).\n    function deflateSyncUncompressed(literals) {\n      let len = literals.length;\n      const maxBlockLength = 0xffff;\n\n      const deflateBlocks = Math.ceil(len / maxBlockLength);\n      const idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4);\n      let pi = 0;\n      idat[pi++] = 0x78; // compression method and flags\n      idat[pi++] = 0x9c; // flags\n\n      let pos = 0;\n      while (len > maxBlockLength) {\n        // writing non-final DEFLATE blocks type 0 and length of 65535\n        idat[pi++] = 0x00;\n        idat[pi++] = 0xff;\n        idat[pi++] = 0xff;\n        idat[pi++] = 0x00;\n        idat[pi++] = 0x00;\n        idat.set(literals.subarray(pos, pos + maxBlockLength), pi);\n        pi += maxBlockLength;\n        pos += maxBlockLength;\n        len -= maxBlockLength;\n      }\n\n      // writing non-final DEFLATE blocks type 0\n      idat[pi++] = 0x01;\n      idat[pi++] = len & 0xff;\n      idat[pi++] = (len >> 8) & 0xff;\n      idat[pi++] = ~len & 0xffff & 0xff;\n      idat[pi++] = ((~len & 0xffff) >> 8) & 0xff;\n      idat.set(literals.subarray(pos), pi);\n      pi += literals.length - pos;\n\n      const adler = adler32(literals, 0, literals.length); // checksum\n      idat[pi++] = (adler >> 24) & 0xff;\n      idat[pi++] = (adler >> 16) & 0xff;\n      idat[pi++] = (adler >> 8) & 0xff;\n      idat[pi++] = adler & 0xff;\n      return idat;\n    }\n\n    function encode(imgData, kind, forceDataSchema, isMask) {\n      const width = imgData.width;\n      const height = imgData.height;\n      let bitDepth, colorType, lineSize;\n      const bytes = imgData.data;\n\n      switch (kind) {\n        case ImageKind.GRAYSCALE_1BPP:\n          colorType = 0;\n          bitDepth = 1;\n          lineSize = (width + 7) >> 3;\n          break;\n        case ImageKind.RGB_24BPP:\n          colorType = 2;\n          bitDepth = 8;\n          lineSize = width * 3;\n          break;\n        case ImageKind.RGBA_32BPP:\n          colorType = 6;\n          bitDepth = 8;\n          lineSize = width * 4;\n          break;\n        default:\n          throw new Error(\"invalid format\");\n      }\n\n      // prefix every row with predictor 0\n      const literals = new Uint8Array((1 + lineSize) * height);\n      let offsetLiterals = 0,\n        offsetBytes = 0;\n      for (let y = 0; y < height; ++y) {\n        literals[offsetLiterals++] = 0; // no prediction\n        literals.set(\n          bytes.subarray(offsetBytes, offsetBytes + lineSize),\n          offsetLiterals\n        );\n        offsetBytes += lineSize;\n        offsetLiterals += lineSize;\n      }\n\n      if (kind === ImageKind.GRAYSCALE_1BPP && isMask) {\n        // inverting for image masks\n        offsetLiterals = 0;\n        for (let y = 0; y < height; y++) {\n          offsetLiterals++; // skipping predictor\n          for (let i = 0; i < lineSize; i++) {\n            literals[offsetLiterals++] ^= 0xff;\n          }\n        }\n      }\n\n      const ihdr = new Uint8Array([\n        (width >> 24) & 0xff,\n        (width >> 16) & 0xff,\n        (width >> 8) & 0xff,\n        width & 0xff,\n        (height >> 24) & 0xff,\n        (height >> 16) & 0xff,\n        (height >> 8) & 0xff,\n        height & 0xff,\n        bitDepth, // bit depth\n        colorType, // color type\n        0x00, // compression method\n        0x00, // filter method\n        0x00, // interlace method\n      ]);\n      const idat = deflateSync(literals);\n\n      // PNG consists of: header, IHDR+data, IDAT+data, and IEND.\n      const pngLength =\n        PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length;\n      const data = new Uint8Array(pngLength);\n      let offset = 0;\n      data.set(PNG_HEADER, offset);\n      offset += PNG_HEADER.length;\n      writePngChunk(\"IHDR\", ihdr, data, offset);\n      offset += CHUNK_WRAPPER_SIZE + ihdr.length;\n      writePngChunk(\"IDATA\", idat, data, offset);\n      offset += CHUNK_WRAPPER_SIZE + idat.length;\n      writePngChunk(\"IEND\", new Uint8Array(0), data, offset);\n\n      return createObjectURL(data, \"image/png\", forceDataSchema);\n    }\n\n    // eslint-disable-next-line no-shadow\n    return function convertImgDataToPng(imgData, forceDataSchema, isMask) {\n      const kind =\n        imgData.kind === undefined ? ImageKind.GRAYSCALE_1BPP : imgData.kind;\n      return encode(imgData, kind, forceDataSchema, isMask);\n    };\n  })();\n\n  class SVGExtraState {\n    constructor() {\n      this.fontSizeScale = 1;\n      this.fontWeight = SVG_DEFAULTS.fontWeight;\n      this.fontSize = 0;\n\n      this.textMatrix = IDENTITY_MATRIX;\n      this.fontMatrix = FONT_IDENTITY_MATRIX;\n      this.leading = 0;\n      this.textRenderingMode = TextRenderingMode.FILL;\n      this.textMatrixScale = 1;\n\n      // Current point (in user coordinates)\n      this.x = 0;\n      this.y = 0;\n\n      // Start of text line (in text coordinates)\n      this.lineX = 0;\n      this.lineY = 0;\n\n      // Character and word spacing\n      this.charSpacing = 0;\n      this.wordSpacing = 0;\n      this.textHScale = 1;\n      this.textRise = 0;\n\n      // Default foreground and background colors\n      this.fillColor = SVG_DEFAULTS.fillColor;\n      this.strokeColor = \"#000000\";\n\n      this.fillAlpha = 1;\n      this.strokeAlpha = 1;\n      this.lineWidth = 1;\n      this.lineJoin = \"\";\n      this.lineCap = \"\";\n      this.miterLimit = 0;\n\n      this.dashArray = [];\n      this.dashPhase = 0;\n\n      this.dependencies = [];\n\n      // Clipping\n      this.activeClipUrl = null;\n      this.clipGroup = null;\n\n      this.maskId = \"\";\n    }\n\n    clone() {\n      return Object.create(this);\n    }\n\n    setCurrentPoint(x, y) {\n      this.x = x;\n      this.y = y;\n    }\n  }\n\n  // eslint-disable-next-line no-inner-declarations\n  function opListToTree(opList) {\n    let opTree = [];\n    const tmp = [];\n\n    for (const opListElement of opList) {\n      if (opListElement.fn === \"save\") {\n        opTree.push({ fnId: 92, fn: \"group\", items: [] });\n        tmp.push(opTree);\n        opTree = opTree.at(-1).items;\n        continue;\n      }\n\n      if (opListElement.fn === \"restore\") {\n        opTree = tmp.pop();\n      } else {\n        opTree.push(opListElement);\n      }\n    }\n    return opTree;\n  }\n\n  /**\n   * Format a float number as a string.\n   *\n   * @param value {number} - The float number to format.\n   * @returns {string}\n   */\n  // eslint-disable-next-line no-inner-declarations\n  function pf(value) {\n    if (Number.isInteger(value)) {\n      return value.toString();\n    }\n    const s = value.toFixed(10);\n    let i = s.length - 1;\n    if (s[i] !== \"0\") {\n      return s;\n    }\n\n    // Remove trailing zeros.\n    do {\n      i--;\n    } while (s[i] === \"0\");\n    return s.substring(0, s[i] === \".\" ? i : i + 1);\n  }\n\n  /**\n   * Format a transform matrix as a string. The standard rotation, scale and\n   * translation matrices are replaced by their shorter forms, and for\n   * identity matrices an empty string is returned to save memory.\n   *\n   * @param m {Array} - The transform matrix to format.\n   * @returns {string}\n   */\n  // eslint-disable-next-line no-inner-declarations\n  function pm(m) {\n    if (m[4] === 0 && m[5] === 0) {\n      if (m[1] === 0 && m[2] === 0) {\n        if (m[0] === 1 && m[3] === 1) {\n          return \"\";\n        }\n        return `scale(${pf(m[0])} ${pf(m[3])})`;\n      }\n      if (m[0] === m[3] && m[1] === -m[2]) {\n        const a = (Math.acos(m[0]) * 180) / Math.PI;\n        return `rotate(${pf(a)})`;\n      }\n    } else {\n      if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) {\n        return `translate(${pf(m[4])} ${pf(m[5])})`;\n      }\n    }\n    return (\n      `matrix(${pf(m[0])} ${pf(m[1])} ${pf(m[2])} ${pf(m[3])} ${pf(m[4])} ` +\n      `${pf(m[5])})`\n    );\n  }\n\n  // The counts below are relevant for all pages, so they have to be global\n  // instead of being members of `SVGGraphics` (which is recreated for\n  // each page).\n  let clipCount = 0;\n  let maskCount = 0;\n  let shadingCount = 0;\n\n  SVGGraphics = class {\n    constructor(commonObjs, objs, forceDataSchema = false) {\n      deprecated(\n        \"The SVG back-end is no longer maintained and *may* be removed in the future.\"\n      );\n      this.svgFactory = new DOMSVGFactory();\n\n      this.current = new SVGExtraState();\n      this.transformMatrix = IDENTITY_MATRIX; // Graphics state matrix\n      this.transformStack = [];\n      this.extraStack = [];\n      this.commonObjs = commonObjs;\n      this.objs = objs;\n      this.pendingClip = null;\n      this.pendingEOFill = false;\n\n      this.embedFonts = false;\n      this.embeddedFonts = Object.create(null);\n      this.cssStyle = null;\n      this.forceDataSchema = !!forceDataSchema;\n\n      // In `src/shared/util.js` the operator names are mapped to IDs.\n      // The list below represents the reverse of that, i.e., it maps IDs\n      // to operator names.\n      this._operatorIdMapping = [];\n      for (const op in OPS) {\n        this._operatorIdMapping[OPS[op]] = op;\n      }\n    }\n\n    save() {\n      this.transformStack.push(this.transformMatrix);\n      const old = this.current;\n      this.extraStack.push(old);\n      this.current = old.clone();\n    }\n\n    restore() {\n      this.transformMatrix = this.transformStack.pop();\n      this.current = this.extraStack.pop();\n      this.pendingClip = null;\n      this.tgrp = null;\n    }\n\n    group(items) {\n      this.save();\n      this.executeOpTree(items);\n      this.restore();\n    }\n\n    loadDependencies(operatorList) {\n      const fnArray = operatorList.fnArray;\n      const argsArray = operatorList.argsArray;\n\n      for (let i = 0, ii = fnArray.length; i < ii; i++) {\n        if (fnArray[i] !== OPS.dependency) {\n          continue;\n        }\n\n        for (const obj of argsArray[i]) {\n          const objsPool = obj.startsWith(\"g_\") ? this.commonObjs : this.objs;\n          const promise = new Promise(resolve => {\n            objsPool.get(obj, resolve);\n          });\n          this.current.dependencies.push(promise);\n        }\n      }\n      return Promise.all(this.current.dependencies);\n    }\n\n    transform(a, b, c, d, e, f) {\n      const transformMatrix = [a, b, c, d, e, f];\n      this.transformMatrix = Util.transform(\n        this.transformMatrix,\n        transformMatrix\n      );\n      this.tgrp = null;\n    }\n\n    getSVG(operatorList, viewport) {\n      this.viewport = viewport;\n\n      const svgElement = this._initialize(viewport);\n      return this.loadDependencies(operatorList).then(() => {\n        this.transformMatrix = IDENTITY_MATRIX;\n        this.executeOpTree(this.convertOpList(operatorList));\n        return svgElement;\n      });\n    }\n\n    convertOpList(operatorList) {\n      const operatorIdMapping = this._operatorIdMapping;\n      const argsArray = operatorList.argsArray;\n      const fnArray = operatorList.fnArray;\n      const opList = [];\n      for (let i = 0, ii = fnArray.length; i < ii; i++) {\n        const fnId = fnArray[i];\n        opList.push({\n          fnId,\n          fn: operatorIdMapping[fnId],\n          args: argsArray[i],\n        });\n      }\n      return opListToTree(opList);\n    }\n\n    executeOpTree(opTree) {\n      for (const opTreeElement of opTree) {\n        const fn = opTreeElement.fn;\n        const fnId = opTreeElement.fnId;\n        const args = opTreeElement.args;\n\n        switch (fnId | 0) {\n          case OPS.beginText:\n            this.beginText();\n            break;\n          case OPS.dependency:\n            // Handled in `loadDependencies`, so no warning should be shown.\n            break;\n          case OPS.setLeading:\n            this.setLeading(args);\n            break;\n          case OPS.setLeadingMoveText:\n            this.setLeadingMoveText(args[0], args[1]);\n            break;\n          case OPS.setFont:\n            this.setFont(args);\n            break;\n          case OPS.showText:\n            this.showText(args[0]);\n            break;\n          case OPS.showSpacedText:\n            this.showText(args[0]);\n            break;\n          case OPS.endText:\n            this.endText();\n            break;\n          case OPS.moveText:\n            this.moveText(args[0], args[1]);\n            break;\n          case OPS.setCharSpacing:\n            this.setCharSpacing(args[0]);\n            break;\n          case OPS.setWordSpacing:\n            this.setWordSpacing(args[0]);\n            break;\n          case OPS.setHScale:\n            this.setHScale(args[0]);\n            break;\n          case OPS.setTextMatrix:\n            this.setTextMatrix(\n              args[0],\n              args[1],\n              args[2],\n              args[3],\n              args[4],\n              args[5]\n            );\n            break;\n          case OPS.setTextRise:\n            this.setTextRise(args[0]);\n            break;\n          case OPS.setTextRenderingMode:\n            this.setTextRenderingMode(args[0]);\n            break;\n          case OPS.setLineWidth:\n            this.setLineWidth(args[0]);\n            break;\n          case OPS.setLineJoin:\n            this.setLineJoin(args[0]);\n            break;\n          case OPS.setLineCap:\n            this.setLineCap(args[0]);\n            break;\n          case OPS.setMiterLimit:\n            this.setMiterLimit(args[0]);\n            break;\n          case OPS.setFillRGBColor:\n            this.setFillRGBColor(args[0], args[1], args[2]);\n            break;\n          case OPS.setStrokeRGBColor:\n            this.setStrokeRGBColor(args[0], args[1], args[2]);\n            break;\n          case OPS.setStrokeColorN:\n            this.setStrokeColorN(args);\n            break;\n          case OPS.setFillColorN:\n            this.setFillColorN(args);\n            break;\n          case OPS.shadingFill:\n            this.shadingFill(args[0]);\n            break;\n          case OPS.setDash:\n            this.setDash(args[0], args[1]);\n            break;\n          case OPS.setRenderingIntent:\n            this.setRenderingIntent(args[0]);\n            break;\n          case OPS.setFlatness:\n            this.setFlatness(args[0]);\n            break;\n          case OPS.setGState:\n            this.setGState(args[0]);\n            break;\n          case OPS.fill:\n            this.fill();\n            break;\n          case OPS.eoFill:\n            this.eoFill();\n            break;\n          case OPS.stroke:\n            this.stroke();\n            break;\n          case OPS.fillStroke:\n            this.fillStroke();\n            break;\n          case OPS.eoFillStroke:\n            this.eoFillStroke();\n            break;\n          case OPS.clip:\n            this.clip(\"nonzero\");\n            break;\n          case OPS.eoClip:\n            this.clip(\"evenodd\");\n            break;\n          case OPS.paintSolidColorImageMask:\n            this.paintSolidColorImageMask();\n            break;\n          case OPS.paintImageXObject:\n            this.paintImageXObject(args[0]);\n            break;\n          case OPS.paintInlineImageXObject:\n            this.paintInlineImageXObject(args[0]);\n            break;\n          case OPS.paintImageMaskXObject:\n            this.paintImageMaskXObject(args[0]);\n            break;\n          case OPS.paintFormXObjectBegin:\n            this.paintFormXObjectBegin(args[0], args[1]);\n            break;\n          case OPS.paintFormXObjectEnd:\n            this.paintFormXObjectEnd();\n            break;\n          case OPS.closePath:\n            this.closePath();\n            break;\n          case OPS.closeStroke:\n            this.closeStroke();\n            break;\n          case OPS.closeFillStroke:\n            this.closeFillStroke();\n            break;\n          case OPS.closeEOFillStroke:\n            this.closeEOFillStroke();\n            break;\n          case OPS.nextLine:\n            this.nextLine();\n            break;\n          case OPS.transform:\n            this.transform(\n              args[0],\n              args[1],\n              args[2],\n              args[3],\n              args[4],\n              args[5]\n            );\n            break;\n          case OPS.constructPath:\n            this.constructPath(args[0], args[1]);\n            break;\n          case OPS.endPath:\n            this.endPath();\n            break;\n          case 92:\n            this.group(opTreeElement.items);\n            break;\n          default:\n            warn(`Unimplemented operator ${fn}`);\n            break;\n        }\n      }\n    }\n\n    setWordSpacing(wordSpacing) {\n      this.current.wordSpacing = wordSpacing;\n    }\n\n    setCharSpacing(charSpacing) {\n      this.current.charSpacing = charSpacing;\n    }\n\n    nextLine() {\n      this.moveText(0, this.current.leading);\n    }\n\n    setTextMatrix(a, b, c, d, e, f) {\n      const current = this.current;\n      current.textMatrix = current.lineMatrix = [a, b, c, d, e, f];\n      current.textMatrixScale = Math.hypot(a, b);\n\n      current.x = current.lineX = 0;\n      current.y = current.lineY = 0;\n\n      current.xcoords = [];\n      current.ycoords = [];\n      current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n      current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n      current.tspan.setAttributeNS(\n        null,\n        \"font-size\",\n        `${pf(current.fontSize)}px`\n      );\n      current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n\n      current.txtElement = this.svgFactory.createElement(\"svg:text\");\n      current.txtElement.append(current.tspan);\n    }\n\n    beginText() {\n      const current = this.current;\n      current.x = current.lineX = 0;\n      current.y = current.lineY = 0;\n      current.textMatrix = IDENTITY_MATRIX;\n      current.lineMatrix = IDENTITY_MATRIX;\n      current.textMatrixScale = 1;\n      current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n      current.txtElement = this.svgFactory.createElement(\"svg:text\");\n      current.txtgrp = this.svgFactory.createElement(\"svg:g\");\n      current.xcoords = [];\n      current.ycoords = [];\n    }\n\n    moveText(x, y) {\n      const current = this.current;\n      current.x = current.lineX += x;\n      current.y = current.lineY += y;\n\n      current.xcoords = [];\n      current.ycoords = [];\n      current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n      current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n      current.tspan.setAttributeNS(\n        null,\n        \"font-size\",\n        `${pf(current.fontSize)}px`\n      );\n      current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n    }\n\n    showText(glyphs) {\n      const current = this.current;\n      const font = current.font;\n      const fontSize = current.fontSize;\n      if (fontSize === 0) {\n        return;\n      }\n\n      const fontSizeScale = current.fontSizeScale;\n      const charSpacing = current.charSpacing;\n      const wordSpacing = current.wordSpacing;\n      const fontDirection = current.fontDirection;\n      const textHScale = current.textHScale * fontDirection;\n      const vertical = font.vertical;\n      const spacingDir = vertical ? 1 : -1;\n      const defaultVMetrics = font.defaultVMetrics;\n      const widthAdvanceScale = fontSize * current.fontMatrix[0];\n\n      let x = 0;\n      for (const glyph of glyphs) {\n        if (glyph === null) {\n          // Word break\n          x += fontDirection * wordSpacing;\n          continue;\n        } else if (typeof glyph === \"number\") {\n          x += (spacingDir * glyph * fontSize) / 1000;\n          continue;\n        }\n\n        const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n        const character = glyph.fontChar;\n        let scaledX, scaledY;\n        let width = glyph.width;\n        if (vertical) {\n          let vx;\n          const vmetric = glyph.vmetric || defaultVMetrics;\n          vx = glyph.vmetric ? vmetric[1] : width * 0.5;\n          vx = -vx * widthAdvanceScale;\n          const vy = vmetric[2] * widthAdvanceScale;\n\n          width = vmetric ? -vmetric[0] : width;\n          scaledX = vx / fontSizeScale;\n          scaledY = (x + vy) / fontSizeScale;\n        } else {\n          scaledX = x / fontSizeScale;\n          scaledY = 0;\n        }\n\n        if (glyph.isInFont || font.missingFile) {\n          current.xcoords.push(current.x + scaledX);\n          if (vertical) {\n            current.ycoords.push(-current.y + scaledY);\n          }\n          current.tspan.textContent += character;\n        } else {\n          // TODO: To assist with text selection, we should replace the missing\n          // character with a space character if charWidth is not zero.\n          // But we cannot just do \"character = ' '\", because the ' ' character\n          // might actually map to a different glyph.\n        }\n\n        let charWidth;\n        if (vertical) {\n          charWidth = width * widthAdvanceScale - spacing * fontDirection;\n        } else {\n          charWidth = width * widthAdvanceScale + spacing * fontDirection;\n        }\n\n        x += charWidth;\n      }\n      current.tspan.setAttributeNS(\n        null,\n        \"x\",\n        current.xcoords.map(pf).join(\" \")\n      );\n      if (vertical) {\n        current.tspan.setAttributeNS(\n          null,\n          \"y\",\n          current.ycoords.map(pf).join(\" \")\n        );\n      } else {\n        current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n      }\n\n      if (vertical) {\n        current.y -= x;\n      } else {\n        current.x += x * textHScale;\n      }\n\n      current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n      current.tspan.setAttributeNS(\n        null,\n        \"font-size\",\n        `${pf(current.fontSize)}px`\n      );\n      if (current.fontStyle !== SVG_DEFAULTS.fontStyle) {\n        current.tspan.setAttributeNS(null, \"font-style\", current.fontStyle);\n      }\n      if (current.fontWeight !== SVG_DEFAULTS.fontWeight) {\n        current.tspan.setAttributeNS(null, \"font-weight\", current.fontWeight);\n      }\n\n      const fillStrokeMode =\n        current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n      if (\n        fillStrokeMode === TextRenderingMode.FILL ||\n        fillStrokeMode === TextRenderingMode.FILL_STROKE\n      ) {\n        if (current.fillColor !== SVG_DEFAULTS.fillColor) {\n          current.tspan.setAttributeNS(null, \"fill\", current.fillColor);\n        }\n        if (current.fillAlpha < 1) {\n          current.tspan.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n        }\n      } else if (current.textRenderingMode === TextRenderingMode.ADD_TO_PATH) {\n        // Workaround for Firefox: We must set fill=\"transparent\" because\n        // fill=\"none\" would generate an empty clipping path.\n        current.tspan.setAttributeNS(null, \"fill\", \"transparent\");\n      } else {\n        current.tspan.setAttributeNS(null, \"fill\", \"none\");\n      }\n\n      if (\n        fillStrokeMode === TextRenderingMode.STROKE ||\n        fillStrokeMode === TextRenderingMode.FILL_STROKE\n      ) {\n        const lineWidthScale = 1 / (current.textMatrixScale || 1);\n        this._setStrokeAttributes(current.tspan, lineWidthScale);\n      }\n\n      // Include the text rise in the text matrix since the `pm` function\n      // creates the SVG element's `translate` entry (work on a copy to avoid\n      // altering the original text matrix).\n      let textMatrix = current.textMatrix;\n      if (current.textRise !== 0) {\n        textMatrix = textMatrix.slice();\n        textMatrix[5] += current.textRise;\n      }\n\n      current.txtElement.setAttributeNS(\n        null,\n        \"transform\",\n        `${pm(textMatrix)} scale(${pf(textHScale)}, -1)`\n      );\n      current.txtElement.setAttributeNS(XML_NS, \"xml:space\", \"preserve\");\n      current.txtElement.append(current.tspan);\n      current.txtgrp.append(current.txtElement);\n\n      this._ensureTransformGroup().append(current.txtElement);\n    }\n\n    setLeadingMoveText(x, y) {\n      this.setLeading(-y);\n      this.moveText(x, y);\n    }\n\n    addFontStyle(fontObj) {\n      if (!fontObj.data) {\n        throw new Error(\n          \"addFontStyle: No font data available, \" +\n            'ensure that the \"fontExtraProperties\" API parameter is set.'\n        );\n      }\n      if (!this.cssStyle) {\n        this.cssStyle = this.svgFactory.createElement(\"svg:style\");\n        this.cssStyle.setAttributeNS(null, \"type\", \"text/css\");\n        this.defs.append(this.cssStyle);\n      }\n\n      const url = createObjectURL(\n        fontObj.data,\n        fontObj.mimetype,\n        this.forceDataSchema\n      );\n      this.cssStyle.textContent +=\n        `@font-face { font-family: \"${fontObj.loadedName}\";` +\n        ` src: url(${url}); }\\n`;\n    }\n\n    setFont(details) {\n      const current = this.current;\n      const fontObj = this.commonObjs.get(details[0]);\n      let size = details[1];\n      current.font = fontObj;\n\n      if (\n        this.embedFonts &&\n        !fontObj.missingFile &&\n        !this.embeddedFonts[fontObj.loadedName]\n      ) {\n        this.addFontStyle(fontObj);\n        this.embeddedFonts[fontObj.loadedName] = fontObj;\n      }\n      current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n\n      let bold = \"normal\";\n      if (fontObj.black) {\n        bold = \"900\";\n      } else if (fontObj.bold) {\n        bold = \"bold\";\n      }\n      const italic = fontObj.italic ? \"italic\" : \"normal\";\n\n      if (size < 0) {\n        size = -size;\n        current.fontDirection = -1;\n      } else {\n        current.fontDirection = 1;\n      }\n      current.fontSize = size;\n      current.fontFamily = fontObj.loadedName;\n      current.fontWeight = bold;\n      current.fontStyle = italic;\n\n      current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n      current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n      current.xcoords = [];\n      current.ycoords = [];\n    }\n\n    endText() {\n      const current = this.current;\n      if (\n        current.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG &&\n        current.txtElement?.hasChildNodes()\n      ) {\n        // If no glyphs are shown (i.e. no child nodes), no clipping occurs.\n        current.element = current.txtElement;\n        this.clip(\"nonzero\");\n        this.endPath();\n      }\n    }\n\n    // Path properties\n    setLineWidth(width) {\n      if (width > 0) {\n        this.current.lineWidth = width;\n      }\n    }\n\n    setLineCap(style) {\n      this.current.lineCap = LINE_CAP_STYLES[style];\n    }\n\n    setLineJoin(style) {\n      this.current.lineJoin = LINE_JOIN_STYLES[style];\n    }\n\n    setMiterLimit(limit) {\n      this.current.miterLimit = limit;\n    }\n\n    setStrokeAlpha(strokeAlpha) {\n      this.current.strokeAlpha = strokeAlpha;\n    }\n\n    setStrokeRGBColor(r, g, b) {\n      this.current.strokeColor = Util.makeHexColor(r, g, b);\n    }\n\n    setFillAlpha(fillAlpha) {\n      this.current.fillAlpha = fillAlpha;\n    }\n\n    setFillRGBColor(r, g, b) {\n      this.current.fillColor = Util.makeHexColor(r, g, b);\n      this.current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n      this.current.xcoords = [];\n      this.current.ycoords = [];\n    }\n\n    setStrokeColorN(args) {\n      this.current.strokeColor = this._makeColorN_Pattern(args);\n    }\n\n    setFillColorN(args) {\n      this.current.fillColor = this._makeColorN_Pattern(args);\n    }\n\n    shadingFill(args) {\n      const width = this.viewport.width;\n      const height = this.viewport.height;\n      const inv = Util.inverseTransform(this.transformMatrix);\n      const bl = Util.applyTransform([0, 0], inv);\n      const br = Util.applyTransform([0, height], inv);\n      const ul = Util.applyTransform([width, 0], inv);\n      const ur = Util.applyTransform([width, height], inv);\n      const x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n      const y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n      const x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n      const y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n\n      const rect = this.svgFactory.createElement(\"svg:rect\");\n      rect.setAttributeNS(null, \"x\", x0);\n      rect.setAttributeNS(null, \"y\", y0);\n      rect.setAttributeNS(null, \"width\", x1 - x0);\n      rect.setAttributeNS(null, \"height\", y1 - y0);\n      rect.setAttributeNS(null, \"fill\", this._makeShadingPattern(args));\n      if (this.current.fillAlpha < 1) {\n        rect.setAttributeNS(null, \"fill-opacity\", this.current.fillAlpha);\n      }\n      this._ensureTransformGroup().append(rect);\n    }\n\n    /**\n     * @private\n     */\n    _makeColorN_Pattern(args) {\n      if (args[0] === \"TilingPattern\") {\n        return this._makeTilingPattern(args);\n      }\n      return this._makeShadingPattern(args);\n    }\n\n    /**\n     * @private\n     */\n    _makeTilingPattern(args) {\n      const color = args[1];\n      const operatorList = args[2];\n      const matrix = args[3] || IDENTITY_MATRIX;\n      const [x0, y0, x1, y1] = args[4];\n      const xstep = args[5];\n      const ystep = args[6];\n      const paintType = args[7];\n\n      const tilingId = `shading${shadingCount++}`;\n      const [tx0, ty0, tx1, ty1] = Util.normalizeRect([\n        ...Util.applyTransform([x0, y0], matrix),\n        ...Util.applyTransform([x1, y1], matrix),\n      ]);\n      const [xscale, yscale] = Util.singularValueDecompose2dScale(matrix);\n      const txstep = xstep * xscale;\n      const tystep = ystep * yscale;\n\n      const tiling = this.svgFactory.createElement(\"svg:pattern\");\n      tiling.setAttributeNS(null, \"id\", tilingId);\n      tiling.setAttributeNS(null, \"patternUnits\", \"userSpaceOnUse\");\n      tiling.setAttributeNS(null, \"width\", txstep);\n      tiling.setAttributeNS(null, \"height\", tystep);\n      tiling.setAttributeNS(null, \"x\", `${tx0}`);\n      tiling.setAttributeNS(null, \"y\", `${ty0}`);\n\n      // Save current state.\n      const svg = this.svg;\n      const transformMatrix = this.transformMatrix;\n      const fillColor = this.current.fillColor;\n      const strokeColor = this.current.strokeColor;\n\n      const bbox = this.svgFactory.create(tx1 - tx0, ty1 - ty0);\n      this.svg = bbox;\n      this.transformMatrix = matrix;\n      if (paintType === 2) {\n        const cssColor = Util.makeHexColor(...color);\n        this.current.fillColor = cssColor;\n        this.current.strokeColor = cssColor;\n      }\n      this.executeOpTree(this.convertOpList(operatorList));\n\n      // Restore saved state.\n      this.svg = svg;\n      this.transformMatrix = transformMatrix;\n      this.current.fillColor = fillColor;\n      this.current.strokeColor = strokeColor;\n\n      tiling.append(bbox.childNodes[0]);\n      this.defs.append(tiling);\n      return `url(#${tilingId})`;\n    }\n\n    /**\n     * @private\n     */\n    _makeShadingPattern(args) {\n      if (typeof args === \"string\") {\n        args = this.objs.get(args);\n      }\n      switch (args[0]) {\n        case \"RadialAxial\":\n          const shadingId = `shading${shadingCount++}`;\n          const colorStops = args[3];\n          let gradient;\n\n          switch (args[1]) {\n            case \"axial\":\n              const point0 = args[4];\n              const point1 = args[5];\n              gradient = this.svgFactory.createElement(\"svg:linearGradient\");\n              gradient.setAttributeNS(null, \"id\", shadingId);\n              gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n              gradient.setAttributeNS(null, \"x1\", point0[0]);\n              gradient.setAttributeNS(null, \"y1\", point0[1]);\n              gradient.setAttributeNS(null, \"x2\", point1[0]);\n              gradient.setAttributeNS(null, \"y2\", point1[1]);\n              break;\n            case \"radial\":\n              const focalPoint = args[4];\n              const circlePoint = args[5];\n              const focalRadius = args[6];\n              const circleRadius = args[7];\n              gradient = this.svgFactory.createElement(\"svg:radialGradient\");\n              gradient.setAttributeNS(null, \"id\", shadingId);\n              gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n              gradient.setAttributeNS(null, \"cx\", circlePoint[0]);\n              gradient.setAttributeNS(null, \"cy\", circlePoint[1]);\n              gradient.setAttributeNS(null, \"r\", circleRadius);\n              gradient.setAttributeNS(null, \"fx\", focalPoint[0]);\n              gradient.setAttributeNS(null, \"fy\", focalPoint[1]);\n              gradient.setAttributeNS(null, \"fr\", focalRadius);\n              break;\n            default:\n              throw new Error(`Unknown RadialAxial type: ${args[1]}`);\n          }\n          for (const colorStop of colorStops) {\n            const stop = this.svgFactory.createElement(\"svg:stop\");\n            stop.setAttributeNS(null, \"offset\", colorStop[0]);\n            stop.setAttributeNS(null, \"stop-color\", colorStop[1]);\n            gradient.append(stop);\n          }\n          this.defs.append(gradient);\n          return `url(#${shadingId})`;\n        case \"Mesh\":\n          warn(\"Unimplemented pattern Mesh\");\n          return null;\n        case \"Dummy\":\n          return \"hotpink\";\n        default:\n          throw new Error(`Unknown IR type: ${args[0]}`);\n      }\n    }\n\n    setDash(dashArray, dashPhase) {\n      this.current.dashArray = dashArray;\n      this.current.dashPhase = dashPhase;\n    }\n\n    constructPath(ops, args) {\n      const current = this.current;\n      let x = current.x,\n        y = current.y;\n      let d = [];\n      let j = 0;\n\n      for (const op of ops) {\n        switch (op | 0) {\n          case OPS.rectangle:\n            x = args[j++];\n            y = args[j++];\n            const width = args[j++];\n            const height = args[j++];\n            const xw = x + width;\n            const yh = y + height;\n            d.push(\n              \"M\",\n              pf(x),\n              pf(y),\n              \"L\",\n              pf(xw),\n              pf(y),\n              \"L\",\n              pf(xw),\n              pf(yh),\n              \"L\",\n              pf(x),\n              pf(yh),\n              \"Z\"\n            );\n            break;\n          case OPS.moveTo:\n            x = args[j++];\n            y = args[j++];\n            d.push(\"M\", pf(x), pf(y));\n            break;\n          case OPS.lineTo:\n            x = args[j++];\n            y = args[j++];\n            d.push(\"L\", pf(x), pf(y));\n            break;\n          case OPS.curveTo:\n            x = args[j + 4];\n            y = args[j + 5];\n            d.push(\n              \"C\",\n              pf(args[j]),\n              pf(args[j + 1]),\n              pf(args[j + 2]),\n              pf(args[j + 3]),\n              pf(x),\n              pf(y)\n            );\n            j += 6;\n            break;\n          case OPS.curveTo2:\n            d.push(\n              \"C\",\n              pf(x),\n              pf(y),\n              pf(args[j]),\n              pf(args[j + 1]),\n              pf(args[j + 2]),\n              pf(args[j + 3])\n            );\n            x = args[j + 2];\n            y = args[j + 3];\n            j += 4;\n            break;\n          case OPS.curveTo3:\n            x = args[j + 2];\n            y = args[j + 3];\n            d.push(\n              \"C\",\n              pf(args[j]),\n              pf(args[j + 1]),\n              pf(x),\n              pf(y),\n              pf(x),\n              pf(y)\n            );\n            j += 4;\n            break;\n          case OPS.closePath:\n            d.push(\"Z\");\n            break;\n        }\n      }\n\n      d = d.join(\" \");\n\n      if (\n        current.path &&\n        ops.length > 0 &&\n        ops[0] !== OPS.rectangle &&\n        ops[0] !== OPS.moveTo\n      ) {\n        // If a path does not start with an OPS.rectangle or OPS.moveTo, it has\n        // probably been divided into two OPS.constructPath operators by\n        // OperatorList. Append the commands to the previous path element.\n        d = current.path.getAttributeNS(null, \"d\") + d;\n      } else {\n        current.path = this.svgFactory.createElement(\"svg:path\");\n        this._ensureTransformGroup().append(current.path);\n      }\n\n      current.path.setAttributeNS(null, \"d\", d);\n      current.path.setAttributeNS(null, \"fill\", \"none\");\n\n      // Saving a reference in current.element so that it can be addressed\n      // in 'fill' and 'stroke'\n      current.element = current.path;\n      current.setCurrentPoint(x, y);\n    }\n\n    endPath() {\n      const current = this.current;\n\n      // Painting operators end a path.\n      current.path = null;\n\n      if (!this.pendingClip) {\n        return;\n      }\n      if (!current.element) {\n        this.pendingClip = null;\n        return;\n      }\n\n      // Add the current path to a clipping path.\n      const clipId = `clippath${clipCount++}`;\n      const clipPath = this.svgFactory.createElement(\"svg:clipPath\");\n      clipPath.setAttributeNS(null, \"id\", clipId);\n      clipPath.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n\n      // A deep clone is needed when text is used as a clipping path.\n      const clipElement = current.element.cloneNode(true);\n      if (this.pendingClip === \"evenodd\") {\n        clipElement.setAttributeNS(null, \"clip-rule\", \"evenodd\");\n      } else {\n        clipElement.setAttributeNS(null, \"clip-rule\", \"nonzero\");\n      }\n      this.pendingClip = null;\n      clipPath.append(clipElement);\n      this.defs.append(clipPath);\n\n      if (current.activeClipUrl) {\n        // The previous clipping group content can go out of order -- resetting\n        // cached clipGroups.\n        current.clipGroup = null;\n        for (const prev of this.extraStack) {\n          prev.clipGroup = null;\n        }\n        // Intersect with the previous clipping path.\n        clipPath.setAttributeNS(null, \"clip-path\", current.activeClipUrl);\n      }\n      current.activeClipUrl = `url(#${clipId})`;\n\n      this.tgrp = null;\n    }\n\n    clip(type) {\n      this.pendingClip = type;\n    }\n\n    closePath() {\n      const current = this.current;\n      if (current.path) {\n        const d = `${current.path.getAttributeNS(null, \"d\")}Z`;\n        current.path.setAttributeNS(null, \"d\", d);\n      }\n    }\n\n    setLeading(leading) {\n      this.current.leading = -leading;\n    }\n\n    setTextRise(textRise) {\n      this.current.textRise = textRise;\n    }\n\n    setTextRenderingMode(textRenderingMode) {\n      this.current.textRenderingMode = textRenderingMode;\n    }\n\n    setHScale(scale) {\n      this.current.textHScale = scale / 100;\n    }\n\n    setRenderingIntent(intent) {\n      // This operation is ignored since we haven't found a use case for it yet.\n    }\n\n    setFlatness(flatness) {\n      // This operation is ignored since we haven't found a use case for it yet.\n    }\n\n    setGState(states) {\n      for (const [key, value] of states) {\n        switch (key) {\n          case \"LW\":\n            this.setLineWidth(value);\n            break;\n          case \"LC\":\n            this.setLineCap(value);\n            break;\n          case \"LJ\":\n            this.setLineJoin(value);\n            break;\n          case \"ML\":\n            this.setMiterLimit(value);\n            break;\n          case \"D\":\n            this.setDash(value[0], value[1]);\n            break;\n          case \"RI\":\n            this.setRenderingIntent(value);\n            break;\n          case \"FL\":\n            this.setFlatness(value);\n            break;\n          case \"Font\":\n            this.setFont(value);\n            break;\n          case \"CA\":\n            this.setStrokeAlpha(value);\n            break;\n          case \"ca\":\n            this.setFillAlpha(value);\n            break;\n          default:\n            warn(`Unimplemented graphic state operator ${key}`);\n            break;\n        }\n      }\n    }\n\n    fill() {\n      const current = this.current;\n      if (current.element) {\n        current.element.setAttributeNS(null, \"fill\", current.fillColor);\n        current.element.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n        this.endPath();\n      }\n    }\n\n    stroke() {\n      const current = this.current;\n      if (current.element) {\n        this._setStrokeAttributes(current.element);\n        current.element.setAttributeNS(null, \"fill\", \"none\");\n        this.endPath();\n      }\n    }\n\n    /**\n     * @private\n     */\n    _setStrokeAttributes(element, lineWidthScale = 1) {\n      const current = this.current;\n      let dashArray = current.dashArray;\n      if (lineWidthScale !== 1 && dashArray.length > 0) {\n        dashArray = dashArray.map(function (value) {\n          return lineWidthScale * value;\n        });\n      }\n      element.setAttributeNS(null, \"stroke\", current.strokeColor);\n      element.setAttributeNS(null, \"stroke-opacity\", current.strokeAlpha);\n      element.setAttributeNS(null, \"stroke-miterlimit\", pf(current.miterLimit));\n      element.setAttributeNS(null, \"stroke-linecap\", current.lineCap);\n      element.setAttributeNS(null, \"stroke-linejoin\", current.lineJoin);\n      element.setAttributeNS(\n        null,\n        \"stroke-width\",\n        pf(lineWidthScale * current.lineWidth) + \"px\"\n      );\n      element.setAttributeNS(\n        null,\n        \"stroke-dasharray\",\n        dashArray.map(pf).join(\" \")\n      );\n      element.setAttributeNS(\n        null,\n        \"stroke-dashoffset\",\n        pf(lineWidthScale * current.dashPhase) + \"px\"\n      );\n    }\n\n    eoFill() {\n      if (this.current.element) {\n        this.current.element.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n      }\n      this.fill();\n    }\n\n    fillStroke() {\n      // Order is important since stroke wants fill to be none.\n      // First stroke, then if fill needed, it will be overwritten.\n      this.stroke();\n      this.fill();\n    }\n\n    eoFillStroke() {\n      if (this.current.element) {\n        this.current.element.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n      }\n      this.fillStroke();\n    }\n\n    closeStroke() {\n      this.closePath();\n      this.stroke();\n    }\n\n    closeFillStroke() {\n      this.closePath();\n      this.fillStroke();\n    }\n\n    closeEOFillStroke() {\n      this.closePath();\n      this.eoFillStroke();\n    }\n\n    paintSolidColorImageMask() {\n      const rect = this.svgFactory.createElement(\"svg:rect\");\n      rect.setAttributeNS(null, \"x\", \"0\");\n      rect.setAttributeNS(null, \"y\", \"0\");\n      rect.setAttributeNS(null, \"width\", \"1px\");\n      rect.setAttributeNS(null, \"height\", \"1px\");\n      rect.setAttributeNS(null, \"fill\", this.current.fillColor);\n\n      this._ensureTransformGroup().append(rect);\n    }\n\n    paintImageXObject(objId) {\n      const imgData = objId.startsWith(\"g_\")\n        ? this.commonObjs.get(objId)\n        : this.objs.get(objId);\n      if (!imgData) {\n        warn(`Dependent image with object ID ${objId} is not ready yet`);\n        return;\n      }\n      this.paintInlineImageXObject(imgData);\n    }\n\n    paintInlineImageXObject(imgData, mask) {\n      const width = imgData.width;\n      const height = imgData.height;\n\n      const imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask);\n      const cliprect = this.svgFactory.createElement(\"svg:rect\");\n      cliprect.setAttributeNS(null, \"x\", \"0\");\n      cliprect.setAttributeNS(null, \"y\", \"0\");\n      cliprect.setAttributeNS(null, \"width\", pf(width));\n      cliprect.setAttributeNS(null, \"height\", pf(height));\n      this.current.element = cliprect;\n      this.clip(\"nonzero\");\n\n      const imgEl = this.svgFactory.createElement(\"svg:image\");\n      imgEl.setAttributeNS(XLINK_NS, \"xlink:href\", imgSrc);\n      imgEl.setAttributeNS(null, \"x\", \"0\");\n      imgEl.setAttributeNS(null, \"y\", pf(-height));\n      imgEl.setAttributeNS(null, \"width\", pf(width) + \"px\");\n      imgEl.setAttributeNS(null, \"height\", pf(height) + \"px\");\n      imgEl.setAttributeNS(\n        null,\n        \"transform\",\n        `scale(${pf(1 / width)} ${pf(-1 / height)})`\n      );\n      if (mask) {\n        mask.append(imgEl);\n      } else {\n        this._ensureTransformGroup().append(imgEl);\n      }\n    }\n\n    paintImageMaskXObject(imgData) {\n      const current = this.current;\n      const width = imgData.width;\n      const height = imgData.height;\n      const fillColor = current.fillColor;\n\n      current.maskId = `mask${maskCount++}`;\n      const mask = this.svgFactory.createElement(\"svg:mask\");\n      mask.setAttributeNS(null, \"id\", current.maskId);\n\n      const rect = this.svgFactory.createElement(\"svg:rect\");\n      rect.setAttributeNS(null, \"x\", \"0\");\n      rect.setAttributeNS(null, \"y\", \"0\");\n      rect.setAttributeNS(null, \"width\", pf(width));\n      rect.setAttributeNS(null, \"height\", pf(height));\n      rect.setAttributeNS(null, \"fill\", fillColor);\n      rect.setAttributeNS(null, \"mask\", `url(#${current.maskId})`);\n\n      this.defs.append(mask);\n      this._ensureTransformGroup().append(rect);\n\n      this.paintInlineImageXObject(imgData, mask);\n    }\n\n    paintFormXObjectBegin(matrix, bbox) {\n      if (Array.isArray(matrix) && matrix.length === 6) {\n        this.transform(\n          matrix[0],\n          matrix[1],\n          matrix[2],\n          matrix[3],\n          matrix[4],\n          matrix[5]\n        );\n      }\n\n      if (bbox) {\n        const width = bbox[2] - bbox[0];\n        const height = bbox[3] - bbox[1];\n\n        const cliprect = this.svgFactory.createElement(\"svg:rect\");\n        cliprect.setAttributeNS(null, \"x\", bbox[0]);\n        cliprect.setAttributeNS(null, \"y\", bbox[1]);\n        cliprect.setAttributeNS(null, \"width\", pf(width));\n        cliprect.setAttributeNS(null, \"height\", pf(height));\n        this.current.element = cliprect;\n        this.clip(\"nonzero\");\n        this.endPath();\n      }\n    }\n\n    paintFormXObjectEnd() {}\n\n    /**\n     * @private\n     */\n    _initialize(viewport) {\n      const svg = this.svgFactory.create(viewport.width, viewport.height);\n\n      // Create the definitions element.\n      const definitions = this.svgFactory.createElement(\"svg:defs\");\n      svg.append(definitions);\n      this.defs = definitions;\n\n      // Create the root group element, which acts a container for all other\n      // groups and applies the viewport transform.\n      const rootGroup = this.svgFactory.createElement(\"svg:g\");\n      rootGroup.setAttributeNS(null, \"transform\", pm(viewport.transform));\n      svg.append(rootGroup);\n\n      // For the construction of the SVG image we are only interested in the\n      // root group, so we expose it as the entry point of the SVG image for\n      // the other code in this class.\n      this.svg = rootGroup;\n\n      return svg;\n    }\n\n    /**\n     * @private\n     */\n    _ensureClipGroup() {\n      if (!this.current.clipGroup) {\n        const clipGroup = this.svgFactory.createElement(\"svg:g\");\n        clipGroup.setAttributeNS(null, \"clip-path\", this.current.activeClipUrl);\n        this.svg.append(clipGroup);\n        this.current.clipGroup = clipGroup;\n      }\n      return this.current.clipGroup;\n    }\n\n    /**\n     * @private\n     */\n    _ensureTransformGroup() {\n      if (!this.tgrp) {\n        this.tgrp = this.svgFactory.createElement(\"svg:g\");\n        this.tgrp.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n        if (this.current.activeClipUrl) {\n          this._ensureClipGroup().append(this.tgrp);\n        } else {\n          this.svg.append(this.tgrp);\n        }\n      }\n      return this.tgrp;\n    }\n  };\n}\n\nexport { SVGGraphics };\n", "/* Copyright 2012 Mozilla Foundation\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/* globals __non_webpack_require__ */\n\nimport {\n  AbortException,\n  assert,\n  createPromiseCapability,\n  MissingPDFException,\n} from \"../shared/util.js\";\nimport {\n  extractFilenameFromHeader,\n  validateRangeRequestCapabilities,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n  throw new Error(\n    'Module \"./node_stream.js\" shall not be used with MOZCENTRAL builds.'\n  );\n}\n\nconst fs = __non_webpack_require__(\"fs\");\nconst http = __non_webpack_require__(\"http\");\nconst https = __non_webpack_require__(\"https\");\nconst url = __non_webpack_require__(\"url\");\n\nconst fileUriRegex = /^file:\\/\\/\\/[a-zA-Z]:\\//;\n\nfunction parseUrl(sourceUrl) {\n  const parsedUrl = url.parse(sourceUrl);\n  if (parsedUrl.protocol === \"file:\" || parsedUrl.host) {\n    return parsedUrl;\n  }\n  // Prepending 'file:///' to Windows absolute path.\n  if (/^[a-z]:[/\\\\]/i.test(sourceUrl)) {\n    return url.parse(`file:///${sourceUrl}`);\n  }\n  // Changes protocol to 'file:' if url refers to filesystem.\n  if (!parsedUrl.host) {\n    parsedUrl.protocol = \"file:\";\n  }\n  return parsedUrl;\n}\n\nclass PDFNodeStream {\n  constructor(source) {\n    this.source = source;\n    this.url = parseUrl(source.url);\n    this.isHttp =\n      this.url.protocol === \"http:\" || this.url.protocol === \"https:\";\n    // Check if url refers to filesystem.\n    this.isFsUrl = this.url.protocol === \"file:\";\n    this.httpHeaders = (this.isHttp && source.httpHeaders) || {};\n\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n\n  get _progressiveDataLength() {\n    return this._fullRequestReader?._loaded ?? 0;\n  }\n\n  getFullReader() {\n    assert(\n      !this._fullRequestReader,\n      \"PDFNodeStream.getFullReader can only be called once.\"\n    );\n    this._fullRequestReader = this.isFsUrl\n      ? new PDFNodeStreamFsFullReader(this)\n      : new PDFNodeStreamFullReader(this);\n    return this._fullRequestReader;\n  }\n\n  getRangeReader(start, end) {\n    if (end <= this._progressiveDataLength) {\n      return null;\n    }\n    const rangeReader = this.isFsUrl\n      ? new PDFNodeStreamFsRangeReader(this, start, end)\n      : new PDFNodeStreamRangeReader(this, start, end);\n    this._rangeRequestReaders.push(rangeReader);\n    return rangeReader;\n  }\n\n  cancelAllRequests(reason) {\n    if (this._fullRequestReader) {\n      this._fullRequestReader.cancel(reason);\n    }\n    for (const reader of this._rangeRequestReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n  }\n}\n\nclass BaseFullReader {\n  constructor(stream) {\n    this._url = stream.url;\n    this._done = false;\n    this._storedError = null;\n    this.onProgress = null;\n    const source = stream.source;\n    this._contentLength = source.length; // optional\n    this._loaded = 0;\n    this._filename = null;\n\n    this._disableRange = source.disableRange || false;\n    this._rangeChunkSize = source.rangeChunkSize;\n    if (!this._rangeChunkSize && !this._disableRange) {\n      this._disableRange = true;\n    }\n\n    this._isStreamingSupported = !source.disableStream;\n    this._isRangeSupported = !source.disableRange;\n\n    this._readableStream = null;\n    this._readCapability = createPromiseCapability();\n    this._headersCapability = createPromiseCapability();\n  }\n\n  get headersReady() {\n    return this._headersCapability.promise;\n  }\n\n  get filename() {\n    return this._filename;\n  }\n\n  get contentLength() {\n    return this._contentLength;\n  }\n\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  async read() {\n    await this._readCapability.promise;\n    if (this._done) {\n      return { value: undefined, done: true };\n    }\n    if (this._storedError) {\n      throw this._storedError;\n    }\n\n    const chunk = this._readableStream.read();\n    if (chunk === null) {\n      this._readCapability = createPromiseCapability();\n      return this.read();\n    }\n    this._loaded += chunk.length;\n    if (this.onProgress) {\n      this.onProgress({\n        loaded: this._loaded,\n        total: this._contentLength,\n      });\n    }\n    // Ensure that `read()` method returns ArrayBuffer.\n    const buffer = new Uint8Array(chunk).buffer;\n    return { value: buffer, done: false };\n  }\n\n  cancel(reason) {\n    // Call `this._error()` method when cancel is called\n    // before _readableStream is set.\n    if (!this._readableStream) {\n      this._error(reason);\n      return;\n    }\n    this._readableStream.destroy(reason);\n  }\n\n  _error(reason) {\n    this._storedError = reason;\n    this._readCapability.resolve();\n  }\n\n  _setReadableStream(readableStream) {\n    this._readableStream = readableStream;\n    readableStream.on(\"readable\", () => {\n      this._readCapability.resolve();\n    });\n\n    readableStream.on(\"end\", () => {\n      // Destroy readable to minimize resource usage.\n      readableStream.destroy();\n      this._done = true;\n      this._readCapability.resolve();\n    });\n\n    readableStream.on(\"error\", reason => {\n      this._error(reason);\n    });\n\n    // We need to stop reading when range is supported and streaming is\n    // disabled.\n    if (!this._isStreamingSupported && this._isRangeSupported) {\n      this._error(new AbortException(\"streaming is disabled\"));\n    }\n\n    // Destroy ReadableStream if already in errored state.\n    if (this._storedError) {\n      this._readableStream.destroy(this._storedError);\n    }\n  }\n}\n\nclass BaseRangeReader {\n  constructor(stream) {\n    this._url = stream.url;\n    this._done = false;\n    this._storedError = null;\n    this.onProgress = null;\n    this._loaded = 0;\n    this._readableStream = null;\n    this._readCapability = createPromiseCapability();\n    const source = stream.source;\n    this._isStreamingSupported = !source.disableStream;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  async read() {\n    await this._readCapability.promise;\n    if (this._done) {\n      return { value: undefined, done: true };\n    }\n    if (this._storedError) {\n      throw this._storedError;\n    }\n\n    const chunk = this._readableStream.read();\n    if (chunk === null) {\n      this._readCapability = createPromiseCapability();\n      return this.read();\n    }\n    this._loaded += chunk.length;\n    if (this.onProgress) {\n      this.onProgress({ loaded: this._loaded });\n    }\n    // Ensure that `read()` method returns ArrayBuffer.\n    const buffer = new Uint8Array(chunk).buffer;\n    return { value: buffer, done: false };\n  }\n\n  cancel(reason) {\n    // Call `this._error()` method when cancel is called\n    // before _readableStream is set.\n    if (!this._readableStream) {\n      this._error(reason);\n      return;\n    }\n    this._readableStream.destroy(reason);\n  }\n\n  _error(reason) {\n    this._storedError = reason;\n    this._readCapability.resolve();\n  }\n\n  _setReadableStream(readableStream) {\n    this._readableStream = readableStream;\n    readableStream.on(\"readable\", () => {\n      this._readCapability.resolve();\n    });\n\n    readableStream.on(\"end\", () => {\n      // Destroy readableStream to minimize resource usage.\n      readableStream.destroy();\n      this._done = true;\n      this._readCapability.resolve();\n    });\n\n    readableStream.on(\"error\", reason => {\n      this._error(reason);\n    });\n\n    // Destroy readableStream if already in errored state.\n    if (this._storedError) {\n      this._readableStream.destroy(this._storedError);\n    }\n  }\n}\n\nfunction createRequestOptions(parsedUrl, headers) {\n  return {\n    protocol: parsedUrl.protocol,\n    auth: parsedUrl.auth,\n    host: parsedUrl.hostname,\n    port: parsedUrl.port,\n    path: parsedUrl.path,\n    method: \"GET\",\n    headers,\n  };\n}\n\nclass PDFNodeStreamFullReader extends BaseFullReader {\n  constructor(stream) {\n    super(stream);\n\n    const handleResponse = response => {\n      if (response.statusCode === 404) {\n        const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n        this._storedError = error;\n        this._headersCapability.reject(error);\n        return;\n      }\n      this._headersCapability.resolve();\n      this._setReadableStream(response);\n\n      const getResponseHeader = name => {\n        // Make sure that headers name are in lower case, as mentioned\n        // here: https://nodejs.org/api/http.html#http_message_headers.\n        return this._readableStream.headers[name.toLowerCase()];\n      };\n      const { allowRangeRequests, suggestedLength } =\n        validateRangeRequestCapabilities({\n          getResponseHeader,\n          isHttp: stream.isHttp,\n          rangeChunkSize: this._rangeChunkSize,\n          disableRange: this._disableRange,\n        });\n\n      this._isRangeSupported = allowRangeRequests;\n      // Setting right content length.\n      this._contentLength = suggestedLength || this._contentLength;\n\n      this._filename = extractFilenameFromHeader(getResponseHeader);\n    };\n\n    this._request = null;\n    if (this._url.protocol === \"http:\") {\n      this._request = http.request(\n        createRequestOptions(this._url, stream.httpHeaders),\n        handleResponse\n      );\n    } else {\n      this._request = https.request(\n        createRequestOptions(this._url, stream.httpHeaders),\n        handleResponse\n      );\n    }\n\n    this._request.on(\"error\", reason => {\n      this._storedError = reason;\n      this._headersCapability.reject(reason);\n    });\n    // Note: `request.end(data)` is used to write `data` to request body\n    // and notify end of request. But one should always call `request.end()`\n    // even if there is no data to write -- (to notify the end of request).\n    this._request.end();\n  }\n}\n\nclass PDFNodeStreamRangeReader extends BaseRangeReader {\n  constructor(stream, start, end) {\n    super(stream);\n\n    this._httpHeaders = {};\n    for (const property in stream.httpHeaders) {\n      const value = stream.httpHeaders[property];\n      if (typeof value === \"undefined\") {\n        continue;\n      }\n      this._httpHeaders[property] = value;\n    }\n    this._httpHeaders.Range = `bytes=${start}-${end - 1}`;\n\n    const handleResponse = response => {\n      if (response.statusCode === 404) {\n        const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n        this._storedError = error;\n        return;\n      }\n      this._setReadableStream(response);\n    };\n\n    this._request = null;\n    if (this._url.protocol === \"http:\") {\n      this._request = http.request(\n        createRequestOptions(this._url, this._httpHeaders),\n        handleResponse\n      );\n    } else {\n      this._request = https.request(\n        createRequestOptions(this._url, this._httpHeaders),\n        handleResponse\n      );\n    }\n\n    this._request.on(\"error\", reason => {\n      this._storedError = reason;\n    });\n    this._request.end();\n  }\n}\n\nclass PDFNodeStreamFsFullReader extends BaseFullReader {\n  constructor(stream) {\n    super(stream);\n\n    let path = decodeURIComponent(this._url.path);\n\n    // Remove the extra slash to get right path from url like `file:///C:/`\n    if (fileUriRegex.test(this._url.href)) {\n      path = path.replace(/^\\//, \"\");\n    }\n\n    fs.lstat(path, (error, stat) => {\n      if (error) {\n        if (error.code === \"ENOENT\") {\n          error = new MissingPDFException(`Missing PDF \"${path}\".`);\n        }\n        this._storedError = error;\n        this._headersCapability.reject(error);\n        return;\n      }\n      // Setting right content length.\n      this._contentLength = stat.size;\n\n      this._setReadableStream(fs.createReadStream(path));\n      this._headersCapability.resolve();\n    });\n  }\n}\n\nclass PDFNodeStreamFsRangeReader extends BaseRangeReader {\n  constructor(stream, start, end) {\n    super(stream);\n\n    let path = decodeURIComponent(this._url.path);\n\n    // Remove the extra slash to get right path from url like `file:///C:/`\n    if (fileUriRegex.test(this._url.href)) {\n      path = path.replace(/^\\//, \"\");\n    }\n\n    this._setReadableStream(fs.createReadStream(path, { start, end: end - 1 }));\n  }\n}\n\nexport { PDFNodeStream };\n", "/* Copyright 2012 Mozilla Foundation\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\nimport {\n  assert,\n  MissingPDFException,\n  UnexpectedResponseException,\n} from \"../shared/util.js\";\nimport { getFilenameFromContentDispositionHeader } from \"./content_disposition.js\";\nimport { isPdfFile } from \"./display_utils.js\";\n\nfunction validateRangeRequestCapabilities({\n  getResponseHeader,\n  isHttp,\n  rangeChunkSize,\n  disableRange,\n}) {\n  if (\n    typeof PDFJSDev === \"undefined\" ||\n    PDFJSDev.test(\"!PRODUCTION || TESTING\")\n  ) {\n    assert(\n      Number.isInteger(rangeChunkSize) && rangeChunkSize > 0,\n      \"rangeChunkSize must be an integer larger than zero.\"\n    );\n  }\n  const returnValues = {\n    allowRangeRequests: false,\n    suggestedLength: undefined,\n  };\n\n  const length = parseInt(getResponseHeader(\"Content-Length\"), 10);\n  if (!Number.isInteger(length)) {\n    return returnValues;\n  }\n\n  returnValues.suggestedLength = length;\n\n  if (length <= 2 * rangeChunkSize) {\n    // The file size is smaller than the size of two chunks, so it does not\n    // make any sense to abort the request and retry with a range request.\n    return returnValues;\n  }\n\n  if (disableRange || !isHttp) {\n    return returnValues;\n  }\n  if (getResponseHeader(\"Accept-Ranges\") !== \"bytes\") {\n    return returnValues;\n  }\n\n  const contentEncoding = getResponseHeader(\"Content-Encoding\") || \"identity\";\n  if (contentEncoding !== \"identity\") {\n    return returnValues;\n  }\n\n  returnValues.allowRangeRequests = true;\n  return returnValues;\n}\n\nfunction extractFilenameFromHeader(getResponseHeader) {\n  const contentDisposition = getResponseHeader(\"Content-Disposition\");\n  if (contentDisposition) {\n    let filename = getFilenameFromContentDispositionHeader(contentDisposition);\n    if (filename.includes(\"%\")) {\n      try {\n        filename = decodeURIComponent(filename);\n      } catch (ex) {}\n    }\n    if (isPdfFile(filename)) {\n      return filename;\n    }\n  }\n  return null;\n}\n\nfunction createResponseStatusError(status, url) {\n  if (status === 404 || (status === 0 && url.startsWith(\"file:\"))) {\n    return new MissingPDFException('Missing PDF \"' + url + '\".');\n  }\n  return new UnexpectedResponseException(\n    `Unexpected server response (${status}) while retrieving PDF \"${url}\".`,\n    status\n  );\n}\n\nfunction validateResponseStatus(status) {\n  return status === 200 || status === 206;\n}\n\nexport {\n  createResponseStatusError,\n  extractFilenameFromHeader,\n  validateRangeRequestCapabilities,\n  validateResponseStatus,\n};\n", "/* Copyright 2017 Mozilla Foundation\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\nimport { stringToBytes } from \"../shared/util.js\";\n\n// This getFilenameFromContentDispositionHeader function is adapted from\n// https://github.com/Rob--W/open-in-browser/blob/7e2e35a38b8b4e981b11da7b2f01df0149049e92/extension/content-disposition.js\n// with the following changes:\n// - Modified to conform to PDF.js's coding style.\n// - Move return to the end of the function to prevent Babel from dropping the\n//   function declarations.\n\n/**\n * Extract file name from the Content-Disposition HTTP response header.\n *\n * @param {string} contentDisposition\n * @returns {string} Filename, if found in the Content-Disposition header.\n */\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n  let needsEncodingFixup = true;\n\n  // filename*=ext-value (\"ext-value\" from RFC 5987, referenced by RFC 6266).\n  let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n  if (tmp) {\n    tmp = tmp[1];\n    let filename = rfc2616unquote(tmp);\n    filename = unescape(filename);\n    filename = rfc5987decode(filename);\n    filename = rfc2047decode(filename);\n    return fixupEncoding(filename);\n  }\n\n  // Continuations (RFC 2231 section 3, referenced by RFC 5987 section 3.1).\n  // filename*n*=part\n  // filename*n=part\n  tmp = rfc2231getparam(contentDisposition);\n  if (tmp) {\n    // RFC 2047, section\n    const filename = rfc2047decode(tmp);\n    return fixupEncoding(filename);\n  }\n\n  // filename=value (RFC 5987, section 4.1).\n  tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n  if (tmp) {\n    tmp = tmp[1];\n    let filename = rfc2616unquote(tmp);\n    filename = rfc2047decode(filename);\n    return fixupEncoding(filename);\n  }\n\n  // After this line there are only function declarations. We cannot put\n  // \"return\" here for readability because babel would then drop the function\n  // declarations...\n  function toParamRegExp(attributePattern, flags) {\n    return new RegExp(\n      \"(?:^|;)\\\\s*\" +\n        attributePattern +\n        \"\\\\s*=\\\\s*\" +\n        // Captures: value = token | quoted-string\n        // (RFC 2616, section 3.6 and referenced by RFC 6266 4.1)\n        \"(\" +\n        '[^\";\\\\s][^;\\\\s]*' +\n        \"|\" +\n        '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' +\n        \")\",\n      flags\n    );\n  }\n  function textdecode(encoding, value) {\n    if (encoding) {\n      if (!/^[\\x00-\\xFF]+$/.test(value)) {\n        return value;\n      }\n      try {\n        const decoder = new TextDecoder(encoding, { fatal: true });\n        const buffer = stringToBytes(value);\n        value = decoder.decode(buffer);\n        needsEncodingFixup = false;\n      } catch (e) {\n        // TextDecoder constructor threw - unrecognized encoding.\n      }\n    }\n    return value;\n  }\n  function fixupEncoding(value) {\n    if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n      // Maybe multi-byte UTF-8.\n      value = textdecode(\"utf-8\", value);\n      if (needsEncodingFixup) {\n        // Try iso-8859-1 encoding.\n        value = textdecode(\"iso-8859-1\", value);\n      }\n    }\n    return value;\n  }\n  function rfc2231getparam(contentDispositionStr) {\n    const matches = [];\n    let match;\n    // Iterate over all filename*n= and filename*n*= with n being an integer\n    // of at least zero. Any non-zero number must not start with '0'.\n    const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n    while ((match = iter.exec(contentDispositionStr)) !== null) {\n      let [, n, quot, part] = match; // eslint-disable-line prefer-const\n      n = parseInt(n, 10);\n      if (n in matches) {\n        // Ignore anything after the invalid second filename*0.\n        if (n === 0) {\n          break;\n        }\n        continue;\n      }\n      matches[n] = [quot, part];\n    }\n    const parts = [];\n    for (let n = 0; n < matches.length; ++n) {\n      if (!(n in matches)) {\n        // Numbers must be consecutive. Truncate when there is a hole.\n        break;\n      }\n      let [quot, part] = matches[n]; // eslint-disable-line prefer-const\n      part = rfc2616unquote(part);\n      if (quot) {\n        part = unescape(part);\n        if (n === 0) {\n          part = rfc5987decode(part);\n        }\n      }\n      parts.push(part);\n    }\n    return parts.join(\"\");\n  }\n  function rfc2616unquote(value) {\n    if (value.startsWith('\"')) {\n      const parts = value.slice(1).split('\\\\\"');\n      // Find the first unescaped \" and terminate there.\n      for (let i = 0; i < parts.length; ++i) {\n        const quotindex = parts[i].indexOf('\"');\n        if (quotindex !== -1) {\n          parts[i] = parts[i].slice(0, quotindex);\n          parts.length = i + 1; // Truncates and stop the iteration.\n        }\n        parts[i] = parts[i].replace(/\\\\(.)/g, \"$1\");\n      }\n      value = parts.join('\"');\n    }\n    return value;\n  }\n  function rfc5987decode(extvalue) {\n    // Decodes \"ext-value\" from RFC 5987.\n    const encodingend = extvalue.indexOf(\"'\");\n    if (encodingend === -1) {\n      // Some servers send \"filename*=\" without encoding 'language' prefix,\n      // e.g. in https://github.com/Rob--W/open-in-browser/issues/26\n      // Let's accept the value like Firefox (57) (Chrome 62 rejects it).\n      return extvalue;\n    }\n    const encoding = extvalue.slice(0, encodingend);\n    const langvalue = extvalue.slice(encodingend + 1);\n    // Ignore language (RFC 5987 section 3.2.1, and RFC 6266 section 4.1 ).\n    const value = langvalue.replace(/^[^']*'/, \"\");\n    return textdecode(encoding, value);\n  }\n  function rfc2047decode(value) {\n    // RFC 2047-decode the result. Firefox tried to drop support for it, but\n    // backed out because some servers use it - https://bugzil.la/875615\n    // Firefox's condition for decoding is here: https://searchfox.org/mozilla-central/rev/4a590a5a15e35d88a3b23dd6ac3c471cf85b04a8/netwerk/mime/nsMIMEHeaderParamImpl.cpp#742-748\n\n    // We are more strict and only recognize RFC 2047-encoding if the value\n    // starts with \"=?\", since then it is likely that the full value is\n    // RFC 2047-encoded.\n\n    // Firefox also decodes words even where RFC 2047 section 5 states:\n    // \"An 'encoded-word' MUST NOT appear within a 'quoted-string'.\"\n    if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n      return value;\n    }\n    // RFC 2047, section 2.4\n    // encoded-word = \"=?\" charset \"?\" encoding \"?\" encoded-text \"?=\"\n    // charset = token (but let's restrict to characters that denote a\n    //       possibly valid encoding).\n    // encoding = q or b\n    // encoded-text = any printable ASCII character other than ? or space.\n    //        ... but Firefox permits ? and space.\n    return value.replace(\n      /=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g,\n      function (matches, charset, encoding, text) {\n        if (encoding === \"q\" || encoding === \"Q\") {\n          // RFC 2047 section 4.2.\n          text = text.replace(/_/g, \" \");\n          text = text.replace(/=([0-9a-fA-F]{2})/g, function (match, hex) {\n            return String.fromCharCode(parseInt(hex, 16));\n          });\n          return textdecode(charset, text);\n        } // else encoding is b or B - base64 (RFC 2047 section 4.1)\n        try {\n          text = atob(text);\n        } catch (e) {}\n        return textdecode(charset, text);\n      }\n    );\n  }\n\n  return \"\";\n}\n\nexport { getFilenameFromContentDispositionHeader };\n", "/* Copyright 2012 Mozilla Foundation\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\nimport {\n  assert,\n  createPromiseCapability,\n  stringToBytes,\n} from \"../shared/util.js\";\nimport {\n  createResponseStatusError,\n  extractFilenameFromHeader,\n  validateRangeRequestCapabilities,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n  throw new Error(\n    'Module \"./network.js\" shall not be used with MOZCENTRAL builds.'\n  );\n}\n\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\n\nfunction getArrayBuffer(xhr) {\n  const data = xhr.response;\n  if (typeof data !== \"string\") {\n    return data;\n  }\n  const array = stringToBytes(data);\n  return array.buffer;\n}\n\nclass NetworkManager {\n  constructor(url, args = {}) {\n    this.url = url;\n    this.isHttp = /^https?:/i.test(url);\n    this.httpHeaders = (this.isHttp && args.httpHeaders) || Object.create(null);\n    this.withCredentials = args.withCredentials || false;\n    this.getXhr =\n      args.getXhr ||\n      function NetworkManager_getXhr() {\n        return new XMLHttpRequest();\n      };\n\n    this.currXhrId = 0;\n    this.pendingRequests = Object.create(null);\n  }\n\n  requestRange(begin, end, listeners) {\n    const args = {\n      begin,\n      end,\n    };\n    for (const prop in listeners) {\n      args[prop] = listeners[prop];\n    }\n    return this.request(args);\n  }\n\n  requestFull(listeners) {\n    return this.request(listeners);\n  }\n\n  request(args) {\n    const xhr = this.getXhr();\n    const xhrId = this.currXhrId++;\n    const pendingRequest = (this.pendingRequests[xhrId] = { xhr });\n\n    xhr.open(\"GET\", this.url);\n    xhr.withCredentials = this.withCredentials;\n    for (const property in this.httpHeaders) {\n      const value = this.httpHeaders[property];\n      if (typeof value === \"undefined\") {\n        continue;\n      }\n      xhr.setRequestHeader(property, value);\n    }\n    if (this.isHttp && \"begin\" in args && \"end\" in args) {\n      xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n      pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\n    } else {\n      pendingRequest.expectedStatus = OK_RESPONSE;\n    }\n    xhr.responseType = \"arraybuffer\";\n\n    if (args.onError) {\n      xhr.onerror = function (evt) {\n        args.onError(xhr.status);\n      };\n    }\n    xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n    xhr.onprogress = this.onProgress.bind(this, xhrId);\n\n    pendingRequest.onHeadersReceived = args.onHeadersReceived;\n    pendingRequest.onDone = args.onDone;\n    pendingRequest.onError = args.onError;\n    pendingRequest.onProgress = args.onProgress;\n\n    xhr.send(null);\n\n    return xhrId;\n  }\n\n  onProgress(xhrId, evt) {\n    const pendingRequest = this.pendingRequests[xhrId];\n    if (!pendingRequest) {\n      return; // Maybe abortRequest was called...\n    }\n    pendingRequest.onProgress?.(evt);\n  }\n\n  onStateChange(xhrId, evt) {\n    const pendingRequest = this.pendingRequests[xhrId];\n    if (!pendingRequest) {\n      return; // Maybe abortRequest was called...\n    }\n\n    const xhr = pendingRequest.xhr;\n    if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n      pendingRequest.onHeadersReceived();\n      delete pendingRequest.onHeadersReceived;\n    }\n\n    if (xhr.readyState !== 4) {\n      return;\n    }\n\n    if (!(xhrId in this.pendingRequests)) {\n      // The XHR request might have been aborted in onHeadersReceived()\n      // callback, in which case we should abort request.\n      return;\n    }\n\n    delete this.pendingRequests[xhrId];\n\n    // Success status == 0 can be on ftp, file and other protocols.\n    if (xhr.status === 0 && this.isHttp) {\n      pendingRequest.onError?.(xhr.status);\n      return;\n    }\n    const xhrStatus = xhr.status || OK_RESPONSE;\n\n    // From http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.2:\n    // \"A server MAY ignore the Range header\". This means it's possible to\n    // get a 200 rather than a 206 response from a range request.\n    const ok_response_on_range_request =\n      xhrStatus === OK_RESPONSE &&\n      pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n\n    if (\n      !ok_response_on_range_request &&\n      xhrStatus !== pendingRequest.expectedStatus\n    ) {\n      pendingRequest.onError?.(xhr.status);\n      return;\n    }\n\n    const chunk = getArrayBuffer(xhr);\n    if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n      const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n      const matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n      pendingRequest.onDone({\n        begin: parseInt(matches[1], 10),\n        chunk,\n      });\n    } else if (chunk) {\n      pendingRequest.onDone({\n        begin: 0,\n        chunk,\n      });\n    } else {\n      pendingRequest.onError?.(xhr.status);\n    }\n  }\n\n  getRequestXhr(xhrId) {\n    return this.pendingRequests[xhrId].xhr;\n  }\n\n  isPendingRequest(xhrId) {\n    return xhrId in this.pendingRequests;\n  }\n\n  abortRequest(xhrId) {\n    const xhr = this.pendingRequests[xhrId].xhr;\n    delete this.pendingRequests[xhrId];\n    xhr.abort();\n  }\n}\n\n/** @implements {IPDFStream} */\nclass PDFNetworkStream {\n  constructor(source) {\n    this._source = source;\n    this._manager = new NetworkManager(source.url, {\n      httpHeaders: source.httpHeaders,\n      withCredentials: source.withCredentials,\n    });\n    this._rangeChunkSize = source.rangeChunkSize;\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n\n  _onRangeRequestReaderClosed(reader) {\n    const i = this._rangeRequestReaders.indexOf(reader);\n    if (i >= 0) {\n      this._rangeRequestReaders.splice(i, 1);\n    }\n  }\n\n  getFullReader() {\n    assert(\n      !this._fullRequestReader,\n      \"PDFNetworkStream.getFullReader can only be called once.\"\n    );\n    this._fullRequestReader = new PDFNetworkStreamFullRequestReader(\n      this._manager,\n      this._source\n    );\n    return this._fullRequestReader;\n  }\n\n  getRangeReader(begin, end) {\n    const reader = new PDFNetworkStreamRangeRequestReader(\n      this._manager,\n      begin,\n      end\n    );\n    reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n    this._rangeRequestReaders.push(reader);\n    return reader;\n  }\n\n  cancelAllRequests(reason) {\n    this._fullRequestReader?.cancel(reason);\n\n    for (const reader of this._rangeRequestReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n  }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFNetworkStreamFullRequestReader {\n  constructor(manager, source) {\n    this._manager = manager;\n\n    const args = {\n      onHeadersReceived: this._onHeadersReceived.bind(this),\n      onDone: this._onDone.bind(this),\n      onError: this._onError.bind(this),\n      onProgress: this._onProgress.bind(this),\n    };\n    this._url = source.url;\n    this._fullRequestId = manager.requestFull(args);\n    this._headersReceivedCapability = createPromiseCapability();\n    this._disableRange = source.disableRange || false;\n    this._contentLength = source.length; // Optional\n    this._rangeChunkSize = source.rangeChunkSize;\n    if (!this._rangeChunkSize && !this._disableRange) {\n      this._disableRange = true;\n    }\n\n    this._isStreamingSupported = false;\n    this._isRangeSupported = false;\n\n    this._cachedChunks = [];\n    this._requests = [];\n    this._done = false;\n    this._storedError = undefined;\n    this._filename = null;\n\n    this.onProgress = null;\n  }\n\n  _onHeadersReceived() {\n    const fullRequestXhrId = this._fullRequestId;\n    const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n\n    const getResponseHeader = name => {\n      return fullRequestXhr.getResponseHeader(name);\n    };\n    const { allowRangeRequests, suggestedLength } =\n      validateRangeRequestCapabilities({\n        getResponseHeader,\n        isHttp: this._manager.isHttp,\n        rangeChunkSize: this._rangeChunkSize,\n        disableRange: this._disableRange,\n      });\n\n    if (allowRangeRequests) {\n      this._isRangeSupported = true;\n    }\n    // Setting right content length.\n    this._contentLength = suggestedLength || this._contentLength;\n\n    this._filename = extractFilenameFromHeader(getResponseHeader);\n\n    if (this._isRangeSupported) {\n      // NOTE: by cancelling the full request, and then issuing range\n      // requests, there will be an issue for sites where you can only\n      // request the pdf once. However, if this is the case, then the\n      // server should not be returning that it can support range requests.\n      this._manager.abortRequest(fullRequestXhrId);\n    }\n\n    this._headersReceivedCapability.resolve();\n  }\n\n  _onDone(data) {\n    if (data) {\n      if (this._requests.length > 0) {\n        const requestCapability = this._requests.shift();\n        requestCapability.resolve({ value: data.chunk, done: false });\n      } else {\n        this._cachedChunks.push(data.chunk);\n      }\n    }\n    this._done = true;\n    if (this._cachedChunks.length > 0) {\n      return;\n    }\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({ value: undefined, done: true });\n    }\n    this._requests.length = 0;\n  }\n\n  _onError(status) {\n    this._storedError = createResponseStatusError(status, this._url);\n    this._headersReceivedCapability.reject(this._storedError);\n    for (const requestCapability of this._requests) {\n      requestCapability.reject(this._storedError);\n    }\n    this._requests.length = 0;\n    this._cachedChunks.length = 0;\n  }\n\n  _onProgress(evt) {\n    this.onProgress?.({\n      loaded: evt.loaded,\n      total: evt.lengthComputable ? evt.total : this._contentLength,\n    });\n  }\n\n  get filename() {\n    return this._filename;\n  }\n\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  get contentLength() {\n    return this._contentLength;\n  }\n\n  get headersReady() {\n    return this._headersReceivedCapability.promise;\n  }\n\n  async read() {\n    if (this._storedError) {\n      throw this._storedError;\n    }\n    if (this._cachedChunks.length > 0) {\n      const chunk = this._cachedChunks.shift();\n      return { value: chunk, done: false };\n    }\n    if (this._done) {\n      return { value: undefined, done: true };\n    }\n    const requestCapability = createPromiseCapability();\n    this._requests.push(requestCapability);\n    return requestCapability.promise;\n  }\n\n  cancel(reason) {\n    this._done = true;\n    this._headersReceivedCapability.reject(reason);\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({ value: undefined, done: true });\n    }\n    this._requests.length = 0;\n    if (this._manager.isPendingRequest(this._fullRequestId)) {\n      this._manager.abortRequest(this._fullRequestId);\n    }\n    this._fullRequestReader = null;\n  }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFNetworkStreamRangeRequestReader {\n  constructor(manager, begin, end) {\n    this._manager = manager;\n\n    const args = {\n      onDone: this._onDone.bind(this),\n      onError: this._onError.bind(this),\n      onProgress: this._onProgress.bind(this),\n    };\n    this._url = manager.url;\n    this._requestId = manager.requestRange(begin, end, args);\n    this._requests = [];\n    this._queuedChunk = null;\n    this._done = false;\n    this._storedError = undefined;\n\n    this.onProgress = null;\n    this.onClosed = null;\n  }\n\n  _close() {\n    this.onClosed?.(this);\n  }\n\n  _onDone(data) {\n    const chunk = data.chunk;\n    if (this._requests.length > 0) {\n      const requestCapability = this._requests.shift();\n      requestCapability.resolve({ value: chunk, done: false });\n    } else {\n      this._queuedChunk = chunk;\n    }\n    this._done = true;\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({ value: undefined, done: true });\n    }\n    this._requests.length = 0;\n    this._close();\n  }\n\n  _onError(status) {\n    this._storedError = createResponseStatusError(status, this._url);\n    for (const requestCapability of this._requests) {\n      requestCapability.reject(this._storedError);\n    }\n    this._requests.length = 0;\n    this._queuedChunk = null;\n  }\n\n  _onProgress(evt) {\n    if (!this.isStreamingSupported) {\n      this.onProgress?.({ loaded: evt.loaded });\n    }\n  }\n\n  get isStreamingSupported() {\n    return false;\n  }\n\n  async read() {\n    if (this._storedError) {\n      throw this._storedError;\n    }\n    if (this._queuedChunk !== null) {\n      const chunk = this._queuedChunk;\n      this._queuedChunk = null;\n      return { value: chunk, done: false };\n    }\n    if (this._done) {\n      return { value: undefined, done: true };\n    }\n    const requestCapability = createPromiseCapability();\n    this._requests.push(requestCapability);\n    return requestCapability.promise;\n  }\n\n  cancel(reason) {\n    this._done = true;\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({ value: undefined, done: true });\n    }\n    this._requests.length = 0;\n    if (this._manager.isPendingRequest(this._requestId)) {\n      this._manager.abortRequest(this._requestId);\n    }\n    this._close();\n  }\n}\n\nexport { PDFNetworkStream };\n", "/* Copyright 2012 Mozilla Foundation\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\nimport {\n  AbortException,\n  assert,\n  createPromiseCapability,\n} from \"../shared/util.js\";\nimport {\n  createResponseStatusError,\n  extractFilenameFromHeader,\n  validateRangeRequestCapabilities,\n  validateResponseStatus,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n  throw new Error(\n    'Module \"./fetch_stream.js\" shall not be used with MOZCENTRAL builds.'\n  );\n}\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n  return {\n    method: \"GET\",\n    headers,\n    signal: abortController.signal,\n    mode: \"cors\",\n    credentials: withCredentials ? \"include\" : \"same-origin\",\n    redirect: \"follow\",\n  };\n}\n\nfunction createHeaders(httpHeaders) {\n  const headers = new Headers();\n  for (const property in httpHeaders) {\n    const value = httpHeaders[property];\n    if (typeof value === \"undefined\") {\n      continue;\n    }\n    headers.append(property, value);\n  }\n  return headers;\n}\n\n/** @implements {IPDFStream} */\nclass PDFFetchStream {\n  constructor(source) {\n    this.source = source;\n    this.isHttp = /^https?:/i.test(source.url);\n    this.httpHeaders = (this.isHttp && source.httpHeaders) || {};\n\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n\n  get _progressiveDataLength() {\n    return this._fullRequestReader?._loaded ?? 0;\n  }\n\n  getFullReader() {\n    assert(\n      !this._fullRequestReader,\n      \"PDFFetchStream.getFullReader can only be called once.\"\n    );\n    this._fullRequestReader = new PDFFetchStreamReader(this);\n    return this._fullRequestReader;\n  }\n\n  getRangeReader(begin, end) {\n    if (end <= this._progressiveDataLength) {\n      return null;\n    }\n    const reader = new PDFFetchStreamRangeReader(this, begin, end);\n    this._rangeRequestReaders.push(reader);\n    return reader;\n  }\n\n  cancelAllRequests(reason) {\n    if (this._fullRequestReader) {\n      this._fullRequestReader.cancel(reason);\n    }\n    for (const reader of this._rangeRequestReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n  }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFFetchStreamReader {\n  constructor(stream) {\n    this._stream = stream;\n    this._reader = null;\n    this._loaded = 0;\n    this._filename = null;\n    const source = stream.source;\n    this._withCredentials = source.withCredentials || false;\n    this._contentLength = source.length;\n    this._headersCapability = createPromiseCapability();\n    this._disableRange = source.disableRange || false;\n    this._rangeChunkSize = source.rangeChunkSize;\n    if (!this._rangeChunkSize && !this._disableRange) {\n      this._disableRange = true;\n    }\n\n    this._abortController = new AbortController();\n    this._isStreamingSupported = !source.disableStream;\n    this._isRangeSupported = !source.disableRange;\n\n    this._headers = createHeaders(this._stream.httpHeaders);\n\n    const url = source.url;\n    fetch(\n      url,\n      createFetchOptions(\n        this._headers,\n        this._withCredentials,\n        this._abortController\n      )\n    )\n      .then(response => {\n        if (!validateResponseStatus(response.status)) {\n          throw createResponseStatusError(response.status, url);\n        }\n        this._reader = response.body.getReader();\n        this._headersCapability.resolve();\n\n        const getResponseHeader = name => {\n          return response.headers.get(name);\n        };\n        const { allowRangeRequests, suggestedLength } =\n          validateRangeRequestCapabilities({\n            getResponseHeader,\n            isHttp: this._stream.isHttp,\n            rangeChunkSize: this._rangeChunkSize,\n            disableRange: this._disableRange,\n          });\n\n        this._isRangeSupported = allowRangeRequests;\n        // Setting right content length.\n        this._contentLength = suggestedLength || this._contentLength;\n\n        this._filename = extractFilenameFromHeader(getResponseHeader);\n\n        // We need to stop reading when range is supported and streaming is\n        // disabled.\n        if (!this._isStreamingSupported && this._isRangeSupported) {\n          this.cancel(new AbortException(\"Streaming is disabled.\"));\n        }\n      })\n      .catch(this._headersCapability.reject);\n\n    this.onProgress = null;\n  }\n\n  get headersReady() {\n    return this._headersCapability.promise;\n  }\n\n  get filename() {\n    return this._filename;\n  }\n\n  get contentLength() {\n    return this._contentLength;\n  }\n\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  async read() {\n    await this._headersCapability.promise;\n    const { value, done } = await this._reader.read();\n    if (done) {\n      return { value, done };\n    }\n    this._loaded += value.byteLength;\n    if (this.onProgress) {\n      this.onProgress({\n        loaded: this._loaded,\n        total: this._contentLength,\n      });\n    }\n    const buffer = new Uint8Array(value).buffer;\n    return { value: buffer, done: false };\n  }\n\n  cancel(reason) {\n    if (this._reader) {\n      this._reader.cancel(reason);\n    }\n    this._abortController.abort();\n  }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFFetchStreamRangeReader {\n  constructor(stream, begin, end) {\n    this._stream = stream;\n    this._reader = null;\n    this._loaded = 0;\n    const source = stream.source;\n    this._withCredentials = source.withCredentials || false;\n    this._readCapability = createPromiseCapability();\n    this._isStreamingSupported = !source.disableStream;\n\n    this._abortController = new AbortController();\n    this._headers = createHeaders(this._stream.httpHeaders);\n    this._headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n\n    const url = source.url;\n    fetch(\n      url,\n      createFetchOptions(\n        this._headers,\n        this._withCredentials,\n        this._abortController\n      )\n    )\n      .then(response => {\n        if (!validateResponseStatus(response.status)) {\n          throw createResponseStatusError(response.status, url);\n        }\n        this._readCapability.resolve();\n        this._reader = response.body.getReader();\n      })\n      .catch(this._readCapability.reject);\n\n    this.onProgress = null;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  async read() {\n    await this._readCapability.promise;\n    const { value, done } = await this._reader.read();\n    if (done) {\n      return { value, done };\n    }\n    this._loaded += value.byteLength;\n    if (this.onProgress) {\n      this.onProgress({ loaded: this._loaded });\n    }\n    const buffer = new Uint8Array(value).buffer;\n    return { value: buffer, done: false };\n  }\n\n  cancel(reason) {\n    if (this._reader) {\n      this._reader.cancel(reason);\n    }\n    this._abortController.abort();\n  }\n}\n\nexport { PDFFetchStream };\n", "// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __w_pdfjs_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n", "/* Copyright 2012 Mozilla Foundation\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// eslint-disable-next-line max-len\n/** @typedef {import(\"./display/api\").PDFDocumentLoadingTask} PDFDocumentLoadingTask */\n/** @typedef {import(\"./display/api\").PDFDocumentProxy} PDFDocumentProxy */\n/** @typedef {import(\"./display/api\").PDFPageProxy} PDFPageProxy */\n/** @typedef {import(\"./display/api\").RenderTask} RenderTask */\n/** @typedef {import(\"./display/display_utils\").PageViewport} PageViewport */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./display/text_layer\").TextLayerRenderTask} TextLayerRenderTask */\n\nimport {\n  AnnotationEditorParamsType,\n  AnnotationEditorType,\n  AnnotationMode,\n  CMapCompressionType,\n  createPromiseCapability,\n  createValidAbsoluteUrl,\n  InvalidPDFException,\n  MissingPDFException,\n  OPS,\n  PasswordResponses,\n  PermissionFlag,\n  shadow,\n  UnexpectedResponseException,\n  UNSUPPORTED_FEATURES,\n  Util,\n  VerbosityLevel,\n} from \"./shared/util.js\";\nimport {\n  build,\n  getDocument,\n  LoopbackPort,\n  PDFDataRangeTransport,\n  PDFWorker,\n  setPDFNetworkStreamFactory,\n  version,\n} from \"./display/api.js\";\nimport {\n  getFilenameFromUrl,\n  getPdfFilenameFromUrl,\n  getXfaPageViewport,\n  isPdfFile,\n  isValidFetchUrl,\n  loadScript,\n  PDFDateString,\n  PixelsPerInch,\n  RenderingCancelledException,\n} from \"./display/display_utils.js\";\nimport { AnnotationEditorLayer } from \"./display/editor/annotation_editor_layer.js\";\nimport { AnnotationEditorUIManager } from \"./display/editor/tools.js\";\nimport { AnnotationLayer } from \"./display/annotation_layer.js\";\nimport { GlobalWorkerOptions } from \"./display/worker_options.js\";\nimport { isNodeJS } from \"./shared/is_node.js\";\nimport { renderTextLayer } from \"./display/text_layer.js\";\nimport { SVGGraphics } from \"./display/svg.js\";\nimport { XfaLayer } from \"./display/xfa_layer.js\";\n\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsVersion =\n  typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : void 0;\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsBuild =\n  typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_BUILD\") : void 0;\n\nif (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")) {\n  const streamsPromise = Promise.all([\n    import(\"pdfjs/display/network.js\"),\n    import(\"pdfjs/display/fetch_stream.js\"),\n  ]);\n\n  setPDFNetworkStreamFactory(async params => {\n    const [{ PDFNetworkStream }, { PDFFetchStream }] = await streamsPromise;\n    if (isValidFetchUrl(params.url)) {\n      return new PDFFetchStream(params);\n    }\n    return new PDFNetworkStream(params);\n  });\n} else if (PDFJSDev.test(\"GENERIC || CHROME\")) {\n  if (PDFJSDev.test(\"GENERIC\") && isNodeJS) {\n    const { PDFNodeStream } = require(\"./display/node_stream.js\");\n\n    setPDFNetworkStreamFactory(params => {\n      return new PDFNodeStream(params);\n    });\n  } else {\n    const { PDFNetworkStream } = require(\"./display/network.js\");\n    const { PDFFetchStream } = require(\"./display/fetch_stream.js\");\n\n    setPDFNetworkStreamFactory(params => {\n      if (isValidFetchUrl(params.url)) {\n        return new PDFFetchStream(params);\n      }\n      return new PDFNetworkStream(params);\n    });\n  }\n}\n\nexport {\n  AnnotationEditorLayer,\n  AnnotationEditorParamsType,\n  AnnotationEditorType,\n  AnnotationEditorUIManager,\n  AnnotationLayer,\n  AnnotationMode,\n  build,\n  CMapCompressionType,\n  createPromiseCapability,\n  createValidAbsoluteUrl,\n  getDocument,\n  getFilenameFromUrl,\n  getPdfFilenameFromUrl,\n  getXfaPageViewport,\n  GlobalWorkerOptions,\n  InvalidPDFException,\n  isPdfFile,\n  loadScript,\n  LoopbackPort,\n  MissingPDFException,\n  OPS,\n  PasswordResponses,\n  PDFDataRangeTransport,\n  PDFDateString,\n  PDFWorker,\n  PermissionFlag,\n  PixelsPerInch,\n  RenderingCancelledException,\n  renderTextLayer,\n  shadow,\n  SVGGraphics,\n  UnexpectedResponseException,\n  UNSUPPORTED_FEATURES,\n  Util,\n  VerbosityLevel,\n  version,\n  XfaLayer,\n};\n", "/** @license React v16.13.1\n * react-is.development.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';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n  (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n  return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n  type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n  if (typeof object === 'object' && object !== null) {\n    var $$typeof = object.$$typeof;\n\n    switch ($$typeof) {\n      case REACT_ELEMENT_TYPE:\n        var type = object.type;\n\n        switch (type) {\n          case REACT_ASYNC_MODE_TYPE:\n          case REACT_CONCURRENT_MODE_TYPE:\n          case REACT_FRAGMENT_TYPE:\n          case REACT_PROFILER_TYPE:\n          case REACT_STRICT_MODE_TYPE:\n          case REACT_SUSPENSE_TYPE:\n            return type;\n\n          default:\n            var $$typeofType = type && type.$$typeof;\n\n            switch ($$typeofType) {\n              case REACT_CONTEXT_TYPE:\n              case REACT_FORWARD_REF_TYPE:\n              case REACT_LAZY_TYPE:\n              case REACT_MEMO_TYPE:\n              case REACT_PROVIDER_TYPE:\n                return $$typeofType;\n\n              default:\n                return $$typeof;\n            }\n\n        }\n\n      case REACT_PORTAL_TYPE:\n        return $$typeof;\n    }\n  }\n\n  return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n  {\n    if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n      hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n      console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n    }\n  }\n\n  return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n  return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n  return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n  return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n  return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n  return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n  return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n  return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n  return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n  return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n  return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n  return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n  })();\n}\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", "/*\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", "/**\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", "module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\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 printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n  var loggedTypeFailures = {};\n  var has = require('./lib/has');\n\n  printWarning = function(text) {\n    var message = 'Warning: ' + text;\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) { /**/ }\n  };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n  if (process.env.NODE_ENV !== 'production') {\n    for (var typeSpecName in typeSpecs) {\n      if (has(typeSpecs, typeSpecName)) {\n        var error;\n        // Prop type validation may throw. In case they do, we don't want to\n        // fail the render phase where it didn't fail before. So we log it.\n        // After these have been cleaned up, we'll let them throw.\n        try {\n          // This is intentionally an invariant that gets caught. It's the same\n          // behavior as without this statement except with a better message.\n          if (typeof typeSpecs[typeSpecName] !== 'function') {\n            var err = Error(\n              (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n              'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n              'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n            );\n            err.name = 'Invariant Violation';\n            throw err;\n          }\n          error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n        } catch (ex) {\n          error = ex;\n        }\n        if (error && !(error instanceof Error)) {\n          printWarning(\n            (componentName || 'React class') + ': type specification of ' +\n            location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n            'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n            'You may have forgotten to pass an argument to the type checker ' +\n            'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n            'shape all require an argument).'\n          );\n        }\n        if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n          // Only monitor this failure once because there tends to be a lot of the\n          // same error.\n          loggedTypeFailures[error.message] = true;\n\n          var stack = getStack ? getStack() : '';\n\n          printWarning(\n            'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n          );\n        }\n      }\n    }\n  }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n  if (process.env.NODE_ENV !== 'production') {\n    loggedTypeFailures = {};\n  }\n}\n\nmodule.exports = checkPropTypes;\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 ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n  printWarning = function(text) {\n    var message = 'Warning: ' + text;\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n  return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n  /* global Symbol */\n  var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n  var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n  /**\n   * Returns the iterator method function contained on the iterable object.\n   *\n   * Be sure to invoke the function with the iterable as context:\n   *\n   *     var iteratorFn = getIteratorFn(myIterable);\n   *     if (iteratorFn) {\n   *       var iterator = iteratorFn.call(myIterable);\n   *       ...\n   *     }\n   *\n   * @param {?object} maybeIterable\n   * @return {?function}\n   */\n  function getIteratorFn(maybeIterable) {\n    var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n    if (typeof iteratorFn === 'function') {\n      return iteratorFn;\n    }\n  }\n\n  /**\n   * Collection of methods that allow declaration and validation of props that are\n   * supplied to React components. Example usage:\n   *\n   *   var Props = require('ReactPropTypes');\n   *   var MyArticle = React.createClass({\n   *     propTypes: {\n   *       // An optional string prop named \"description\".\n   *       description: Props.string,\n   *\n   *       // A required enum prop named \"category\".\n   *       category: Props.oneOf(['News','Photos']).isRequired,\n   *\n   *       // A prop named \"dialog\" that requires an instance of Dialog.\n   *       dialog: Props.instanceOf(Dialog).isRequired\n   *     },\n   *     render: function() { ... }\n   *   });\n   *\n   * A more formal specification of how these methods are used:\n   *\n   *   type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n   *   decl := ReactPropTypes.{type}(.isRequired)?\n   *\n   * Each and every declaration produces a function with the same signature. This\n   * allows the creation of custom validation functions. For example:\n   *\n   *  var MyLink = React.createClass({\n   *    propTypes: {\n   *      // An optional string or URI prop named \"href\".\n   *      href: function(props, propName, componentName) {\n   *        var propValue = props[propName];\n   *        if (propValue != null && typeof propValue !== 'string' &&\n   *            !(propValue instanceof URI)) {\n   *          return new Error(\n   *            'Expected a string or an URI for ' + propName + ' in ' +\n   *            componentName\n   *          );\n   *        }\n   *      }\n   *    },\n   *    render: function() {...}\n   *  });\n   *\n   * @internal\n   */\n\n  var ANONYMOUS = '<<anonymous>>';\n\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n  var ReactPropTypes = {\n    array: createPrimitiveTypeChecker('array'),\n    bigint: createPrimitiveTypeChecker('bigint'),\n    bool: createPrimitiveTypeChecker('boolean'),\n    func: createPrimitiveTypeChecker('function'),\n    number: createPrimitiveTypeChecker('number'),\n    object: createPrimitiveTypeChecker('object'),\n    string: createPrimitiveTypeChecker('string'),\n    symbol: createPrimitiveTypeChecker('symbol'),\n\n    any: createAnyTypeChecker(),\n    arrayOf: createArrayOfTypeChecker,\n    element: createElementTypeChecker(),\n    elementType: createElementTypeTypeChecker(),\n    instanceOf: createInstanceTypeChecker,\n    node: createNodeChecker(),\n    objectOf: createObjectOfTypeChecker,\n    oneOf: createEnumTypeChecker,\n    oneOfType: createUnionTypeChecker,\n    shape: createShapeTypeChecker,\n    exact: createStrictShapeTypeChecker,\n  };\n\n  /**\n   * inlined Object.is polyfill to avoid requiring consumers ship their own\n   * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n   */\n  /*eslint-disable no-self-compare*/\n  function is(x, y) {\n    // SameValue algorithm\n    if (x === y) {\n      // Steps 1-5, 7-10\n      // Steps 6.b-6.e: +0 != -0\n      return x !== 0 || 1 / x === 1 / y;\n    } else {\n      // Step 6.a: NaN == NaN\n      return x !== x && y !== y;\n    }\n  }\n  /*eslint-enable no-self-compare*/\n\n  /**\n   * We use an Error-like object for backward compatibility as people may call\n   * PropTypes directly and inspect their output. However, we don't use real\n   * Errors anymore. We don't inspect their stack anyway, and creating them\n   * is prohibitively expensive if they are created too often, such as what\n   * happens in oneOfType() for any type before the one that matched.\n   */\n  function PropTypeError(message, data) {\n    this.message = message;\n    this.data = data && typeof data === 'object' ? data: {};\n    this.stack = '';\n  }\n  // Make `instanceof Error` still work for returned errors.\n  PropTypeError.prototype = Error.prototype;\n\n  function createChainableTypeChecker(validate) {\n    if (process.env.NODE_ENV !== 'production') {\n      var manualPropTypeCallCache = {};\n      var manualPropTypeWarningCount = 0;\n    }\n    function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n      componentName = componentName || ANONYMOUS;\n      propFullName = propFullName || propName;\n\n      if (secret !== ReactPropTypesSecret) {\n        if (throwOnDirectAccess) {\n          // New behavior only for users of `prop-types` package\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        } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n          // Old behavior for people using React.PropTypes\n          var cacheKey = componentName + ':' + propName;\n          if (\n            !manualPropTypeCallCache[cacheKey] &&\n            // Avoid spamming the console because they are often not actionable except for lib authors\n            manualPropTypeWarningCount < 3\n          ) {\n            printWarning(\n              'You are manually calling a React.PropTypes validation ' +\n              'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n              'and will throw in the standalone `prop-types` package. ' +\n              'You may be seeing this warning due to a third-party PropTypes ' +\n              'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n            );\n            manualPropTypeCallCache[cacheKey] = true;\n            manualPropTypeWarningCount++;\n          }\n        }\n      }\n      if (props[propName] == null) {\n        if (isRequired) {\n          if (props[propName] === null) {\n            return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n          }\n          return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n        }\n        return null;\n      } else {\n        return validate(props, propName, componentName, location, propFullName);\n      }\n    }\n\n    var chainedCheckType = checkType.bind(null, false);\n    chainedCheckType.isRequired = checkType.bind(null, true);\n\n    return chainedCheckType;\n  }\n\n  function createPrimitiveTypeChecker(expectedType) {\n    function validate(props, propName, componentName, location, propFullName, secret) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== expectedType) {\n        // `propValue` being instance of, say, date/regexp, pass the 'object'\n        // check, but we can offer a more precise error message here rather than\n        // 'of type `object`'.\n        var preciseType = getPreciseType(propValue);\n\n        return new PropTypeError(\n          'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n          {expectedType: expectedType}\n        );\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createAnyTypeChecker() {\n    return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n  }\n\n  function createArrayOfTypeChecker(typeChecker) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (typeof typeChecker !== 'function') {\n        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n      }\n      var propValue = props[propName];\n      if (!Array.isArray(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n      }\n      for (var i = 0; i < propValue.length; i++) {\n        var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n        if (error instanceof Error) {\n          return error;\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createElementTypeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      if (!isValidElement(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createElementTypeTypeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      if (!ReactIs.isValidElementType(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createInstanceTypeChecker(expectedClass) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (!(props[propName] instanceof expectedClass)) {\n        var expectedClassName = expectedClass.name || ANONYMOUS;\n        var actualClassName = getClassName(props[propName]);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createEnumTypeChecker(expectedValues) {\n    if (!Array.isArray(expectedValues)) {\n      if (process.env.NODE_ENV !== 'production') {\n        if (arguments.length > 1) {\n          printWarning(\n            'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n            'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n          );\n        } else {\n          printWarning('Invalid argument supplied to oneOf, expected an array.');\n        }\n      }\n      return emptyFunctionThatReturnsNull;\n    }\n\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      for (var i = 0; i < expectedValues.length; i++) {\n        if (is(propValue, expectedValues[i])) {\n          return null;\n        }\n      }\n\n      var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n        var type = getPreciseType(value);\n        if (type === 'symbol') {\n          return String(value);\n        }\n        return value;\n      });\n      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createObjectOfTypeChecker(typeChecker) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (typeof typeChecker !== 'function') {\n        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n      }\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n      }\n      for (var key in propValue) {\n        if (has(propValue, key)) {\n          var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n          if (error instanceof Error) {\n            return error;\n          }\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createUnionTypeChecker(arrayOfTypeCheckers) {\n    if (!Array.isArray(arrayOfTypeCheckers)) {\n      process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n      return emptyFunctionThatReturnsNull;\n    }\n\n    for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n      var checker = arrayOfTypeCheckers[i];\n      if (typeof checker !== 'function') {\n        printWarning(\n          'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n          'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n        );\n        return emptyFunctionThatReturnsNull;\n      }\n    }\n\n    function validate(props, propName, componentName, location, propFullName) {\n      var expectedTypes = [];\n      for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n        var checker = arrayOfTypeCheckers[i];\n        var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n        if (checkerResult == null) {\n          return null;\n        }\n        if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n          expectedTypes.push(checkerResult.data.expectedType);\n        }\n      }\n      var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createNodeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (!isNode(props[propName])) {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function invalidValidatorError(componentName, location, propFullName, key, type) {\n    return new PropTypeError(\n      (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n      'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n    );\n  }\n\n  function createShapeTypeChecker(shapeTypes) {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n      }\n      for (var key in shapeTypes) {\n        var checker = shapeTypes[key];\n        if (typeof checker !== 'function') {\n          return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n        }\n        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n        if (error) {\n          return error;\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createStrictShapeTypeChecker(shapeTypes) {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n      }\n      // We need to check all keys in case some are required but missing from props.\n      var allKeys = assign({}, props[propName], shapeTypes);\n      for (var key in allKeys) {\n        var checker = shapeTypes[key];\n        if (has(shapeTypes, key) && typeof checker !== 'function') {\n          return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n        }\n        if (!checker) {\n          return new PropTypeError(\n            'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n            '\\nBad object: ' + JSON.stringify(props[propName], null, '  ') +\n            '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, '  ')\n          );\n        }\n        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n        if (error) {\n          return error;\n        }\n      }\n      return null;\n    }\n\n    return createChainableTypeChecker(validate);\n  }\n\n  function isNode(propValue) {\n    switch (typeof propValue) {\n      case 'number':\n      case 'string':\n      case 'undefined':\n        return true;\n      case 'boolean':\n        return !propValue;\n      case 'object':\n        if (Array.isArray(propValue)) {\n          return propValue.every(isNode);\n        }\n        if (propValue === null || isValidElement(propValue)) {\n          return true;\n        }\n\n        var iteratorFn = getIteratorFn(propValue);\n        if (iteratorFn) {\n          var iterator = iteratorFn.call(propValue);\n          var step;\n          if (iteratorFn !== propValue.entries) {\n            while (!(step = iterator.next()).done) {\n              if (!isNode(step.value)) {\n                return false;\n              }\n            }\n          } else {\n            // Iterator will provide entry [k,v] tuples rather than values.\n            while (!(step = iterator.next()).done) {\n              var entry = step.value;\n              if (entry) {\n                if (!isNode(entry[1])) {\n                  return false;\n                }\n              }\n            }\n          }\n        } else {\n          return false;\n        }\n\n        return true;\n      default:\n        return false;\n    }\n  }\n\n  function isSymbol(propType, propValue) {\n    // Native Symbol.\n    if (propType === 'symbol') {\n      return true;\n    }\n\n    // falsy value can't be a Symbol\n    if (!propValue) {\n      return false;\n    }\n\n    // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n    if (propValue['@@toStringTag'] === 'Symbol') {\n      return true;\n    }\n\n    // Fallback for non-spec compliant Symbols which are polyfilled.\n    if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n      return true;\n    }\n\n    return false;\n  }\n\n  // Equivalent of `typeof` but with special handling for array and regexp.\n  function getPropType(propValue) {\n    var propType = typeof propValue;\n    if (Array.isArray(propValue)) {\n      return 'array';\n    }\n    if (propValue instanceof RegExp) {\n      // Old webkits (at least until Android 4.0) return 'function' rather than\n      // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n      // passes PropTypes.object.\n      return 'object';\n    }\n    if (isSymbol(propType, propValue)) {\n      return 'symbol';\n    }\n    return propType;\n  }\n\n  // This handles more types than `getPropType`. Only used for error messages.\n  // See `createPrimitiveTypeChecker`.\n  function getPreciseType(propValue) {\n    if (typeof propValue === 'undefined' || propValue === null) {\n      return '' + propValue;\n    }\n    var propType = getPropType(propValue);\n    if (propType === 'object') {\n      if (propValue instanceof Date) {\n        return 'date';\n      } else if (propValue instanceof RegExp) {\n        return 'regexp';\n      }\n    }\n    return propType;\n  }\n\n  // Returns a string that is postfixed to a warning about an invalid type.\n  // For example, \"undefined\" or \"of type array\"\n  function getPostfixForTypeWarning(value) {\n    var type = getPreciseType(value);\n    switch (type) {\n      case 'array':\n      case 'object':\n        return 'an ' + type;\n      case 'boolean':\n      case 'date':\n      case 'regexp':\n        return 'a ' + type;\n      default:\n        return type;\n    }\n  }\n\n  // Returns class name of the object, if any.\n  function getClassName(propValue) {\n    if (!propValue.constructor || !propValue.constructor.name) {\n      return ANONYMOUS;\n    }\n    return propValue.constructor.name;\n  }\n\n  ReactPropTypes.checkPropTypes = checkPropTypes;\n  ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n", "const docReady = (fn) => {\n  // see if DOM is already available\n  if (document.readyState === \"complete\" || document.readyState === \"interactive\") {\n    // call on next available tick\n    setTimeout(fn, 1);\n  } else {\n    document.addEventListener(\"DOMContentLoaded\", fn);\n  }\n};\n\nexport default docReady", "import docReady from '../dom/doc-ready'\n\ndocReady(() => {\n  const matches = document.querySelectorAll('[data-toggle=\"offcanvas\"]')\n  matches.forEach((match) => {\n    match.addEventListener('click', function () {\n      const offCanvas = document.querySelectorAll('.offcanvas-collapse')\n      offCanvas.forEach((off) => off.classList.toggle('open'))\n    })\n  })\n})", "export * from 'preact/compat';\nexport { default } from 'preact/compat';\n", "export * from 'preact/compat';\nexport { default } from 'preact/compat';\n", "// https://blog.guisehn.com/implement-helper-react-rails-erb/\nimport React from 'react'\nimport ReactDOM from 'react-dom'\n\nconst components = {}\n\nexport const registerReactComponent = function(name, component) {\n  // console.log(\"registered: \" + name)\n  components[name] = component\n}\n\nexport const mountReactComponents = function() {\n  // Get all tags generated by the `rails_component` helper.\n  const mountingElements = document.querySelectorAll('[data-react-component]')\n  if(mountingElements && mountingElements.length) {\n    mountingElements.forEach((el) => {\n      // Extract name and props from the data present in the element\n      const { name, props } = JSON.parse(el.getAttribute('data-react-component'))\n     // console.log(\"mounting: \" + name)\n      // Retrieve the component from the `components` object we mounted before,\n      // and check if it exists.\n      const component = components[name]\n      if (component) {\n        // Mount the component with the props inside the element\n        console.log(\"mounting component\" + name)\n        ReactDOM.render(\n          React.createElement(component, props || {}),\n          el\n        )\n      } else {\n        console.log(\"component not registered: \" + name)\n      }\n    })\n  }\n}", "import React, { FC, Dispatch, SetStateAction, useState } from 'react';\nimport classnames from 'classnames'\n\n// TODO: Allow passing in all options via props (could skip initial server call)\ninterface DropdownSectionProps {\n  showing: boolean\n  label: string,\n  count: number | null,\n  id: string,\n  toggleSection: Dispatch<SetStateAction<string>>,\n  children: JSX.Element,\n}\n\nconst DropdownSection: FC<DropdownSectionProps> = ({showing, label, count, toggleSection, id, children}) => {\n  const toggleSectionClick = (e, id) => {\n    if(e) { e.preventDefault() }\n    toggleSection(id)\n  }\n\n  return(\n    <fieldset className=\"f-select\">\n      <a href=\"#\"\n          onClick={(e) => toggleSectionClick(e, id)}\n          className={classnames('f-select__toggle d-flex align-items-center', {collapsed: !showing})}\n          aria-expanded={showing ? 'false' : 'true'}\n          id={`${id}-button`}\n          role=\"button\"\n          aria-controls={id}\n        >\n        <i className=\"icon fa-solid fa-angle-down me-2 text-muted\"></i>\n        <div className=\"f-select__text d-flex justify-content-between flex-grow-1\">\n          <span className=\"f-select__label\">\n            {label}\n          </span>\n          {count > 0 &&\n            <span className=\"f-select__count fw-normal text-muted\">\n              ({count})\n            </span>\n          }\n        </div>\n      </a>\n      <div className={classnames('f-select__menu collapse', {show: showing})} id={id}>\n        {children}\n      </div>\n    </fieldset>\n  )\n}\n\nexport default DropdownSection", "import React, { useState, useEffect, FunctionComponent, Dispatch, SetStateAction } from 'react';\n\nimport DropdownSection from './shared/DropdownSection';\n\nimport { post } from '../../shared/api/ServerRequest'\n\n// TODO: Allow passing in all options via props (could skip initial server call)\ninterface KyreniaCatalogueFilterProps {\n  filters: any,\n  sections: any,\n  setFilters: Dispatch<SetStateAction<any>>,\n}\n\n// API response\nexport interface KyreniaCatalogueFilterResponse {\n  sections: any\n}\n\nconst KyreniaCatalogueFilters: FunctionComponent<KyreniaCatalogueFilterProps> = ({filters, setFilters, sections}) => {\n  const [showingSections, setShowingSections] = useState<any>([])\n  const [optionSearch, setOptionSearch] = useState<any>({})\n\n  const filtersHasValue = (sectionId, value): boolean => {\n    const hasOpt = filters[sectionId] && filters[sectionId].some((v) => v == value )\n    return !!hasOpt\n  }\n\n  const toggleFilter = (sectionId, value) => {\n    if(filtersHasValue(sectionId, value)) {\n      const newFilters = {...filters}\n      newFilters[sectionId] = newFilters[sectionId].filter((v) => v !== value)\n      setFilters(newFilters)\n    } else if(filters[sectionId]) {\n      const newFilters = {...filters}\n      newFilters[sectionId].push(value)\n      setFilters(newFilters)\n    } else {\n      const newFilters = {...filters, ...{[sectionId]: [value]}}\n      setFilters(newFilters)\n    }\n  }\n\n  const toggleSection = (sectionId) => {\n    if(showingSections.includes(sectionId)) {\n      const newSections = showingSections.filter((id) => id != sectionId)\n      setShowingSections(newSections)\n    } else {\n      setShowingSections([...showingSections, sectionId])\n    }\n  }\n\n  const searchAndOrderOptions = (section): any => {\n    let opts = [...section.options]\n\n    if(opts && opts[0].count) {\n      const nonZeroResults = opts.filter((opt) => opt.count > 0)\n      const zeroResults = opts.filter((opt) => opt.count <= 0)\n      opts = [...nonZeroResults, ...zeroResults]\n    }\n\n    const search = optionSearch[section.id] || \"\"\n    return opts.filter((opt) => opt.label.toLowerCase().includes(search.toLowerCase()) )\n  }\n\n  return(\n    <div>\n      <div className=\"mb-2 f-search\">\n        <i className=\"icon fa-solid fa-search\"></i>\n        <input className=\"form-control\" type=\"text\" value={filters.text} onChange={(e) => setFilters({...filters, ...{text: e.target.value}})} placeholder=\"Catalogue Name\" />\n      </div>\n      {sections.map((section) =>\n        <DropdownSection key={`sec-${section.id}`} id={section.id} label={section.label} count={null} toggleSection={toggleSection} showing={showingSections.includes(section.id)}>\n          <>\n            <div className=\"mb-3 px-3\">\n              <div className=\"f-search\">\n                <i className=\"icon fa-solid fa-search\"></i>\n                <input type=\"text\" className=\"form-control\" value={optionSearch[section.id] || \"\"} onChange={(e) => setOptionSearch({...optionSearch, [section.id]: e.target.value})} placeholder={`Filter ${section.label}`} />\n              </div>\n            </div>\n            <div className=\"px-3 scroll-y\">\n              {searchAndOrderOptions(section).map((option) =>\n                <div className=\"form-check\" key={`sec-${section.id}-opt-${option.id}`}>\n                  <input className=\"form-check-input\" type=\"checkbox\" onChange={() => toggleFilter(section.id, option.id)} checked={filtersHasValue(section.id, option.id)} />\n                  <label className=\"form-check-label\">\n                    {option.label} \n                    {option.count &&\n                      <span>({option.count})</span>\n                    }\n                  </label>\n                </div>\n              )}\n            </div>\n          </>\n        </DropdownSection>\n      )}\n    </div>\n  )\n}\n\nexport default KyreniaCatalogueFilters", "import React, { useState, useEffect, FunctionComponent } from 'react';\n\ninterface KyreniaCatalogueResultsProps {\n  catalogues: Array<any>\n}\n\nconst image_wrapper_class = \"ratio ratio-4x3 rounded-top\"\n\nconst KyreniaCatalogueResults: FunctionComponent<KyreniaCatalogueResultsProps> = ({catalogues}) => {\n\n  const filteredCatalogues = catalogues.filter ((cat) => cat.image_count > 0)\n  return(\n    <>\n      {filteredCatalogues.map((cat) =>\n        <div key={cat.id} className=\"col-6 col-md-4 col-xl-3 col-xxl-2 mb-3\">\n          <a href={`/catalogues/${cat.id}`} className=\"text-decoration-none text-black d-block rounded h-100 border\" style={{boxShadow:'0 .1rem .15rem rgba(0,0,0,.1'}}>\n            <figure className=\"position-relative mb-0\">\n              {cat.primary_image && cat.primary_image.md_link &&\n                <div className={image_wrapper_class}>\n                  <img src={cat.primary_image.md_link} className=\"rounded-top object-cover object-position-top\" lazy=\"true\"/>\n                </div>\n              }\n              {!(cat.primary_image && cat.primary_image.md_link) &&\n                <div className={image_wrapper_class} style={{backgroundColor: '#aab6cd'}}></div>\n              }\n            </figure>\n            <div className=\"p-3 border-top rounded-bottom\">\n              <div className=\"mb-1\">\n                <span className=\"fw-bold\">Catalogue ID: {cat.id}</span>\n              </div>\n              <div className=\"small\">\n                <div>{cat.image_count} Pages</div>\n                <div>{cat.name}</div>\n              </div>\n            </div>\n          </a>\n        </div>\n      )}\n    </>\n  )\n}\n\nexport default KyreniaCatalogueResults", "import React from 'react';\nimport classNames from 'classnames';\n\nconst Pagination = ({totalPages, currentPage, setCurrentPage}) => {\n  if(totalPages <= 1) { return null }\n\n  const setPage = (e, page) => {\n    e.preventDefault();\n    setCurrentPage(page)\n    window.scrollTo({top: 0, behavior: 'instant'});\n  }\n\n  const prevPage = (e) => {\n    e.preventDefault();\n    if(currentPage > 1) {\n      setCurrentPage(currentPage - 1)\n      window.scrollTo({top: 0, behavior: 'instant'});\n    }\n  }\n\n  const nextPage = (e) => {\n    e.preventDefault();\n    if(currentPage < totalPages - 1) {\n      setCurrentPage(currentPage + 1)\n    }\n    window.scrollTo({top: 0, behavior: 'instant'});\n  }\n\n\n  const startPage = currentPage - 4 > 0 ? currentPage - 4 : 1\n  const endPage = currentPage + 4 < totalPages ? currentPage + 4 : totalPages\n  if(endPage - startPage + 1 <= 1) { return null }\n\n  const pageList = Array.from(Array(endPage - startPage + 1).keys()).map((i) => i + startPage)\n\n  return(\n    <nav aria-label=\"Page navigation\">\n      <ul className=\"pagination\">\n        {currentPage > 1 &&\n          <li className=\"page-item\">\n            <a className=\"page-link\" href=\"#\" onClick={(e) => prevPage(e)}>Previous</a>\n          </li>\n        }\n        {currentPage - 4 > 1 &&\n          <>\n            <li className=\"page-item\">\n              <a className=\"page-link\" href=\"#\" onClick={(e) => setPage(e, 1)}>1</a>\n            </li>\n            <li className=\"page-item\">\n              <a className=\"page-link\" href=\"#\" onClick={(e) => e.preventDefault()}>...</a>\n            </li>\n          </>\n        }\n        {pageList.map((page) => \n          <li key={page} className={classNames('page-item', {active: currentPage == page})}>\n            <a className=\"page-link\" href=\"#\" onClick={(e) => setPage(e, page)}>{page}</a>\n          </li>\n        )}\n        {totalPages > currentPage + 4 &&\n          <>\n            <li className=\"page-item\">\n              <a className=\"page-link\" href=\"#\" onClick={(e) => e.preventDefault()}>...</a>\n            </li>\n            <li className=\"page-item\">\n              <a className=\"page-link\" href=\"#\" onClick={(e) => setPage(e, totalPages)}>{totalPages}</a>\n            </li>\n          </>\n        }\n        {currentPage < totalPages &&\n          <li className=\"page-item\">\n            <a className=\"page-link\" href=\"#\" onClick={(e) => nextPage(e)}>Next</a>\n          </li>\n        }\n      </ul>\n    </nav>\n  )\n}\n\nexport default Pagination\n", "export default function encodeQueryData(data) {\n  const ret = [];\n  for (let d in data)\n    ret.push(encodeURIComponent(d) + '=' + encodeURIComponent(data[d]));\n  return ret.join('&');\n}", "// Utilities to make HTTP requests to an API. Includes code to send the Rails CSRF token\n\nexport const request = (url, data = null, opts = {}, requestOpts = {}) => {\n  const defaultOpts = {\n    method: 'POST',\n    headers: { \n\t\t  'Accept': 'application/javascript', \n\t\t  'Content-Type': 'application/json',\n\t\t  'X-CSRF-Token': getMetaTag('csrf-token')\n    }\n  }\n\n  if(requestOpts.rawBody && data) {\n    defaultOpts.body = data\n  } else if(data) {\n  \tdefaultOpts.body = JSON.stringify(data)\n  }\n\n  const mergedOpts = {...defaultOpts, ...opts}\n\n  if(requestOpts['noContentType']) {\n    delete mergedOpts.headers['Content-Type'];\n    delete mergedOpts.headers['Accept'];\n  }\n\n  //console.log(\"Fetching: \" + url)\n  //console.log(mergedOpts)\n\n  return fetch(url, mergedOpts).then((response) => {\n    if(requestOpts.rawResponse) {\n      return response.text().then((body) => {\n      //  console.log('Fetch Response: ' + body)\n        return body\n      }).catch((err) => {\n        console.log('Fetch problem: ' + err.message)\n        // TODO: Need to alert here\n        throw err\n      })\n    } else {\n      return response.json().then((json) => {\n      // \tconsole.log('Fetch Response: ' + json)\n      \treturn json\n      }).catch((err) => {\n      \tconsole.log('Fetch problem: ' + err.message)\n      \t// TODO: Need to alert here\n      \tthrow err\n      })\n    }\n  })\n}\n\nexport const post = (url, data) => {\n  return request(url, data, {method: 'POST'})\n}\n\nexport const postFormData = (url, formData) => {\n  const opts = {\n    method: 'POST',\n  }\n  return request(url, formData, opts, {rawBody: true, noContentType: true})\n}\n\nexport const get = (url) => {\n  return request(url, null, {method: 'GET'})\n}\n\nexport const getRaw = (url) => {\n  return request(url, null, {method: 'GET'}, {rawRespnse: true})\n}\n\nexport const patch = (url, data) => {\n  return request(url, data, {method: 'PATCH'})\n}\n\nexport const del = (url, data) => {\n  return request(url, data, {method: 'DELETE'})\n}\n\nfunction getMetaTag(metaName) {\n  const metas = document.getElementsByTagName('meta');\n\n  for (let i = 0; i < metas.length; i++) {\n    if (metas[i].getAttribute('name') === metaName) {\n      return metas[i].getAttribute('content');\n    }\n  }\n\n  return '';\n}", "let timer = null;\n\nexport default function debounce(func, timeout = 300){\n  clearTimeout(timer);\n  timer = setTimeout(() => { func() }, timeout);\n}", "export default function SetBodyScrollable(bodyScrollable) {\n\n  if (bodyScrollable) {\n    document.body.classList.remove('overlay--open');\n  } else {\n    document.body.classList.add('overlay--open');\n  }\n}\n", "import React, { useState, useEffect, FunctionComponent } from 'react';\nimport KyreniaCatalogueFilters from './filters/KyreniaCatalogueFilters'\nimport KyreniaCatalogueResults from './results/KyreniaCatalogueResults';\nimport Pagination from './results/Pagination';\nimport encodeQueryData from '../shared/api/encodeQueryData'\nimport { post } from '../shared/api/ServerRequest'\nimport debounce from '../shared/ui/debouce';\nimport setBodyScrollable from '../shared/ui/bodyScrollable'\n\ninterface CatalogueIndexProps {\n  initialFilters?: any\n  showAlert: boolean\n}\n\nconst CatalogueIndex: FunctionComponent<CatalogueIndexProps> = ({ showAlert, initialFilters }) => {\n  const [results, setResults] = useState<any>(null)\n  const [filters, setFilters] = useState<any>(initialFilters || {})\n  const [sections, setSections] = useState<any>([])\n  const [currentPage, setCurrentPage] = useState<number>(1)\n  const [totalPages, setTotalPages] = useState<number>(1)\n\n  const [searchVisible, setSearchVisible] = useState<boolean>(false)\n\n  const handleSearchToggle = () => {\n    setSearchVisible((current) => !current);\n    setBodyScrollable(searchVisible);\n  }\n\n  showAlert = true\n\n  const removeFilterOption = (section, value) => {\n    const newFilters = {...filters}\n    newFilters[section] = newFilters[section].filter((e) => e !== value)\n    if(newFilters[section].length == 0) { delete newFilters[section] }\n    setFilters(newFilters)\n    showAlert = true\n  }\n\n  const sectionFilters = (sectionId) => {\n    const section = sections.find((sec) => sec.id === sectionId )\n    showAlert = false\n    return filters[sectionId].map((id) => {\n      return section.options.find((option) => option.id === id)\n    })\n  }\n\n  const sectionsWithFilters = (): string[] => {\n    return Object.keys(filters).filter((section) => sections.some((s) => s.id == section) && filters[section] && filters[section].length > 0)\n  }\n\n  useEffect(() => {\n    debounce(() => {\n      post('/catalogues/results', {filters: filters, page: currentPage}).then((response) => {\n        setResults(response)\n        setTotalPages(response.pagination.total_pages)\n      })\n\n      post('/catalogues/filters', {filters: filters}).then((results) => {\n        setSections(results.sections)\n      })\n\n      // Update the window URL with the filters\n      const data = encodeQueryData(filters)\n      let url = window.location.pathname\n      if(data.length > 0) { url = url + \"?\" + data }\n      window.history.replaceState(filters, \"\", url);\n    }, 300)\n  }, [filters, currentPage])\n\n  return(\n    <div className=\"grid grid--index grid--col-start\">\n\n      <div className=\"grid-nav\">\n        <div className={`grid-nav__item ${ searchVisible ? 'bg-primary text-white' : '' }`} onClick={handleSearchToggle}>\n          <div className=\"icon\">\n            <i className=\"fa-light fa-search\"></i>\n          </div>\n          <div className=\"label\">\n            Search\n          </div>\n        </div>\n      </div>\n\n      <div className={`grid__left grid__overlay ${searchVisible ? 'grid__overlay-show' : ''}`}>\n        <div className=\"p-3\">\n          <KyreniaCatalogueFilters setFilters={setFilters} filters={filters} sections={sections} />\n        </div>\n      </div>\n\n      <div className=\"grid__main bg-white\">\n        <div className=\"active-filters border-bottom\">\n          {sectionsWithFilters().map((section) =>\n            <div className=\"active-filter__section\" key={section}>\n              <div className=\"label-text\">{section}</div>\n              <div className=\"pills\">\n                {sectionFilters(section).map((option) =>\n                  <div className=\"pill\" key={option.id} onClick={(e) => removeFilterOption(section, option.id)}>\n                    <span className=\"pill__category\">{section}:</span>\n                    <span className=\"pill__close\">\n                      <i className=\"icon fa-solid fa-check\"></i>\n                    </span>\n                    <span className=\"pill__name\">{option.label}</span>\n                  </div>\n                ).reduce((prev, curr) => [prev, ' OR ', curr])}\n              </div>\n            </div>\n          )}\n        </div>\n        {results &&\n          <div className=\"px-2\">\n            <div className=\"container-fluid pt-3\">\n              <div className=\"d-none d-lg-flex alert alert-warning\">\n                <i className=\"icon fa-solid fa-search me-3\"></i>\n                <div> Catalogs contain various images (photos, maps, drawings...) as found. Some, though not all images are associated with Objects in our Research Tool.</div>\n              </div>\n              <div className=\"row align-items-stretch\">\n                <KyreniaCatalogueResults catalogues={results.catalogues} />\n                <Pagination currentPage={currentPage} totalPages={totalPages} setCurrentPage={setCurrentPage} />\n              </div>\n            </div>\n          </div>\n        }\n      </div>\n    </div>\n  )\n}\nexport default CatalogueIndex", "import React, { useState, useEffect, FunctionComponent, Dispatch, SetStateAction } from 'react';\nimport DropdownSection from './shared/DropdownSection';\nimport { Popover } from 'react-tiny-popover'\nimport { post } from '../../shared/api/ServerRequest'\nimport classnames from 'classnames'\nimport AutocompleteUrl from '../../shared/ui/bootstrap/autocomplete-url';\n\n// TODO: Allow passing in all options via props (could skip initial server call)\ninterface KyreniaObjectFilterProps {\n  filters: any,\n  sections: any,\n  setFilters: Dispatch<SetStateAction<any>>,\n}\n\n// API response\nexport interface KyreniaObjectFilterResponse {\n  sections: any\n}\n\nconst KyreniaObjectFilters: FunctionComponent<KyreniaObjectFilterProps> = ({filters, setFilters, sections}) => {\n  const [showingSections, setShowingSections] = useState<any>([])\n  const [optionSearch, setOptionSearch] = useState<any>({})\n  const [isFilterPopoverOpen, setIsFilterPopoverOpen] = useState(false)\n\n  const filtersHasValue = (sectionId, value): boolean => {\n    const hasOpt = filters[sectionId] && filters[sectionId].some((v) => v == value )\n    return !!hasOpt\n  }\n\n  const toggleFilter = (sectionId, value) => {\n    if(filtersHasValue(sectionId, value)) {\n      const newFilters = {...filters}\n      newFilters[sectionId] = newFilters[sectionId].filter((v) => v !== value)\n      setFilters(newFilters)\n    } else if(filters[sectionId]) {\n      const newFilters = {...filters}\n      newFilters[sectionId].push(value)\n      setFilters(newFilters)\n    } else {\n      const newFilters = {...filters, ...{[sectionId]: [value]}}\n      setFilters(newFilters)\n    }\n  }\n\n  const toggleSection = (sectionId) => {\n    if(showingSections.includes(sectionId)) {\n      const newSections = showingSections.filter((id) => id != sectionId)\n      setShowingSections(newSections)\n    } else {\n      setShowingSections([...showingSections, sectionId])\n    }\n  }\n\n  const searchAndOrderOptions = (section): any => {\n    let opts = [...section.options]\n\n    const nonZeroResults = opts.filter((opt) => opt.count > 0)\n    const zeroResults = opts.filter((opt) => opt.count <= 0)\n    opts = [...nonZeroResults, ...zeroResults]\n\n    const search = optionSearch[section.id] || \"\"\n    return opts.filter((opt) => opt.label.toLowerCase().includes(search.toLowerCase()) )\n  }\n\n  const objectSections = sections.filter((s) => s.type == \"object\" )\n  const eventSections = sections.filter((s) => s.type == \"event\" )\n\n  return(\n    <div className=\"f-card\">\n      <div className=\"f-card__heading p-3 d-flex justify-content-between align-items-center\">\n        <span className=\"f-card__heading-label\">Filters</span>\n        <Popover\n          isOpen={isFilterPopoverOpen}\n          positions={['bottom','left',  'top', 'right']}\n          content={<div><div>Select filters below to find museum objects and the archaeological <em>events</em> that researchers recorded for each.</div></div>}\n          onClickOutside={() => setIsFilterPopoverOpen(false)}\n        >\n          <i onClick={() => setIsFilterPopoverOpen(!isFilterPopoverOpen)} className=\"icon fa-solid fa-info-circle text-secondary\"></i>\n        </Popover>\n\n      </div>\n      <div className=\"px-3 mb-2 \">\n        <div className=\"f-search\">\n          <i className=\"icon fa-solid fa-search\"></i>\n          <AutocompleteUrl url='/autocomplete/alias' value={filters.alias || \"\"} onChange={(value) => setFilters({...filters, ...{alias: value}})} placeholderText=\"Alias\" />\n        </div>\n      </div>\n      <div className=\"px-3 mb-2 \">\n        <div className=\"f-search\">\n          <i className=\"icon fa-solid fa-search\"></i>\n          <AutocompleteUrl url='/autocomplete/object_id' value={filters.text || \"\"} onChange={(value) => setFilters({...filters, ...{text: value}})} placeholderText=\"Object ID\" />\n        </div>\n      </div>\n      {objectSections.map((section) =>\n        <DropdownSection key={`sec-${section.id}`} id={section.id} label={section.label} count={section.options.filter((s) => s.count > 0).length} toggleSection={toggleSection} showing={showingSections.includes(section.id)}>\n          <>\n            <div className=\"mb-3 px-3\">\n              <div className=\"f-search\">\n                <i className=\"icon fa-solid fa-search\"></i>\n                <input type=\"text\" className=\"form-control\" value={optionSearch[section.id] || \"\"} onChange={(e) => setOptionSearch({...optionSearch, [section.id]: e.target.value})} placeholder={`Filter ${section.label}`} />\n              </div>\n            </div>\n\n            <div className=\"px-3 scroll-y\">\n              {searchAndOrderOptions(section).map((option) => {\n                const isDisabled = option.count == 0 && !filtersHasValue(section.id, option.id) ? true : false\n                return (\n                  <div\n                    className={classnames('form-check', {'': isDisabled })}\n                    key={`sec-${section.id}-opt-${option.id}`}\n                    >\n                    <input className=\"form-check-input\" type=\"checkbox\" id={`sec-${section.id}-opt-${option.id}`} name={`sec-${section.id}-opt-${option.id}`} disabled={isDisabled} onChange={() => toggleFilter(section.id, option.id)} checked={filtersHasValue(section.id, option.id)} />\n                    <label className=\"form-check-label\" htmlFor={`sec-${section.id}-opt-${option.id}`}>\n                      <span>{option.label}</span>\n                      <span className=\"text-end filter__count\">({option.count})</span>\n                    </label>\n                  </div>\n                )}\n              )}\n            </div>\n          </>\n        </DropdownSection>\n      )}\n\n      {eventSections.map((section) =>\n        <DropdownSection key={`sec-${section.id}`} id={section.id} label={section.label} count={section.options.filter((s) => s.count > 0).length} toggleSection={toggleSection} showing={showingSections.includes(section.id)}>\n          <>\n            <div className=\"mb-3 px-3\">\n              <div className=\"f-search\">\n                <i className=\"icon fa-solid fa-search\"></i>\n                <input type=\"text\" className=\"form-control\" value={optionSearch[section.id] || \"\"} onChange={(e) => setOptionSearch({...optionSearch, [section.id]: e.target.value})} placeholder={`Filter ${section.label}`} />\n              </div>\n            </div>\n\n            <div className=\"px-3 scroll-y\">\n              {searchAndOrderOptions(section).map((option) => {\n                const isDisabled = option.count == 0 && !filtersHasValue(section.id, option.id) ? true : false\n                return (\n                  <div\n                    className={classnames('form-check', {'': isDisabled })}\n                    key={`sec-${section.id}-opt-${option.id}`}\n                    >\n                    <input className=\"form-check-input\" type=\"checkbox\" id={`sec-${section.id}-opt-${option.id}`} name={`sec-${section.id}-opt-${option.id}`} disabled={isDisabled} onChange={() => toggleFilter(section.id, option.id)} checked={filtersHasValue(section.id, option.id)} />\n                    <label className=\"form-check-label\" htmlFor={`sec-${section.id}-opt-${option.id}`}>\n                      <span>{option.label}</span>\n                      <span className=\"text-end filter__count\">({option.count})</span>\n                    </label>\n                  </div>\n                )}\n              )}\n            </div>\n          </>\n        </DropdownSection>\n      )}\n\n      <div className=\"px-3 mt-2 \">\n        <div className=\"form-check\">\n          {/*\n          <input type=\"checkbox\" className=\"form-check-input\" name=\"hide_no_events\" checked={filters.hide_no_events || false} onChange={(e) => setFilters({...filters, ...{hide_no_events: e.target.checked}})} />\n          <label className=\"form-check-label\">Hide objects with no matching events</label>\n          */}\n        </div>\n      </div>\n    </div>\n  )\n}\n\nexport default KyreniaObjectFilters", "import React, {useState, useRef, FunctionComponent, useEffect} from 'react'\nimport classNames from 'classnames'\nimport useClickOutside from '../click-outside'\nimport { post } from '../../api/ServerRequest'\n\ninterface AutocompleteUrlProps {\n   url: string\n   value: string\n   onChange: any\n   placeholderText: string\n}\n\nconst AutocompleteUrl: FunctionComponent<AutocompleteUrlProps> = ({url, placeholderText, value, onChange}) => {\n  const [searchValue, setSearchValue] = useState(value)\n  const [hasFocus, setHasFocus] = useState(false)\n  const [options, setOptions] = useState<any>([])\n  const [showOptions, setShowOptions] = useState(false)\n  //const [highlightedOptionIndex, setHighlightedOptionIndex] = useState(-1)\n\n  const dropdownRef = useRef(null)\n  useClickOutside(dropdownRef, () => {\n    if(showOptions) {\n      setShowOptions(false)\n      onChange(searchValue)\n    }\n  });\n\n  const onSearchChange = () => {\n    post(url, {q: searchValue}).then((response) => {\n      setOptions(response.results)\n      setShowOptions(true)\n      if(response.results.length == 1) {\n        onChange(response.results[0].value)\n      }\n    })\n  }\n\n  const optionClick = (value) => {\n    onChange(value)\n    setSearchValue(value)\n    setShowOptions(false)\n  }\n\n  useEffect(() => {\n    //setShowOptions(hasFocus)\n  }, [hasFocus])\n\n  useEffect(() => {\n    if(value != searchValue) {\n      setSearchValue(value)\n    }\n  }, [value])\n\n  useEffect(() => {\n    setShowOptions(true)\n    onSearchChange()\n  }, [searchValue])\n\n  const showPlaceholder = searchValue.length == 0\n  const showDropdown = showOptions && !(options.length == 1 && options[0].value == searchValue) && searchValue.length > 0\n\n  return (\n    <>\n      <input\n        placeholder={showPlaceholder ? placeholderText : \"\"}\n        className=\"form-control\"\n        type=\"text\"\n        value={searchValue}\n//        onFocus={(e) => setHasFocus(true)}\n//        onBlur={(e) => setHasFocus(false)}\n        onChange={(e) => setSearchValue(e.target.value)}\n//        onKeyDown={handleKeyDown}\n//        onKeyPress={handleKeyPress}\n      />\n      <div className={classNames('dropdown-menu', {show: showDropdown})} ref={dropdownRef}>\n        {options.map((opt) =>\n          <div className=\"dropdown-item\" key={opt.value} onClick={() => optionClick(opt.value)}>{opt.label}</div>\n        )}\n        {options.length == 0 &&\n          <div className=\"dropdown-item text-info no-hover\">No Matches</div>\n        }\n      </div>\n    </>\n  )\n}\n\nexport default AutocompleteUrl", "import { useEffect } from \"react\";\n\nexport default function useClickOutside(ref, handler) {\n  useEffect(() => {\n     // Alert if clicked on outside of element\n    function handleClickOutside(event) {\n      if (ref.current && !ref.current.contains(event.target)) {\n        handler()\n      }\n    }\n    // Bind the event listener\n    document.addEventListener(\"mousedown\", handleClickOutside);\n    document.addEventListener(\"touchstart\", handleClickOutside);\n    return () => {\n      // Unbind the event listener on clean up\n      document.removeEventListener(\"mousedown\", handleClickOutside);\n      document.removeEventListener(\"touchstart\", handleClickOutside);\n    };\n  }, [ref, handler]);\n}", "import React, { useState, useEffect, FunctionComponent } from 'react';\nimport { Popover } from 'react-tiny-popover'\nimport classNames from 'classnames';\n\ninterface KyreniaObjectResultsProps {\n  objects: any\n  setSelectedObject: any\n}\n\nconst KyreniaObjectResults: FunctionComponent<KyreniaObjectResultsProps> = ({objects, setSelectedObject}) => {\n  const [isObjectTypePopoverOpen, setIsObjectTypePopoverOpen] = useState(false)\n  const [isEventsPopoverOpen, setIsEventsPopoverOpen] = useState(false)\n  const [isMaterialPopoverOpen, setIsMaterialPopoverOpen] = useState(false)\n  const [isOriginPopoverOpen, setIsOriginPopoverOpen] = useState(false)\n\n  const cellClass =  'text-nowrap d-none d-lg-table-cell'\n\n  const setSelectedAndScroll = (event, id) => {\n    event.preventDefault();\n    window.scrollTo({top: 0, behavior: 'instant'});\n    setSelectedObject(id)\n  }\n\n  return(\n    <table className=\"model-table table table-striped table-hover align-middle\">\n      <thead>\n        <tr>\n          <th className=\"text-nowrap\">\n            ID\n          </th>\n          <th className={cellClass}>\n            Object Type\n            <Popover\n              isOpen={isObjectTypePopoverOpen}\n              positions={['bottom','left','top','right']}\n              content={<div><div>Object Type can evolve over time with research.\u00A0Here we present the latest recorded data. View an Object's history to see the evolution of thinking.</div></div>}\n              onClickOutside={() => setIsObjectTypePopoverOpen(false)}>\n              <i onClick={() => setIsObjectTypePopoverOpen(!isObjectTypePopoverOpen)} className=\"icon fa-solid fa-info-circle text-secondary ms-2\"></i>\n            </Popover>\n          </th>\n          <th className={cellClass}>\n            Object Material\n            <Popover\n              isOpen={isMaterialPopoverOpen}\n              positions={['bottom','left','top','right']}\n              content={<div><div>Object Material can evolve over time with research.\u00A0Here we present the latest recorded data. View an Object's history to see the evolution of thinking.</div></div>}\n              onClickOutside={() => setIsMaterialPopoverOpen(false)}>\n              <i onClick={() => setIsMaterialPopoverOpen(!isMaterialPopoverOpen)} className=\"icon fa-solid fa-info-circle text-secondary ms-2\"></i>\n            </Popover>\n          </th>\n          <th className={cellClass}>\n            Origin\n            <Popover\n              isOpen={isOriginPopoverOpen}\n              positions={['bottom','left','top','right']}\n              content={<div><div>Origin can evolve over time with research.\u00A0Here we present the latest recorded data. View an Object's history to see the evolution of thinking.</div></div>}\n              onClickOutside={() => setIsOriginPopoverOpen(false)}>\n              <i onClick={() => setIsOriginPopoverOpen(!isOriginPopoverOpen)} className=\"icon fa-solid fa-info-circle text-secondary ms-2\"></i>\n            </Popover>\n          </th>\n          <th className=\"text-nowrap\">\n            Events\n            <Popover\n              isOpen={isEventsPopoverOpen}\n              positions={['bottom','left','top','right']}\n              content={<div><div>Events include initial excavation, reclassification, or anytime a researcher edits information associated with the object.</div></div>}\n              onClickOutside={() => setIsEventsPopoverOpen(false)}>\n              <i onClick={() => setIsEventsPopoverOpen(!isEventsPopoverOpen)} className=\"icon fa-solid fa-info-circle text-secondary ms-2\"></i>\n            </Popover>\n          </th>\n          <th></th>\n        </tr>\n      </thead>\n      <tbody>\n        {objects.map((object) => {\n          const hasResults = object.event_count && object.event_count > 0\n\n          return(\n            <tr key={object.obj_id} className={hasResults ? '' : 'disabled'}>\n              <td>\n                <strong>KS-{object.obj_id}</strong>\n              </td>\n              <td className={cellClass}>\n                {object.current_type_name}\n              </td>\n              <td className={cellClass}>\n                {object.current_material_name}\n              </td>\n              <td className={cellClass}>\n                {object.current_origin_name}\n              </td>\n              <td className=\"text-nowrap\">\n                {hasResults ?\n                  <span className=\"badge badge--dot badge--success bg-light text-muted\">\n                    {object.event_count}\n                  </span>\n                  :\n                  <span className=\"badge bg-light text-muted\">0 Results</span>\n                }\n              </td>\n              <td className=\"actions\">\n                <a href=\"#\" onClick={(e) => setSelectedAndScroll(e, object.id)} className={classNames('btn btn-sm', {'btn-primary': object.event_count > 0, 'btn-secondary': object.event_count <= 0})}>View</a>\n              </td>\n            </tr>\n          )}\n        )}\n      </tbody>\n    </table>\n  )\n}\n\nexport default KyreniaObjectResults", "import React, { FC, useState} from \"react\";\nimport classnames from \"classnames\"\nimport useClickOutside from \"../click-outside\"\n\ninterface DropdownProps {\n  dropdownClass: string\n  dropdownIcon: string\n  align: string\n  toggleClass: string\n  children: any\n}\n\nconst Dropdown : FC<DropdownProps> = ({dropdownClass, dropdownIcon, toggleClass, align, children}) => {\n  const setIcon = dropdownIcon === \"undefined\" ? \"fa-filter\" : dropdownIcon\n  const setDropdownClass = dropdownClass === \"undefined\" ? \"\" : dropdownClass\n  const setAlign = align === \"undefined\" ? \"dropdown-menu-left\" : align\n  const setToggleClass = toggleClass === \"undefined\" ? \"btn btn-default\" : toggleClass\n  const [dropdownOpen, toggleDropdown] = useState(false)\n\n  const dropdownClick = () => {\n    toggleDropdown(!dropdownOpen)\n  }\n\n  const dropdownRef = React.useRef(null)\n  useClickOutside(dropdownRef, () => {\n    toggleDropdown(false)\n  })\n\n  return (\n    <div className={classnames(\"dropdown\", setDropdownClass, {\"show\": dropdownOpen})} ref={dropdownRef}>\n      <div className={classnames(\"dropdown-toggle\", setToggleClass)} role=\"button\" aria-haspopup=\"true\" aria-expanded=\"false\" onClick={dropdownClick}>\n        <i className={classnames(\"fa \", setIcon)} title=\"Filter\"></i>\n      </div>\n      <ul className={classnames(\"dropdown-menu\", setAlign, {\"show\": dropdownOpen})}>\n        {children}\n      </ul>\n    </div>\n  )\n}\n\nexport default Dropdown", "import React from 'react';\nimport Dropdown from '../../shared/ui/bootstrap/dropdown'\n\nconst FiltersSection = ({filters, objectData, matchingEventsLength, sections}) => {\n\n  const sectionFilters = (sectionId) => {\n    const section = sections.find((sec) => sec.id === sectionId )\n    return filters[sectionId].map((id) => {\n      return section.options.find((option) => option.id === id)\n    })\n  }\n\n  const sectionsWithFilters = (): string[] => {\n    return Object.keys(filters).filter((section) => sections.some((s) => s.id == section) && filters[section] && filters[section].length > 0)\n  }\n\n  return(\n    <>\n      <div className=\"col-header\">\n        <strong className=\"me-1\">Events</strong>\n        {filters && sectionsWithFilters() && matchingEventsLength && matchingEventsLength > 0 ?\n          <span className=\"small\">\n            <i>({matchingEventsLength} matching / </i>\n            <span>{objectData.event_count} total)</span>\n          </span>\n          :\n          <span className=\"small\">({objectData.event_count})</span>\n        }\n        <Dropdown\n          dropdownClass=\"d-none\"\n          toggleClass=\"foo\"\n          align=\"dropdown-menu-right\">\n          <a className=\"dropdown-item\" href=\"#\">\n            Action\n          </a>\n        </Dropdown>\n      </div>\n      {filters && sectionsWithFilters() &&\n        <div className=\"active-filters border-bottom py-2\">\n          {filters && sectionsWithFilters().map((section) =>\n            <div className=\"active-filter__section\" key={section}>\n              <div className=\"label-text\">{section}</div>\n              <div className=\"pills\">\n                {sectionFilters(section).map((option) =>\n                  <div className=\"pill\" key={option.id}>\n                    <span className=\"pill__category\">{section}:</span>\n                    <span className=\"pill__close\">\n                      <i className=\"icon fa-solid fa-check\"></i>\n                    </span>\n                    <span className=\"pill__name\">{option.label}</span>\n                  </div>\n                ).reduce((prev, curr) => [prev, <span className=\"pill__spacer fs-sm text-muted\">OR</span>, curr])}\n              </div>\n            </div>\n          )}\n          {filters['alias'] && filters['alias'].length > 0 &&\n            <div className=\"active-filter__section\">\n            <div className=\"label-text\">Alias</div>\n            <div className=\"pills\">\n              <div className=\"pill\" key={'alias'}>\n                <span className=\"pill__category\">Alias:</span>\n                <span className=\"pill__close\">\n                  <i className=\"icon fa-solid fa-circle\"></i>\n                </span>\n                <span className=\"pill__name\">{filters['alias']}</span>\n              </div>\n            </div>\n          </div>\n          }\n        </div>\n      }\n    </>\n  )\n}\n\nexport default FiltersSection", "import React, { useState, useEffect, FunctionComponent } from 'react';\nimport { createPortal } from 'react-dom';\n\ninterface ObjectActionProps {\n  event: any,\n  objectId: null | number,\n  editMode: boolean\n  currentUserId: number | null | undefined\n}\n\nconst ObjectActions = ({event, objectId, currentUserId, editMode, setEditMode, saveEvent, addNewEvent, cancelEdit, deleteEvent, deleteObject}) => {\n  const exportData = () => {\n    window.location.href = `/objects/${objectId}/export`\n  }\n\n  return(\n    createPortal(\n      <div className=\"d-flex justify-content-end\">\n        {currentUserId && editMode &&\n          <>\n            <div className=\"btn btn-secondary\" onClick={(e) => cancelEdit()}>\n              Cancel\n            </div>\n            <div className=\"btn btn-primary\" onClick={(e) => saveEvent()}>\n              Save\n            </div>\n          </>\n        }\n        {currentUserId && !editMode &&\n          <>\n            {event &&\n              <div className=\"btn btn-light\" onClick={(e) => setEditMode(!editMode)}>\n                Edit Event\n              </div>\n            }\n            <div className=\"dropdown\">\n              <button className=\"btn btn-light dropdown-toggle\" type=\"button\" id=\"dropdownMenuButton1\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n                <span className=\"visually-hidden\">Other Actions</span>\n                <i className=\"fa-light fa-angle-down\"></i>\n              </button>\n              <ul className=\"dropdown-menu\" aria-labelledby=\"dropdownMenuButton1\">\n                <li>\n                  <div className=\"dropdown-item\" onClick={(e) => addNewEvent()}>\n                    <i className=\"dropdown-item__icon fa-light fa-plus\"></i>\n                    New Event\n                  </div>\n                </li>\n                {event &&\n                  <li>\n                    <div className=\"dropdown-item\" onClick={(e) => deleteEvent()}>\n                      <i className=\"dropdown-item__icon fa-light fa-minus\"></i>\n                      Delete Event\n                    </div>\n                  </li>\n                }\n                {event &&\n                  <li>\n                    <a className=\"dropdown-item\" href={'/merge?id=' + objectId} target=\"_blank\">\n                      <i className=\"dropdown-item__icon fa-light fa-merge\"></i>\n                      Merge...\n                    </a>\n                  </li>\n                }\n                {event &&\n                  <li>\n                    <div className=\"dropdown-item\"  onClick={(e) => exportData()}>\n                      <i className=\"dropdown-item__icon fa-light fa-arrow-down\"></i>\n                      Export\n                    </div>\n                  </li>\n                }\n                <li>\n                  <div className=\"dropdown-item\" onClick={(e) => deleteObject()}>\n                    <i className=\"dropdown-item__icon fa-light fa-minus\"></i>\n                    Delete Object\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </>\n        }\n        </div>\n      , document.getElementById('topBarActions')\n    )\n  )\n}\n\nexport default ObjectActions\n", "import React, { FunctionComponent } from 'react';\nimport classNames from 'classnames';\n\nconst EventsNav: FunctionComponent<any> = (opts) => {\n  const {events, selectedEvent, setSelectedEvent, matchingEvents, loadMoreEvents, loadingEvents, totalEvents} = opts\n\n  const isMatching = (eventId) => {\n    if(!matchingEvents) {\n      return true\n    } else {\n      return matchingEvents.includes(eventId)\n    }\n  }\n\n  const isActive = (event) => {\n    if (selectedEvent && selectedEvent.id == event.id) {\n      return true\n    } else {\n      return false\n    }\n  }\n\n  return(\n    <div className=\"grid__scroller\">\n      <ul className=\"nav nav-pills nav--detail flex-column\" id=\"eventTabs\" role=\"tablist\">\n        {events.map((event) =>\n          <li className=\"nav-item\" key={event.id}>\n            <a\n              className={classNames('nav-link d-flex justify-content-between align-items-center', {\n                'active': isMatching(event.id) && isActive(event),\n                'text-muted': !isMatching(event.id) && !isActive(event)\n              })}\n              href=\"#\"\n              type=\"button\"\n              role=\"tab\"\n              onClick={(e) => { e.preventDefault(); setSelectedEvent(event);}}\n            >\n              { isMatching(event.id) &&\n                <i className=\"icon icon--left fa-solid fa-circle\" style={{fontSize: '0.5rem'}}></i>\n              }\n              <div>\n                <div>\n                  <strong>{event.event_type_string}</strong> - ALIAS: {event.alias}\n                </div>\n                <div className=\"meta-data\"  style={{fontSize: '0.75rem'}}>\n                  {event.event_end_formatted} / {event.obj_type_string} / {event.obj_material_string} / {event.obj_origin_string}\n                </div>\n              </div>\n              { isActive(event) &&\n                <i className=\"icon icon--right fa-solid fa-chevron-right\"></i>\n              }\n            </a>\n          </li>\n        )}\n      </ul>\n      {totalEvents > events.length &&\n        <div className=\"d-flex justify-content-center my-4\">\n          <div className=\"btn btn-outline-secondary\" onClick={() => loadMoreEvents()}>\n            Load More Events\n          </div>\n        </div>\n      }\n      {loadingEvents &&\n        <div className=\"fa fa-spinner fa-spin fa-2x\"></div>\n      }\n    </div>\n  )\n}\n\nexport default EventsNav", "import classNames from 'classnames';\nimport React, { FunctionComponent, useEffect, useState } from 'react';\n\n// import {\n//   GlassMagnifier\n// } from \"react-image-magnifiers\";\n\nimport { del } from '../../shared/api/ServerRequest';\n\nimport EventTable from './EventTable';\nimport EventTableEdit from './EventTableEdit'\nimport ExhibitionAdd from './ExhibitionAdd';\nimport ImageSearch from './ImageSearch';\n\nconst EventData: FunctionComponent<any> = ({event, setModalImage, setSelectedEvent, editMode, saveEvent, editedEventData, setEditedEventData, reloadEvent, admin, refsVisible}) => {\n  if(event == null) { return null}\n\n  const [imageModalOpen, setImageModalOpen] = useState(false)\n  const [exhibitionModalOpen, setExhibitionModalOpen] = useState(false)\n  const [refsAreVisible, setRefsAreVisible] = useState<boolean>(refsVisible)\n\n  const handleRefsToggle = () => {\n    setRefsAreVisible((refsAreVisible) => !refsAreVisible);\n  }\n\n  useEffect(() => {\n    setSelectedImgIndex(0)\n    setImageModalOpen(false)\n    setExhibitionModalOpen(false)\n  }, [event])\n\n  const downloadFile = (index) => {\n    window.open(event.images[index].file_link)\n  }\n\n  const removeImage = (img) => {\n    if(confirm(\"Are you sure you want to remove this reference from this event?\")) {\n      del(`/event/${event.id}/remove_image`, {image_id: img.id}).then((results) => {\n        reloadEvent(event.id)\n      })\n    }\n  }\n\n  const closeImageSearchModal = (reload: boolean, newImages?: Array<any>) => {\n    if(reload) {\n      reloadEvent(event.id)\n    }\n    setImageModalOpen(false)\n  }\n\n  const [selectedImgIndex, setSelectedImgIndex] = useState<number>(0)\n  const selectedImage = event.images.find((img, index) => index == selectedImgIndex)\n\n  return(\n    <>\n      <div className=\"grid__main bg-white\">\n        <div className=\"col-header page-gutter\">\n          <strong>Event Details</strong>\n        </div>\n        <div className=\"inline-defs grid__scroller\">\n          {editMode &&\n            <EventTableEdit event={event} saveEvent={saveEvent} eventData={editedEventData} setEventData={setEditedEventData} />\n          }\n          {!editMode &&\n            <EventTable event={event} />\n          }\n        </div>\n      </div>\n      <div className={`grid__right grid__overlay ${refsVisible ? 'grid__overlay-show' : ''}`} onClick={handleRefsToggle}>\n        <div className=\"col-header page-gutter d-flex justify-content-between\">\n          <div>\n            <strong>Event References</strong>\n          </div>\n          <div className=\"d-flex justify-content-end\">\n            {event.images.length > 1 &&\n              <div className={'btn-group d-flex' + (event.images.length < 2 ? \" invisible\" : \"\")}>\n                {selectedImgIndex > 0 ?\n                  <div className=\"btn btn-light btn-sm\" role=\"button\" onClick={(e) => setSelectedImgIndex(selectedImgIndex - 1)}>\n                    <i className=\"fa-solid fa-angle-left\"></i>\n                    <span className=\"visually-hidden\">Previous</span>\n                  </div>\n                  :\n                  <div className=\"btn btn-light btn-sm btn-disabled\" role=\"button\">\n                    <i className=\"fa-solid fa-angle-left\"></i>\n                    <span className=\"visually-hidden\">Previous</span>\n                  </div>\n                }\n                <div className=\"btn btn-light btn-sm\">\n                  {selectedImgIndex+1} / {event.images.length}\n                </div>\n                {selectedImgIndex < event.images.length - 1 ?\n                  <div className=\"btn btn-light btn-sm\" role=\"button\" onClick={(e) => setSelectedImgIndex(selectedImgIndex + 1)}>\n                    <span className=\"visually-hidden\">Next</span>\n                    <i className=\"fa-solid fa-angle-right\"></i>\n                  </div>\n                  :\n                  <div className=\"btn-disabled btn btn-light btn-sm\" role=\"button\">\n                    <span className=\"visually-hidden\">Next</span>\n                    <i className=\"fa-solid fa-angle-right\"></i>\n                  </div>\n                }\n              </div>\n            }\n            { event.images.length > 0 &&\n              <div className=\"btn-group\">\n                <button type=\"button\" className=\"btn btn-light btn-sm dropdown-toggle ms-2\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n                  <i className=\"fa-solid fa-angle-down\"></i>\n                </button>\n                <ul className=\"dropdown-menu\">\n                  <li>\n                    <div className=\"dropdown-item\" onClick={(e) => downloadFile(selectedImgIndex)}>\n                      Download\n                    </div>\n                  </li>\n                  { admin && event.id > 0 && selectedImage &&\n                    <li>\n                      <div className=\"dropdown-item\" onClick={() => removeImage(selectedImage)}>\n                        Remove reference from event\n                      </div>\n                    </li>\n                  }\n                  {admin && event.id > 0 &&\n                    <li>\n                      <div className=\"dropdown-item\" onClick={(e) => setImageModalOpen(true)}>\n                        Add reference to event\n                      </div>\n                    </li>\n                  }\n                  {!editMode && admin && event.id > 0 &&\n                    <li className=\"border-top pt-2 mt-2\">\n                      <div className=\"dropdown-item\" onClick={(e) => setExhibitionModalOpen(true)}>\n                        Add to exhibition\n                      </div>\n                    </li>\n                  }\n                </ul>\n              </div>\n            }\n          </div>\n        </div>\n        <div className=\"grid__scroller media-gallery bg-dark\">\n          {admin && event.id == -1 &&\n            <div className=\"text-center justify-content-center p-5\">\n              Once the event is saved you will be able to add references here.\n            </div>\n          }\n          {admin && event.id > 0 && event.images.length == 0 &&\n            <div className=\"text-center justify-content-center p-5\">\n              <div className=\"btn btn-primary btn-sm\" onClick={(e) => setImageModalOpen(true)}>\n                Add reference to event\n              </div>\n            </div>\n          }\n          {event.images.length > 0 &&\n            <>\n              <div className=\"images-container p-2\">\n                {event.images.map((img, index) =>\n                  <div key={img.id}>\n                    {[\"image\", \"pdf\"].includes(img.type) &&\n                      <>\n                        <figure key={img.id} style={{ overflow: 'hidden'}}className={classNames({'d-none': index != selectedImgIndex})} onClick={(e) => {setModalImage(img); setSelectedEvent(event);}}>\n                          <img src={img.md_link} className=\"w-100\" title={`Alias: ${event.alias}, Event ID: ${event.event_id}`} rel=\"\" /><br/>\n                          {/* <GlassMagnifier\n                            imageSrc={img.md_link}\n                            imageAlt={`Event Reference for Alias: ${event.alias}, Event ID: ${event.event_id}`}\n                            largeImageSrc={img.xl_link}\n                          /> */}\n                        </figure>\n                      </>\n                    }\n                    {![\"image\", \"pdf\"].includes(img.type) &&\n                      <>\n                        <figure key={img.id} className={classNames({'d-none': index != selectedImgIndex})}>\n                          <a href={img.file_link}>\n                            <img src={img.md_link} className=\"w-100\" title={`Alias: ${event.alias}, Event ID: ${event.event_id}`} rel=\"\" /><br/>\n                          </a>\n                        </figure>\n                      </>\n                    }\n                  </div>\n                )}\n              </div>\n              <small className=\"d-block text-white bg-dark p-1\">{selectedImage.file_name} / {selectedImage.human_file_size}</small>\n            </>\n          }\n        </div>\n      </div>\n      {editMode || admin &&\n        <ImageSearch isOpen={imageModalOpen} closeModal={closeImageSearchModal} event={event} />\n      }\n      {(editMode || admin) &&\n        <ExhibitionAdd isOpen={exhibitionModalOpen} closeModal={() => setExhibitionModalOpen(false)} image={selectedImage} objectId={event.object_id} eventId={event.id}/>\n      }\n    </>\n  )\n}\n\nexport default EventData", "import React, { FunctionComponent } from 'react';\n\nconst EventTable: FunctionComponent<any> = ({event}) => {\n  if(event == null) { return null }\n\n  const tableData = [\n    [\"Alias\", event.alias],\n    [\"Event ID\", event.event_id],\n    [\"Type\", event.event_type_string],\n    [\"Site\", event.site_string],\n    [\"Owner\", event.associate_string],\n    [\"Editor\",event.editor_string],\n    [\"Dates (start,end)\",`${event.event_start_formatted} - ${event.event_end_formatted}`],\n    [\"Description\", event.event_description],\n    [\"Object type\", event.obj_type_string],\n    [\"Material\", event.obj_material_string],\n    [\"Lat, Long\", `${event.latitude}, ${event.longitude}`],\n    [\"Grid (x,y)\",`${event.grid_x}, ${event.grid_y}`],\n    [\"Location (1,2,3)\", `${event.loc_1}, ${event.loc_2}, ${event.loc_3}`],\n    [\"Size (w, l, h)\", `${event.width_cm} cm, ${event.length_cm} cm, ${event.height_cm} cm`],\n    [\"Thickness\", event.thickness_cm, \"cm\"],\n    [\"Weight\",event.weight_kg,\"kg\"],\n    [\"Capacity\",event.capacity_ltr, \"lt\" ]\n  ]\n\n  return(\n    <>\n      {tableData.map((ed) =>\n        <div className=\"d-lg-flex align-items-lg-top border-bottom\" key={ed[0]}>\n          <div className=\"dt\">{ed[0]}</div>\n          <div className=\"dd\">{ed[1]} {ed[2]}</div>\n        </div>\n      )}\n    </>\n  )\n}\n\nexport default EventTable\n", "import React, {useState, useRef, FunctionComponent, useEffect} from 'react'\nimport classNames from 'classnames'\nimport useClickOutside from '../click-outside'\nimport highlightPattern from '../highlight-pattern'\nimport escapeRegExp from '../../utils/escapeRegex'\n\ninterface AutocompleteProps {\n  options: Array<any>,\n  value: string\n  onChange: any\n  placeholderText: string\n  emptyName?: string\n  allowNewValues?: boolean\n}\n\n\nconst Autocomplete : FunctionComponent<AutocompleteProps> = ({options, placeholderText, value, onChange, emptyName, allowNewValues}) => {\n  const [searchValue, setSearchValue] = useState(\"\")\n // const [hasFocus, setHasFocus] = useState(false)\n  const [showDropdown, setShowDropdown] = useState(false)\n  const [filteredOptions, setFilteredOptions] = useState<any>(options)\n\n  const dropdownRef = useRef(null)\n  useClickOutside(dropdownRef, () => {\n    if(showDropdown) {\n      setShowDropdown(false)\n    }\n  });\n\n  useEffect(() => {\n    if(options && options.length > 0) {\n      const initialOption = options.find((opt) => opt.value == value )\n      if(initialOption) {\n        setSearchValue(initialOption.label)\n      }\n    }\n  }, [options])\n\n  const onSearchChange = (value) => {\n    if(allowNewValues) {\n      setSearchValue(value)\n      onChange(value)\n    } else {\n      setSearchValue(value)\n    }\n    const lowerSearchValue = value.toLowerCase()\n    if(options) {\n      const newOpts = options.filter((opt) => opt.label.toLowerCase().includes(lowerSearchValue) )\n      setFilteredOptions(newOpts)\n      setShowDropdown(true)\n    }\n  }\n\n  const setHasFocus = () => {\n    setShowDropdown(true)\n    onSearchChange(\"\")\n  }\n\n  const optionClick = (option) => {\n    onChange(option.value)\n    setShowDropdown(false)\n  }\n\n  if(!options) { return null }\n\n  const showPlaceholder = !searchValue || searchValue.length == 0\n  let selectedOption = options.find((opt) => opt.value == value )\n\n  return (\n    <div className=\"form-autocomplete\">\n      <input\n        placeholder={showPlaceholder ? placeholderText : \"\"}\n        className=\"form-control\"\n        type=\"text\"\n        value={showDropdown ? searchValue : (selectedOption?.label || \"\")}\n        onChange={(e) => onSearchChange(e.target.value)}\n        onFocus={(e) => setHasFocus()}\n      />\n      {filteredOptions && filteredOptions.length > 0 &&\n        <div className={classNames('dropdown-menu', {show: showDropdown})} ref={dropdownRef}>\n          <div className=\"dropdown-item\" key={'blank'} onClick={() => optionClick({value: null})}>{emptyName != null ? emptyName : 'Any'}</div>\n          {filteredOptions.map((opt) =>\n            <div className=\"dropdown-item\" key={opt.value} onClick={() => optionClick(opt)}>{highlightPattern(opt.label, new RegExp(escapeRegExp(searchValue), 'i'))}</div>\n          )}\n        </div>\n      }\n    </div>\n  )\n}\n\nexport default Autocomplete", "import React from \"react\";\n\nexport default function highlightPattern(text, pattern) {\n  const splitText = text.split(pattern);\n\n  if (splitText.length <= 1) {\n    return text;\n  }\n\n  const matches = text.match(pattern);\n\n  return splitText.reduce((arr, element, index) => (matches[index] ? [\n    ...arr,\n    element,\n    <mark key={index}>\n      {matches[index]}\n    </mark>,\n  ] : [...arr, element]), []);\n}", "const escapeRegExp = (string) => {\n  return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\n}\n\nexport default escapeRegExp;", "import React, { FunctionComponent, useEffect, useState } from 'react';\nimport { post, get } from '../../shared/api/ServerRequest';\nimport Autocomplete from '../../shared/ui/bootstrap/autocomplete';\n\n//import DatePicker from \"react-datepicker\";\n//import 'react-datepicker/dist/react-datepicker-cssmodules.css';\n\nconst EventTableEdit: FunctionComponent<any> = ({event, saveEvent, eventData, setEventData}) => {\n  if(event == null || !eventData) { return null }\n  const [editData, setEditData] = useState<any>({})\n\n  const mergeEventData = (data) => {\n    setEventData({...eventData, ...data})\n  }\n\n  const getEditData = () => {\n    get('/events/edit_data').then((response) => {\n      setEditData(response.edit_data)\n    });\n  }\n\n  useEffect(() => {\n    getEditData();\n  }, [event])\n\n  const transformDate = (date) => {\n    if(!date) { return \"\" }\n    return date.replace(/T.+/g, \"\");\n  }\n\n  return(\n    <>\n      <div className=\"p-2 d-lg-flex align-items-lg-top border-bottom\">\n        <div className=\"dt\">Alias</div>\n        <div className=\"dd\">\n          <Autocomplete options={editData.aliases} placeholderText=\"\" value={eventData.alias || \"\"} onChange={(value) => mergeEventData({alias: value})} allowNewValues={true} emptyName={\"\"} />\n        </div>\n      </div>\n\n      {eventData.event_id > 0 &&\n        <div className=\"p-2 d-lg-flex align-items-lg-top border-bottom\">\n          <div className=\"dt\">Event ID</div>\n          <div className=\"dd\">\n            {eventData.event_id}\n          </div>\n        </div>\n      }\n\n      <div className=\"p-2 d-lg-flex align-items-lg-top border-bottom\">\n        <div className=\"dt\">Type</div>\n        <div className=\"dd\">\n          <Autocomplete options={editData.event_types} placeholderText=\"\" value={eventData.event_type_id || \"\"} onChange={(value) => mergeEventData({event_type_id: value})} emptyName={\"\"} />\n        </div>\n      </div>\n\n      <div className=\"p-2 d-lg-flex align-items-lg-top border-bottom\">\n        <div className=\"dt\">Site</div>\n        <div className=\"dd\">\n          <Autocomplete options={editData.sites} placeholderText=\"\" value={eventData.site || \"\"} onChange={(value) => mergeEventData({site: value})} emptyName={\"\"} />\n        </div>\n      </div>\n\n      <div className=\"p-2 d-lg-flex align-items-lg-top border-bottom\">\n        <div className=\"dt\">Owner</div>\n        <div className=\"dd\">\n          <Autocomplete options={editData.associates} placeholderText=\"\" value={eventData.event_assoc || \"\"} onChange={(value) => mergeEventData({event_assoc: value})} emptyName={\"\"} />\n        </div>\n      </div>\n\n      <div className=\"p-2 d-lg-flex align-items-lg-top border-bottom\">\n        <div className=\"dt\">Editor</div>\n        <div className=\"dd\">\n          <Autocomplete options={editData.associates} placeholderText=\"\" value={eventData.event_auth_assoc || \"\"} onChange={(value) => mergeEventData({event_auth_assoc: value})} emptyName={\"\"} />\n        </div>\n      </div>\n\n      <div className=\"p-2 d-lg-flex align-items-lg-top border-bottom\">\n        <div className=\"dt\">Start Date</div>\n        <div className=\"dd\">\n          <input type=\"date\"\n            value={transformDate(eventData.event_start || \"\")}\n            onChange={(e) => mergeEventData({event_start: e.target.value})}\n            className=\"form-control\"\n          />\n        </div>\n      </div>\n\n      <div className=\"p-2 d-lg-flex align-items-lg-top border-bottom\">\n        <div className=\"dt\">End Date</div>\n        <div className=\"dd\">\n          <input type=\"date\"\n            value={transformDate(eventData.event_end || \"\")}\n              onChange={(e) => mergeEventData({event_end: e.target.value})}\n              className=\"form-control\"\n            />\n        </div>\n      </div>\n\n      <div className=\"p-2 d-lg-flex align-items-lg-top border-bottom\">\n        <div className=\"dt\">Description</div>\n        <div className=\"dd\">\n          <textarea\n            value={eventData.event_description || \"\"}\n            onChange={(e) => mergeEventData({event_description: e.target.value})}\n            className=\"form-control\"\n          />\n        </div>\n      </div>\n\n      <div className=\"p-2 d-lg-flex align-items-lg-top border-bottom\">\n        <div className=\"dt\">Object Type</div>\n        <div className=\"dd\">\n          <Autocomplete options={editData.object_types} placeholderText=\"\" value={eventData.obj_type || \"\"} onChange={(value) => mergeEventData({obj_type: value})} emptyName={\"\"} />\n        </div>\n      </div>\n\n      <div className=\"p-2 d-lg-flex align-items-lg-top border-bottom\">\n        <div className=\"dt\">Material</div>\n        <div className=\"dd\">\n          <Autocomplete options={editData.material_types} placeholderText=\"\" value={eventData.obj_matrl_id || \"\"} onChange={(value) => mergeEventData({obj_matrl_id: value})} emptyName={\"\"} />\n        </div>\n      </div>\n\n      <div className=\"p-2 d-lg-flex align-items-lg-top border-bottom\">\n        <div className=\"dt\">Lat / Lng</div>\n        <div className=\"dd\">\n          <div className=\"input-group mb-3\">\n            <div className=\"input-group-prepend\">\n              <span className=\"input-group-text\">lat</span>\n            </div>\n            <input value={eventData.latitude || \"\"} onChange={(e) => mergeEventData({latitude: e.target.value})} className=\"form-control\" placeholder=\"Lat\" />\n          </div>\n          <div className=\"input-group mb-3\">\n            <div className=\"input-group-prepend\">\n              <span className=\"input-group-text\">long</span>\n            </div>\n            <input value={eventData.longitude || \"\"} onChange={(e) => mergeEventData({longitude: e.target.value})} className=\"form-control\" placeholder=\"Lng\" />\n          </div>\n        </div>\n      </div>\n\n      <div className=\"p-2 d-lg-flex align-items-lg-top border-bottom\">\n        <div className=\"dt\">Grid (x,y)</div>\n        <div className=\"dd\">\n          <div className=\"input-group mb-3\">\n            <div className=\"input-group-prepend\">\n              <span className=\"input-group-text\">x</span>\n            </div>\n            <input value={eventData.grid_x || \"\"} onChange={(e) => mergeEventData({grid_x: e.target.value})} className=\"form-control\" placeholder=\"X\" />\n          </div>\n          <div className=\"input-group mb-3\">\n            <div className=\"input-group-prepend\">\n              <span className=\"input-group-text\">y</span>\n            </div>\n            <input value={eventData.grid_y || \"\"} onChange={(e) => mergeEventData({grid_y: e.target.value})} className=\"form-control\" placeholder=\"Y\" />\n          </div>\n        </div>\n      </div>\n\n      <div className=\"p-2 d-lg-flex align-items-lg-top border-bottom\">\n        <div className=\"dt\">Location (1,2,3)</div>\n        <div className=\"dd\">\n          <div className=\"input-group mb-3\">\n            <div className=\"input-group-prepend\">\n              <span className=\"input-group-text\">1</span>\n            </div>\n            <input value={eventData.loc_1 || \"\"} onChange={(e) => mergeEventData({loc_1: e.target.value})} className=\"form-control\" placeholder=\"1\" />\n          </div>\n          <div className=\"input-group mb-3\">\n            <div className=\"input-group-prepend\">\n              <span className=\"input-group-text\">2</span>\n            </div>\n            <input value={eventData.loc_2 || \"\"} onChange={(e) => mergeEventData({loc_2: e.target.value})} className=\"form-control\" placeholder=\"2\" />\n          </div>\n          <div className=\"input-group mb-3\">\n            <div className=\"input-group-prepend\">\n              <span className=\"input-group-text\">3</span>\n            </div>\n            <input value={eventData.loc_3 || \"\"} onChange={(e) => mergeEventData({loc_3: e.target.value})} className=\"form-control\" placeholder=\"3\" />\n          </div>\n        </div>\n      </div>\n\n      <div className=\"p-2 d-lg-flex align-items-lg-top border-bottom\">\n        <div className=\"dt\">Size (w,l,h in cm)</div>\n        <div className=\"dd\">\n          <div className=\"input-group mb-3\">\n            <div className=\"input-group-prepend\">\n              <span className=\"input-group-text\">W</span>\n            </div>\n            <input value={eventData.width_cm || \"\"} onChange={(e) => mergeEventData({width_cm: e.target.value})} className=\"form-control\" placeholder=\"w\" />\n          </div>\n          <div className=\"input-group mb-3\">\n            <div className=\"input-group-prepend\">\n              <span className=\"input-group-text\">L</span>\n            </div>\n            <input value={eventData.length_cm || \"\"} onChange={(e) => mergeEventData({length_cm: e.target.value})} className=\"form-control\" placeholder=\"l\" />\n          </div>\n          <div className=\"input-group mb-3\">\n            <div className=\"input-group-prepend\">\n              <span className=\"input-group-text\">H</span>\n            </div>\n            <input value={eventData.height_cm || \"\"} onChange={(e) => mergeEventData({height_cm: e.target.value})} className=\"form-control\" placeholder=\"h\" />\n          </div>\n        </div>\n      </div>\n\n      <div className=\"p-2 d-lg-flex align-items-lg-top border-bottom\">\n        <div className=\"dt\">Thickness (cm)</div>\n        <div className=\"dd\">\n          <input value={eventData.thickness_cm || \"\"} onChange={(e) => mergeEventData({thickness_cm: e.target.value})} className=\"form-control\" placeholder=\"t\" />\n        </div>\n      </div>\n\n      <div className=\"p-2 d-lg-flex align-items-lg-top border-bottom\">\n        <div className=\"dt\">Weight (kg)</div>\n        <div className=\"dd\">\n          <input value={eventData.weight_kg || \"\"} onChange={(e) => mergeEventData({weight_kg: e.target.value})} className=\"form-control\" placeholder=\"w\" />\n        </div>\n      </div>\n\n      <div className=\"p-2 d-lg-flex align-items-lg-top border-bottom\">\n        <div className=\"dt\">Capacity (ltr)</div>\n        <div className=\"dd\">\n          <input value={eventData.capacity_ltr || \"\"} onChange={(e) => mergeEventData({capacity_ltr: e.target.value})} className=\"form-control\" placeholder=\"w\" />\n        </div>\n      </div>\n    </>\n  )\n}\n\nexport default EventTableEdit\n", "import React, { FunctionComponent } from 'react'\nimport classnames from 'classnames'\n\n// default modalClasses =  modal-dialog-centered modal-lg\n\ninterface ModalProps {\n\tisOpen: boolean,\n\tmodalId: string,\n\tmodalClasses?: string\n  children: JSX.Element | Array<JSX.Element>\n}\n\nconst Modal : FunctionComponent<ModalProps> = ({isOpen, modalId, modalClasses, children}) => {\n\tconst style = {display: isOpen ? 'block' : 'none'}\n\n\treturn(\n\t\t<div className={classnames('modal fade', {'show': isOpen})} id={modalId} role=\"dialog\" aria-labelledby={modalId + \"-title\"} aria-hidden={isOpen} style={style}>\n\t\t\t<div className={'modal-dialog ' + (modalClasses || \" modal-dialog-centered modal-lg\")} role=\"document\">\n\t\t\t\t<div className=\"modal-content\">\n\t\t\t\t  {children}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\nexport default Modal\n\ninterface ModalHeaderProps {\n  title: string\n\tonClose: any\n\tmodalId: string\n  children?: JSX.Element | Array<JSX.Element>\n}\n\nexport const ModalHeader : FunctionComponent<ModalHeaderProps> = ({title, modalId, onClose, children}) => {\n\treturn(\n\t\t<div className=\"modal-header\">\n\t\t\t{children &&\n\t\t\t  <>{children}</>\n\t\t\t}\n\t\t\t<h5 className=\"modal-title\" id={modalId + \"-title\"}>{title}</h5>\n\t\t\t<button type=\"button\" className=\"btn-close\" data-dismiss=\"modal\" aria-label=\"Close\" onClick={onClose}>\n\t\t\t\t<span aria-hidden=\"true\" className=\"visually-hidden\">&times;</span>\n\t\t\t</button>\n\t\t</div>\n\t)\n}\n\ninterface ModalFooterProps {\n  children: JSX.Element | Array<JSX.Element>\n}\n\nexport const ModalFooter : FunctionComponent<ModalFooterProps> = ({children}) => {\n\treturn(\n\t\t<div className=\"modal-footer\">\n\t\t\t{children}\n\t\t</div>\n\t)\n}\n\ninterface ModalBodyProps {\n  children: JSX.Element | Array<JSX.Element>\n}\n\nexport const ModalBody : FunctionComponent<ModalBodyProps> = ({children}) => {\n\treturn(\n\t\t<div className=\"modal-body\">\n\t\t\t{children}\n\t\t</div>\n\t)\n}\n\n", "import React, {FunctionComponent, useEffect, useState} from 'react';\nimport classNames from 'classnames';\nimport { post, get } from '../../shared/api/ServerRequest';\n\nimport Autocomplete from '../../shared/ui/bootstrap/autocomplete';\nimport Modal, {ModalHeader, ModalBody, ModalFooter} from '../../shared/ui/bootstrap/modal';\n\nimport debounce from '../../shared/ui/debouce';\n\ninterface ExhibitionAddProps {\n  image: any\n  isOpen: boolean\n  closeModal: any\n  catalogueId?: number\n  eventId?: number\n  objectId?: number\n}\n\nconst ExhibitionAdd : FunctionComponent<ExhibitionAddProps> = ({closeModal, image, catalogueId, eventId, objectId, isOpen}) => {\n  const [exhibitions, setExhibitions] = useState<any>([])\n  const [selectedExhibitionId, setSelectedExhibitionId] = useState<number | string | undefined>(\"\")\n  const [selectedSectionId, setSelectedSectionId] = useState<number | string | undefined>(\"\")\n  const [entryName, setEntryName] = useState<string>(\"\")\n  const [entryDescription, setEntryDescription] = useState<string>(\"\")\n  const [newExhibitionName, setNewExhibitionName] = useState<string>(\"\")\n  const [newSectionName, setNewSectionName] = useState<string>(\"\")\n\n  const addImageToExhibition = () => {\n\n    const data = {\n      image_id: image.id,\n      exhibition_id: selectedExhibitionId,\n      new_exhibition_name: newExhibitionName,\n      section_id: selectedSectionId,\n      new_section_name: newSectionName,\n      name: entryName,\n      description: entryDescription,\n      catalogue_id: catalogueId,\n      event_id: eventId,\n      object_id: objectId\n    }\n    post('/exhibitions/add_image', data).then((result) => {\n      closeModal()\n    })\n  }\n\n  useEffect(() => {\n    setSelectedExhibitionId(\"\")\n    setSelectedSectionId(\"\")\n    setNewExhibitionName(\"\")\n    setNewSectionName(\"\")\n    setEntryName(\"\")\n    setEntryDescription(\"\")\n    get('/exhibitions/list').then((results) => {\n      setExhibitions(results.exhibitions)\n    })\n  }, [image])\n\n  const selectedExhibition = exhibitions.find((ex) => ex.id == selectedExhibitionId)\n\n  return(\n    <Modal isOpen={isOpen} modalId=\"exhibitions-search\" modalClasses=\"modal-fullscreen\">\n      <ModalHeader modalId=\"exhibitions-search\" onClose={(e) => closeModal(false)}  title=\"Exhibitions\"></ModalHeader>\n      <ModalBody>\n        <div className=\"row\">\n          <div className=\"col-lg-3\">\n            <div className=\"f-card\">\n              <div className=\"px-3 mb-2\">\n                <div className=\"f-card__heading p-3 d-flex justify-content-between align-items-center\">\n                  <span className=\"f-card__heading-label\">Entry Information</span>\n                </div>\n                <div className=\"form-floating mb-3\">\n                  <input className=\"form-control\" value={entryName} onChange={(e) => setEntryName(e.target.value)} />\n                  <label>Name</label>\n                </div>\n                <div className=\"form-floating mb-3\">\n                  <textarea className=\"form-control\" value={entryDescription} onChange={(e) => setEntryDescription(e.target.value)} style={{'height': '5rem'}}/>\n                  <label>Description</label>\n                </div>\n              </div>\n\n              <div className=\"f-card__heading p-3 d-flex justify-content-between align-items-center\">\n                <span className=\"f-card__heading-label\">Add to Exisiting Exhibition</span>\n              </div>\n\n              <div className=\"px-3 mb-2\">\n                <div className=\"form-floating mb-3\">\n                  <select className=\"form-control\" value={selectedExhibitionId} onChange={(e) => setSelectedExhibitionId(e.target.value)}>\n                    <option value=\"\"></option>\n                    {exhibitions.map((ex) =>\n                      <option key={ex.id} value={ex.id}>{ex.title}</option>\n                    )}\n                  </select>\n                  <div>\n                    {selectedExhibitionId === \"new\" &&\n                      <input className=\"form-control\" value={newExhibitionName} onChange={(e) => setNewExhibitionName(e.target.value)} placeholder=\"New Exhibition Name\" />\n                    }\n                  </div>\n                  <label>Select Exhibition</label>\n                </div>\n              </div>\n\n              {selectedExhibition && false &&\n                <div className=\"px-3 mb-2\">\n                  <div className=\"form-floating mb-3\">\n                    <select className=\"form-control\" value={selectedSectionId} onChange={(e) => setSelectedSectionId(e.target.value)}>\n                      <option value=\"\"></option>\n                      {selectedExhibition.sections.map((sec) =>\n                        <option value={sec.id}>{sec.title}</option>\n                      )}\n                      <option value=\"new\">New Section</option>\n                    </select>\n                    <label>Select a Section</label>\n                  </div>\n                  {selectedSectionId === \"new\" &&\n                    <div className=\"form-floating mb-3\">\n                      <input className=\"form-control\" value={newSectionName} onChange={(e) => setNewSectionName(e.target.value)}  />\n                      <label htmlFor=\"\">New Section Title</label>\n                    </div>\n                  }\n                </div>\n              }\n            </div>\n          </div>\n\n          <div className=\"col-lg-9\">\n            {image &&\n              <span key={image.file_name}>\n                {[\"image\", \"pdf\"].includes(image.type) &&\n                  <>\n                    <figure key={image.md_link}>\n                      <img src={image.md_link} />\n                    </figure>\n                  </>\n                }\n                {![\"image\", \"pdf\"].includes(image.type) &&\n                  <>\n                    <figure key={image.md_link}>\n                      <a href={image.file_link}>\n                        <img src={image.md_link} />\n                      </a>\n                    </figure>\n                  </>\n                }\n              </span>\n            }\n          </div>\n        </div>\n\n\n      </ModalBody>\n      <ModalFooter>\n        <button onClick={(e) => closeModal(false)} className=\"btn btn-light\">Cancel</button>\n        <button onClick={(e) => addImageToExhibition()} className=\"btn btn-primary\">Add To Exhibition</button>\n      </ModalFooter>\n    </Modal>\n  )\n}\n\nexport default ExhibitionAdd", "import React, {FunctionComponent, useEffect, useState} from 'react';\nimport classNames from 'classnames';\nimport { post } from '../../shared/api/ServerRequest';\n\nimport Autocomplete from '../../shared/ui/bootstrap/autocomplete';\nimport Modal, {ModalHeader, ModalBody, ModalFooter} from '../../shared/ui/bootstrap/modal';\n\nimport debounce from '../../shared/ui/debouce';\n\ninterface ImageSearchProps {\n  event: any\n  isOpen: boolean\n  closeModal: any\n}\n\nconst ImageSearch : FunctionComponent<ImageSearchProps> = ({closeModal, event, isOpen}) => {\n  const [filterData, setFilterData] = useState<any>({})\n  const [filters, setFilters] = useState<any>({})\n  const [images, setImages] = useState<any>([])\n  const [pageCount, setPageCount] = useState(0)\n  const [currentPaage, setCurrentPage] = useState(0)\n  const [selectedImages, setSelectedImages] = useState<any>([])\n\n  useEffect(() => {\n    setSelectedImages([])\n  }, [isOpen])\n\n  const mergeFilter = (data) => {\n    setFilters({...filters, ...data})\n  }\n\n  const imageSelected = (img) => {\n    return !!selectedImages.find((i) => i.id === img.id )\n  }\n\n  const toggleImageSelection = (img) => {\n    if(imageSelected(img)) {\n      const newImages = selectedImages.filter((i) => i.id !== img.id)\n      setSelectedImages(newImages)\n    } else {\n      setSelectedImages(selectedImages.concat(img))\n    }\n  }\n\n  const addImagesToEvent = () => {\n    const selectedImageIds = selectedImages.map((img) => img.id).join(',')\n\n    post(`/event/${event.id}/add_image`, {image_ids: selectedImageIds}).then((results) => {\n      closeModal(true, results.images)\n    })\n  }\n\n  useEffect(() => {\n    post('/images/filter_data', {filters: filters}).then((results) => {\n      setFilterData(results.filter_data)\n    })\n  }, [])\n\n  useEffect(() => {\n    debounce(() => {\n      post('/images/search', {filters: filters}).then((results) => {\n        setImages(results.images)\n      //  setPageCount(results.page_count)\n      //  setCurrentPage(results.current_page)\n      })\n    }, 300)\n  }, [filters])\n\n  return(\n    <Modal isOpen={isOpen} modalId=\"image-search\" modalClasses=\"modal-fullscreen\">\n      <ModalHeader modalId=\"image-search\" onClose={(e) => closeModal(false, [])} title=\"Image Search\"></ModalHeader>\n      <ModalBody>\n        <div className=\"row\">\n          <div className=\"col-lg-3\">\n            <div className=\"f-card\">\n              <div className=\"f-card__heading p-3 d-flex justify-content-between align-items-center\">\n                <span className=\"f-card__heading-label\">Filters</span>\n              </div>\n\n              <div className=\"px-3 mb-2\">\n                <div className=\"f-search\">\n                  <i className=\"icon fa-solid fa-search\"></i>\n                  <input className=\"form-control\" value={filters.text || \"\"} onChange={(e) => mergeFilter({text: e.target.value})} placeholder=\"File Name\" />\n                </div>\n              </div>\n\n              <div className=\"px-3 mb-2\">\n                <div className=\"f-select\">\n                  <div className=\"form-floating\">\n                    <Autocomplete options={filterData.cat_sources} value={filters.catalogue_source} onChange={(value) => mergeFilter({catalogue_source: value})} placeholderText=\"Catalogue Source\" />\n                  </div>\n                </div>\n              </div>\n\n              <div className=\"px-3 mb-2 \">\n                <div className=\"f-select\">\n                  <div className=\"form-floating\">\n                    <Autocomplete options={filterData.catalogues} value={filters.catalogue_id} onChange={(value) => mergeFilter({catalogue_id: value})} placeholderText=\"Catalogue\" />\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n          <div className=\"col-lg-9\">\n            <div className=\"row\">\n              {images && images.map((img) =>\n                <div className=\"col-3 mb-4\" key={img.id}>\n                  <div className={classNames('card', {'border border-primary border-3': imageSelected(img)})} onClick={() => toggleImageSelection(img)}>\n                    <figure className=\"position-relative mb-0\">\n                      <div className=\"ratio ratio-4x3 rounded-top\" style={{'backgroundColor': '#aab6cd'}}>\n                        <img src={img.md_link} className=\"rounded-top object-cover\" />\n                      </div>\n                      <span className=\"image-badge position-absolute\">\n                        {img.reference_ids.length} Events\n                      </span>\n                    </figure>\n                    <div className=\"py-2 px-3 text-dark\">\n                      <a href={img.md_link} target=\"_blank\">{img.file_name}</a> / {img.catalogue_name}\n                    </div>\n                  </div>\n                </div>\n              )}\n            </div>\n          </div>\n        </div>\n      </ModalBody>\n      <ModalFooter>\n        <button onClick={(e) => closeModal(false, [])} className=\"btn btn-light\">Cancel</button>\n        <button onClick={(e) => addImagesToEvent()} className=\"btn btn-primary\">Add {selectedImages.length > 0 ? selectedImages.length : \"\"} Selected References To Event</button>\n      </ModalFooter>\n    </Modal>\n  )\n}\n\nexport default ImageSearch", "import * as pdfjs from 'pdfjs-dist/build/pdf';\nimport Document from './Document';\nimport Outline from './Outline';\nimport Page from './Page';\nimport { displayWorkerWarning } from './shared/utils';\ndisplayWorkerWarning();\npdfjs.GlobalWorkerOptions.workerSrc = 'pdf.worker.js';\nexport { pdfjs, Document, Outline, Page };", "export default function _extends() {\n  _extends = Object.assign ? Object.assign.bind() : 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}", "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  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  return target;\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  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\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  return target;\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}", "export default function _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}", "import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n  if (_typeof(input) !== \"object\" || input === null) return input;\n  var prim = input[Symbol.toPrimitive];\n  if (prim !== undefined) {\n    var res = prim.call(input, hint || \"default\");\n    if (_typeof(res) !== \"object\") return res;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (hint === \"string\" ? String : Number)(input);\n}", "import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n  var key = toPrimitive(arg, \"string\");\n  return _typeof(key) === \"symbol\" ? key : String(key);\n}", "import toPropertyKey from \"./toPropertyKey.js\";\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, toPropertyKey(descriptor.key), descriptor);\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  return self;\n}", "export default function _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\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  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 \"./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  return assertThisInitialized(self);\n}", "export default function _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}", "import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n  key = toPropertyKey(key);\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n  return obj;\n}", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\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 _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar _excluded = [\"url\"];\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; }\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; }\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); }; }\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/**\n * Loads a PDF document. Passes it to all children.\n */\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport makeEventProps from 'make-event-props';\nimport makeCancellable from 'make-cancellable-promise';\nimport clsx from 'clsx';\nimport invariant from 'tiny-invariant';\nimport warning from 'tiny-warning';\nimport * as pdfjs from 'pdfjs-dist/build/pdf';\nimport DocumentContext from './DocumentContext';\nimport Message from './Message';\nimport LinkService from './LinkService';\nimport PasswordResponses from './PasswordResponses';\nimport { cancelRunningTask, dataURItoByteString, displayCORSWarning, isArrayBuffer, isBlob, isBrowser, isDataURI, isFile, loadFromFile } from './shared/utils';\nimport { eventProps, isClassName, isFile as isFileProp, isRef } from './shared/propTypes';\nvar PDFDataRangeTransport = pdfjs.PDFDataRangeTransport;\nvar Document = /*#__PURE__*/function (_PureComponent) {\n  _inherits(Document, _PureComponent);\n  var _super = _createSuper(Document);\n  function Document() {\n    var _this;\n    _classCallCheck(this, Document);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"state\", {\n      pdf: null\n    });\n    _defineProperty(_assertThisInitialized(_this), \"viewer\", {\n      scrollPageIntoView: function scrollPageIntoView(_ref) {\n        var dest = _ref.dest,\n          pageIndex = _ref.pageIndex,\n          pageNumber = _ref.pageNumber;\n        // Handling jumping to internal links target\n        var onItemClick = _this.props.onItemClick;\n\n        // First, check if custom handling of onItemClick was provided\n        if (onItemClick) {\n          onItemClick({\n            dest: dest,\n            pageIndex: pageIndex,\n            pageNumber: pageNumber\n          });\n          return;\n        }\n\n        // If not, try to look for target page within the <Document>.\n        var page = _this.pages[pageIndex];\n        if (page) {\n          // Scroll to the page automatically\n          page.scrollIntoView();\n          return;\n        }\n        warning(false, \"An internal link leading to page \".concat(pageNumber, \" was clicked, but neither <Document> was provided with onItemClick nor it was able to find the page within itself. Either provide onItemClick to <Document> and handle navigating by yourself or ensure that all pages are rendered within <Document>.\"));\n      }\n    });\n    _defineProperty(_assertThisInitialized(_this), \"linkService\", new LinkService());\n    _defineProperty(_assertThisInitialized(_this), \"loadDocument\", function () {\n      // If another rendering is in progress, let's cancel it\n      cancelRunningTask(_this.runningTask);\n\n      // If another loading is in progress, let's destroy it\n      if (_this.loadingTask) _this.loadingTask.destroy();\n      var cancellable = makeCancellable(_this.findDocumentSource());\n      _this.runningTask = cancellable;\n      cancellable.promise.then(function (source) {\n        _this.onSourceSuccess();\n        if (!source) {\n          return;\n        }\n        _this.setState(function (prevState) {\n          if (!prevState.pdf) {\n            return null;\n          }\n          return {\n            pdf: null\n          };\n        });\n        var _this$props = _this.props,\n          options = _this$props.options,\n          onLoadProgress = _this$props.onLoadProgress,\n          onPassword = _this$props.onPassword;\n        var destroyable = pdfjs.getDocument(_objectSpread(_objectSpread({}, source), options));\n        destroyable.onPassword = onPassword;\n        if (onLoadProgress) {\n          destroyable.onProgress = onLoadProgress;\n        }\n        _this.loadingTask = destroyable;\n        destroyable.promise.then(function (pdf) {\n          _this.setState(function (prevState) {\n            if (prevState.pdf && prevState.pdf.fingerprint === pdf.fingerprint) {\n              return null;\n            }\n            return {\n              pdf: pdf\n            };\n          }, _this.onLoadSuccess);\n        })[\"catch\"](function (error) {\n          _this.onLoadError(error);\n        });\n      })[\"catch\"](function (error) {\n        _this.onSourceError(error);\n      });\n    });\n    _defineProperty(_assertThisInitialized(_this), \"setupLinkService\", function () {\n      var _this$props2 = _this.props,\n        externalLinkRel = _this$props2.externalLinkRel,\n        externalLinkTarget = _this$props2.externalLinkTarget;\n      _this.linkService.setViewer(_this.viewer);\n      _this.linkService.setExternalLinkRel(externalLinkRel);\n      _this.linkService.setExternalLinkTarget(externalLinkTarget);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onSourceSuccess\", function () {\n      var onSourceSuccess = _this.props.onSourceSuccess;\n      if (onSourceSuccess) onSourceSuccess();\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onSourceError\", function (error) {\n      warning(error);\n      var onSourceError = _this.props.onSourceError;\n      if (onSourceError) onSourceError(error);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onLoadSuccess\", function () {\n      var onLoadSuccess = _this.props.onLoadSuccess;\n      var pdf = _this.state.pdf;\n      if (onLoadSuccess) onLoadSuccess(pdf);\n      _this.pages = new Array(pdf.numPages);\n      _this.linkService.setDocument(pdf);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onLoadError\", function (error) {\n      _this.setState({\n        pdf: false\n      });\n      warning(error);\n      var onLoadError = _this.props.onLoadError;\n      if (onLoadError) onLoadError(error);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"findDocumentSource\", function () {\n      return new Promise(function (resolve) {\n        var file = _this.props.file;\n        if (!file) {\n          resolve(null);\n        }\n\n        // File is a string\n        if (typeof file === 'string') {\n          if (isDataURI(file)) {\n            var fileByteString = dataURItoByteString(file);\n            resolve({\n              data: fileByteString\n            });\n          }\n          displayCORSWarning();\n          resolve({\n            url: file\n          });\n        }\n\n        // File is PDFDataRangeTransport\n        if (file instanceof PDFDataRangeTransport) {\n          resolve({\n            range: file\n          });\n        }\n\n        // File is an ArrayBuffer\n        if (isArrayBuffer(file)) {\n          resolve({\n            data: file\n          });\n        }\n\n        /**\n         * The cases below are browser-only.\n         * If you're running on a non-browser environment, these cases will be of no use.\n         */\n        if (isBrowser) {\n          // File is a Blob\n          if (isBlob(file) || isFile(file)) {\n            loadFromFile(file).then(function (data) {\n              resolve({\n                data: data\n              });\n            });\n            return;\n          }\n        }\n\n        // At this point, file must be an object\n        invariant(_typeof(file) === 'object', 'Invalid parameter in file, need either Uint8Array, string or a parameter object');\n        invariant(file.url || file.data || file.range, 'Invalid parameter object: need either .data, .range or .url');\n\n        // File .url is a string\n        if (typeof file.url === 'string') {\n          if (isDataURI(file.url)) {\n            var url = file.url,\n              otherParams = _objectWithoutProperties(file, _excluded);\n            var _fileByteString = dataURItoByteString(url);\n            resolve(_objectSpread({\n              data: _fileByteString\n            }, otherParams));\n          }\n          displayCORSWarning();\n        }\n        resolve(file);\n      });\n    });\n    _defineProperty(_assertThisInitialized(_this), \"registerPage\", function (pageIndex, ref) {\n      _this.pages[pageIndex] = ref;\n    });\n    _defineProperty(_assertThisInitialized(_this), \"unregisterPage\", function (pageIndex) {\n      delete _this.pages[pageIndex];\n    });\n    return _this;\n  }\n  _createClass(Document, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.loadDocument();\n      this.setupLinkService();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      var file = this.props.file;\n      if (file !== prevProps.file) {\n        this.loadDocument();\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      // If rendering is in progress, let's cancel it\n      cancelRunningTask(this.runningTask);\n\n      // If loading is in progress, let's destroy it\n      if (this.loadingTask) this.loadingTask.destroy();\n    }\n  }, {\n    key: \"childContext\",\n    get: function get() {\n      var linkService = this.linkService,\n        registerPage = this.registerPage,\n        unregisterPage = this.unregisterPage;\n      var _this$props3 = this.props,\n        imageResourcesPath = _this$props3.imageResourcesPath,\n        renderMode = _this$props3.renderMode,\n        rotate = _this$props3.rotate;\n      var pdf = this.state.pdf;\n      return {\n        imageResourcesPath: imageResourcesPath,\n        linkService: linkService,\n        pdf: pdf,\n        registerPage: registerPage,\n        renderMode: renderMode,\n        rotate: rotate,\n        unregisterPage: unregisterPage\n      };\n    }\n  }, {\n    key: \"eventProps\",\n    get: function get() {\n      var _this2 = this;\n      return makeEventProps(this.props, function () {\n        return _this2.state.pdf;\n      });\n    }\n\n    /**\n     * Called when a document source is resolved correctly\n     */\n  }, {\n    key: \"renderChildren\",\n    value: function renderChildren() {\n      var children = this.props.children;\n      return /*#__PURE__*/React.createElement(DocumentContext.Provider, {\n        value: this.childContext\n      }, children);\n    }\n  }, {\n    key: \"renderContent\",\n    value: function renderContent() {\n      var file = this.props.file;\n      var pdf = this.state.pdf;\n      if (!file) {\n        var noData = this.props.noData;\n        return /*#__PURE__*/React.createElement(Message, {\n          type: \"no-data\"\n        }, typeof noData === 'function' ? noData() : noData);\n      }\n      if (pdf === null) {\n        var loading = this.props.loading;\n        return /*#__PURE__*/React.createElement(Message, {\n          type: \"loading\"\n        }, typeof loading === 'function' ? loading() : loading);\n      }\n      if (pdf === false) {\n        var error = this.props.error;\n        return /*#__PURE__*/React.createElement(Message, {\n          type: \"error\"\n        }, typeof error === 'function' ? error() : error);\n      }\n      return this.renderChildren();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props4 = this.props,\n        className = _this$props4.className,\n        inputRef = _this$props4.inputRef;\n      return /*#__PURE__*/React.createElement(\"div\", _extends({\n        className: clsx('react-pdf__Document', className),\n        ref: inputRef\n      }, this.eventProps), this.renderContent());\n    }\n  }]);\n  return Document;\n}(PureComponent);\nexport { Document as default };\nDocument.defaultProps = {\n  error: 'Failed to load PDF file.',\n  loading: 'Loading PDF\u2026',\n  noData: 'No PDF file specified.',\n  onPassword: function onPassword(callback, reason) {\n    switch (reason) {\n      case PasswordResponses.NEED_PASSWORD:\n        {\n          // eslint-disable-next-line no-alert\n          var password = prompt('Enter the password to open this PDF file.');\n          callback(password);\n          break;\n        }\n      case PasswordResponses.INCORRECT_PASSWORD:\n        {\n          // eslint-disable-next-line no-alert\n          var _password = prompt('Invalid password. Please try again.');\n          callback(_password);\n          break;\n        }\n      default:\n    }\n  }\n};\nvar isFunctionOrNode = PropTypes.oneOfType([PropTypes.func, PropTypes.node]);\nDocument.propTypes = _objectSpread(_objectSpread({}, eventProps), {}, {\n  children: PropTypes.node,\n  className: isClassName,\n  error: isFunctionOrNode,\n  externalLinkRel: PropTypes.string,\n  externalLinkTarget: PropTypes.string,\n  file: isFileProp,\n  imageResourcesPath: PropTypes.string,\n  inputRef: isRef,\n  loading: isFunctionOrNode,\n  noData: isFunctionOrNode,\n  onItemClick: PropTypes.func,\n  onLoadError: PropTypes.func,\n  onLoadProgress: PropTypes.func,\n  onLoadSuccess: PropTypes.func,\n  onPassword: PropTypes.func,\n  onSourceError: PropTypes.func,\n  onSourceSuccess: PropTypes.func,\n  rotate: PropTypes.number\n});", "// As defined on the list of supported events: https://reactjs.org/docs/events.html\nexport var clipboardEvents = ['onCopy', 'onCut', 'onPaste'];\nexport var compositionEvents = ['onCompositionEnd', 'onCompositionStart', 'onCompositionUpdate'];\nexport var keyboardEvents = ['onKeyDown', 'onKeyPress', 'onKeyUp'];\nexport var focusEvents = ['onFocus', 'onBlur'];\nexport var formEvents = ['onChange', 'onInput', 'onInvalid', 'onReset', 'onSubmit'];\nexport var genericEvents = ['onError', 'onLoad'];\nexport var mouseEvents = ['onClick', 'onContextMenu', 'onDoubleClick', 'onDrag', 'onDragEnd', 'onDragEnter', 'onDragExit', 'onDragLeave', 'onDragOver', 'onDragStart', 'onDrop', 'onMouseDown', 'onMouseEnter', 'onMouseLeave', 'onMouseMove', 'onMouseOut', 'onMouseOver', 'onMouseUp'];\nexport var pointerEvents = ['onPointerDown', 'onPointerMove', 'onPointerUp', 'onPointerCancel', 'onGotPointerCapture', 'onLostPointerCapture', 'onPointerEnter', 'onPointerLeave', 'onPointerOver', 'onPointerOut'];\nexport var selectionEvents = ['onSelect'];\nexport var touchEvents = ['onTouchCancel', 'onTouchEnd', 'onTouchMove', 'onTouchStart'];\nexport var uiEvents = ['onScroll'];\nexport var wheelEvents = ['onWheel'];\nexport var mediaEvents = ['onAbort', 'onCanPlay', 'onCanPlayThrough', 'onDurationChange', 'onEmptied', 'onEncrypted', 'onEnded', 'onError', 'onLoadedData', 'onLoadedMetadata', 'onLoadStart', 'onPause', 'onPlay', 'onPlaying', 'onProgress', 'onRateChange', 'onSeeked', 'onSeeking', 'onStalled', 'onSuspend', 'onTimeUpdate', 'onVolumeChange', 'onWaiting'];\nexport var imageEvents = ['onLoad', 'onError'];\nexport var animationEvents = ['onAnimationStart', 'onAnimationEnd', 'onAnimationIteration'];\nexport var transitionEvents = ['onTransitionEnd'];\nexport var otherEvents = ['onToggle'];\nexport var allEvents = [].concat(clipboardEvents, compositionEvents, keyboardEvents, focusEvents, formEvents, genericEvents, mouseEvents, pointerEvents, selectionEvents, touchEvents, uiEvents, wheelEvents, mediaEvents, imageEvents, animationEvents, transitionEvents, otherEvents);\n/**\n * Returns an object with on-event callback props curried with provided args.\n * @param {Object} props Props passed to a component.\n * @param {Function=} getArgs A function that returns argument(s) on-event callbacks\n *   shall be curried with.\n */\n\nvar makeEventProps = function makeEventProps(props, getArgs) {\n  var eventProps = {};\n  allEvents.forEach(function (eventName) {\n    if (!(eventName in props)) {\n      return;\n    }\n\n    if (!getArgs) {\n      eventProps[eventName] = props[eventName];\n      return;\n    }\n\n    eventProps[eventName] = function (event) {\n      return props[eventName](event, getArgs(eventName));\n    };\n  });\n  return eventProps;\n};\n\nexport default makeEventProps;", "export default function makeCancellablePromise(promise) {\n  var isCancelled = false;\n  var wrappedPromise = new Promise(function (resolve, reject) {\n    promise.then(function () {\n      return !isCancelled && resolve.apply(void 0, arguments);\n    })[\"catch\"](function (error) {\n      return !isCancelled && reject(error);\n    });\n  });\n  return {\n    promise: wrappedPromise,\n    cancel: function cancel() {\n      isCancelled = true;\n    }\n  };\n}", "function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f);else for(t in e)e[t]&&(n&&(n+=\" \"),n+=t);return n}export function clsx(){for(var e,t,f=0,n=\"\";f<arguments.length;)(e=arguments[f++])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;", "var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n    if (condition) {\n        return;\n    }\n    if (isProduction) {\n        throw new Error(prefix);\n    }\n    var provided = typeof message === 'function' ? message() : message;\n    var value = provided ? \"\".concat(prefix, \": \").concat(provided) : prefix;\n    throw new Error(value);\n}\n\nexport { invariant as default };\n", "var isProduction = process.env.NODE_ENV === 'production';\nfunction warning(condition, message) {\n  if (!isProduction) {\n    if (condition) {\n      return;\n    }\n\n    var text = \"Warning: \" + message;\n\n    if (typeof console !== 'undefined') {\n      console.warn(text);\n    }\n\n    try {\n      throw Error(text);\n    } catch (x) {}\n  }\n}\n\nexport default warning;\n", "import { createContext } from 'react';\nexport default /*#__PURE__*/createContext(null);", "import React from 'react';\nimport PropTypes from 'prop-types';\nexport default function Message(_ref) {\n  var children = _ref.children,\n    type = _ref.type;\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: \"react-pdf__message react-pdf__message--\".concat(type)\n  }, children);\n}\nMessage.propTypes = {\n  children: PropTypes.node,\n  type: PropTypes.oneOf(['error', 'loading', 'no-data']).isRequired\n};", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\n/* Copyright 2015 Mozilla Foundation\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 */\nimport invariant from 'tiny-invariant';\nvar DEFAULT_LINK_REL = 'noopener noreferrer nofollow';\nvar LinkService = /*#__PURE__*/function () {\n  function LinkService() {\n    _classCallCheck(this, LinkService);\n    this.externalLinkTarget = null;\n    this.externalLinkRel = null;\n  }\n  _createClass(LinkService, [{\n    key: \"setDocument\",\n    value: function setDocument(pdfDocument) {\n      this.pdfDocument = pdfDocument;\n    }\n  }, {\n    key: \"setViewer\",\n    value: function setViewer(pdfViewer) {\n      this.pdfViewer = pdfViewer;\n    }\n  }, {\n    key: \"setExternalLinkRel\",\n    value: function setExternalLinkRel(externalLinkRel) {\n      this.externalLinkRel = externalLinkRel;\n    }\n  }, {\n    key: \"setExternalLinkTarget\",\n    value: function setExternalLinkTarget(externalLinkTarget) {\n      this.externalLinkTarget = externalLinkTarget;\n    }\n  }, {\n    key: \"setHistory\",\n    value: function setHistory() {}\n  }, {\n    key: \"pagesCount\",\n    get: function get() {\n      return this.pdfDocument ? this.pdfDocument.numPages : 0;\n    }\n  }, {\n    key: \"page\",\n    get: function get() {\n      return this.pdfViewer.currentPageNumber;\n    },\n    set: function set(value) {\n      this.pdfViewer.currentPageNumber = value;\n    }\n  }, {\n    key: \"rotation\",\n    get: function get() {\n      return 0;\n    },\n    set: function set(value) {}\n  }, {\n    key: \"goToDestination\",\n    value: function goToDestination(dest) {\n      var _this = this;\n      new Promise(function (resolve) {\n        if (typeof dest === 'string') {\n          _this.pdfDocument.getDestination(dest).then(resolve);\n        } else if (Array.isArray(dest)) {\n          resolve(dest);\n        } else {\n          dest.then(resolve);\n        }\n      }).then(function (explicitDest) {\n        invariant(Array.isArray(explicitDest), \"\\\"\".concat(explicitDest, \"\\\" is not a valid destination array.\"));\n        var destRef = explicitDest[0];\n        new Promise(function (resolve) {\n          if (destRef instanceof Object) {\n            _this.pdfDocument.getPageIndex(destRef).then(function (pageIndex) {\n              resolve(pageIndex);\n            })[\"catch\"](function () {\n              invariant(false, \"\\\"\".concat(destRef, \"\\\" is not a valid page reference.\"));\n            });\n          } else if (typeof destRef === 'number') {\n            resolve(destRef);\n          } else {\n            invariant(false, \"\\\"\".concat(destRef, \"\\\" is not a valid destination reference.\"));\n          }\n        }).then(function (pageIndex) {\n          var pageNumber = pageIndex + 1;\n          invariant(pageNumber >= 1 && pageNumber <= _this.pagesCount, \"\\\"\".concat(pageNumber, \"\\\" is not a valid page number.\"));\n          _this.pdfViewer.scrollPageIntoView({\n            dest: dest,\n            pageIndex: pageIndex,\n            pageNumber: pageNumber\n          });\n        });\n      });\n    }\n  }, {\n    key: \"navigateTo\",\n    value: function navigateTo(dest) {\n      this.goToDestination(dest);\n    }\n  }, {\n    key: \"goToPage\",\n    value: function goToPage() {}\n  }, {\n    key: \"addLinkAttributes\",\n    value: function addLinkAttributes(link, url, newWindow) {\n      link.href = url;\n      link.rel = this.externalLinkRel || DEFAULT_LINK_REL;\n      link.target = newWindow ? '_blank' : this.externalLinkTarget || '';\n    }\n  }, {\n    key: \"getDestinationHash\",\n    value: function getDestinationHash() {\n      return '#';\n    }\n  }, {\n    key: \"getAnchorUrl\",\n    value: function getAnchorUrl() {\n      return '#';\n    }\n  }, {\n    key: \"setHash\",\n    value: function setHash() {}\n  }, {\n    key: \"executeNamedAction\",\n    value: function executeNamedAction() {}\n  }, {\n    key: \"cachePageRef\",\n    value: function cachePageRef() {}\n  }, {\n    key: \"isPageVisible\",\n    value: function isPageVisible() {\n      return true;\n    }\n  }, {\n    key: \"isPageCached\",\n    value: function isPageCached() {\n      return true;\n    }\n  }]);\n  return LinkService;\n}();\nexport { LinkService as default };", "// As defined in https://github.com/mozilla/pdf.js/blob/d9fac3459609a807be6506fb3441b5da4b154d14/src/shared/util.js#L371-L374\n\nvar PasswordResponses = {\n  NEED_PASSWORD: 1,\n  INCORRECT_PASSWORD: 2\n};\nexport default PasswordResponses;", "export default function _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}", "export default function _iterableToArrayLimit(arr, i) {\n  var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n  if (null != _i) {\n    var _s,\n      _e,\n      _x,\n      _r,\n      _arr = [],\n      _n = !0,\n      _d = !1;\n    try {\n      if (_x = (_i = _i.call(arr)).next, 0 === i) {\n        if (Object(_i) !== _i) return;\n        _n = !1;\n      } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) {\n        ;\n      }\n    } catch (err) {\n      _d = !0, _e = err;\n    } finally {\n      try {\n        if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n      } finally {\n        if (_d) throw _e;\n      }\n    }\n    return _arr;\n  }\n}", "export default function _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n  for (var i = 0, arr2 = new Array(len); i < len; i++) {\n    arr2[i] = arr[i];\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}", "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}", "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}", "import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport invariant from 'tiny-invariant';\nimport warning from 'tiny-warning';\n\n/**\n * Checks if we're running in a browser environment.\n */\nexport var isBrowser = typeof window !== 'undefined';\n\n/**\n * Checks whether we're running from a local file system.\n */\nexport var isLocalFileSystem = isBrowser && window.location.protocol === 'file:';\n\n/**\n * Checks whether a variable is defined.\n *\n * @param {*} variable Variable to check\n */\nexport function isDefined(variable) {\n  return typeof variable !== 'undefined';\n}\n\n/**\n * Checks whether a variable is defined and not null.\n *\n * @param {*} variable Variable to check\n */\nexport function isProvided(variable) {\n  return isDefined(variable) && variable !== null;\n}\n\n/**\n * Checkes whether a variable provided is a string.\n *\n * @param {*} variable Variable to check\n */\nexport function isString(variable) {\n  return typeof variable === 'string';\n}\n\n/**\n * Checks whether a variable provided is an ArrayBuffer.\n *\n * @param {*} variable Variable to check\n */\nexport function isArrayBuffer(variable) {\n  return variable instanceof ArrayBuffer;\n}\n\n/**\n * Checkes whether a variable provided is a Blob.\n *\n * @param {*} variable Variable to check\n */\nexport function isBlob(variable) {\n  invariant(isBrowser, 'isBlob can only be used in a browser environment');\n  return variable instanceof Blob;\n}\n\n/**\n * Checkes whether a variable provided is a File.\n *\n * @param {*} variable Variable to check\n */\nexport function isFile(variable) {\n  invariant(isBrowser, 'isFile can only be used in a browser environment');\n  return variable instanceof File;\n}\n\n/**\n * Checks whether a string provided is a data URI.\n *\n * @param {string} str String to check\n */\nexport function isDataURI(str) {\n  return isString(str) && /^data:/.test(str);\n}\nexport function dataURItoByteString(dataURI) {\n  invariant(isDataURI(dataURI), 'Invalid data URI.');\n  var _dataURI$split = dataURI.split(','),\n    _dataURI$split2 = _slicedToArray(_dataURI$split, 2),\n    headersString = _dataURI$split2[0],\n    dataString = _dataURI$split2[1];\n  var headers = headersString.split(';');\n  if (headers.indexOf('base64') !== -1) {\n    return atob(dataString);\n  }\n  return unescape(dataString);\n}\nexport function getDevicePixelRatio() {\n  return isBrowser && window.devicePixelRatio || 1;\n}\nvar allowFileAccessFromFilesTip = 'On Chromium based browsers, you can use --allow-file-access-from-files flag for debugging purposes.';\nexport function displayCORSWarning() {\n  warning(!isLocalFileSystem, \"Loading PDF as base64 strings/URLs may not work on protocols other than HTTP/HTTPS. \".concat(allowFileAccessFromFilesTip));\n}\nexport function displayWorkerWarning() {\n  warning(!isLocalFileSystem, \"Loading PDF.js worker may not work on protocols other than HTTP/HTTPS. \".concat(allowFileAccessFromFilesTip));\n}\nexport function cancelRunningTask(runningTask) {\n  if (runningTask && runningTask.cancel) runningTask.cancel();\n}\nexport function makePageCallback(page, scale) {\n  Object.defineProperty(page, 'width', {\n    get: function get() {\n      return this.view[2] * scale;\n    },\n    configurable: true\n  });\n  Object.defineProperty(page, 'height', {\n    get: function get() {\n      return this.view[3] * scale;\n    },\n    configurable: true\n  });\n  Object.defineProperty(page, 'originalWidth', {\n    get: function get() {\n      return this.view[2];\n    },\n    configurable: true\n  });\n  Object.defineProperty(page, 'originalHeight', {\n    get: function get() {\n      return this.view[3];\n    },\n    configurable: true\n  });\n  return page;\n}\nexport function isCancelException(error) {\n  return error.name === 'RenderingCancelledException';\n}\nexport function loadFromFile(file) {\n  return new Promise(function (resolve, reject) {\n    var reader = new FileReader();\n    reader.onload = function () {\n      return resolve(new Uint8Array(reader.result));\n    };\n    reader.onerror = function (event) {\n      switch (event.target.error.code) {\n        case event.target.error.NOT_FOUND_ERR:\n          return reject(new Error('Error while reading a file: File not found.'));\n        case event.target.error.NOT_READABLE_ERR:\n          return reject(new Error('Error while reading a file: File not readable.'));\n        case event.target.error.SECURITY_ERR:\n          return reject(new Error('Error while reading a file: Security error.'));\n        case event.target.error.ABORT_ERR:\n          return reject(new Error('Error while reading a file: Aborted.'));\n        default:\n          return reject(new Error('Error while reading a file.'));\n      }\n    };\n    reader.readAsArrayBuffer(file);\n    return null;\n  });\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}", "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 _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport PropTypes from 'prop-types';\nimport { mouseEvents, touchEvents, keyboardEvents } from 'make-event-props';\nimport { isDefined } from './utils';\nimport LinkService from '../LinkService';\nexport var eventProps = function () {\n  var result = {};\n  [].concat(_toConsumableArray(mouseEvents), _toConsumableArray(touchEvents), _toConsumableArray(keyboardEvents)).forEach(function (eventName) {\n    result[eventName] = PropTypes.func;\n  });\n  return result;\n}();\nvar fileTypes = [PropTypes.string, PropTypes.instanceOf(ArrayBuffer), PropTypes.shape({\n  data: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n  httpHeaders: PropTypes.object,\n  range: PropTypes.object,\n  url: PropTypes.string,\n  withCredentials: PropTypes.bool\n})];\nif (typeof File !== 'undefined') {\n  fileTypes.push(PropTypes.instanceOf(File));\n}\nif (typeof Blob !== 'undefined') {\n  fileTypes.push(PropTypes.instanceOf(Blob));\n}\nexport var isClassName = PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]);\nexport var isFile = PropTypes.oneOfType(fileTypes);\nexport var isLinkService = PropTypes.instanceOf(LinkService);\nexport var isLinkTarget = PropTypes.oneOf(['_self', '_blank', '_parent', '_top']);\nexport var isPage = PropTypes.shape({\n  commonObjs: PropTypes.shape({}).isRequired,\n  getAnnotations: PropTypes.func.isRequired,\n  getTextContent: PropTypes.func.isRequired,\n  getViewport: PropTypes.func.isRequired,\n  render: PropTypes.func.isRequired\n});\nexport var isPageIndex = function isPageIndex(props, propName, componentName) {\n  var pageIndex = props[propName],\n    pageNumber = props.pageNumber,\n    pdf = props.pdf;\n  if (!isDefined(pdf)) {\n    return null;\n  }\n  if (isDefined(pageIndex)) {\n    if (typeof pageIndex !== 'number') {\n      return new Error(\"`\".concat(propName, \"` of type `\").concat(_typeof(pageIndex), \"` supplied to `\").concat(componentName, \"`, expected `number`.\"));\n    }\n    if (pageIndex < 0) {\n      return new Error(\"Expected `\".concat(propName, \"` to be greater or equal to 0.\"));\n    }\n    var numPages = pdf.numPages;\n    if (pageIndex + 1 > numPages) {\n      return new Error(\"Expected `\".concat(propName, \"` to be less or equal to \").concat(numPages - 1, \".\"));\n    }\n  } else if (!isDefined(pageNumber)) {\n    return new Error(\"`\".concat(propName, \"` not supplied. Either pageIndex or pageNumber must be supplied to `\").concat(componentName, \"`.\"));\n  }\n\n  // Everything is fine\n  return null;\n};\nexport var isPageNumber = function isPageNumber(props, propName, componentName) {\n  var pageNumber = props[propName],\n    pageIndex = props.pageIndex,\n    pdf = props.pdf;\n  if (!isDefined(pdf)) {\n    return null;\n  }\n  if (isDefined(pageNumber)) {\n    if (typeof pageNumber !== 'number') {\n      return new Error(\"`\".concat(propName, \"` of type `\").concat(_typeof(pageNumber), \"` supplied to `\").concat(componentName, \"`, expected `number`.\"));\n    }\n    if (pageNumber < 1) {\n      return new Error(\"Expected `\".concat(propName, \"` to be greater or equal to 1.\"));\n    }\n    var numPages = pdf.numPages;\n    if (pageNumber > numPages) {\n      return new Error(\"Expected `\".concat(propName, \"` to be less or equal to \").concat(numPages, \".\"));\n    }\n  } else if (!isDefined(pageIndex)) {\n    return new Error(\"`\".concat(propName, \"` not supplied. Either pageIndex or pageNumber must be supplied to `\").concat(componentName, \"`.\"));\n  }\n\n  // Everything is fine\n  return null;\n};\nexport var isPdf = PropTypes.oneOfType([PropTypes.shape({\n  getDestination: PropTypes.func.isRequired,\n  getOutline: PropTypes.func.isRequired,\n  getPage: PropTypes.func.isRequired,\n  numPages: PropTypes.number.isRequired\n}), PropTypes.bool]);\nexport var isRef = PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n  current: PropTypes.any\n})]);\nexport var isRenderMode = PropTypes.oneOf(['canvas', 'none', 'svg']);\nexport var isRotate = PropTypes.oneOf([0, 90, 180, 270]);", "import _extends from \"@babel/runtime/helpers/esm/extends\";\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 _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\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; }\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; }\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); }; }\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; } }\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport makeCancellable from 'make-cancellable-promise';\nimport makeEventProps from 'make-event-props';\nimport clsx from 'clsx';\nimport invariant from 'tiny-invariant';\nimport warning from 'tiny-warning';\nimport DocumentContext from './DocumentContext';\nimport OutlineContext from './OutlineContext';\nimport OutlineItem from './OutlineItem';\nimport { cancelRunningTask } from './shared/utils';\nimport { eventProps, isClassName, isPdf, isRef } from './shared/propTypes';\nexport var OutlineInternal = /*#__PURE__*/function (_PureComponent) {\n  _inherits(OutlineInternal, _PureComponent);\n  var _super = _createSuper(OutlineInternal);\n  function OutlineInternal() {\n    var _this;\n    _classCallCheck(this, OutlineInternal);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"state\", {\n      outline: null\n    });\n    _defineProperty(_assertThisInitialized(_this), \"loadOutline\", function () {\n      var pdf = _this.props.pdf;\n      _this.setState(function (prevState) {\n        if (!prevState.outline) {\n          return null;\n        }\n        return {\n          outline: null\n        };\n      });\n      var cancellable = makeCancellable(pdf.getOutline());\n      _this.runningTask = cancellable;\n      cancellable.promise.then(function (outline) {\n        _this.setState({\n          outline: outline\n        }, _this.onLoadSuccess);\n      })[\"catch\"](function (error) {\n        _this.onLoadError(error);\n      });\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onLoadSuccess\", function () {\n      var onLoadSuccess = _this.props.onLoadSuccess;\n      var outline = _this.state.outline;\n      if (onLoadSuccess) onLoadSuccess(outline);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onLoadError\", function (error) {\n      _this.setState({\n        outline: false\n      });\n      warning(error);\n      var onLoadError = _this.props.onLoadError;\n      if (onLoadError) onLoadError(error);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onItemClick\", function (_ref) {\n      var dest = _ref.dest,\n        pageIndex = _ref.pageIndex,\n        pageNumber = _ref.pageNumber;\n      var onItemClick = _this.props.onItemClick;\n      if (onItemClick) {\n        onItemClick({\n          dest: dest,\n          pageIndex: pageIndex,\n          pageNumber: pageNumber\n        });\n      }\n    });\n    return _this;\n  }\n  _createClass(OutlineInternal, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var pdf = this.props.pdf;\n      invariant(pdf, 'Attempted to load an outline, but no document was specified.');\n      this.loadOutline();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      var pdf = this.props.pdf;\n      if (prevProps.pdf && pdf !== prevProps.pdf) {\n        this.loadOutline();\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      cancelRunningTask(this.runningTask);\n    }\n  }, {\n    key: \"childContext\",\n    get: function get() {\n      return {\n        onClick: this.onItemClick\n      };\n    }\n  }, {\n    key: \"eventProps\",\n    get: function get() {\n      var _this2 = this;\n      return makeEventProps(this.props, function () {\n        return _this2.state.outline;\n      });\n    }\n\n    /**\n     * Called when an outline is read successfully\n     */\n  }, {\n    key: \"renderOutline\",\n    value: function renderOutline() {\n      var outline = this.state.outline;\n      return /*#__PURE__*/React.createElement(\"ul\", null, outline.map(function (item, itemIndex) {\n        return /*#__PURE__*/React.createElement(OutlineItem, {\n          key: typeof item.destination === 'string' ? item.destination : itemIndex,\n          item: item\n        });\n      }));\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var pdf = this.props.pdf;\n      var outline = this.state.outline;\n      if (!pdf || !outline) {\n        return null;\n      }\n      var _this$props = this.props,\n        className = _this$props.className,\n        inputRef = _this$props.inputRef;\n      return /*#__PURE__*/React.createElement(\"div\", _extends({\n        className: clsx('react-pdf__Outline', className),\n        ref: inputRef\n      }, this.eventProps), /*#__PURE__*/React.createElement(OutlineContext.Provider, {\n        value: this.childContext\n      }, this.renderOutline()));\n    }\n  }]);\n  return OutlineInternal;\n}(PureComponent);\nOutlineInternal.propTypes = _objectSpread({\n  className: isClassName,\n  inputRef: isRef,\n  onItemClick: PropTypes.func,\n  onLoadError: PropTypes.func,\n  onLoadSuccess: PropTypes.func,\n  pdf: isPdf\n}, eventProps);\nfunction Outline(props, ref) {\n  return /*#__PURE__*/React.createElement(DocumentContext.Consumer, null, function (context) {\n    return /*#__PURE__*/React.createElement(OutlineInternal, _extends({\n      ref: ref\n    }, context, props));\n  });\n}\nexport default /*#__PURE__*/React.forwardRef(Outline);", "import { createContext } from 'react';\nexport default /*#__PURE__*/createContext(null);", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\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 _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar _excluded = [\"item\"];\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); }; }\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; } }\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport DocumentContext from './DocumentContext';\nimport OutlineContext from './OutlineContext';\nimport Ref from './Ref';\nimport { isDefined } from './shared/utils';\nimport { isPdf } from './shared/propTypes';\nexport var OutlineItemInternal = /*#__PURE__*/function (_PureComponent) {\n  _inherits(OutlineItemInternal, _PureComponent);\n  var _super = _createSuper(OutlineItemInternal);\n  function OutlineItemInternal() {\n    var _this;\n    _classCallCheck(this, OutlineItemInternal);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"getDestination\", function () {\n      return new Promise(function (resolve, reject) {\n        var _this$props = _this.props,\n          item = _this$props.item,\n          pdf = _this$props.pdf;\n        if (!isDefined(_this.destination)) {\n          if (typeof item.dest === 'string') {\n            pdf.getDestination(item.dest).then(resolve)[\"catch\"](reject);\n          } else {\n            resolve(item.dest);\n          }\n        }\n        return _this.destination;\n      }).then(function (destination) {\n        _this.destination = destination;\n        return destination;\n      });\n    });\n    _defineProperty(_assertThisInitialized(_this), \"getPageIndex\", function () {\n      return new Promise(function (resolve, reject) {\n        var pdf = _this.props.pdf;\n        if (isDefined(_this.pageIndex)) {\n          resolve(_this.pageIndex);\n        }\n        _this.getDestination().then(function (destination) {\n          if (!destination) {\n            return;\n          }\n          var _destination = _slicedToArray(destination, 1),\n            ref = _destination[0];\n          pdf.getPageIndex(new Ref(ref)).then(resolve)[\"catch\"](reject);\n        });\n      }).then(function (pageIndex) {\n        _this.pageIndex = pageIndex;\n        return _this.pageIndex;\n      });\n    });\n    _defineProperty(_assertThisInitialized(_this), \"getPageNumber\", function () {\n      return new Promise(function (resolve, reject) {\n        if (isDefined(_this.pageNumber)) {\n          resolve(_this.pageNumber);\n        }\n        _this.getPageIndex().then(function (pageIndex) {\n          resolve(pageIndex + 1);\n        })[\"catch\"](reject);\n      }).then(function (pageNumber) {\n        _this.pageNumber = pageNumber;\n        return pageNumber;\n      });\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n      var onClick = _this.props.onClick;\n      event.preventDefault();\n      if (!onClick) {\n        return false;\n      }\n      return Promise.all([_this.getDestination(), _this.getPageIndex(), _this.getPageNumber()]).then(function (_ref) {\n        var _ref2 = _slicedToArray(_ref, 3),\n          dest = _ref2[0],\n          pageIndex = _ref2[1],\n          pageNumber = _ref2[2];\n        onClick({\n          dest: dest,\n          pageIndex: pageIndex,\n          pageNumber: pageNumber\n        });\n      });\n    });\n    return _this;\n  }\n  _createClass(OutlineItemInternal, [{\n    key: \"renderSubitems\",\n    value: function renderSubitems() {\n      var _this$props2 = this.props,\n        item = _this$props2.item,\n        otherProps = _objectWithoutProperties(_this$props2, _excluded);\n      if (!item.items || !item.items.length) {\n        return null;\n      }\n      var subitems = item.items;\n      return /*#__PURE__*/React.createElement(\"ul\", null, subitems.map(function (subitem, subitemIndex) {\n        return /*#__PURE__*/React.createElement(OutlineItemInternal, _extends({\n          key: typeof subitem.destination === 'string' ? subitem.destination : subitemIndex,\n          item: subitem\n        }, otherProps));\n      }));\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var item = this.props.item;\n      return /*#__PURE__*/React.createElement(\"li\", null, /*#__PURE__*/React.createElement(\"a\", {\n        href: \"#\",\n        onClick: this.onClick\n      }, item.title), this.renderSubitems());\n    }\n  }]);\n  return OutlineItemInternal;\n}(PureComponent);\nvar isDestination = PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.any)]);\nOutlineItemInternal.propTypes = {\n  item: PropTypes.shape({\n    dest: isDestination,\n    items: PropTypes.arrayOf(PropTypes.shape({\n      dest: isDestination,\n      title: PropTypes.string\n    })),\n    title: PropTypes.string\n  }).isRequired,\n  onClick: PropTypes.func,\n  pdf: isPdf.isRequired\n};\nvar OutlineItem = function OutlineItem(props) {\n  return /*#__PURE__*/React.createElement(DocumentContext.Consumer, null, function (documentContext) {\n    return /*#__PURE__*/React.createElement(OutlineContext.Consumer, null, function (outlineContext) {\n      return /*#__PURE__*/React.createElement(OutlineItemInternal, _extends({}, documentContext, outlineContext, props));\n    });\n  });\n};\nexport default OutlineItem;", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nvar Ref = /*#__PURE__*/function () {\n  function Ref(_ref) {\n    var num = _ref.num,\n      gen = _ref.gen;\n    _classCallCheck(this, Ref);\n    this.num = num;\n    this.gen = gen;\n  }\n  _createClass(Ref, [{\n    key: \"toString\",\n    value: function toString() {\n      var str = \"\".concat(this.num, \"R\");\n      if (this.gen !== 0) {\n        str += this.gen;\n      }\n      return str;\n    }\n  }]);\n  return Ref;\n}();\nexport { Ref as default };", "import _extends from \"@babel/runtime/helpers/esm/extends\";\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 _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\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; }\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; }\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); }; }\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; } }\nimport React, { createRef, PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport makeCancellable from 'make-cancellable-promise';\nimport makeEventProps from 'make-event-props';\nimport clsx from 'clsx';\nimport mergeRefs from 'merge-refs';\nimport invariant from 'tiny-invariant';\nimport warning from 'tiny-warning';\nimport DocumentContext from './DocumentContext';\nimport PageContext from './PageContext';\nimport Message from './Message';\nimport PageCanvas from './Page/PageCanvas';\nimport PageSVG from './Page/PageSVG';\nimport TextLayer from './Page/TextLayer';\nimport AnnotationLayer from './Page/AnnotationLayer';\nimport { cancelRunningTask, isProvided, makePageCallback } from './shared/utils';\nimport { eventProps, isClassName, isPageIndex, isPageNumber, isPdf, isRef, isRenderMode, isRotate } from './shared/propTypes';\nvar defaultScale = 1;\nexport var PageInternal = /*#__PURE__*/function (_PureComponent) {\n  _inherits(PageInternal, _PureComponent);\n  var _super = _createSuper(PageInternal);\n  function PageInternal() {\n    var _this;\n    _classCallCheck(this, PageInternal);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"state\", {\n      page: null\n    });\n    _defineProperty(_assertThisInitialized(_this), \"pageElement\", /*#__PURE__*/createRef());\n    _defineProperty(_assertThisInitialized(_this), \"onLoadSuccess\", function () {\n      var _this$props = _this.props,\n        onLoadSuccess = _this$props.onLoadSuccess,\n        registerPage = _this$props.registerPage;\n      var page = _this.state.page;\n      if (onLoadSuccess) onLoadSuccess(makePageCallback(page, _this.scale));\n      if (registerPage) registerPage(_this.pageIndex, _this.pageElement.current);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onLoadError\", function (error) {\n      _this.setState({\n        page: false\n      });\n      warning(error);\n      var onLoadError = _this.props.onLoadError;\n      if (onLoadError) onLoadError(error);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"loadPage\", function () {\n      var pdf = _this.props.pdf;\n      var pageNumber = _this.getPageNumber();\n      if (!pageNumber) {\n        return;\n      }\n      _this.setState(function (prevState) {\n        if (!prevState.page) {\n          return null;\n        }\n        return {\n          page: null\n        };\n      });\n      var cancellable = makeCancellable(pdf.getPage(pageNumber));\n      _this.runningTask = cancellable;\n      cancellable.promise.then(function (page) {\n        _this.setState({\n          page: page\n        }, _this.onLoadSuccess);\n      })[\"catch\"](function (error) {\n        _this.onLoadError(error);\n      });\n    });\n    return _this;\n  }\n  _createClass(PageInternal, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var pdf = this.props.pdf;\n      invariant(pdf, 'Attempted to load a page, but no document was specified.');\n      this.loadPage();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      var pdf = this.props.pdf;\n      if (prevProps.pdf && pdf !== prevProps.pdf || this.getPageNumber() !== this.getPageNumber(prevProps)) {\n        var unregisterPage = this.props.unregisterPage;\n        if (unregisterPage) unregisterPage(this.getPageIndex(prevProps));\n        this.loadPage();\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      var unregisterPage = this.props.unregisterPage;\n      if (unregisterPage) unregisterPage(this.pageIndex);\n      cancelRunningTask(this.runningTask);\n    }\n  }, {\n    key: \"childContext\",\n    get: function get() {\n      var page = this.state.page;\n      if (!page) {\n        return {};\n      }\n      var _this$props2 = this.props,\n        canvasBackground = _this$props2.canvasBackground,\n        customTextRenderer = _this$props2.customTextRenderer,\n        devicePixelRatio = _this$props2.devicePixelRatio,\n        onGetAnnotationsError = _this$props2.onGetAnnotationsError,\n        onGetAnnotationsSuccess = _this$props2.onGetAnnotationsSuccess,\n        onGetTextError = _this$props2.onGetTextError,\n        onGetTextSuccess = _this$props2.onGetTextSuccess,\n        onRenderAnnotationLayerError = _this$props2.onRenderAnnotationLayerError,\n        onRenderAnnotationLayerSuccess = _this$props2.onRenderAnnotationLayerSuccess,\n        onRenderError = _this$props2.onRenderError,\n        onRenderSuccess = _this$props2.onRenderSuccess,\n        onRenderTextLayerError = _this$props2.onRenderTextLayerError,\n        onRenderTextLayerSuccess = _this$props2.onRenderTextLayerSuccess,\n        renderForms = _this$props2.renderForms,\n        renderInteractiveForms = _this$props2.renderInteractiveForms;\n      return {\n        canvasBackground: canvasBackground,\n        customTextRenderer: customTextRenderer,\n        devicePixelRatio: devicePixelRatio,\n        onGetAnnotationsError: onGetAnnotationsError,\n        onGetAnnotationsSuccess: onGetAnnotationsSuccess,\n        onGetTextError: onGetTextError,\n        onGetTextSuccess: onGetTextSuccess,\n        onRenderAnnotationLayerError: onRenderAnnotationLayerError,\n        onRenderAnnotationLayerSuccess: onRenderAnnotationLayerSuccess,\n        onRenderError: onRenderError,\n        onRenderSuccess: onRenderSuccess,\n        onRenderTextLayerError: onRenderTextLayerError,\n        onRenderTextLayerSuccess: onRenderTextLayerSuccess,\n        page: page,\n        renderForms: renderForms !== null && renderForms !== void 0 ? renderForms : renderInteractiveForms,\n        // For backward compatibility\n        rotate: this.rotate,\n        scale: this.scale\n      };\n    }\n\n    /**\n     * Called when a page is loaded successfully\n     */\n  }, {\n    key: \"getPageIndex\",\n    value: function getPageIndex() {\n      var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n      if (isProvided(props.pageNumber)) {\n        return props.pageNumber - 1;\n      }\n      if (isProvided(props.pageIndex)) {\n        return props.pageIndex;\n      }\n      return null;\n    }\n  }, {\n    key: \"getPageNumber\",\n    value: function getPageNumber() {\n      var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n      if (isProvided(props.pageNumber)) {\n        return props.pageNumber;\n      }\n      if (isProvided(props.pageIndex)) {\n        return props.pageIndex + 1;\n      }\n      return null;\n    }\n  }, {\n    key: \"pageIndex\",\n    get: function get() {\n      return this.getPageIndex();\n    }\n  }, {\n    key: \"pageNumber\",\n    get: function get() {\n      return this.getPageNumber();\n    }\n  }, {\n    key: \"rotate\",\n    get: function get() {\n      var rotate = this.props.rotate;\n      if (isProvided(rotate)) {\n        return rotate;\n      }\n      var page = this.state.page;\n      if (!page) {\n        return null;\n      }\n      return page.rotate;\n    }\n  }, {\n    key: \"scale\",\n    get: function get() {\n      var page = this.state.page;\n      if (!page) {\n        return null;\n      }\n      var _this$props3 = this.props,\n        scale = _this$props3.scale,\n        width = _this$props3.width,\n        height = _this$props3.height;\n      var rotate = this.rotate;\n\n      // Be default, we'll render page at 100% * scale width.\n      var pageScale = 1;\n\n      // Passing scale explicitly null would cause the page not to render\n      var scaleWithDefault = scale === null ? defaultScale : scale;\n\n      // If width/height is defined, calculate the scale of the page so it could be of desired width.\n      if (width || height) {\n        var viewport = page.getViewport({\n          scale: 1,\n          rotation: rotate\n        });\n        pageScale = width ? width / viewport.width : height / viewport.height;\n      }\n      return scaleWithDefault * pageScale;\n    }\n  }, {\n    key: \"eventProps\",\n    get: function get() {\n      var _this2 = this;\n      return makeEventProps(this.props, function () {\n        var page = _this2.state.page;\n        if (!page) {\n          return page;\n        }\n        return makePageCallback(page, _this2.scale);\n      });\n    }\n  }, {\n    key: \"pageKey\",\n    get: function get() {\n      return \"\".concat(this.pageIndex, \"@\").concat(this.scale, \"/\").concat(this.rotate);\n    }\n  }, {\n    key: \"pageKeyNoScale\",\n    get: function get() {\n      return \"\".concat(this.pageIndex, \"/\").concat(this.rotate);\n    }\n  }, {\n    key: \"renderMainLayer\",\n    value: function renderMainLayer() {\n      var _this$props4 = this.props,\n        canvasRef = _this$props4.canvasRef,\n        renderMode = _this$props4.renderMode;\n      switch (renderMode) {\n        case 'none':\n          return null;\n        case 'svg':\n          return /*#__PURE__*/React.createElement(PageSVG, {\n            key: \"\".concat(this.pageKeyNoScale, \"_svg\")\n          });\n        case 'canvas':\n        default:\n          return /*#__PURE__*/React.createElement(PageCanvas, {\n            key: \"\".concat(this.pageKey, \"_canvas\"),\n            canvasRef: canvasRef\n          });\n      }\n    }\n  }, {\n    key: \"renderTextLayer\",\n    value: function renderTextLayer() {\n      var renderTextLayer = this.props.renderTextLayer;\n      if (!renderTextLayer) {\n        return null;\n      }\n      return /*#__PURE__*/React.createElement(TextLayer, {\n        key: \"\".concat(this.pageKey, \"_text\")\n      });\n    }\n  }, {\n    key: \"renderAnnotationLayer\",\n    value: function renderAnnotationLayer() {\n      var renderAnnotationLayer = this.props.renderAnnotationLayer;\n      if (!renderAnnotationLayer) {\n        return null;\n      }\n\n      /**\n       * As of now, PDF.js 2.0.943 returns warnings on unimplemented annotations in SVG mode.\n       * Therefore, as a fallback, we render \"traditional\" AnnotationLayer component.\n       */\n\n      return /*#__PURE__*/React.createElement(AnnotationLayer, {\n        key: \"\".concat(this.pageKey, \"_annotations\")\n      });\n    }\n  }, {\n    key: \"renderChildren\",\n    value: function renderChildren() {\n      var children = this.props.children;\n      return /*#__PURE__*/React.createElement(PageContext.Provider, {\n        value: this.childContext\n      }, this.renderMainLayer(), this.renderTextLayer(), this.renderAnnotationLayer(), children);\n    }\n  }, {\n    key: \"renderContent\",\n    value: function renderContent() {\n      var pageNumber = this.pageNumber;\n      var pdf = this.props.pdf;\n      var page = this.state.page;\n      if (!pageNumber) {\n        var noData = this.props.noData;\n        return /*#__PURE__*/React.createElement(Message, {\n          type: \"no-data\"\n        }, typeof noData === 'function' ? noData() : noData);\n      }\n      if (pdf === null || page === null) {\n        var loading = this.props.loading;\n        return /*#__PURE__*/React.createElement(Message, {\n          type: \"loading\"\n        }, typeof loading === 'function' ? loading() : loading);\n      }\n      if (pdf === false || page === false) {\n        var error = this.props.error;\n        return /*#__PURE__*/React.createElement(Message, {\n          type: \"error\"\n        }, typeof error === 'function' ? error() : error);\n      }\n      return this.renderChildren();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var pageNumber = this.pageNumber;\n      var _this$props5 = this.props,\n        className = _this$props5.className,\n        inputRef = _this$props5.inputRef;\n      return /*#__PURE__*/React.createElement(\"div\", _extends({\n        className: clsx('react-pdf__Page', className),\n        \"data-page-number\": pageNumber,\n        ref: mergeRefs(inputRef, this.pageElement),\n        style: {\n          position: 'relative',\n          minWidth: 'min-content',\n          minHeight: 'min-content'\n        }\n      }, this.eventProps), this.renderContent());\n    }\n  }]);\n  return PageInternal;\n}(PureComponent);\nPageInternal.defaultProps = {\n  error: 'Failed to load the page.',\n  loading: 'Loading page\u2026',\n  noData: 'No page specified.',\n  renderAnnotationLayer: true,\n  renderMode: 'canvas',\n  renderTextLayer: true,\n  scale: defaultScale\n};\nvar isFunctionOrNode = PropTypes.oneOfType([PropTypes.func, PropTypes.node]);\nPageInternal.propTypes = _objectSpread(_objectSpread({}, eventProps), {}, {\n  canvasBackground: PropTypes.string,\n  children: PropTypes.node,\n  className: isClassName,\n  customTextRenderer: PropTypes.func,\n  devicePixelRatio: PropTypes.number,\n  error: isFunctionOrNode,\n  height: PropTypes.number,\n  imageResourcesPath: PropTypes.string,\n  inputRef: isRef,\n  loading: isFunctionOrNode,\n  noData: isFunctionOrNode,\n  onGetTextError: PropTypes.func,\n  onGetTextSuccess: PropTypes.func,\n  onLoadError: PropTypes.func,\n  onLoadSuccess: PropTypes.func,\n  onRenderError: PropTypes.func,\n  onRenderSuccess: PropTypes.func,\n  onRenderTextLayerError: PropTypes.func,\n  onRenderTextLayerSuccess: PropTypes.func,\n  pageIndex: isPageIndex,\n  pageNumber: isPageNumber,\n  pdf: isPdf,\n  registerPage: PropTypes.func,\n  renderAnnotationLayer: PropTypes.bool,\n  renderForms: PropTypes.bool,\n  renderInteractiveForms: PropTypes.bool,\n  // For backward compatibility\n  renderMode: isRenderMode,\n  renderTextLayer: PropTypes.bool,\n  rotate: isRotate,\n  scale: PropTypes.number,\n  unregisterPage: PropTypes.func,\n  width: PropTypes.number\n});\nfunction Page(props, ref) {\n  return /*#__PURE__*/React.createElement(DocumentContext.Consumer, null, function (context) {\n    return /*#__PURE__*/React.createElement(PageInternal, _extends({\n      ref: ref\n    }, context, props));\n  });\n}\nexport default /*#__PURE__*/React.forwardRef(Page);", "/**\n * A function that merges React refs into one.\n * Supports both functions and ref objects created using createRef() and useRef().\n *\n * Usage:\n * ```jsx\n * <div ref={mergeRefs(ref1, ref2, ref3)} />\n * ```\n *\n * @param {...Array<Function|object>} inputRefs Array of refs\n * @returns {Function} Merged refs\n */\nexport default function mergeRefs() {\n  for (var _len = arguments.length, inputRefs = new Array(_len), _key = 0; _key < _len; _key++) {\n    inputRefs[_key] = arguments[_key];\n  }\n\n  var filteredInputRefs = inputRefs.filter(Boolean);\n\n  if (filteredInputRefs.length <= 1) {\n    return filteredInputRefs[0];\n  }\n\n  return function mergedRefs(ref) {\n    filteredInputRefs.forEach(function (inputRef) {\n      if (typeof inputRef === 'function') {\n        inputRef(ref);\n      } else {\n        // eslint-disable-next-line no-param-reassign\n        inputRef.current = ref;\n      }\n    });\n  };\n}", "import { createContext } from 'react';\nexport default /*#__PURE__*/createContext(null);", "import _extends from \"@babel/runtime/helpers/esm/extends\";\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 _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\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); }; }\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; } }\nimport React, { createRef, PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport mergeRefs from 'merge-refs';\nimport warning from 'tiny-warning';\nimport * as pdfjs from 'pdfjs-dist/build/pdf';\nimport PageContext from '../PageContext';\nimport { getDevicePixelRatio, isCancelException, makePageCallback } from '../shared/utils';\nimport { isPage, isRef, isRotate } from '../shared/propTypes';\nvar ANNOTATION_MODE = pdfjs.AnnotationMode;\nexport var PageCanvasInternal = /*#__PURE__*/function (_PureComponent) {\n  _inherits(PageCanvasInternal, _PureComponent);\n  var _super = _createSuper(PageCanvasInternal);\n  function PageCanvasInternal() {\n    var _this;\n    _classCallCheck(this, PageCanvasInternal);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"canvasElement\", /*#__PURE__*/createRef());\n    _defineProperty(_assertThisInitialized(_this), \"onRenderSuccess\", function () {\n      _this.renderer = null;\n      var _this$props = _this.props,\n        onRenderSuccess = _this$props.onRenderSuccess,\n        page = _this$props.page,\n        scale = _this$props.scale;\n      if (onRenderSuccess) onRenderSuccess(makePageCallback(page, scale));\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onRenderError\", function (error) {\n      if (isCancelException(error)) {\n        return;\n      }\n      warning(error);\n      var onRenderError = _this.props.onRenderError;\n      if (onRenderError) onRenderError(error);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"drawPageOnCanvas\", function () {\n      var canvas = _this.canvasElement.current;\n      if (!canvas) {\n        return null;\n      }\n      var _assertThisInitialize = _assertThisInitialized(_this),\n        renderViewport = _assertThisInitialize.renderViewport,\n        viewport = _assertThisInitialize.viewport;\n      var _this$props2 = _this.props,\n        canvasBackground = _this$props2.canvasBackground,\n        page = _this$props2.page,\n        renderForms = _this$props2.renderForms;\n      canvas.width = renderViewport.width;\n      canvas.height = renderViewport.height;\n      canvas.style.width = \"\".concat(Math.floor(viewport.width), \"px\");\n      canvas.style.height = \"\".concat(Math.floor(viewport.height), \"px\");\n      var renderContext = {\n        annotationMode: renderForms ? ANNOTATION_MODE.ENABLE_FORMS : ANNOTATION_MODE.ENABLE,\n        get canvasContext() {\n          return canvas.getContext('2d');\n        },\n        viewport: renderViewport\n      };\n      if (canvasBackground) {\n        renderContext.background = canvasBackground;\n      }\n\n      // If another render is in progress, let's cancel it\n      _this.cancelRenderingTask();\n      var cancellable = page.render(renderContext);\n      _this.renderer = cancellable;\n      return cancellable.promise.then(_this.onRenderSuccess)[\"catch\"](_this.onRenderError);\n    });\n    return _this;\n  }\n  _createClass(PageCanvasInternal, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.drawPageOnCanvas();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      var _this$props3 = this.props,\n        canvasBackground = _this$props3.canvasBackground,\n        devicePixelRatio = _this$props3.devicePixelRatio,\n        page = _this$props3.page,\n        renderForms = _this$props3.renderForms;\n      if (canvasBackground !== prevProps.canvasBackground || devicePixelRatio !== prevProps.devicePixelRatio || renderForms !== prevProps.renderForms) {\n        // Ensures the canvas will be re-rendered from scratch. Otherwise all form data will stay.\n        page.cleanup();\n        this.drawPageOnCanvas();\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.cancelRenderingTask();\n      var canvas = this.canvasElement.current;\n\n      /**\n       * Zeroing the width and height cause most browsers to release graphics\n       * resources immediately, which can greatly reduce memory consumption.\n       */\n      if (canvas) {\n        canvas.width = 0;\n        canvas.height = 0;\n      }\n    }\n  }, {\n    key: \"cancelRenderingTask\",\n    value: function cancelRenderingTask() {\n      if (this.renderer) {\n        this.renderer.cancel();\n        this.renderer = null;\n      }\n    }\n\n    /**\n     * Called when a page is rendered successfully.\n     */\n  }, {\n    key: \"devicePixelRatio\",\n    get: function get() {\n      var devicePixelRatio = this.props.devicePixelRatio;\n      return devicePixelRatio || getDevicePixelRatio();\n    }\n  }, {\n    key: \"renderViewport\",\n    get: function get() {\n      var devicePixelRatio = this.devicePixelRatio;\n      var _this$props4 = this.props,\n        page = _this$props4.page,\n        rotate = _this$props4.rotate,\n        scale = _this$props4.scale;\n      return page.getViewport({\n        scale: scale * devicePixelRatio,\n        rotation: rotate\n      });\n    }\n  }, {\n    key: \"viewport\",\n    get: function get() {\n      var _this$props5 = this.props,\n        page = _this$props5.page,\n        rotate = _this$props5.rotate,\n        scale = _this$props5.scale;\n      return page.getViewport({\n        scale: scale,\n        rotation: rotate\n      });\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var canvasRef = this.props.canvasRef;\n      return /*#__PURE__*/React.createElement(\"canvas\", {\n        className: \"react-pdf__Page__canvas\",\n        dir: \"ltr\",\n        ref: mergeRefs(canvasRef, this.canvasElement),\n        style: {\n          display: 'block',\n          userSelect: 'none'\n        }\n      });\n    }\n  }]);\n  return PageCanvasInternal;\n}(PureComponent);\nPageCanvasInternal.propTypes = {\n  canvasBackground: PropTypes.string,\n  canvasRef: isRef,\n  devicePixelRatio: PropTypes.number,\n  onRenderError: PropTypes.func,\n  onRenderSuccess: PropTypes.func,\n  page: isPage.isRequired,\n  renderForms: PropTypes.bool,\n  rotate: isRotate,\n  scale: PropTypes.number.isRequired\n};\nexport default function PageCanvas(props) {\n  return /*#__PURE__*/React.createElement(PageContext.Consumer, null, function (context) {\n    return /*#__PURE__*/React.createElement(PageCanvasInternal, _extends({}, context, props));\n  });\n}", "import _extends from \"@babel/runtime/helpers/esm/extends\";\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 _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\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); }; }\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; } }\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\nimport * as pdfjs from 'pdfjs-dist/build/pdf';\nimport PageContext from '../PageContext';\nimport { isCancelException, makePageCallback } from '../shared/utils';\nimport { isPage, isRotate } from '../shared/propTypes';\nexport var PageSVGInternal = /*#__PURE__*/function (_PureComponent) {\n  _inherits(PageSVGInternal, _PureComponent);\n  var _super = _createSuper(PageSVGInternal);\n  function PageSVGInternal() {\n    var _this;\n    _classCallCheck(this, PageSVGInternal);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"state\", {\n      svg: null\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onRenderSuccess\", function () {\n      _this.renderer = null;\n      var _this$props = _this.props,\n        onRenderSuccess = _this$props.onRenderSuccess,\n        page = _this$props.page,\n        scale = _this$props.scale;\n      if (onRenderSuccess) onRenderSuccess(makePageCallback(page, scale));\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onRenderError\", function (error) {\n      if (isCancelException(error)) {\n        return;\n      }\n      warning(error);\n      var onRenderError = _this.props.onRenderError;\n      if (onRenderError) onRenderError(error);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"renderSVG\", function () {\n      var page = _this.props.page;\n      _this.renderer = page.getOperatorList();\n      return _this.renderer.then(function (operatorList) {\n        var svgGfx = new pdfjs.SVGGraphics(page.commonObjs, page.objs);\n        _this.renderer = svgGfx.getSVG(operatorList, _this.viewport).then(function (svg) {\n          _this.setState({\n            svg: svg\n          }, _this.onRenderSuccess);\n        })[\"catch\"](_this.onRenderError);\n      })[\"catch\"](_this.onRenderError);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"drawPageOnContainer\", function (element) {\n      var svg = _this.state.svg;\n      if (!element || !svg) {\n        return;\n      }\n\n      // Append SVG element to the main container, if this hasn't been done already\n      if (!element.firstElementChild) {\n        element.appendChild(svg);\n      }\n      var _this$viewport = _this.viewport,\n        width = _this$viewport.width,\n        height = _this$viewport.height;\n      svg.setAttribute('width', width);\n      svg.setAttribute('height', height);\n    });\n    return _this;\n  }\n  _createClass(PageSVGInternal, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.renderSVG();\n    }\n\n    /**\n     * Called when a page is rendered successfully.\n     */\n  }, {\n    key: \"viewport\",\n    get: function get() {\n      var _this$props2 = this.props,\n        page = _this$props2.page,\n        rotate = _this$props2.rotate,\n        scale = _this$props2.scale;\n      return page.getViewport({\n        scale: scale,\n        rotation: rotate\n      });\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n      var _this$viewport2 = this.viewport,\n        width = _this$viewport2.width,\n        height = _this$viewport2.height;\n      return /*#__PURE__*/React.createElement(\"div\", {\n        className: \"react-pdf__Page__svg\"\n        // Note: This cannot be shortened, as we need this function to be called with each render.\n        ,\n        ref: function ref(_ref) {\n          return _this2.drawPageOnContainer(_ref);\n        },\n        style: {\n          display: 'block',\n          backgroundColor: 'white',\n          overflow: 'hidden',\n          width: width,\n          height: height,\n          userSelect: 'none'\n        }\n      });\n    }\n  }]);\n  return PageSVGInternal;\n}(PureComponent);\nPageSVGInternal.propTypes = {\n  onRenderError: PropTypes.func,\n  onRenderSuccess: PropTypes.func,\n  page: isPage.isRequired,\n  rotate: isRotate,\n  scale: PropTypes.number.isRequired\n};\nexport default function PageSVG(props) {\n  return /*#__PURE__*/React.createElement(PageContext.Consumer, null, function (context) {\n    return /*#__PURE__*/React.createElement(PageSVGInternal, _extends({}, context, props));\n  });\n}", "import _extends from \"@babel/runtime/helpers/esm/extends\";\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 _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\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; }\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; }\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); }; }\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; } }\nimport React, { createRef, PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport makeCancellable from 'make-cancellable-promise';\nimport invariant from 'tiny-invariant';\nimport warning from 'tiny-warning';\nimport * as pdfjs from 'pdfjs-dist/build/pdf';\nimport PageContext from '../PageContext';\nimport { cancelRunningTask } from '../shared/utils';\nimport { isPage, isRotate } from '../shared/propTypes';\nexport var TextLayerInternal = /*#__PURE__*/function (_PureComponent) {\n  _inherits(TextLayerInternal, _PureComponent);\n  var _super = _createSuper(TextLayerInternal);\n  function TextLayerInternal() {\n    var _this;\n    _classCallCheck(this, TextLayerInternal);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"state\", {\n      textContent: null\n    });\n    _defineProperty(_assertThisInitialized(_this), \"layerElement\", /*#__PURE__*/createRef());\n    _defineProperty(_assertThisInitialized(_this), \"endElement\", /*#__PURE__*/createRef());\n    _defineProperty(_assertThisInitialized(_this), \"loadTextContent\", function () {\n      var page = _this.props.page;\n      var cancellable = makeCancellable(page.getTextContent());\n      _this.runningTask = cancellable;\n      cancellable.promise.then(function (textContent) {\n        _this.setState({\n          textContent: textContent\n        }, _this.onLoadSuccess);\n      })[\"catch\"](function (error) {\n        _this.onLoadError(error);\n      });\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onLoadSuccess\", function () {\n      var onGetTextSuccess = _this.props.onGetTextSuccess;\n      var textContent = _this.state.textContent;\n      if (onGetTextSuccess) onGetTextSuccess(textContent);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onLoadError\", function (error) {\n      _this.setState({\n        textItems: false\n      });\n      warning(error);\n      var onGetTextError = _this.props.onGetTextError;\n      if (onGetTextError) onGetTextError(error);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onRenderSuccess\", function () {\n      var onRenderTextLayerSuccess = _this.props.onRenderTextLayerSuccess;\n      if (onRenderTextLayerSuccess) onRenderTextLayerSuccess();\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onRenderError\", function (error) {\n      warning(error);\n      var onRenderTextLayerError = _this.props.onRenderTextLayerError;\n      if (onRenderTextLayerError) onRenderTextLayerError(error);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onMouseDown\", function () {\n      var end = _this.endElement.current;\n      if (!end) {\n        return;\n      }\n      end.classList.add('active');\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onMouseUp\", function () {\n      var end = _this.endElement.current;\n      if (!end) {\n        return;\n      }\n      end.classList.remove('active');\n    });\n    return _this;\n  }\n  _createClass(TextLayerInternal, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var page = this.props.page;\n      invariant(page, 'Attempted to load page text content, but no page was specified.');\n      warning(parseInt(window.getComputedStyle(document.body).getPropertyValue('--react-pdf-text-layer'), 10) === 1, 'TextLayer styles not found. Read more: https://github.com/wojtekmaj/react-pdf#support-for-text-layer');\n      this.loadTextContent();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      var page = this.props.page;\n      if (prevProps.page && page !== prevProps.page) {\n        this.loadTextContent();\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      cancelRunningTask(this.runningTask);\n    }\n  }, {\n    key: \"viewport\",\n    get: function get() {\n      var _this$props = this.props,\n        page = _this$props.page,\n        rotate = _this$props.rotate,\n        scale = _this$props.scale;\n      return page.getViewport({\n        scale: scale,\n        rotation: rotate\n      });\n    }\n  }, {\n    key: \"unrotatedViewport\",\n    get: function get() {\n      var _this$props2 = this.props,\n        page = _this$props2.page,\n        scale = _this$props2.scale;\n      return page.getViewport({\n        scale: scale\n      });\n    }\n\n    /**\n     * It might happen that the page is rotated by default. In such cases, we shouldn't rotate\n     * text content.\n     */\n  }, {\n    key: \"rotate\",\n    get: function get() {\n      var _this$props3 = this.props,\n        page = _this$props3.page,\n        rotate = _this$props3.rotate;\n      return rotate - page.rotate;\n    }\n  }, {\n    key: \"renderTextLayer\",\n    value: function renderTextLayer() {\n      var _this2 = this;\n      var textContent = this.state.textContent;\n      if (!textContent) {\n        return null;\n      }\n      var container = this.layerElement.current;\n      var viewport = this.viewport;\n      var customTextRenderer = this.props.customTextRenderer;\n\n      // If another rendering is in progress, let's cancel it\n      cancelRunningTask(this.runningTask);\n      container.innerHTML = '';\n      var parameters = {\n        container: container,\n        textContent: textContent,\n        viewport: viewport\n      };\n      var cancellable = pdfjs.renderTextLayer(parameters);\n      this.runningTask = cancellable;\n      cancellable.promise.then(function () {\n        var end = document.createElement('div');\n        end.className = 'endOfContent';\n        container.append(end);\n        _this2.endElement.current = end;\n        if (customTextRenderer) {\n          var index = 0;\n          textContent.items.forEach(function (item, itemIndex) {\n            var child = _this2.layerElement.current.children[index];\n            var content = customTextRenderer(_objectSpread({\n              itemIndex: itemIndex\n            }, item));\n            child.innerHTML = content;\n            index += item.str && item.hasEOL ? 2 : 1;\n          });\n        }\n        _this2.onRenderSuccess();\n      })[\"catch\"](function (error) {\n        _this2.onRenderError(error);\n      });\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return (\n        /*#__PURE__*/\n        // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n        React.createElement(\"div\", {\n          className: \"react-pdf__Page__textContent textLayer\",\n          onMouseUp: this.onMouseUp,\n          onMouseDown: this.onMouseDown,\n          ref: this.layerElement\n        }, this.renderTextLayer())\n      );\n    }\n  }]);\n  return TextLayerInternal;\n}(PureComponent);\nTextLayerInternal.propTypes = {\n  customTextRenderer: PropTypes.func,\n  onGetTextError: PropTypes.func,\n  onGetTextSuccess: PropTypes.func,\n  onRenderTextLayerError: PropTypes.func,\n  onRenderTextLayerSuccess: PropTypes.func,\n  page: isPage.isRequired,\n  rotate: isRotate,\n  scale: PropTypes.number\n};\nexport default function TextLayer(props) {\n  return /*#__PURE__*/React.createElement(PageContext.Consumer, null, function (context) {\n    return /*#__PURE__*/React.createElement(TextLayerInternal, _extends({}, context, props));\n  });\n}", "import _extends from \"@babel/runtime/helpers/esm/extends\";\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 _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\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); }; }\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; } }\nimport React, { createRef, PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport makeCancellable from 'make-cancellable-promise';\nimport invariant from 'tiny-invariant';\nimport warning from 'tiny-warning';\nimport * as pdfjs from 'pdfjs-dist/build/pdf';\nimport DocumentContext from '../DocumentContext';\nimport PageContext from '../PageContext';\nimport { cancelRunningTask } from '../shared/utils';\nimport { isLinkService, isPage, isRotate } from '../shared/propTypes';\nexport var AnnotationLayerInternal = /*#__PURE__*/function (_PureComponent) {\n  _inherits(AnnotationLayerInternal, _PureComponent);\n  var _super = _createSuper(AnnotationLayerInternal);\n  function AnnotationLayerInternal() {\n    var _this;\n    _classCallCheck(this, AnnotationLayerInternal);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"state\", {\n      annotations: null\n    });\n    _defineProperty(_assertThisInitialized(_this), \"layerElement\", /*#__PURE__*/createRef());\n    _defineProperty(_assertThisInitialized(_this), \"loadAnnotations\", function () {\n      var page = _this.props.page;\n      var cancellable = makeCancellable(page.getAnnotations());\n      _this.runningTask = cancellable;\n      cancellable.promise.then(function (annotations) {\n        _this.setState({\n          annotations: annotations\n        }, _this.onLoadSuccess);\n      })[\"catch\"](function (error) {\n        _this.onLoadError(error);\n      });\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onLoadSuccess\", function () {\n      var onGetAnnotationsSuccess = _this.props.onGetAnnotationsSuccess;\n      var annotations = _this.state.annotations;\n      if (onGetAnnotationsSuccess) onGetAnnotationsSuccess(annotations);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onLoadError\", function (error) {\n      _this.setState({\n        annotations: false\n      });\n      warning(error);\n      var onGetAnnotationsError = _this.props.onGetAnnotationsError;\n      if (onGetAnnotationsError) onGetAnnotationsError(error);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onRenderSuccess\", function () {\n      var onRenderAnnotationLayerSuccess = _this.props.onRenderAnnotationLayerSuccess;\n      if (onRenderAnnotationLayerSuccess) onRenderAnnotationLayerSuccess();\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onRenderError\", function (error) {\n      warning(error);\n      var onRenderAnnotationLayerError = _this.props.onRenderAnnotationLayerError;\n      if (onRenderAnnotationLayerError) onRenderAnnotationLayerError(error);\n    });\n    return _this;\n  }\n  _createClass(AnnotationLayerInternal, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var page = this.props.page;\n      invariant(page, 'Attempted to load page annotations, but no page was specified.');\n      warning(parseInt(window.getComputedStyle(document.body).getPropertyValue('--react-pdf-annotation-layer'), 10) === 1, 'AnnotationLayer styles not found. Read more: https://github.com/wojtekmaj/react-pdf#support-for-annotations');\n      this.loadAnnotations();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      var _this$props = this.props,\n        page = _this$props.page,\n        renderForms = _this$props.renderForms;\n      if (prevProps.page && page !== prevProps.page || renderForms !== prevProps.renderForms) {\n        this.loadAnnotations();\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      cancelRunningTask(this.runningTask);\n    }\n  }, {\n    key: \"viewport\",\n    get: function get() {\n      var _this$props2 = this.props,\n        page = _this$props2.page,\n        rotate = _this$props2.rotate,\n        scale = _this$props2.scale;\n      return page.getViewport({\n        scale: scale,\n        rotation: rotate\n      });\n    }\n  }, {\n    key: \"renderAnnotationLayer\",\n    value: function renderAnnotationLayer() {\n      var annotations = this.state.annotations;\n      if (!annotations) {\n        return;\n      }\n      var _this$props3 = this.props,\n        imageResourcesPath = _this$props3.imageResourcesPath,\n        linkService = _this$props3.linkService,\n        page = _this$props3.page,\n        renderForms = _this$props3.renderForms;\n      var viewport = this.viewport.clone({\n        dontFlip: true\n      });\n      var parameters = {\n        annotations: annotations,\n        div: this.layerElement.current,\n        imageResourcesPath: imageResourcesPath,\n        linkService: linkService,\n        page: page,\n        renderForms: renderForms,\n        viewport: viewport\n      };\n      this.layerElement.current.innerHTML = '';\n      try {\n        pdfjs.AnnotationLayer.render(parameters);\n        this.onRenderSuccess();\n      } catch (error) {\n        this.onRenderError(error);\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return /*#__PURE__*/React.createElement(\"div\", {\n        className: \"react-pdf__Page__annotations annotationLayer\",\n        ref: this.layerElement\n      }, this.renderAnnotationLayer());\n    }\n  }]);\n  return AnnotationLayerInternal;\n}(PureComponent);\nAnnotationLayerInternal.propTypes = {\n  imageResourcesPath: PropTypes.string,\n  linkService: isLinkService.isRequired,\n  onGetAnnotationsError: PropTypes.func,\n  onGetAnnotationsSuccess: PropTypes.func,\n  onRenderAnnotationLayerError: PropTypes.func,\n  onRenderAnnotationLayerSuccess: PropTypes.func,\n  page: isPage,\n  renderForms: PropTypes.bool,\n  rotate: isRotate,\n  scale: PropTypes.number\n};\nvar AnnotationLayer = function AnnotationLayer(props) {\n  return /*#__PURE__*/React.createElement(DocumentContext.Consumer, null, function (documentContext) {\n    return /*#__PURE__*/React.createElement(PageContext.Consumer, null, function (pageContext) {\n      return /*#__PURE__*/React.createElement(AnnotationLayerInternal, _extends({}, documentContext, pageContext, props));\n    });\n  });\n};\nexport default AnnotationLayer;", "import React, { FunctionComponent, useState } from 'react';\nimport Modal, {ModalHeader, ModalBody} from '../../shared/ui/bootstrap/modal';\nimport { Document, Page, Outline, pdfjs } from 'react-pdf';\n\npdfjs.GlobalWorkerOptions.workerSrc = \"//cdnjs.cloudflare.com/ajax/libs/pdf.js/2.16.105/pdf.worker.js\";\n\nconst ImageSlider: FunctionComponent<any> = ({event, selectedImage, setSelectedImage}) => {\n  if(event == null) { return null }\n\n  const [currentPage, setCurrentPage] = useState(1)\n  const [totalPages, setTotalPages] = useState(-1)\n  const [loadProgress, setLoadProgress] = useState(0)\n  const [isImageZoomed, setImageZoomed] = useState(false);\n\n  const formatPercent = (ratio) => {\n    return Math.round(ratio) + '%';\n  }\n  const downloadFile = (link) => {\n    window.open(link)\n  }\n\n  const handleImageClick = () => {\n    setImageZoomed(!isImageZoomed);\n  };\n\n  const downloadLink = selectedImage ? selectedImage.file_link : null\n\n  return(\n    <Modal isOpen={selectedImage != null} modalId={\"image-gallery\"} modalClasses=\"modal-fullscreen\">\n      <ModalHeader title=\"\" onClose={(e) => setSelectedImage(null)} modalId=\"image-gallery\">\n        {downloadLink &&\n          <div className=\"btn btn-outline-light\" onClick={(e) => downloadFile(downloadLink)}>\n          Download\n          </div>\n        }\n      </ModalHeader>\n      <ModalBody>\n      {!isImageZoomed ? (\n        <>\n          <div className=\"splide__track\">\n            <ul className=\"splide__list\">\n              <li className=\"splide__slide\" style={{width: '100%', flexBasis: '100%'}}>\n                {selectedImage &&\n                  <>\n                    {selectedImage.type == \"pdf\" &&\n                      <>\n                        {totalPages > 0 &&\n                          <div className=\"modal-toolbar\">\n                            <div className=\"btn-group\">\n                              {currentPage > 1 &&\n                                <div onClick={() => setCurrentPage(currentPage-1)} className=\"btn btn-outline-light\">\n                                  <i className=\"icon fa fa-angle-left\"></i>\n                                  <span className=\"visually-hidden\">Prev</span>\n                                </div>\n                              }\n                              <div className=\"btn btn-outline-light\">\n                                Page {currentPage} / {totalPages}\n                              </div>\n                              {currentPage < totalPages &&\n                                <div onClick={() => setCurrentPage(currentPage+1)} className=\"btn btn-outline-light\">\n                                  <span className=\"visually-hidden\">Next</span>\n                                  <i className=\"icon fa fa-angle-right\"></i>\n                                </div>\n                              }\n                            </div>\n                          </div>\n                        }\n                        <Document file={selectedImage.file_link} loading={<div>Loading PDF {formatPercent(loadProgress)}</div>} onLoadProgress={({loaded, total}) => setLoadProgress((loaded / total) * 100) } onLoadSuccess={({numPages}) => { setTotalPages(numPages); setCurrentPage(1); }}>\n                          <Outline onItemClick={({pageNumber: itemPageNumber}) => setCurrentPage(itemPageNumber)} />\n                          <Page pageNumber={currentPage} />\n                        </Document>\n                      </>\n                    }\n                    {selectedImage.type == \"image\" &&\n                      <div className=\"fullscreen\" style={{ cursor: 'zoom-in' }} onClick={handleImageClick}>\n                        <img src={selectedImage.xl_link} className=\"object-contain\" />\n                      </div>\n                    }\n                    {selectedImage.type != \"image\" && selectedImage.type != \"pdf\" &&\n                      <div className=\"fullscreen\">\n                        <a href={selectedImage.file_link}>Download {selectedImage.file_name}</a>\n                      </div>\n                    }\n                  </>\n                }\n              </li>\n            </ul>\n          </div>\n          <ul id=\"thumbnails\" className=\"thumbnails\">\n            {event.images.map((img) =>\n              <li className=\"thumbnail\" key={img.id} onClick={(e) => setSelectedImage(img)}>\n                <img src={img.thumbnail_link} className=\"object-cover\" />\n              </li>\n            )}\n          </ul>\n        </>\n      ) : (\n        <div onClick={handleImageClick} style={{ cursor: 'zoom-out' }}>\n          {selectedImage &&\n            <>\n              {selectedImage.type == \"image\" &&\n                <img src={selectedImage.xl_link} className=\"w-100\" />\n              }\n            </>\n          }\n        </div>\n      )}\n      </ModalBody>\n    </Modal>\n  )\n}\n\nexport default ImageSlider", "import React, { useState, useEffect, FunctionComponent } from 'react';\nimport ObjectSummary from './show/ObjectSummary';\nimport FiltersSection from './show/FiltersSection';\nimport ObjectActions from './show/ObjectActions';\nimport EventsNav from './show/EventsNav';\nimport EventData from './show/EventData';\nimport ImageSlider from './show/ImageSlider';\n\nimport encodeQueryData from '../shared/api/encodeQueryData'\n\nimport { post, patch, get, del } from '../shared/api/ServerRequest'\nimport setBodyScrollable from '../shared/ui/bodyScrollable'\n\ninterface ObjectShowProps {\n  objectId: number\n  filters?: any\n  sections?: any\n  backToSearch: any\n  currentUserId?: number | null | undefined\n}\n\nconst ObjectShow: FunctionComponent<ObjectShowProps> = ({objectId, filters, sections, currentUserId}) => {\n  const [editMode, setEditMode] = useState<boolean>(!!currentUserId ? true : false)\n  const [objectData, setObjectData] = useState<any>(null)\n  const [events, setEvents] = useState<any>([])\n  const [initialEventCount, setInitialEventCount] = useState<number>(0)\n  const [loadingEvents, setLoadingEvents] = useState<boolean>(false)\n  const [eventsPage, setEventsPage] = useState<number>(1)\n  const [selectedEvent, setSelectedEvent] = useState<any>(null)\n  const [selectedModalImage, setModalImage] = useState<number | null>(null)\n  const [matchingEvents, setMatchingEvents] = useState<number[]|null>(null)\n  const [matchingEventsLength, setMatchingEventsLength] = useState<number|null>(null)\n  const [editedEventData, setEditedEventData] = useState<any>({})\n\n  const [eventsVisible, setEventsVisible] = useState<boolean>(false)\n  const [refsVisible, setRefsVisible] = useState<boolean>(false)\n\n  const handleEventsToggle = () => {\n    setEventsVisible((current) => !current);\n    setRefsVisible(false)\n    setBodyScrollable(eventsVisible);\n  }\n\n  const handleRefsToggle = () => {\n    setRefsVisible((current) => !current);\n    setEventsVisible(false)\n    setBodyScrollable(refsVisible);\n  }\n\n  const setBodyScrolling = (bodyScrollable) => {\n    if (!bodyScrollable) {\n      document.body.classList.add('overflow-hidden');\n    } else {\n      document.body.classList.remove('overflow-hidden');\n    }\n  }\n\n  const saveEvent = () => {\n    patch(`/event/${editedEventData.event_id}`, {event: editedEventData}).then((response) => {\n      // Remove any events that were being edited\n      setEvents((prevEvents) => prevEvents.filter((e) => e.id !== -1))\n      reloadEvent(response.event.event_id)\n      setSelectedEvent(response.event)\n      setEditMode(false)\n    })\n  }\n\n  const deleteEvent = () => {\n    if(confirm(\"Are you sure you want to delete this event?\")) {\n      del(`/event/${selectedEvent.id}`).then((response) => {\n        // Remove any events that were being edited\n        setEvents((prevEvents) => prevEvents.filter((e) => e.id != response.event.event_id))\n        setSelectedEvent(null)\n        setObjectData((prevData) => { return {...prevData, event_count: prevData.event_count - 1} })\n      })\n    }\n  }\n\n  const deleteObject = () => {\n    if(objectData.event_count > 0) {\n      alert(\"You can't delete an object that still has events, please delete or merge all events first.\")\n      return\n    }\n    if(confirm(\"Are you sure you want to delete this object?\")) {\n      del(`/objects/${objectData.id}`).then((response) => {\n        window.location.href = \"/objects\"\n      })\n    }\n  }\n\n  const cancelEdit = () => {\n    const newEvents = events.filter((e) => e.id !== -1)\n    setEvents(newEvents)\n    setEditMode(false)\n    setSelectedEvent(null)\n  }\n\n  const addNewEvent = () => {\n    const newEvent = {\n      id: -1,\n      event_id: -1,\n      obj_id: objectData.id,\n      event_type_string: \"New\",\n      images: []\n    }\n    setEditedEventData(newEvent)\n    setEvents([...events, newEvent])\n    setSelectedEvent(newEvent)\n    setEditMode(true)\n  }\n\n  const loadMoreEvents = () => {\n    if(events.length >= objectData.event_count) { return }\n\n    post(`/objects/${objectId}/events.json`, {page: eventsPage+1, offset: initialEventCount}).then((response) => {\n      setEvents([...events, ...response.events]);\n      if(selectedEvent == null && matchingEvents && matchingEvents.length > 0) {\n        const event = response.events.find((e) => e.id === matchingEvents[0])\n        if(event) { setSelectedEvent(event) }\n      }\n      setEventsPage(eventsPage+1);\n      setLoadingEvents(false);\n    })\n  }\n\n  const reloadEvent = (eventId) => {\n    return get(`/event/${eventId}.json`).then((response) => {\n      if(events.find((ev) => ev.id === eventId)) {\n        if(selectedEvent && selectedEvent.id === eventId) {\n          setSelectedEvent(response.event)\n        }\n        setEvents((prevEvents) => prevEvents.map((ev) => ev.id == eventId ? response.event : ev))\n      } else {\n        setEvents((prevEvents) => [...prevEvents, response.event]);\n        setObjectData((prevData) => { return {...prevData, event_count: prevData.event_count + 1} })\n      }\n    })\n  }\n\n  useEffect(() => {\n    if(selectedEvent) {\n      setEditedEventData(selectedEvent)\n    } else {\n      setEditedEventData({})\n    }\n  }, [selectedEvent])\n\n  const loadObject = () => {\n    return post(`/objects/${objectId}/show.json`, {filters: filters}).then((response) => {\n      setEditMode(false)\n      setObjectData(response.object)\n      setMatchingEvents(response.matching_events)\n      setEventsPage(0)\n      setEvents(response.events)\n      setLoadingEvents(false);\n      setInitialEventCount(response.events.length)\n\n      if(selectedEvent == null) {\n        if(response.events && response.events.length > 0) {\n          if(response.matching_events && response.matching_events.length > 0 ) {\n            const event = response.events.find((e) => e.id === response.matching_events[0])\n            if(event) { setSelectedEvent(event) }\n            setMatchingEventsLength(response.matching_events.length)\n          } else {\n            setSelectedEvent(response.events[0])\n            setMatchingEventsLength(0)\n          }\n        }\n      }\n    })\n  }\n\n  useEffect(() => {\n    if(initialEventCount && initialEventCount >= 5) {\n      loadMoreEvents()\n    }\n  }, [initialEventCount])\n\n  useEffect(() => {\n    loadObject()\n    // Update the window URL with the filters\n    const data = encodeQueryData(filters)\n    let url = `/objects/${objectId}`;\n    if(data.length > 0) { url = url + \"?\" + data }\n    window.history.pushState({filters: filters, page: 'show', objectId: objectId}, \"\", url);\n  }, [objectId])\n\n  if(objectData == null) { return null }\n\n  return(\n    <>\n      <div className=\"grid grid--col-start grid--col-end\">\n        <div className=\"grid-nav\">\n          <div className={`grid-nav__item ${ eventsVisible ? 'bg-primary text-white' : '' }`} onClick={handleEventsToggle}>\n            <div className=\"icon\">\n              <i className=\"fa-light fa-list\"></i>\n            </div>\n            <div className=\"label\">\n              Events\n            </div>\n          </div>\n          <div className={`grid-nav__item ${ refsVisible ? 'bg-primary text-white' : '' }`}  onClick={handleRefsToggle}>\n            <div className=\"icon\">\n              <i className=\"fa-light fa-image\"></i>\n            </div>\n            <div className=\"label\">\n              References\n            </div>\n          </div>\n        </div>\n        <div className={`grid__left grid__overlay ${eventsVisible ? 'grid__overlay-show' : ''}`} onClick={handleEventsToggle}>\n          <FiltersSection objectData={objectData} filters={filters} sections={sections} matchingEventsLength={matchingEventsLength} />\n          <EventsNav\n            objectData={objectData}\n            events={events}\n            selectedEvent={selectedEvent}\n            setSelectedEvent={setSelectedEvent}\n            matchingEvents={matchingEvents}\n            loadingEvents={loadingEvents}\n            loadMoreEvents={loadMoreEvents}\n            totalEvents={objectData ? objectData.event_count : 0}\n          />\n        </div>\n        <EventData\n          event={selectedEvent}\n          setModalImage={setModalImage}\n          setSelectedEvent={setSelectedEvent}\n          editMode={editMode}\n          saveEvent={saveEvent}\n          editedEventData={editedEventData}\n          setEditedEventData={setEditedEventData}\n          reloadEvent={reloadEvent}\n          refsVisible={refsVisible}\n          admin={!!currentUserId}\n        />\n        {objectData && objectData.event_count == 0 && !!currentUserId &&\n          <div className=\"row\" style={{marginTop: \"90px\"}}>\n            <div className=\"col-4\"></div>\n            <div className=\"col-8\">\n              This Object has no events. Click the grey button at the top right with the dropdown arrow to add events and to access other actions.\n            </div>\n          </div>\n        }\n      </div>\n\n      <ImageSlider event={selectedEvent} selectedImage={selectedModalImage} setSelectedImage={setModalImage} />\n\n      <ObjectActions\n        event={selectedEvent}\n        deleteEvent={deleteEvent}\n        objectId={objectId}\n        currentUserId={currentUserId}\n        editMode={editMode}\n        setEditMode={setEditMode}\n        saveEvent={saveEvent}\n        addNewEvent={addNewEvent}\n        cancelEdit={cancelEdit}\n        deleteObject={deleteObject}\n      />\n    </>\n  )\n}\nexport default ObjectShow", "import React, { useState, useEffect, FunctionComponent } from 'react';\nimport { createPortal } from 'react-dom';\n\n\nconst ObjectIndexActions = ({exportData, admin}) => {\n  return(\n    createPortal(\n        <div className=\"d-flex justify-content-end\">\n          {admin &&\n            <a href=\"/objects/new\" className=\"btn btn-light\">\n              New Object\n            </a>\n          }\n         </div>\n      , document.getElementById('topBarActions')\n    )\n  )\n}\n\nexport default ObjectIndexActions\n", "import React, { useState, useEffect, FunctionComponent } from 'react';\nimport { createPortal } from 'react-dom';\n\nconst Breadcrumbs = ({objectId, backToSearch}) => {\n  return(\n    createPortal(\n      <ol className=\"breadcrumb\">\n        <li className=\"first item-0\">\n          <a href=\"#\" onClick={(e) => backToSearch()}>Research Database</a>\n        </li>\n        {objectId ?\n          <>\n            <li className=\"item-1\">\n              <a href=\"#\" onClick={(e) => backToSearch()}>Objects & Artifacts</a>\n            </li>\n            <li className=\"last item-2\">\n              <span>KS-{objectId}</span>\n            </li>\n          </>\n          :\n          <li className=\"last item-1\">\n            <span>Objects & Artifacts</span>\n          </li>\n        }\n      </ol>\n      , document.getElementById('breadcrumb-list')\n    )\n  )\n}\n\nexport default Breadcrumbs\n", "import React from 'react';\nimport classNames from 'classnames';\n\nconst ActiveFilters = ({filters, sections, removeFilterOption, setFilters}) => {\n  const sectionsWithFilters = (): string[] => {\n    return Object.keys(filters).filter((section) => sections.some((s) => s.id == section) && filters[section] && filters[section].length > 0)\n  }\n\n  const sectionFilters = (sectionId) => {\n    const section = sections.find((sec) => sec.id === sectionId )\n    return filters[sectionId].map((id) => {\n      return section.options.find((option) => option.id === id)\n    })\n  }\n\n  return(\n    <>\n      {sectionsWithFilters().map((section) =>\n        <div className=\"active-filter__section\" key={section}>\n          <div className=\"label-text\">{section}</div>\n          <div className=\"pills\">\n            {sectionFilters(section).map((option) =>\n              <div className=\"pill\" key={option.id} onClick={(e) => removeFilterOption(section, option.id)}>\n                <span className=\"pill__category\">{section}:</span>\n                <span className=\"pill__close\">\n                  <i className=\"icon fa-solid fa-check\"></i>\n                </span>\n                <span className=\"pill__name\">{option.label}</span>\n              </div>\n            ).reduce((prev, curr) => [prev, <span className=\"pill__spacer fs-sm text-muted\">OR</span>, curr])}\n          </div>\n        </div>\n      )}\n      {filters['alias'] && filters['alias'].length > 0 &&\n        <div className=\"active-filter__section\">\n        <div className=\"label-text\">Alias</div>\n        <div className=\"pills\">\n          <div className=\"pill\" key={'alias'} onClick={() => setFilters({...filters, ...{alias: ''}}) }>\n            <span className=\"pill__category\">Alias:</span>\n            <span className=\"pill__close\">\n              <i className=\"icon fa-solid fa-check\"></i>\n            </span>\n            <span className=\"pill__name\">{filters['alias']}</span>\n          </div>\n        </div>\n      </div>\n      }\n      {(filters['event_before'] || filters['event_after']) &&\n        <div className=\"active-filter__section\">\n          <div className=\"label-text\">Event Dates</div>\n          <div className=\"pills\">\n            <div className=\"pill\" key={'dates'}>\n              <span className=\"pill__category\">Event Dates:</span>\n              <span className=\"pill__close\">\n                <i className=\"icon fa-solid fa-check\"></i>\n              </span>\n              {filters['event_after'] &&\n                <span className=\"pill__name\">After {(new Date(filters['event_after'])).toLocaleDateString()}</span>\n              }\n              {filters['event_after'] && filters['event_before'] &&\n                <span>and&nbsp;</span>\n              }\n              {filters['event_before'] &&\n                <span className=\"pill__name\">Before {(new Date(filters['event_before'])).toLocaleDateString()}</span>\n              }\n            </div>\n          </div>\n        </div>\n      }\n    </>\n  )\n}\n\nexport default ActiveFilters", "import React, { useState, useEffect, FunctionComponent } from 'react';\nimport KyreniaObjectFilters from './filters/KyreniaObjectFilters'\nimport KyreniaObjectResults from './results/KyreniaObjectResults'\nimport encodeQueryData from '../shared/api/encodeQueryData'\n\nimport { post, get } from '../shared/api/ServerRequest'\nimport ObjectShow from './ObjectShow';\nimport ObjectIndexActions from './results/ObjectIndexActions';\nimport Breadcrumbs from './results/Breadcrumbs';\nimport Pagination from './results/Pagination';\nimport ActiveFilters from './results/ActiveFilters'\nimport SetBodyScrollable from '../shared/ui/bodyScrollable'\n\ninterface ObjectsIndexProps {\n  initialFilters?: any\n  showAlert: boolean\n  currentUserId?: number | null | undefined\n}\n\nconst ObjectsIndex: FunctionComponent<ObjectsIndexProps> = ({initialFilters, currentUserId}) => {\n  const [results, setResults] = useState<any>(null)\n  const [filters, setFilters] = useState<any>(initialFilters || {})\n  const [sections, setSections] = useState<any>([])\n  const [selectedObject, setSelectedObject] = useState<any>(null)\n  const [currentPage, setCurrentPage] = useState<number>(1)\n  const [totalPages, setTotalPages] = useState<number>(1)\n  const [loading, setLoading] = useState<boolean>(false)\n\n  const [searchVisible, setSearchVisible] = useState<boolean>(false)\n\n  const handleSearchToggle = () => {\n    setSearchVisible((current) => !current);\n    SetBodyScrollable(searchVisible);\n  }\n\n  const removeFilterOption = (section, value) => {\n    const newFilters = {...filters}\n    newFilters[section] = newFilters[section].filter((e) => e !== value)\n    if(newFilters[section].length == 0) { delete newFilters[section] }\n    setFilters(newFilters)\n  }\n\n  const sectionsWithFilters = (): string[] => {\n    return Object.keys(filters).filter((section) => sections.some((s) => s.id == section) && filters[section] && filters[section].length > 0)\n  }\n\n  const onPopState = (event) => {\n    if(event.state && event.state.path == 'index') {\n      setSelectedObject(null)\n    } else if(event.state && event.state.path == 'show') {\n      setSelectedObject(event.state.objectId)\n    }\n  }\n\n  const setWindowHistory = () => {\n    // Update the window URL with the filters\n    const data = encodeQueryData(filters)\n    let url = window.location.pathname\n    if(data.length > 0) { url = url + \"?\" + data }\n    window.history.replaceState({filters: filters, page: currentPage, path: 'index'}, \"\", url);\n  }\n\n  useEffect(() => {\n    window.addEventListener('popstate', onPopState)\n    return () => {\n      window.removeEventListener('popstate', onPopState)\n    };\n  }, []);\n\n  useEffect(() => {\n    post('/objects/results', {filters: filters, page: currentPage}).then((response) => {\n      setResults(response.objects)\n      setTotalPages(response.pagination.total_pages)\n      setWindowHistory()\n    })\n   }, [currentPage])\n\n  useEffect(() => {\n    if(currentPage != 1) {\n      setCurrentPage(1)\n    } else {\n      post('/objects/results', {filters: filters, page: currentPage}).then((response) => {\n        setResults(response.objects)\n        setTotalPages(response.pagination.total_pages)\n        setWindowHistory()\n      })\n    }\n    post('/objects/filters', {filters: filters}).then((results) => {\n      setSections(results.sections)\n    })\n  }, [filters])\n\n  const exportData = () => {\n    const data = encodeQueryData(filters)\n    window.location.href = '/obj/results_export?filters=' + data;\n  }\n\n  return(\n    <>\n      {selectedObject ?\n        <ObjectShow objectId={selectedObject} filters={filters} sections={sections} backToSearch={() => setSelectedObject(null)} currentUserId={currentUserId} />\n      :\n        <div className=\"grid grid--index grid--col-start\">\n\n          <div className=\"grid-nav\">\n            <div className={`grid-nav__item ${ searchVisible ? 'bg-primary text-white' : '' }`} onClick={handleSearchToggle}>\n              <div className=\"icon\">\n                <i className=\"fa-light fa-search\"></i>\n              </div>\n              <div className=\"label\">\n                Search\n              </div>\n            </div>\n          </div>\n\n          <div className={`grid__left grid__overlay ${searchVisible ? 'grid__overlay-show' : ''}`}>\n            <div className=\"p-3\">\n              <KyreniaObjectFilters setFilters={setFilters} filters={filters} sections={sections} />\n            </div>\n          </div>\n\n          <div className=\"grid__main bg-white\">\n            <div className=\"active-filters border-bottom bg-light\">\n              <ActiveFilters filters={filters} sections={sections} removeFilterOption={removeFilterOption} setFilters={setFilters}/>\n            </div>\n\n            <div>\n              {results &&\n                <div>\n                  {sectionsWithFilters().length == 0 &&\n                    <div className=\"d-none d-lg-flex alert alert-warning rounded-0 mb-0\">\n                      <i className=\"icon fa-solid fa-search me-3\"></i>\n                      <div>Filter and find objects using the filters on the left or scroll through the table below.</div>\n                    </div>\n                  }\n                  <div className=\"table-responsive\">\n                    {loading &&\n                      <div className=\"text-center\" style={{height: '600px'}}>\n                        <div className=\"spinner-border text-primary mt-5\" role=\"status\">\n                          <span className=\"visually-hidden\">Loading...</span>\n                        </div>\n                      </div>\n                    }\n                    {!loading &&\n                      <KyreniaObjectResults objects={results} setSelectedObject={setSelectedObject} />\n                    }\n                    <Pagination currentPage={currentPage} totalPages={totalPages} setCurrentPage={setCurrentPage} />\n                  </div>\n                </div>\n              }\n            </div>\n          </div>\n          <ObjectIndexActions exportData={exportData} admin={!!currentUserId} />\n        </div>\n      }\n      <Breadcrumbs objectId={selectedObject} backToSearch={() => setSelectedObject(null)} />\n    </>\n  )\n}\nexport default ObjectsIndex", "import React, { FunctionComponent } from 'react';\nimport classNames from 'classnames';\n\ninterface EventsListProps {\n  events: Array<any>\n  loadMoreEvents: Function\n  loadingEvents: boolean\n  column: string\n  moveEvent: Function\n}\n\nconst EventsList: FunctionComponent<EventsListProps> = (opts) => {\n  const {events, loadMoreEvents, loadingEvents, moveEvent} = opts\n  const {column} = opts\n\n  const handleScroll = (e) => {\n    const node = e.target\n    const bottom = Math.abs(node.scrollHeight - (node.scrollTop + node.clientHeight)) <= 1\n    if (bottom) {\n      loadMoreEvents()\n    }\n  }\n\n  return(\n    <div>\n      <div className=\"scroll-y p-0\" onScroll={handleScroll}>\n        {events.map((event) =>\n          <div className=\"d-flex justify-content-between align-items-start border-bottom px-o py-3\" key={event.id}>\n            {column == \"right\" &&\n              <div className=\"btn btn-outline-dark btn-sm\" onClick={() => moveEvent(event)}>\n                <i className=\"icon fa-solid fa-chevron-left\"></i>\n                <span className=\"d-none d-xl-inline ms-2\">Merge</span>\n              </div>\n            }\n            <div className=\"flex-grow-1\">\n              <div className={ column == \"left\" ? \"pe-4\" : \"ps-4\" }>\n                <div>\n                  <strong>{event.event_type_string}</strong> - ALIAS: {event.alias}\n                </div>\n                <div className=\"meta-data\"  style={{fontSize: '0.75rem'}}>\n                  {event.event_end_formatted} / {event.obj_type_string} / {event.obj_material_string} / {event.obj_origin_string}\n                </div>\n\n                { event.images.length > 0 &&\n                  <div className=\"scroll-x media media--sm d-flex justify-content-start mt-2\">\n                    {event.images.slice(0,7).map((img, index) =>\n                      <div className=\"media__item me-2\" key={img.file_name}>\n                        {[\"image\", \"pdf\"].includes(img.type) &&\n                          <>\n                            <figure key={img.md_link}>\n                              <a href={img.md_link} target=\"_blank\">\n                                <img src={img.md_link} className=\"w-100\" />\n                              </a>\n                            </figure>\n                          </>\n                        }\n                        {![\"image\", \"pdf\"].includes(img.type) &&\n                          <>\n                            <figure key={img.md_link}>\n                              <a href={img.file_link} target=\"_blank\">\n                                <img src={img.md_link} className=\"w-100\" />\n                              </a>\n                            </figure>\n                          </>\n                        }\n                      </div>\n                    )}\n                  </div>\n                }\n              </div>\n            </div>\n            {column == \"left\" &&\n              <div className=\"btn btn-outline-dark btn-sm\" onClick={() => moveEvent(event)}>\n                <span className=\"d-none d-xl-inline me-2\">Merge</span>\n                <i className=\"icon icon--right fa-solid fa-chevron-right\"></i>\n              </div>\n            }\n          </div>\n        )}\n        {loadingEvents &&\n          <div className=\"fa fa-spinner fa-spin fa-2x\"></div>\n        }\n      </div>\n    </div>\n  )\n}\n\nexport default EventsList", "import { Modal } from 'bootstrap';\nimport classNames from 'classnames';\nimport React, { FunctionComponent, useEffect, useState } from 'react';\n\nimport { post, patch, del } from '../shared/api/ServerRequest'\nimport EventsList from './merge/EventsList';\n\nconst MergeObjects : FunctionComponent<any> = ({initialLeftObjectId, initialRightObjectId}) => {\n  const [leftObjectId, setLeftObjectId] = useState<number|null>(initialLeftObjectId)\n  const [leftObject, setLeftObject] = useState<any>({})\n\n  const [rightObjectId, setRightObjectId] = useState<number|null>(initialRightObjectId)\n  const [rightObject, setRightObject] = useState<any>({})\n\n  const [leftObjectEvents, setLeftObjectEvents] = useState<any>([])\n  const [leftEventsPage, setLeftEventsPage] = useState<number>(1)\n  const [rightObjectEvents, setRightObjectEvents] = useState<any>([])\n  const [rightEventsPage, setRightEventsPage] = useState<number>(1)\n\n  const loadObject = (id) => {\n    return post(`/objects/${id}/show.json`, {})\n  }\n\n  useEffect(() => {\n    if(leftObjectId) {\n      loadLeftObject()\n    }\n  }, [initialLeftObjectId])\n\n  const loadMoreEvents = (events, objectData, page) => {\n    if(events.length >= objectData.event_count) { return }\n\n    post(`/objects/${objectData.id}/events.json`, {page: page+1}).then((response) => {\n      if(objectData.id === leftObject.id) {\n        setLeftObjectEvents([...events, ...response.events]);\n        setLeftEventsPage(page+1);\n      } else if(objectData.id == rightObject.id) {\n        setRightObjectEvents([...events, ...response.events]);\n        setRightEventsPage(page+1);\n      }\n    })\n  }\n\n  const loadLeftObject = () => {\n    loadObject(leftObjectId).then((resp) => {\n      setLeftObject(resp.object)\n      setLeftObjectEvents(resp.events)\n      setLeftEventsPage(1)\n    }).catch((err) => {\n      alert(\"object not found\")\n    })\n  }\n\n  const loadRightObject = () => {\n    loadObject(rightObjectId).then((resp) => {\n      setRightObject(resp.object)\n      setRightObjectEvents(resp.events)\n      setRightEventsPage(1)\n    }).catch((err) => {\n      alert(\"object not found\")\n    })\n  }\n\n  const deleteObject = (id) => {\n    if(confirm(\"Are you SURE you want to delete this object?\")) {\n      del(`/objects/${id}`).then((resp) => {\n        setRightObject(null)\n        setRightObjectEvents([])\n        setRightEventsPage(1)\n      })\n    }\n  }\n\n  const moveEventToLeftObject = (event) => {\n    post('/events/move', {destination: leftObject.id, event_id: event.id}).then((response) => {\n      setLeftObjectEvents([event, ...leftObjectEvents])\n      setRightObjectEvents(rightObjectEvents.filter((ev) => ev.id !== event.id))\n    })\n  }\n\n  const moveEventToRightObject = (event) => {\n    post('/events/move', {destination: rightObject.id, event_id: event.id}).then((response) => {\n      setRightObjectEvents([event, ...rightObjectEvents])\n      setLeftObjectEvents(leftObjectEvents.filter((ev) => ev.id !== event.id))\n    })\n  }\n\n  return(\n    <div className=\"container-fluid pt-4\">\n      <div className=\"card p-4 mb-4\">\n        <h1 className=\"h6\">Merge or Delete Objects</h1>\n        <ol className=\"mb-0\">\n          <li>Enter an object id in the left input and click \"Load Object\"</li>\n          <li>Enter an object id in the right input and click \"Load Object\"</li>\n          <li>Move events from one object to the other by clicking the \"Move\" button on the event</li>\n          <li>You can also delete an object by clicking the \"Delete Object\" button</li>\n        </ol>\n      </div>\n      <div className=\"row\">\n        <div className=\"col-6\">\n          <div className=\"card\">\n            <div className=\"p-3\">\n              <div className=\"row\">\n                <div className=\"col-md-6 col-xl-9\">\n                  <input placeholder=\"Object ID\" className=\"form-control\" value={leftObjectId ? leftObjectId.toString() : \"\"} onChange={(e) => setLeftObjectId(parseInt(e.target.value)) }/>\n                </div>\n                <div className=\"col-md-6 col-xl-3\">\n                  <button onClick={(e) => loadLeftObject() } className=\"btn btn-primary btn-block w-100\">\n                    Load&nbsp;Object\n                  </button>\n                </div>\n              </div>\n            </div>\n\n            {leftObject && leftObject.id &&\n              <div className=\"border-top\">\n                <div className=\"p-3 border-bottom\">\n                  <div>\n                    <strong>Object ID {leftObject.id}</strong>\n                  </div>\n                  <div>{leftObject.obj_desc}</div>\n                </div>\n                <div className=\"px-3\">\n                  <EventsList\n                    column=\"left\"\n                    events={leftObjectEvents}\n                    loadingEvents={false}\n                    loadMoreEvents={() => loadMoreEvents(leftObjectEvents, leftObject, leftEventsPage)}\n                    moveEvent={moveEventToRightObject}\n                  />\n                </div>\n                <div className=\"p-3 bg-danger-200 border-top text-center\">\n                  <button onClick={() => deleteObject(leftObject.id)} className=\"btn btn-outline-danger\">Delete Object</button>\n                </div>\n              </div>\n            }\n          </div>\n        </div>\n        <div className=\"col-6\">\n          <div className=\"card\">\n            <div className=\"p-3\">\n              <div className=\"row\">\n                <div className=\"col-md-6 col-xl-9\">\n                  <input placeholder=\"Object ID\" className=\"form-control\" value={rightObjectId ? rightObjectId.toString() : \"\"} onChange={(e) => setRightObjectId(parseInt(e.target.value)) }/>\n                </div>\n                <div className=\"col-md-6 col-xl-3\">\n                  <button onClick={(e) => loadRightObject() } className=\"btn btn-primary btn-block w-100\">\n                    Load&nbsp;Object\n                  </button>\n                </div>\n              </div>\n            </div>\n\n            {rightObject && rightObject.id &&\n              <div className=\"border-top\">\n                <div className=\"p-3 border-bottom\">\n                  <div>\n                    <strong>Object ID {rightObject.id}</strong>\n                  </div>\n                  <div>{rightObject.obj_desc}</div>\n                </div>\n                <div className=\"px-3\">\n                  <EventsList\n                    column=\"right\"\n                    events={rightObjectEvents}\n                    loadingEvents={false}\n                    loadMoreEvents={() => loadMoreEvents(rightObjectEvents, rightObject, rightEventsPage)}\n                    moveEvent={moveEventToLeftObject}\n                  />\n                </div>\n                <div className=\"p-3 bg-danger-200 border-top text-center\">\n                  <button onClick={() => deleteObject(rightObject.id)} className=\"btn btn-outline-danger\">Delete Object</button>\n                </div>\n              </div>\n            }\n          </div>\n        </div>\n      </div>\n    </div>\n  )\n}\n\nexport default MergeObjects", "import React, {FunctionComponent, useEffect, useState} from 'react';\nimport classNames from 'classnames';\nimport { post, get } from '../../shared/api/ServerRequest';\n\nimport Autocomplete from '../../shared/ui/bootstrap/autocomplete';\nimport Modal, {ModalHeader, ModalBody, ModalFooter} from '../../shared/ui/bootstrap/modal';\n\nimport debounce from '../../shared/ui/debouce';\n\ninterface EditEntryProps {\n  entry: any\n  isOpen: boolean\n  closeModal: any\n}\n\nconst EditEntry : FunctionComponent<EditEntryProps> = ({closeModal, entry, isOpen}) => {\n  const [entryName, setEntryName] = useState<string>(\"\")\n  const [entryDescription, setEntryDescription] = useState<string>(\"\")\n\n  const removeEntry = () => {\n    const data = {\n      entry_id: entry.id\n    }\n    post('/exhibitions/remove_entry', data).then((result) => {\n      closeModal(true)\n    })\n  }\n\n  const updateEntry = () => {\n    const data = {\n      entry_id: entry.id,\n      image_id: entry.image.id,\n      name: entryName,\n      description: entryDescription\n    }\n    post('/exhibitions/update_entry', data).then((result) => {\n      closeModal(true)\n    })\n  }\n\n  useEffect(() => {\n    setEntryName(entry.name)\n    setEntryDescription(entry.description)\n  }, [entry])\n\n  return(\n    <Modal isOpen={isOpen} modalId=\"exhibitions-search\" modalClasses=\"modal-fullscreen\">\n      <ModalHeader modalId=\"exhibitions-search\" onClose={(e) => closeModal(false)}  title=\"Exhibitions\"></ModalHeader>\n      <ModalBody>\n        <div className=\"row\">\n          <div className=\"col-lg-3\">\n            <div className=\"f-card\">\n              <div className=\"f-card__heading p-3 d-flex justify-content-between align-items-center\">\n                <span className=\"f-card__heading-label\">Edit</span>\n              </div>\n              <div className=\"px-3 mb-2\">\n                <div className=\"form-floating mb-3\">\n                  <input className=\"form-control\" value={entryName} onChange={(e) => setEntryName(e.target.value)} />\n                  <label>Name</label>\n                </div>\n                <div className=\"form-floating mb-3\">\n                  <textarea className=\"form-control\" value={entryDescription} onChange={(e) => setEntryDescription(e.target.value)} style={{'height': '5rem'}}/>\n                  <label>Description</label>\n                </div>\n              </div>\n            </div>\n            <div className=\"f-card p-3\">\n              <button onClick={(e) => updateEntry()} className=\"btn btn-primary w-100 mb-3\">\n                Update Information\n              </button>\n              <button onClick={(e) => removeEntry()} className=\"btn btn-danger w-100 mb-0\">\n                Remove from Exhibition\n              </button>\n            </div>\n          </div>\n\n          <div className=\"col-lg-9\">\n            <span key={entry.image.file_name}>\n              {[\"image\", \"pdf\"].includes(entry.image.type) &&\n                <>\n                  <figure key={entry.image.md_link}>\n                    <img src={entry.image.md_link} />\n                  </figure>\n                </>\n              }\n              {![\"image\", \"pdf\"].includes(entry.image.type) &&\n                <>\n                  <figure key={entry.image.md_link}>\n                    <a href={entry.image.file_link}>\n                      <img src={entry.image.md_link} />\n                    </a>\n                  </figure>\n                </>\n              }\n            </span>\n          </div>\n        </div>\n      </ModalBody>\n      <ModalFooter>\n        <button onClick={(e) => closeModal(false)} className=\"btn btn-light\">Cancel</button>\n      </ModalFooter>\n    </Modal>\n  )\n}\n\nexport default EditEntry", "import React, {FunctionComponent, useEffect, useState} from 'react';\nimport classNames from 'classnames';\nimport { post, get } from '../../shared/api/ServerRequest';\n\nimport Modal, {ModalHeader, ModalBody, ModalFooter} from '../../shared/ui/bootstrap/modal';\n\nimport debounce from '../../shared/ui/debouce';\n\ninterface ViewEntryProps {\n  entry: any\n  isOpen: boolean\n  closeModal: any\n}\n\nconst ViewEntry : FunctionComponent<ViewEntryProps> = ({closeModal, entry, isOpen}) => {\n\n  return(\n    <Modal isOpen={isOpen} modalId=\"image-view\" modalClasses=\"modal-fullscreen\">\n      <ModalHeader modalId=\"image-view\" onClose={(e) => closeModal(false)} title={entry.name}></ModalHeader>\n      <ModalBody>\n        <div key={entry.image.file_name} className=\"w-100\">\n          {[\"image\", \"pdf\"].includes(entry.image.type) &&\n            <>\n              <figure key={entry.image.md_link}>\n                <img src={entry.image.md_link} style={{width: '100%'}} />\n              </figure>\n            </>\n          }\n          {![\"image\", \"pdf\"].includes(entry.image.type) &&\n            <>\n              <figure key={entry.image.md_link}>\n                <a href={entry.image.file_link}>\n                  <img src={entry.image.md_link} style={{width: '100%'}}/>\n                </a>\n              </figure>\n            </>\n          }\n        </div>\n      </ModalBody>\n      <ModalFooter>\n        <button onClick={(e) => closeModal(false)} className=\"btn btn-light\">Close</button>\n      </ModalFooter>\n    </Modal>\n  )\n}\n\nexport default ViewEntry", "import React, {FunctionComponent, useEffect, useState} from 'react';\nimport { post, get } from '../../shared/api/ServerRequest';\n\nimport Modal, {ModalHeader, ModalBody, ModalFooter} from '../../shared/ui/bootstrap/modal';\n\nimport debounce from '../../shared/ui/debouce';\n\ninterface EntryObjectsProps {\n  entry: any\n  isOpen: boolean\n  closeModal: any\n}\n\nconst EntryObjects : FunctionComponent<EntryObjectsProps> = ({closeModal, entry, isOpen}) => {\n  const [objects, setObjects] = useState<any>([])\n\n  const getObjects = () => {\n    get(`/exhibition_entry/${entry.id}/objects`).then((response) => {\n      setObjects(response.objects)\n    });\n  }\n\n  useEffect(() => {\n    setObjects([])\n    if(isOpen) {\n      getObjects()\n    }\n  }, [isOpen])\n\n  const exhibitionObject = objects[0]\n  const associatedObjects = objects.slice(1)\n\n  return(\n    <Modal isOpen={isOpen} modalId=\"exhibitions-search\" modalClasses=\"modal-fullscreen\">\n      <ModalHeader modalId=\"exhibitions-search\" onClose={(e) => closeModal(false)}  title=\"Exhibitions\"></ModalHeader>\n      <ModalBody>\n        <div className=\"container\">\n          <div className=\"row\">\n            <div className=\"col-12 col-lg-5 col-xl-4\">\n              <img src={entry.image.md_link} className=\"w-100 position-sticky\" style={{top: 0}} />\n            </div>\n            <div className=\"col-12 col-lg-7 col-xl-8\">\n              {exhibitionObject &&\n                <>\n                  <h2 className=\"h4 mb-3\">\n                    Exhibition Object\n                  </h2>\n                  <table className=\"table table-dark table-sm\">\n                    <thead className=\"bg-dark\">\n                      <tr className=\"bg-dark\">\n                        <th className=\"bg-dark\" style={{width: \"6rem\"}}>ID</th>\n                        <th className=\"bg-dark\" style={{width: \"8rem\"}}>Type</th>\n                        <th className=\"bg-dark\">Aliases</th>\n\n                        <th className=\"bg-dark\" style={{width: \"6rem\"}}>View</th>\n                      </tr>\n                    </thead>\n                    <tbody>\n                      <tr>\n                        <td>\n                          KS-{exhibitionObject.id}\n                        </td>\n                        <td>\n                          {exhibitionObject.current_type_name}\n                        </td>\n                        <td>\n                          {exhibitionObject.aliases.join(\", \")}\n                        </td>\n                        <td>\n                          <a href={`/objects/${exhibitionObject.id}`} target=\"_blank\" className=\"btn btn-primary btn-sm\">View</a>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </>\n              }\n\n              {associatedObjects.length > 0 &&\n                <>\n                  <h2 className=\"h4 my-3\">\n                    Other Associated Objects\n                  </h2>\n                  <table className=\"table table-dark table-sm\">\n                    <thead className=\"bg-dark\">\n                      <tr className=\"bg-dark\">\n                        <th className=\"bg-dark\" style={{width: \"6rem\"}}>ID</th>\n                        <th className=\"bg-dark\" style={{width: \"8rem\"}}>Type</th>\n                        <th className=\"bg-dark\">Aliases</th>\n                        <th className=\"bg-dark\" style={{width: \"6rem\"}}>View</th>\n                      </tr>\n                    </thead>\n                    <tbody>\n                      {associatedObjects.map((object) =>\n                        <tr key={object.id}>\n                          <td>\n                            KS-{object.id}\n                          </td>\n                          <td>\n                            {object.current_type_name}\n                          </td>\n                          <td>\n                            {object.aliases.join(\", \")}\n                          </td>\n                          <td>\n                            <a href={`/objects/${object.id}`} target=\"_blank\" className=\"btn btn-primary btn-sm\">View</a>\n                          </td>\n                        </tr>\n                      )}\n                    </tbody>\n                  </table>\n                </>\n              }\n            </div>\n          </div>\n        </div>\n      </ModalBody>\n      <ModalFooter>\n        <button onClick={(e) => closeModal(false)} className=\"btn btn-light\">Cancel</button>\n      </ModalFooter>\n    </Modal>\n  )\n}\n\nexport default EntryObjects", "import React, { useState, useEffect, FunctionComponent } from 'react';\nimport EditEntry from './entry_edit';\nimport ViewEntry from './entry_view';\nimport EntryObjects from './entry_objects';\n\ninterface ExhibitionEntryProps {\n  entry: any\n  refresh: Function\n  canMoveUp: boolean\n  moveUp: Function\n  canMoveDown: boolean\n  moveDown: Function\n}\n\nconst ExhibitionEntry: FunctionComponent<ExhibitionEntryProps> = ({ entry, refresh, canMoveUp, moveUp, canMoveDown, moveDown }) => {\n  const [editOpen, setEditOpen] = useState<boolean>(false)\n  const [viewOpen, setViewOpen] = useState<boolean>(false)\n  const [objectsOpen, setObjectsOpen] = useState<boolean>(false)\n\n  const closeEntryObjects = (doRefresh: boolean) => {\n    if(doRefresh) {\n      refresh()\n    }\n    setObjectsOpen(false)\n  }\n\n  const closeEdit = (doRefresh: boolean) => {\n    if(doRefresh) {\n      refresh()\n    }\n    setEditOpen(false)\n  }\n\n  const closeView = () => {\n    setViewOpen(false)\n  }\n\n  return(\n    <div className=\"row align-items-center justify-content-center cycle-justify\" key={entry.id}>\n      <div className=\"col-12 col-lg-7 col-xxl-6\">\n        {entry.image &&\n          <div onClick={(e) => setViewOpen(true)}>\n            <figure className=\"ratio ratio-1x1 d-none d-lg-block\">\n              <img src={entry.image.md_link} className=\"object-contain\" />\n            </figure>\n\n            <figure className=\"d-lg-none\">\n              <img src={entry.image.md_link} className=\"w-100\" />\n            </figure>\n          </div>\n        }\n      </div>\n      <div className=\"col-12 col-lg-4 col-xxl-3 pb-3 pt-lg-5 image-description\">\n        <div className=\"show-on-hover\">\n          <div className=\"show-on-hover__child mb-1 text-light\">\n            <span onClick={(e) => setEditOpen(true)} className=\"me-2\">Edit</span>\n            {canMoveUp &&\n              <>\n                <span onClick={(e) => moveUp()} className=\"mx-2\">\n                  Up\n                  <i className=\"fa-thin fa-angle-up ms-1\"></i>\n                </span>\n              </>\n            }\n            {canMoveDown &&\n              <>\n                <span onClick={(e) => moveDown()} className=\"mx-2\">\n                  Move Down\n                  <i className=\"fa-thin fa-angle-down ms-1\"></i>\n                </span>\n              </>\n            }\n          </div>\n          <h3 className=\"h4 fw-light\">{entry.name}</h3>\n          {entry.description}\n        </div>\n\n        <div className=\"small border-top mt-4 pt-4 d-none\">\n          <div className=\"d-none\">\n            Show associate name, Link to object/event - Object (KS-xxxx)\n          </div>\n          {false && entry.has_associated_objects &&\n            <div onClick={(e) => setObjectsOpen(true)} className=\"form-group f-search form-dark\">\n              <i className=\"icon fa-solid fa-search\"></i>\n              <input type=\"search\" placeholder=\"Search for an object in this image\" className=\"form-control\" />\n            </div>\n          }\n        </div>\n      </div>\n      <EntryObjects entry={entry} isOpen={objectsOpen} closeModal={closeEntryObjects} />\n      <EditEntry entry={entry} isOpen={editOpen} closeModal={closeEdit} />\n      <ViewEntry entry={entry} isOpen={viewOpen} closeModal={closeView} />\n    </div>\n  )\n}\nexport default ExhibitionEntry", "import React, {FunctionComponent, useEffect, useState} from 'react';\nimport classNames from 'classnames';\nimport { post } from '../../shared/api/ServerRequest';\n\nimport Autocomplete from '../../shared/ui/bootstrap/autocomplete';\nimport Modal, {ModalHeader, ModalBody, ModalFooter} from '../../shared/ui/bootstrap/modal';\n\nimport debounce from '../../shared/ui/debouce';\n\ninterface ImageSearchProps {\n  section: any\n  isOpen: boolean\n  closeModal: any\n}\n\nconst ImageSearch : FunctionComponent<ImageSearchProps> = ({closeModal, section, isOpen}) => {\n  const [filterData, setFilterData] = useState<any>({})\n  const [filters, setFilters] = useState<any>({})\n  const [images, setImages] = useState<any>([])\n  const [pageCount, setPageCount] = useState(0)\n  const [currentPaage, setCurrentPage] = useState(0)\n  const [selectedImages, setSelectedImages] = useState<any>([])\n  const [entryName, setEntryName] = useState<string>(\"\")\n  const [entryDescription, setEntryDescription] = useState<string>(\"\")\n\n  const mergeFilter = (data) => {\n    setFilters({...filters, ...data})\n  }\n\n  const imageSelected = (img) => {\n    return !!selectedImages.find((i) => i.id === img.id )\n  }\n\n  const toggleImageSelection = (img) => {\n    if(imageSelected(img)) {\n      const newImages = selectedImages.filter((i) => i.id !== img.id)\n      setSelectedImages(newImages)\n    } else {\n      setSelectedImages(selectedImages.concat(img))\n    }\n  }\n\n  const addImageToExhibition = () => {\n    selectedImages.map((img) => {\n      const data = {\n        image_id: img.id,\n        exhibition_id: section.exhibition_id,\n        section_id: section.id,\n        name: entryName,\n        description: entryDescription\n      }\n      post('/exhibitions/add_image', data).then((result) => {\n        closeModal(true)\n      })\n    })\n  }\n\n  useEffect(() => {\n    post('/images/filter_data', {filters: filters}).then((results) => {\n      setFilterData(results.filter_data)\n    })\n  }, [])\n\n  useEffect(() => {\n    debounce(() => {\n      post('/images/search', {filters: filters}).then((results) => {\n        setImages(results.images)\n      //  setPageCount(results.page_count)\n      //  setCurrentPage(results.current_page)\n      })\n    }, 300)\n  }, [filters])\n\n  return(\n    <Modal isOpen={isOpen} modalId=\"image-search\" modalClasses=\"modal-fullscreen\">\n      <ModalHeader modalId=\"image-search\" onClose={(e) => closeModal(false)}  title=\"Image Search\"></ModalHeader>\n      <ModalBody>\n        <div className=\"row\">\n          <div className=\"col-3\">\n            <div className=\"f-card\">\n              <div className=\"f-card__heading p-3 d-flex justify-content-between align-items-center\">\n                <span className=\"f-card__heading-label\">Filters</span>\n              </div>\n\n              <div className=\"px-3 mb-2\">\n                <div className=\"f-search\">\n                  <i className=\"icon fa-solid fa-search\"></i>\n                  <input className=\"form-control\" value={filters.text || \"\"} onChange={(e) => mergeFilter({text: e.target.value})} placeholder=\"File Name\" />\n                </div>\n              </div>\n\n              <div className=\"px-3 mb-2\">\n                <div className=\"f-select\">\n                  <div className=\"form-floating\">\n                    <Autocomplete options={filterData.cat_sources} value={filters.catalogue_source} onChange={(value) => mergeFilter({catalogue_source: value})} placeholderText=\"Catalogue Source\" />\n                  </div>\n                </div>\n              </div>\n\n              <div className=\"px-3 mb-2 \">\n                <div className=\"f-select\">\n                  <div className=\"form-floating\">\n                    <Autocomplete options={filterData.catalogues} value={filters.catalogue_id} onChange={(value) => mergeFilter({catalogue_id: value})} placeholderText=\"Catalogue\" />\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n          <div className=\"col-9\">\n            <div className=\"row\">\n              {images && images.map((img) =>\n                <div className=\"col-3 mb-4\" key={img.id}>\n                  <div className={classNames('card', {'border border-primary border-3': imageSelected(img)})} onClick={() => toggleImageSelection(img)}>\n                    <figure className=\"position-relative mb-0\">\n                      <div className=\"ratio ratio-4x3 rounded-top\" style={{'backgroundColor': '#aab6cd'}}>\n                        <img src={img.md_link} className=\"rounded-top object-cover\" />\n                      </div>\n                      <span className=\"image-badge position-absolute\">\n                        {img.reference_ids.length} Events\n                      </span>\n                    </figure>\n                    <div className=\"py-2 px-3 text-dark\">\n                      <a href={img.md_link} target=\"_blank\" className=\"d-block\">\n                        {img.file_name}\n                      </a>\n                      <div>{img.catalogue_name}</div>\n                    </div>\n\n                  </div>\n                </div>\n              )}\n            </div>\n          </div>\n        </div>\n      </ModalBody>\n      <ModalFooter>\n        <button onClick={(e) => closeModal(false)} className=\"btn btn-light\">Cancel</button>\n        <button onClick={(e) => addImageToExhibition()} className=\"btn btn-primary\">Add To Exhibition</button>\n      </ModalFooter>\n    </Modal>\n  )\n}\n\nexport default ImageSearch", "import React, { useState, useEffect, FunctionComponent } from 'react';\n\nimport ExhibitionEntry from './entry';\nimport EditEntry from './entry_edit';\nimport ImageSearch from './image_search';\nimport { post } from '../../shared/api/ServerRequest';\n\ninterface ExhibitionSectionProps {\n  section: any\n  refresh: Function\n}\n\nconst ExhibitionSection: FunctionComponent<ExhibitionSectionProps> = ({ section, refresh }) => {\n  const [addImageOpen, setAddImageOpen] = useState<boolean>(false)\n\n  const closeImageModal = (doRefresh: boolean) => {\n    setAddImageOpen(false)\n    if(doRefresh) {\n      refresh()\n    }\n  }\n\n  const moveUp = (entry: any) => {\n    // Move the entry up in the array of entries\n    let entries = section.entries\n    let index = entries.indexOf(entry)\n    if(index > 0) {\n      let temp = entries[index - 1]\n      entries[index - 1] = entry\n      entries[index] = temp\n    }\n    const order = entries.map((e: any) => e.id)\n    post(`/exhibitions/order_entries`, { section_id: section.id, entries: order}).then((response) => {\n      refresh()\n    })\n  }\n\n  const moveDown = (entry: any) => {\n    // Move the entry down in the array of entries\n    let entries = section.entries\n    let index = entries.indexOf(entry)\n    if(index < entries.length - 1) {\n      let temp = entries[index + 1]\n      entries[index + 1] = entry\n      entries[index] = temp\n    }\n    const order = entries.map((e: any) => e.id)\n    post(`/exhibitions/order_entries`, { section_id: section.id, entries: order }).then((response) => {\n      refresh()\n    })\n  }\n\n  return(\n    <>\n      {section.entries.length > 0 &&\n        <div>\n          {section.primary_image &&\n            <img src={section.primary_image} />\n          }\n          {section.entries.map((entry, index) =>\n            <ExhibitionEntry key={entry.id} entry={entry} refresh={refresh} canMoveUp={index > 0} moveUp={(e) => moveUp(entry)} canMoveDown={index < section.entries.length - 1} moveDown={(e) => moveDown(entry)} />\n          )}\n          <ImageSearch section={section} isOpen={addImageOpen} closeModal={closeImageModal} />\n        </div>\n      }\n    </>\n  )\n}\nexport default ExhibitionSection", "import React, { useState, useEffect, FunctionComponent } from 'react';\nimport { get } from '../shared/api/ServerRequest';\n\nimport ExhibitionSection from './exhibitions/section';\n\ninterface ExhibitionShowProps {\n  exhibitionData: any\n}\n\nconst ExhibitionShow: FunctionComponent<ExhibitionShowProps> = ({ exhibitionData }) => {\n  const [exhibition, setExhibition] = useState<any>(exhibitionData)\n\n  const refresh = () => {\n    get(`/exhibition/${exhibition.id}/data`).then((response) => {\n      setExhibition(response.exhibition)\n    })\n  }\n\n  return(\n    <>\n      {exhibition.sections.map((section) =>\n        <section className=\"mt-5 pt-lg-5\" key={section.id}>\n          <ExhibitionSection section={section} refresh={refresh} />\n        </section>\n      )}\n    </>\n  )\n}\nexport default ExhibitionShow", "import React, { useState, useEffect, FunctionComponent } from 'react';\nimport ExhibitionAdd from './show/ExhibitionAdd';\n\ninterface CatalogueShowProps {\n  imageList: Array<any>\n  catalogue: any\n  currentUserId?: number | null | undefined\n}\n\nconst CatalogueShow: FunctionComponent<CatalogueShowProps> = ({ imageList, catalogue, currentUserId }) => {\n  const [images, setImages] = useState<any>(imageList)\n  const [selectedImage, setSelectedImage] = useState<any>(null)\n\n  return(\n    <div className=\"page-gutter\">\n      <div className=\"container-fluid pt-4\">\n        <header className=\"mb-4 d-none\">\n          <h1 className=\"h5\">{catalogue.name}</h1>\n        </header>\n\n        <div className=\"row\">\n          {images.map((image) =>\n            <div key={image.id} className=\"col-6 col-md-4 col-lg-3 col-xxl-2 mb-4\">\n              <div className=\"cardd\">\n                <a href={image.file_link} target=\"_blank\" rel=\"noreferrer\">\n                  <figure className=\"ratio ratio-1x1 mb-0\">\n                    <img src={image.md_link} className=\"object-contain object-position-middle\" />\n                  </figure>\n                </a>\n              </div>\n              {currentUserId &&\n                <div className=\"py-2\">\n                  <a href=\"#\" onClick={(e) => { e.preventDefault(); setSelectedImage(image);}}>Add To Exhibition</a>\n                </div>\n              }\n            </div>\n          )}\n        </div>\n      </div>\n      {currentUserId && selectedImage &&\n        <ExhibitionAdd isOpen={selectedImage} closeModal={() => setSelectedImage(null)} image={selectedImage} catalogueId={catalogue.id} />\n      }\n    </div>\n  )\n}\n\nexport default CatalogueShow", "//import \"@hotwired/turbo-rails\"\n\nimport \"./shared/ui/offcanvas\"\n\n// --- React Components\nimport {mountReactComponents, registerReactComponent} from './shared/react/component-mounter';\n\nimport CatalogueIndex from \"./components/CatalogueIndex\";\nregisterReactComponent('CatalogueIndex', CatalogueIndex);\n\nimport ObjectsIndex from './components/ObjectsIndex'\nregisterReactComponent('ObjectsIndex', ObjectsIndex);\n\nimport ObjectShow from './components/ObjectShow';\nregisterReactComponent('ObjectShow', ObjectShow);\n\nimport MergeObjects from './components/MergeObjects';\nregisterReactComponent('MergeObjects', MergeObjects);\n\nimport ExhibitionShow from './components/ExhibitionShow';\nregisterReactComponent('ExhibitionShow', ExhibitionShow);\n\nimport CatalogueShow from './components/CatalogueShow';\nregisterReactComponent('CatalogueShow', CatalogueShow);\n\ndocument.addEventListener('DOMContentLoaded', () => {\n  mountReactComponents()\n});\n\ndocument.addEventListener('turbo:load', () => {\n  mountReactComponents()\n});\n// --- End React Components"],
  "mappings": "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",
  "names": ["assign", "obj", "props", "i", "removeNode", "node", "parentNode", "removeChild", "createElement", "type", "children", "key", "ref", "normalizedProps", "arguments", "length", "slice", "call", "defaultProps", "createVNode", "original", "vnode", "__k", "__", "__b", "__e", "__d", "__c", "__h", "constructor", "__v", "vnodeId", "options", "createRef", "current", "Fragment", "Component", "context", "this", "getDomSibling", "childIndex", "indexOf", "sibling", "updateParentDomPointers", "child", "base", "enqueueRender", "c", "rerenderQueue", "push", "process", "__r", "prevDebounce", "debounceRendering", "defer", "renderQueueLength", "component", "commitQueue", "oldVNode", "oldDom", "parentDom", "sort", "depthSort", "shift", "__P", "diff", "__n", "ownerSVGElement", "commitRoot", "diffChildren", "renderResult", "newParentVNode", "oldParentVNode", "globalContext", "isSvg", "excessDomChildren", "isHydrating", "j", "childVNode", "newDom", "firstChildDom", "refs", "oldChildren", "EMPTY_ARR", "oldChildrenLength", "Array", "isArray", "EMPTY_OBJ", "reorderChildren", "placeChild", "getLastDom", "nextSibling", "unmount", "applyRef", "tmp", "toChildArray", "out", "some", "nextDom", "sibDom", "outer", "appendChild", "insertBefore", "lastDom", "diffProps", "dom", "newProps", "oldProps", "hydrate", "setProperty", "setStyle", "style", "value", "IS_NON_DIMENSIONAL", "test", "name", "oldValue", "useCapture", "o", "cssText", "replace", "toLowerCase", "l", "addEventListener", "eventProxyCapture", "eventProxy", "removeEventListener", "e", "removeAttribute", "setAttribute", "event", "newVNode", "isNew", "oldState", "snapshot", "clearProcessingException", "provider", "componentContext", "renderHook", "count", "newType", "contextType", "__E", "prototype", "render", "doRender", "sub", "state", "_sb", "__s", "getDerivedStateFromProps", "componentWillMount", "componentDidMount", "componentWillReceiveProps", "shouldComponentUpdate", "forEach", "componentWillUpdate", "componentDidUpdate", "getChildContext", "getSnapshotBeforeUpdate", "diffElementNodes", "diffed", "root", "cb", "oldHtml", "newHtml", "nodeType", "localName", "document", "createTextNode", "createElementNS", "is", "data", "childNodes", "dangerouslySetInnerHTML", "attributes", "__html", "innerHTML", "checked", "parentVNode", "skipRemove", "r", "componentWillUnmount", "replaceNode", "firstChild", "cloneElement", "createContext", "defaultValue", "contextId", "Consumer", "contextValue", "Provider", "subs", "ctx", "_props", "old", "splice", "isValidElement", "error", "errorInfo", "ctor", "handled", "getDerivedStateFromError", "setState", "componentDidCatch", "update", "callback", "s", "forceUpdate", "Promise", "then", "bind", "resolve", "setTimeout", "a", "b", "getHookState", "index", "type", "options", "__h", "currentComponent", "currentHook", "hooks", "__H", "__", "length", "push", "__V", "EMPTY", "useState", "initialState", "useReducer", "invokeOrReturn", "reducer", "init", "hookState", "currentIndex", "_reducer", "__c", "action", "currentValue", "__N", "nextValue", "setState", "_hasScuFromHooks", "updateHookState", "p", "s", "c", "stateHooks", "filter", "x", "every", "prevScu", "call", "this", "shouldUpdate", "forEach", "hookItem", "props", "shouldComponentUpdate", "prevCWU", "componentWillUpdate", "__e", "tmp", "useEffect", "callback", "args", "state", "__s", "argsChanged", "_pendingArgs", "useLayoutEffect", "useRef", "initialValue", "useMemo", "current", "useImperativeHandle", "ref", "createHandle", "concat", "factory", "useCallback", "useContext", "context", "provider", "sub", "value", "useDebugValue", "formatter", "useErrorBoundary", "cb", "errState", "componentDidCatch", "err", "errorInfo", "undefined", "useId", "root", "__v", "__m", "mask", "flushAfterPaintEffects", "component", "afterPaintEffects", "shift", "__P", "invokeCleanup", "invokeEffect", "e", "afterNextFrame", "raf", "done", "clearTimeout", "timeout", "HAS_RAF", "cancelAnimationFrame", "setTimeout", "requestAnimationFrame", "hook", "comp", "cleanup", "oldArgs", "newArgs", "some", "arg", "f", "previousComponent", "prevRaf", "oldBeforeDiff", "oldBeforeRender", "oldAfterDiff", "oldCommit", "oldBeforeUnmount", "__b", "__r", "diffed", "unmount", "vnode", "commitQueue", "hasErrored", "assign", "obj", "props", "i", "shallowDiffers", "a", "b", "is", "x", "y", "PureComponent", "p", "this", "memo", "c", "comparer", "shouldUpdate", "nextProps", "ref", "updateRef", "call", "current", "Memoed", "shouldComponentUpdate", "createElement", "displayName", "name", "prototype", "isReactComponent", "forwardRef", "fn", "Forwarded", "clone", "$$typeof", "REACT_FORWARD_SYMBOL", "render", "__f", "detachedClone", "vnode", "detachedParent", "parentDom", "__c", "forEach", "effect", "__H", "__P", "__k", "map", "child", "removeOriginal", "originalParent", "__v", "__e", "insertBefore", "__d", "Suspense", "__u", "_suspenders", "suspended", "component", "__", "__a", "lazy", "loader", "prom", "error", "Lazy", "then", "exports", "default", "e", "SuspenseList", "_next", "_map", "ContextProvider", "getChildContext", "context", "children", "Portal", "_this", "container", "_container", "componentWillUnmount", "_temp", "nodeType", "parentNode", "childNodes", "appendChild", "push", "before", "removeChild", "splice", "indexOf", "createPortal", "el", "containerInfo", "parent", "callback", "textContent", "preactRender", "hydrate", "preactHydrate", "empty", "isPropagationStopped", "cancelBubble", "isDefaultPrevented", "defaultPrevented", "createFactory", "type", "bind", "isValidElement", "element", "REACT_ELEMENT_TYPE", "cloneElement", "preactCloneElement", "apply", "arguments", "unmountComponentAtNode", "findDOMNode", "base", "Fragment", "startTransition", "cb", "useDeferredValue", "val", "useTransition", "useLayoutEffect", "useSyncExternalStore", "subscribe", "getSnapshot", "value", "_useState", "useState", "_instance", "_getSnapshot", "forceUpdate", "useEffect", "oldDiffHook", "mapFn", "Children", "oldCatchError", "oldUnmount", "resolve", "CAMEL_PROPS", "ON_ANI", "CAMEL_REPLACE", "IS_DOM", "onChangeInputType", "oldEventHook", "currentComponent", "classNameDescriptorNonEnumberable", "oldVNodeHook", "oldBeforeRender", "oldDiffed", "__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED", "version", "unstable_batchedUpdates", "flushSync", "StrictMode", "useInsertionEffect", "index", "Component", "isPureReactComponent", "state", "options", "__b", "Symbol", "for", "toChildArray", "count", "length", "only", "normalized", "toArray", "newVNode", "oldVNode", "errorInfo", "unmount", "__R", "__h", "promise", "suspendingVNode", "suspendingComponent", "resolved", "onResolved", "onSuspensionComplete", "suspendedVNode", "setState", "pop", "wasHydrating", "document", "detachedComponent", "__O", "fallback", "list", "node", "delete", "revealOrder", "size", "delegated", "get", "unsuspend", "wrappedUnsuspend", "Map", "reverse", "set", "componentDidUpdate", "componentDidMount", "test", "key", "Object", "defineProperty", "configurable", "v", "writable", "event", "persist", "nativeEvent", "enumerable", "class", "normalizedProps", "lowerCased", "toLowerCase", "replace", "multiple", "Array", "isArray", "selected", "defaultValue", "className", "__r", "diffed", "dom", "ReactCurrentDispatcher", "readContext", "__n", "arg", "useId", "useReducer", "useRef", "useImperativeHandle", "useMemo", "useCallback", "useContext", "useDebugValue", "createContext", "createRef", "exports", "module", "classNames", "i", "createVNode", "type", "props", "key", "isStaticChildren", "__source", "__self", "ref", "i", "normalizedProps", "vnode", "__k", "__", "__b", "__e", "__d", "__c", "__h", "constructor", "__v", "vnodeId", "defaultProps", "options", "exports", "module", "exports", "module", "exports", "module", "exports", "exports", "exports", "_a", "exports", "i", "exports", "exports", "exports", "exports", "popoverState", "_a", "_b", "e", "__w_pdfjs_require__", "IDENTITY_MATRIX", "FONT_IDENTITY_MATRIX", "LINE_FACTOR", "LINE_DESCENT_FACTOR", "RenderingIntentFlag", "ANY", "DISPLAY", "PRINT", "ANNOTATIONS_FORMS", "ANNOTATIONS_STORAGE", "ANNOTATIONS_DISABLE", "OPLIST", "AnnotationMode", "DISABLE", "ENABLE", "ENABLE_FORMS", "ENABLE_STORAGE", "AnnotationEditorPrefix", "AnnotationEditorType", "NONE", "FREETEXT", "INK", "AnnotationEditorParamsType", "FREETEXT_SIZE", "FREETEXT_COLOR", "FREETEXT_OPACITY", "INK_COLOR", "INK_THICKNESS", "INK_OPACITY", "PermissionFlag", "MODIFY_CONTENTS", "COPY", "MODIFY_ANNOTATIONS", "FILL_INTERACTIVE_FORMS", "COPY_FOR_ACCESSIBILITY", "ASSEMBLE", "PRINT_HIGH_QUALITY", "TextRenderingMode", "FILL", "STROKE", "FILL_STROKE", "INVISIBLE", "FILL_ADD_TO_PATH", "STROKE_ADD_TO_PATH", "FILL_STROKE_ADD_TO_PATH", "ADD_TO_PATH", "FILL_STROKE_MASK", "ADD_TO_PATH_FLAG", "ImageKind", "GRAYSCALE_1BPP", "RGB_24BPP", "RGBA_32BPP", "AnnotationType", "TEXT", "LINK", "LINE", "SQUARE", "CIRCLE", "POLYGON", "POLYLINE", "HIGHLIGHT", "UNDERLINE", "SQUIGGLY", "STRIKEOUT", "STAMP", "CARET", "POPUP", "FILEATTACHMENT", "SOUND", "MOVIE", "WIDGET", "SCREEN", "PRINTERMARK", "TRAPNET", "WATERMARK", "THREED", "REDACT", "AnnotationStateModelType", "MARKED", "REVIEW", "AnnotationMarkedState", "UNMARKED", "AnnotationReviewState", "ACCEPTED", "REJECTED", "CANCELLED", "COMPLETED", "AnnotationReplyType", "GROUP", "REPLY", "AnnotationFlag", "HIDDEN", "NOZOOM", "NOROTATE", "NOVIEW", "READONLY", "LOCKED", "TOGGLENOVIEW", "LOCKEDCONTENTS", "AnnotationFieldFlag", "REQUIRED", "NOEXPORT", "MULTILINE", "PASSWORD", "NOTOGGLETOOFF", "RADIO", "PUSHBUTTON", "COMBO", "EDIT", "SORT", "FILESELECT", "MULTISELECT", "DONOTSPELLCHECK", "DONOTSCROLL", "COMB", "RICHTEXT", "RADIOSINUNISON", "COMMITONSELCHANGE", "AnnotationBorderStyleType", "SOLID", "DASHED", "BEVELED", "INSET", "AnnotationActionEventType", "E", "X", "D", "U", "Fo", "Bl", "PO", "PC", "PV", "PI", "K", "F", "V", "C", "DocumentActionEventType", "WC", "WS", "DS", "WP", "DP", "PageActionEventType", "O", "StreamType", "UNKNOWN", "FLATE", "LZW", "DCT", "JPX", "JBIG", "A85", "AHX", "CCF", "RLX", "FontType", "TYPE1", "TYPE1STANDARD", "TYPE1C", "CIDFONTTYPE0", "CIDFONTTYPE0C", "TRUETYPE", "CIDFONTTYPE2", "TYPE3", "OPENTYPE", "TYPE0", "MMTYPE1", "VerbosityLevel", "ERRORS", "WARNINGS", "INFOS", "CMapCompressionType", "BINARY", "STREAM", "OPS", "dependency", "setLineWidth", "setLineCap", "setLineJoin", "setMiterLimit", "setDash", "setRenderingIntent", "setFlatness", "setGState", "save", "restore", "transform", "moveTo", "lineTo", "curveTo", "curveTo2", "curveTo3", "closePath", "rectangle", "stroke", "closeStroke", "fill", "eoFill", "fillStroke", "eoFillStroke", "closeFillStroke", "closeEOFillStroke", "endPath", "clip", "eoClip", "beginText", "endText", "setCharSpacing", "setWordSpacing", "setHScale", "setLeading", "setFont", "setTextRenderingMode", "setTextRise", "moveText", "setLeadingMoveText", "setTextMatrix", "nextLine", "showText", "showSpacedText", "nextLineShowText", "nextLineSetSpacingShowText", "setCharWidth", "setCharWidthAndBounds", "setStrokeColorSpace", "setFillColorSpace", "setStrokeColor", "setStrokeColorN", "setFillColor", "setFillColorN", "setStrokeGray", "setFillGray", "setStrokeRGBColor", "setFillRGBColor", "setStrokeCMYKColor", "setFillCMYKColor", "shadingFill", "beginInlineImage", "beginImageData", "endInlineImage", "paintXObject", "markPoint", "markPointProps", "beginMarkedContent", "beginMarkedContentProps", "endMarkedContent", "beginCompat", "endCompat", "paintFormXObjectBegin", "paintFormXObjectEnd", "beginGroup", "endGroup", "beginAnnotations", "endAnnotations", "beginAnnotation", "endAnnotation", "paintJpegXObject", "paintImageMaskXObject", "paintImageMaskXObjectGroup", "paintImageXObject", "paintInlineImageXObject", "paintInlineImageXObjectGroup", "paintImageXObjectRepeat", "paintImageMaskXObjectRepeat", "paintSolidColorImageMask", "constructPath", "UNSUPPORTED_FEATURES", "unknown", "forms", "javaScript", "signatures", "smask", "shadingPattern", "font", "errorTilingPattern", "errorExtGState", "errorXObject", "errorFontLoadType3", "errorFontState", "errorFontMissing", "errorFontTranslate", "errorColorSpace", "errorOperatorList", "errorFontToUnicode", "errorFontLoadNative", "errorFontBuildPath", "errorFontGetPath", "errorMarkedContent", "errorContentSubStream", "PasswordResponses", "NEED_PASSWORD", "INCORRECT_PASSWORD", "verbosity", "setVerbosityLevel", "level", "Number", "isInteger", "getVerbosityLevel", "info", "msg", "console", "log", "warn", "unreachable", "Error", "assert", "cond", "_isValidProtocol", "url", "protocol", "createValidAbsoluteUrl", "baseUrl", "options", "addDefaultProtocol", "startsWith", "dots", "match", "length", "tryConvertEncoding", "stringToUTF8String", "ex", "absoluteUrl", "URL", "shadow", "obj", "prop", "value", "Object", "defineProperty", "enumerable", "configurable", "writable", "BaseException", "BaseExceptionClosure", "message", "name", "constructor", "prototype", "PasswordException", "code", "UnknownErrorException", "details", "InvalidPDFException", "MissingPDFException", "UnexpectedResponseException", "status", "FormatError", "AbortException", "bytesToString", "bytes", "undefined", "MAX_ARGUMENT_COUNT", "String", "fromCharCode", "apply", "strBuf", "i", "chunkEnd", "Math", "min", "chunk", "subarray", "push", "join", "stringToBytes", "str", "Uint8Array", "charCodeAt", "arrayByteLength", "arr", "byteLength", "arraysToBytes", "resultLength", "pos", "data", "item", "itemLength", "set", "string32", "objectSize", "keys", "objectFromMap", "map", "create", "key", "isLittleEndian", "buffer8", "view32", "Uint32Array", "buffer", "isEvalSupported", "Function", "e", "FeatureTest", "isOffscreenCanvasSupported", "OffscreenCanvas", "hexNumbers", "Array", "n", "toString", "padStart", "Util", "makeHexColor", "r", "g", "b", "scaleMinMax", "minMax", "temp", "m1", "m2", "applyTransform", "p", "m", "xt", "yt", "applyInverseTransform", "d", "getAxialAlignedBoundingBox", "p1", "p2", "slice", "p3", "p4", "max", "inverseTransform", "apply3dTransform", "v", "singularValueDecompose2dScale", "transpose", "a", "c", "first", "second", "sqrt", "sx", "sy", "normalizeRect", "rect", "intersect", "rect1", "rect2", "xLow", "xHigh", "yLow", "yHigh", "bezierBoundingBox", "x0", "y0", "x1", "y1", "x2", "y2", "x3", "y3", "tvalues", "bounds", "t", "t1", "t2", "b2ac", "sqrtb2ac", "abs", "j", "mt", "jlen", "PDFStringTranslateTable", "stringToPDFString", "encoding", "decoder", "TextDecoder", "fatal", "decode", "ii", "charAt", "escapeString", "replace", "isAscii", "test", "stringToUTF16BEString", "buf", "char", "decodeURIComponent", "escape", "utf8StringToString", "unescape", "encodeURIComponent", "isArrayBuffer", "isArrayEqual", "arr1", "arr2", "getModificationDate", "date", "Date", "getUTCFullYear", "getUTCMonth", "getUTCDate", "getUTCHours", "getUTCMinutes", "getUTCSeconds", "createPromiseCapability", "capability", "isSettled", "get", "promise", "Promise", "resolve", "reject", "reason", "_is_node", "isNodeJS", "process", "versions", "nw", "electron", "type", "DEFAULT_RANGE_CHUNK_SIZE", "RENDERING_CANCELLED_TIMEOUT", "DefaultCanvasFactory", "DOMCanvasFactory", "DefaultCMapReaderFactory", "DOMCMapReaderFactory", "DefaultStandardFontDataFactory", "DOMStandardFontDataFactory", "NodeCanvasFactory", "NodeCMapReaderFactory", "NodeStandardFontDataFactory", "require", "createPDFNetworkStream", "setPDFNetworkStreamFactory", "pdfNetworkStreamFactory", "getDocument", "src", "task", "PDFDocumentLoadingTask", "source", "PDFDataRangeTransport", "range", "params", "rangeTransport", "worker", "window", "location", "href", "Buffer", "isNaN", "CMapReaderFactory", "StandardFontDataFactory", "ignoreErrors", "stopAtErrors", "fontExtraProperties", "pdfBug", "enableXfa", "rangeChunkSize", "docBaseUrl", "isDataScheme", "maxImageSize", "cMapUrl", "standardFontDataUrl", "useWorkerFetch", "disableFontFace", "useSystemFonts", "ownerDocument", "globalThis", "document", "disableRange", "disableStream", "disableAutoFetch", "workerParams", "port", "GlobalWorkerOptions", "workerPort", "PDFWorker", "fromPort", "_worker", "docId", "then", "destroyed", "workerIdPromise", "_fetchDocument", "networkStreamPromise", "networkStream", "PDFDataTransportStream", "initialData", "progressiveDone", "contentDispositionFilename", "httpHeaders", "withCredentials", "all", "workerId", "messageHandler", "MessageHandler", "transport", "WorkerTransport", "_transport", "send", "catch", "_capability", "pdfDataRangeTransport", "sendWithPromise", "apiVersion", "password", "onPassword", "onProgress", "onUnsupportedFeature", "destroy", "_rangeListeners", "_progressListeners", "_progressiveReadListeners", "_progressiveDoneListeners", "_readyCapability", "addRangeListener", "listener", "addProgressListener", "addProgressiveReadListener", "addProgressiveDoneListener", "onDataRange", "begin", "onDataProgress", "loaded", "total", "onDataProgressiveRead", "onDataProgressiveDone", "transportReady", "requestDataRange", "end", "abort", "PDFDocumentProxy", "pdfInfo", "_pdfInfo", "deprecated", "fingerprints", "stats", "streamTypes", "fontTypes", "annotationStorage", "numPages", "isPureXfa", "_htmlForXfa", "allXfaHtml", "getPage", "pageNumber", "getPageIndex", "ref", "getDestinations", "getDestination", "id", "getPageLabels", "getPageLayout", "getPageMode", "getViewerPreferences", "getOpenAction", "getAttachments", "getJavaScript", "getJSActions", "getDocJSActions", "getOutline", "getOptionalContentConfig", "getPermissions", "getMetadata", "getMarkInfo", "getData", "getDownloadInfo", "downloadInfoCapability", "cleanup", "keepLoadedFonts", "startCleanup", "loadingTask", "loadingParams", "saveDocument", "size", "getFieldObjects", "hasJSActions", "getCalculationOrderIds", "PDFPageProxy", "pageIndex", "pageInfo", "_pageIndex", "_pageInfo", "_ownerDocument", "_stats", "StatTimer", "_pdfBug", "commonObjs", "objs", "PDFObjects", "_bitmaps", "Set", "cleanupAfterRender", "pendingCleanup", "_intentStates", "Map", "_annotationPromises", "rotate", "userUnit", "view", "getViewport", "scale", "rotation", "offsetX", "offsetY", "dontFlip", "PageViewport", "viewBox", "getAnnotations", "intent", "intentArgs", "getRenderingIntent", "cacheKey", "renderingIntent", "annotations", "annotation", "titleObj", "contentsObj", "_jsActionsPromise", "getPageJSActions", "getXfa", "children", "render", "canvasContext", "viewport", "annotationMode", "imageLayer", "canvasFactory", "background", "optionalContentConfigPromise", "annotationCanvasMap", "pageColors", "printAnnotationStorage", "arguments", "renderInteractiveForms", "includeAnnotationStorage", "time", "intentState", "streamReaderCancelTimeout", "clearTimeout", "canvasFactoryInstance", "intentPrint", "displayReadyCapability", "operatorList", "fnArray", "argsArray", "lastChunk", "separateAnnots", "_pumpOperatorList", "complete", "error", "renderTasks", "delete", "internalRenderTask", "_tryCleanup", "_abortOperatorList", "timeEnd", "InternalRenderTask", "callback", "useRequestAnimationFrame", "add", "renderTask", "transparency", "optionalContentConfig", "initializeGraphics", "operatorListChanged", "getOperatorList", "opListReadCapability", "opListTask", "streamTextContent", "disableCombineTextItems", "includeMarkedContent", "TEXT_CONTENT_CHUNK_SIZE", "sendWithStream", "combineTextItems", "highWaterMark", "textContent", "items", "getTextContent", "xfa", "XfaText", "readableStream", "pump", "reader", "read", "done", "assign", "styles", "getReader", "getStructTree", "_structTreePromise", "_destroy", "waitOn", "values", "force", "completed", "cancel", "clear", "bitmap", "close", "resetStats", "_startRenderPage", "_renderPageChunk", "operatorListChunk", "annotationStorageMap", "streamReader", "RenderingCancelledException", "setTimeout", "curCacheKey", "curIntentState", "LoopbackPort", "_listeners", "_deferred", "postMessage", "transfers", "event", "structuredClone", "call", "addEventListener", "removeEventListener", "indexOf", "splice", "terminate", "PDFWorkerUtil", "isWorkerDisabled", "fallbackWorkerSrc", "fakeWorkerId", "__non_webpack_require__", "pdfjsFilePath", "currentScript", "isSameOrigin", "otherUrl", "base", "origin", "other", "createCDNWrapper", "wrapper", "createObjectURL", "Blob", "workerPorts", "WeakMap", "has", "_port", "_webWorker", "_messageHandler", "_initializeFromPort", "_initialize", "on", "_mainThreadWorkerMessageHandler", "workerSrc", "Worker", "terminateEarly", "onWorkerError", "_setupFakeWorker", "sendTest", "testObj", "_setupFakeWorkerGlobal", "WorkerMessageHandler", "workerHandler", "setup", "pdfjsWorker", "loader", "mainWorkerMessageHandler", "eval", "loadScript", "getWorkerSrc", "docStats", "pageCache", "pagePromises", "metadataPromise", "fontLoader", "FontLoader", "_onUnsupportedFeature", "bind", "styleElement", "_params", "isCompressed", "cMapPacked", "destroyCapability", "_passwordCapability", "_networkStream", "_fullReader", "_lastProgress", "setupMessageHandler", "AnnotationStorage", "isOpList", "annotationMap", "PrintAnnotationStorage", "serializable", "getHash", "page", "hasOwnProperty", "resetModified", "terminated", "_getFieldObjectsPromise", "_hasJSActionsPromise", "cancelAllRequests", "sink", "getFullReader", "evt", "onPull", "enqueue", "onCancel", "ready", "readyReason", "headersCapability", "fullReader", "headersReady", "isStreamingSupported", "isRangeSupported", "contentLength", "rangeReader", "getRangeReader", "_numPages", "htmlForXfa", "exception", "updatePassword", "exportedData", "exportedError", "fontRegistry", "FontInspector", "enabled", "registerFont", "fontAdded", "FontFaceObject", "finally", "imageData", "pageProxy", "MAX_IMAGE_SIZE_TO_STORE", "width", "height", "freeze", "fetch", "featureId", "cachedPromise", "num", "gen", "filename", "results", "OptionalContentConfig", "metadata", "Metadata", "cleanupSuccessful", "ensureObj", "objId", "settled", "RenderTask", "onContinue", "form", "canvas", "canvasInUse", "WeakSet", "operatorListIdx", "running", "graphicsReadyCallback", "graphicsReady", "_useRequestAnimationFrame", "cancelled", "_cancelBound", "_continueBound", "_continue", "_scheduleNextBound", "_scheduleNext", "_nextBound", "_next", "_canvas", "StepperManager", "stepper", "init", "nextBreakPoint", "getNextBreakPoint", "gfx", "CanvasGraphics", "beginDrawing", "endDrawing", "updateOperatorList", "requestAnimationFrame", "executeOperatorList", "version", "build", "_util", "_storage", "_modified", "onSetModified", "onResetModified", "onAnnotationEditor", "getValue", "defaultValue", "getRawValue", "remove", "AnnotationEditor", "setValue", "modified", "entry", "val", "entries", "setModified", "_type", "getAll", "print", "clone", "serialized", "serialize", "hash", "MurmurHash3_64", "update", "JSON", "stringify", "hexdigest", "parent", "boundFocusin", "focusin", "boundFocusout", "focusout", "hasBeenSelected", "isEditing", "isInEditMode", "zIndex", "_zIndex", "_colorManager", "ColorManager", "parameters", "div", "viewportBaseDimensions", "x", "y", "isAttachedToDOM", "_defaultLineColor", "getHexCode", "setInBackground", "style", "setInForeground", "setSelected", "target", "relatedTarget", "closest", "preventDefault", "isMultipleSelection", "commitOrRemove", "isEmpty", "commit", "addToAnnotationStorage", "dragstart", "getBoundingClientRect", "startX", "clientX", "startY", "clientY", "dataTransfer", "setData", "effectAllowed", "setAt", "tx", "ty", "screenToPageTranslation", "left", "top", "translate", "setDims", "parentWidth", "parentHeight", "getInitialTranslation", "createElement", "setAttribute", "className", "bindEvents", "pointerdown", "isMac", "KeyboardManager", "platform", "button", "ctrlKey", "shiftKey", "metaKey", "toggleSelected", "getRect", "pageWidth", "pageHeight", "pageDimensions", "shiftX", "shiftY", "getRectInCurrentCoords", "onceAdded", "enableEditMode", "disableEditMode", "shouldGetKeyboardEvents", "needsToBeRebuilt", "rebuild", "deserialize", "editor", "getNextId", "select", "classList", "unselect", "updateParams", "disableEditing", "enableEditing", "propertiesToUpdate", "contentDiv", "setActiveEditor", "_display_utils", "element", "names", "opacityToHex", "opacity", "round", "IdManager", "getId", "CommandManager", "commands", "locked", "maxSize", "position", "cmd", "undo", "mustExec", "NaN", "overwriteIfSameType", "keepUndo", "next", "redo", "hasSomethingToUndo", "hasSomethingToRedo", "callbacks", "allKeys", "isMacKey", "split", "at", "navigator", "isWin", "includes", "altKey", "exec", "self", "stopPropagation", "ClipboardManager", "elements", "copy", "isArray", "el", "filter", "paste", "_colorsMapping", "_colors", "colors", "getColorValues", "convert", "color", "rgb", "getRGB", "matchMedia", "matches", "RGB", "every", "AnnotationEditorUIManager", "activeEditor", "allEditors", "allLayers", "clipboardManager", "commandManager", "currentPageIndex", "editorTypes", "eventBus", "idManager", "isEnabled", "mode", "selectedEditors", "boundKeydown", "keydown", "boundOnEditingAction", "onEditingAction", "boundOnPageChanging", "onPageChanging", "previousStates", "hasEmptyClipboard", "hasSelectedEditor", "container", "_keyboardManager", "selectAll", "cut", "unselectAll", "_on", "removeKeyboardManager", "_off", "layer", "focusMainContainer", "focus", "addKeyboardManager", "getActive", "dispatchUpdateStates", "hasChanged", "some", "dispatch", "dispatchUpdateUI", "setEditingState", "registerEditorTypes", "types", "editorType", "defaultPropertiesToUpdate", "addLayer", "enable", "disable", "removeLayer", "updateMode", "disableAll", "enableAll", "updateToolbar", "updateDefaultParams", "getEditors", "editors", "getEditor", "addEditor", "removeEditor", "addEditorToLayer", "addOrRebuild", "hasSelection", "ed", "isSelected", "addCommands", "newEditors", "selectEditors", "isActive", "getMode", "SVG_NS", "AnnotationPrefix", "PixelsPerInch", "CSS", "PDF", "PDF_TO_CSS_UNITS", "BaseCanvasFactory", "_document", "_createCanvas", "fetchData", "asTypedArray", "isValidFetchUrl", "baseURI", "response", "ok", "statusText", "arrayBuffer", "text", "request", "XMLHttpRequest", "open", "responseType", "onreadystatechange", "readyState", "DONE", "responseText", "BaseCMapReaderFactory", "_fetchData", "compressionType", "cMapData", "BaseStandardFontDataFactory", "DOMSVGFactory", "BaseSVGFactory", "_createSVG", "createElementNS", "centerX", "centerY", "rotateA", "rotateB", "rotateC", "rotateD", "offsetCanvasX", "offsetCanvasY", "convertToViewportPoint", "convertToViewportRectangle", "topLeft", "bottomRight", "convertToPdfPoint", "trim", "substring", "toLowerCase", "isPdfFile", "getFilenameFromUrl", "anchor", "query", "lastIndexOf", "getPdfFilenameFromUrl", "defaultFilename", "reURI", "reFilename", "splitURI", "suggestedFilename", "started", "times", "now", "start", "outBuf", "longest", "duration", "padEnd", "removeScriptElement", "script", "onload", "onerror", "head", "documentElement", "append", "pdfDateStringRegex", "PDFDateString", "toDateObject", "input", "RegExp", "year", "parseInt", "month", "day", "hour", "minute", "universalTimeRelation", "offsetHour", "offsetMinute", "UTC", "getXfaPageViewport", "xfaPage", "attributes", "colorRGB", "span", "visibility", "body", "computedColor", "getComputedStyle", "getCurrentTransform", "ctx", "f", "getTransform", "getCurrentTransformInverse", "invertSelf", "context", "getContext", "reset", "canvasAndContext", "skipDimensions", "svg", "SEED", "MASK_HIGH", "MASK_LOW", "seed", "h1", "h2", "blockCounts", "tailLength", "dataUint32", "k1", "k2", "C1", "C2", "C1_LOW", "C2_LOW", "hex1", "hex2", "BaseFontLoader", "nativeFontFaces", "addNativeFontFace", "nativeFontFace", "fonts", "insertRule", "rule", "getElementsByTagName", "styleSheet", "sheet", "cssRules", "attached", "missingFile", "isFontLoadingAPISupported", "createNativeFontFace", "family", "createFontFaceRule", "isSyncFontLoadingSupported", "_queueLoadingCallback", "_prepareFontLoadEvent", "hasFonts", "_loadTestFont", "rules", "fontsToLoad", "GenericFontLoader", "loadingContext", "requests", "nextRequestId", "loadTestFontId", "supported", "userAgent", "completeRequest", "otherRequest", "shift", "getLoadTestFont", "atob", "int32", "offset", "spliceString", "s", "insert", "chunk1", "chunk2", "called", "isFontReady", "fillText", "getImageData", "COMMENT_OFFSET", "CFF_CHECKSUM_OFFSET", "XXXX_VALUE", "checksum", "btoa", "loadedName", "fontFamily", "translatedData", "compiledGlyphs", "cssFontInfo", "FontFace", "css", "weight", "fontWeight", "italicAngle", "mimetype", "getPathGenerator", "character", "cmds", "jsBuf", "current", "args", "MIN_FONT_SIZE", "MAX_FONT_SIZE", "MAX_GROUP_SIZE", "EXECUTION_TIME", "EXECUTION_STEPS", "MAX_SIZE_TO_COMPILE", "Path2D", "FULL_CHUNK_HEIGHT", "mirrorContextOperations", "destCtx", "_removeMirroring", "__originalSave", "__originalRestore", "__originalRotate", "__originalScale", "__originalTranslate", "__originalTransform", "__originalSetTransform", "setTransform", "__originalResetTransform", "resetTransform", "__originalClip", "__originalMoveTo", "__originalLineTo", "__originalBezierCurveTo", "bezierCurveTo", "__originalRect", "__originalClosePath", "__originalBeginPath", "beginPath", "ctxSave", "ctxRestore", "ctxTranslate", "ctxScale", "ctxTransform", "ctxSetTransform", "ctxResetTransform", "ctxRotate", "angle", "cp1x", "cp1y", "cp2x", "cp2y", "CachedCanvases", "cache", "getCanvas", "canvasEntry", "drawImageAtIntegerCoords", "srcImg", "srcX", "srcY", "srcW", "srcH", "destX", "destY", "destW", "destH", "tlX", "rTlX", "tlY", "rTlY", "brX", "rWidth", "brY", "rHeight", "sign", "drawImage", "scaleX", "hypot", "scaleY", "compileType3Glyph", "imgData", "POINT_TO_PROCESS_LIMIT", "POINT_TYPES", "width1", "points", "j0", "lineSize", "elem", "mask", "count", "sum", "steps", "Int32Array", "path", "p0", "step", "pp", "drawOutline", "CanvasExtraState", "alphaIsShape", "fontSize", "fontSizeScale", "textMatrix", "textMatrixScale", "fontMatrix", "leading", "lineX", "lineY", "charSpacing", "wordSpacing", "textHScale", "textRenderingMode", "textRise", "fillColor", "strokeColor", "patternFill", "fillAlpha", "strokeAlpha", "lineWidth", "activeSMask", "transferMaps", "startNewPathAndClipBox", "clipBox", "setCurrentPoint", "updatePathMinMax", "minX", "minY", "maxX", "maxY", "updateRectMinMax", "updateScalingPathMinMax", "updateCurvePathMinMax", "box", "getPathBoundingBox", "pathType", "PathType", "xStrokePad", "yStrokePad", "updateClipFromPath", "isEmptyClip", "Infinity", "getClippedPathBoundingBox", "putBinaryImageData", "ImageData", "putImageData", "partialChunkHeight", "fullChunks", "totalChunks", "chunkImgData", "createImageData", "srcPos", "destPos", "dest", "thisChunkHeight", "elemsInThisChunk", "transferMapRed", "transferMapGreen", "transferMapBlue", "transferMapGray", "kind", "srcLength", "dest32", "dest32DataLength", "fullSrcDiff", "white", "black", "srcDiff", "k", "kEnd", "kEndUnrolled", "srcByte", "hasTransferMaps", "putBinaryImageMask", "applyMaskImageData", "copyCtxState", "sourceCtx", "properties", "property", "setLineDash", "getLineDash", "lineDashOffset", "resetCtxToDefault", "foregroundColor", "strokeStyle", "fillStyle", "fillRule", "globalAlpha", "lineCap", "lineJoin", "miterLimit", "globalCompositeOperation", "composeSMaskBackdrop", "r0", "g0", "b0", "alpha", "alpha_", "composeSMaskAlpha", "maskData", "layerData", "transferMap", "composeSMaskLuminosity", "genericComposeSMask", "maskCtx", "layerCtx", "subtype", "backdrop", "layerOffsetX", "layerOffsetY", "maskOffsetX", "maskOffsetY", "hasBackdrop", "composeFn", "PIXELS_TO_PROCESS", "chunkSize", "ceil", "row", "chunkHeight", "composeSMask", "layerBox", "layerWidth", "layerHeight", "getImageSmoothingEnabled", "interpolate", "fround", "actualScale", "devicePixelRatio", "LINE_CAP_STYLES", "LINE_JOIN_STYLES", "NORMAL_CLIP", "EO_CLIP", "canvasCtx", "stateStack", "pendingClip", "pendingEOFill", "res", "xobjs", "groupStack", "processingType3", "baseTransform", "baseTransformStack", "groupLevel", "smaskStack", "smaskCounter", "tempSMask", "suspendedCtx", "contentVisible", "markedContentStack", "cachedCanvases", "cachedPatterns", "viewportScale", "outputScaleX", "outputScaleY", "backgroundColor", "foreground", "_cachedScaleForStroking", "_cachedGetSinglePixelWidth", "_cachedBitmapsMap", "getObject", "fallback", "defaultBackgroundColor", "fg", "bg", "isValidDefaultBg", "defaultBg", "rB", "gB", "bB", "newComp", "lumB", "selectColor", "lumC", "fillRect", "transparentCanvas", "compositeCtx", "beginLayout", "executionStartIdx", "continueCallback", "argsArrayLen", "chunkOperations", "endTime", "fnId", "breakIt", "depObjId", "objsPool", "restoreInitialState", "inSMaskMode", "HTMLCanvasElement", "endLayout", "_scaleImage", "img", "widthScale", "heightScale", "paintWidth", "paintHeight", "tmpCanvasId", "tmpCanvas", "tmpCtx", "newWidth", "newHeight", "clearRect", "_createMaskCanvas", "isPatternFill", "currentTransform", "scaled", "maskCanvas", "mainKey", "withoutTranslation", "cachedImage", "maskToCanvas", "cord1", "cord2", "drawnWidth", "drawnHeight", "fillCanvas", "fillCtx", "imageSmoothingEnabled", "inverse", "getPattern", "limit", "dashArray", "dashPhase", "flatness", "states", "state", "checkSMaskState", "beginSMaskMode", "endSMaskMode", "cacheId", "scratchCanvas", "compose", "dirtyBox", "floor", "old", "pop", "ops", "isScalingMatrix", "minMaxForBezier", "xw", "yh", "consumePath", "rescaleAndStroke", "needRestore", "paths", "pendingTextPaths", "addToPath", "spacing", "fontRefName", "fontObj", "fontDirection", "isType3Font", "bold", "italic", "typeface", "fallbackName", "browserFontSize", "rise", "paintChar", "patternTransform", "fillStrokeMode", "isAddToPathSet", "strokeText", "isFontSubpixelAAEnabled", "glyphs", "showType3Text", "glyphsLength", "vertical", "spacingDir", "defaultVMetrics", "widthAdvanceScale", "simpleFillText", "pattern", "getSinglePixelWidth", "glyph", "restoreNeeded", "isSpace", "fontChar", "accent", "scaledX", "scaledY", "vmetric", "vx", "vy", "remeasure", "measuredWidth", "measureText", "characterScaleX", "isInFont", "scaledAccentX", "scaledAccentY", "charWidth", "isTextInvisible", "spacingLength", "charProcOperatorList", "operatorListId", "transformed", "xWidth", "yWidth", "llx", "lly", "urx", "ury", "getColorN_Pattern", "IR", "canvasGraphicsFactory", "createCanvasGraphics", "TilingPattern", "_getPattern", "matrix", "getShadingPattern", "SHADING", "inv", "bl", "br", "ul", "ur", "bbox", "group", "currentCtx", "isolated", "knockout", "canvasBounds", "groupCtx", "startTransformInverse", "currentMtx", "hasOwnCanvas", "canvasWidth", "canvasHeight", "annotationCanvas", "savedCtx", "compiled", "skewX", "skewY", "positions", "trans", "images", "image", "w", "h", "imgToPaint", "HTMLElement", "appendImage", "tag", "visible", "isVisible", "isContentVisible", "absDet", "normX", "normY", "getScaleForStroking", "scaledXLineWidth", "scaledYLineWidth", "baseArea", "saveRestore", "savedMatrix", "savedDashes", "savedDashOffset", "op", "applyBoundingBox", "region", "BaseShadingPattern", "RadialAxialShadingPattern", "_bbox", "_colorStops", "_p0", "_p1", "_r0", "_r1", "_createGradient", "grad", "createLinearGradient", "createRadialGradient", "colorStop", "addColorStop", "owner", "ownerBBox", "createPattern", "domMatrix", "DOMMatrix", "drawTriangle", "c1", "c2", "c3", "coords", "rowSize", "tmp", "c1r", "c1g", "c1b", "c2r", "c2g", "c2b", "c3r", "c3g", "c3b", "xa", "car", "cag", "cab", "xb", "cbr", "cbg", "cbb", "x1_", "x2_", "drawFigure", "figure", "ps", "cs", "verticesPerRow", "rows", "cols", "q", "MeshShadingPattern", "_coords", "_figures", "_bounds", "_background", "_createMeshCanvas", "combinedScale", "EXPECTED_SCALE", "MAX_PATTERN_SIZE", "BORDER_SIZE", "boundsWidth", "boundsHeight", "paddedWidth", "paddedHeight", "matrixScale", "temporaryPatternCanvas", "DummyShadingPattern", "PaintType", "COLORED", "UNCOLORED", "xstep", "ystep", "paintType", "tilingType", "createPatternCanvas", "curMatrixScale", "dimx", "getSizeAndScale", "dimy", "graphics", "setFillAndStrokeStyleToContext", "adjustedX0", "adjustedY0", "adjustedX1", "adjustedY1", "clipBbox", "realOutputSize", "bboxWidth", "bboxHeight", "cssColor", "inverseDecode", "opaque", "zeroMapping", "oneMapping", "widthInSource", "widthRemainder", "CallbackKind", "DATA", "ERROR", "StreamKind", "CANCEL", "CANCEL_COMPLETE", "CLOSE", "ENQUEUE", "PULL", "PULL_COMPLETE", "START_COMPLETE", "wrapReason", "sourceName", "targetName", "comObj", "callbackId", "streamId", "streamSinks", "streamControllers", "callbackCapabilities", "actionHandler", "_onComObjOnMessage", "stream", "_processStreamMessage", "action", "cbSourceName", "cbTargetName", "result", "_createStreamSink", "actionName", "handler", "ah", "queueingStrategy", "ReadableStream", "controller", "startCapability", "startCall", "pullCall", "cancelCall", "isClosed", "desiredSize", "pull", "pullCapability", "cancelCapability", "streamSink", "isCancelled", "lastDesiredSize", "sinkCapability", "success", "streamController", "_deleteStreamController", "allSettled", "metadataMap", "parsedData", "rawData", "getRaw", "INTERNAL", "Symbol", "OptionalContentGroup", "_setVisible", "internal", "cachedHasInitialVisibility", "groups", "initialVisibility", "order", "creator", "baseState", "off", "evaluateVisibilityExpression", "array", "operator", "expression", "policy", "ids", "setVisibility", "hasInitialVisibility", "getOrder", "getGroups", "getGroup", "_queuedChunks", "_progressiveDone", "_contentDispositionFilename", "_pdfDataRangeTransport", "_isStreamingSupported", "_isRangeSupported", "_contentLength", "_fullRequestReader", "_rangeReaders", "_onReceiveData", "_onProgress", "_onProgressiveDone", "_enqueue", "found", "_begin", "_progressiveDataLength", "_loaded", "firstReader", "_removeRangeReader", "queuedChunks", "PDFDataTransportStreamReader", "PDFDataTransportStreamRangeReader", "_stream", "_done", "_filename", "_requests", "_headersReady", "requestCapability", "_end", "_queuedChunk", "requestsCapability", "output", "walk", "node", "shouldBuildText", "child", "fs", "readFile", "Canvas", "createCanvas", "AnnotationEditorLayer", "accessibilityManager", "allowClick", "boundPointerup", "pointerup", "boundPointerdown", "hadPointerDown", "isCleaningUp", "uiManager", "_initialized", "FreeTextEditor", "initialize", "l10n", "InkEditor", "addInkEditorIfNeeded", "disableClick", "enableClick", "isCommitting", "createAndAddNewEditor", "pointerEvents", "currentActive", "attach", "detach", "removePointerInTextLayer", "display", "activeElement", "changeParent", "moveEditorInDOM", "moveElementInDOM", "addANewEditor", "addUndoableEditor", "createNewEditor", "annotationType", "drop", "dropEffect", "endX", "endY", "dragover", "setDimensions", "scaleFactor", "pageLLx", "pageLLy", "pageURx", "pageURy", "flipOrientation", "widthStr", "heightStr", "boundEditorDivBlur", "editorDivBlur", "boundEditorDivFocus", "editorDivFocus", "boundEditorDivKeydown", "editorDivKeydown", "content", "hasAlreadyBeenCommitted", "_freeTextDefaultContent", "_l10nPromise", "_internalPadding", "_defaultColor", "_defaultFontSize", "parseFloat", "getPropertyValue", "updateFontSize", "updateColor", "setFontsize", "editorDiv", "setEditorDimensions", "savedFontsize", "savedColor", "overlayDiv", "contentEditable", "draggable", "innerText", "extractText", "divs", "firstChild", "nodeName", "trimEnd", "dblclick", "removeAttribute", "baseX", "baseY", "line", "createTextNode", "padding", "RESIZER_SIZE", "aspectRatio", "baseHeight", "baseWidth", "boundCanvasPointermove", "canvasPointermove", "boundCanvasPointerleave", "canvasPointerleave", "boundCanvasPointerup", "canvasPointerup", "boundCanvasPointerdown", "canvasPointerdown", "isCanvasInitialized", "lastPoint", "observer", "realWidth", "realHeight", "requestFrameCallback", "_defaultOpacity", "_defaultThickness", "thickness", "bezierPath2D", "currentPath", "translationX", "translationY", "updateThickness", "updateOpacity", "savedThickness", "fitToContent", "redraw", "savedOpacity", "createObserver", "setCanvasDims", "disconnect", "getInitialBBox", "setStroke", "startDrawing", "draw", "lastX", "lastY", "stopDrawing", "bezier", "fitCurve", "xy", "path2D", "buildPath2D", "updateTransform", "ResizeObserver", "contentRect", "observe", "setMinDims", "roundedWidth", "roundedHeight", "setScaleFactor", "getPadding", "scaleFactorW", "scaleFactorH", "control1", "control2", "serializePaths", "NUMBER_OF_POINTS_ON_BEZIER_CURVE", "p10", "p11", "p20", "p21", "p30", "p31", "p40", "p41", "extractPointsOnBezier", "isAlmostFlat", "q10", "q11", "q20", "q21", "q30", "q31", "tol", "ax", "ay", "bx", "by", "getBbox", "xMin", "xMax", "yMin", "yMax", "firstTime", "prevTranslationX", "prevTranslationY", "unscaledPadding", "minHeight", "minWidth", "maxError", "progressCallback", "TypeError", "forEach", "point", "len", "leftTangent", "createTangent", "rightTangent", "fitCubic", "MaxIterations", "bezCurve", "u", "uPrime", "prevErr", "splitPoint", "prevSplit", "centerVector", "toCenterTangent", "fromCenterTangent", "beziers", "dist", "maths", "vectorLen", "subtract", "addArrays", "mulItems", "chordLengthParameterize", "generateAndReport", "reparameterize", "errChange", "normalize", "concat", "paramsOrig", "paramsPrime", "generateBezier", "computeMaxError", "bez", "maxErr", "maxPoint", "A", "det_C0_C1", "det_C0_X", "det_X_C1", "alpha_l", "alpha_r", "epsilon", "segLength", "ux", "firstPoint", "zeros_Xx2x2", "dot", "newtonRaphsonRootFind", "qprime", "numerator", "mulMatrix", "denominator", "squareItems", "qprimeprime", "currU", "prevU", "prevP", "maxDist", "t_distMap", "mapTtoRelativeDistances", "find_t", "B_parts", "B_t_curr", "B_t_dist", "B_t_prev", "sumLen", "param", "lenMax", "lenMin", "tMax", "tMin", "pointA", "pointB", "zs", "multiplier", "reduce", "addItems", "addition", "divItems", "divisor", "ctrlPoly", "pA", "pB", "pC", "pD", "module", "exports", "_annotation_storage", "DEFAULT_TAB_INDEX", "DEFAULT_FONT_SIZE", "GetElementsByNameSet", "getRectDims", "AnnotationElementFactory", "LinkAnnotationElement", "TextAnnotationElement", "fieldType", "TextWidgetAnnotationElement", "radioButton", "RadioButtonWidgetAnnotationElement", "checkBox", "CheckboxWidgetAnnotationElement", "PushButtonWidgetAnnotationElement", "ChoiceWidgetAnnotationElement", "WidgetAnnotationElement", "PopupAnnotationElement", "FreeTextAnnotationElement", "LineAnnotationElement", "SquareAnnotationElement", "CircleAnnotationElement", "PolylineAnnotationElement", "CaretAnnotationElement", "InkAnnotationElement", "PolygonAnnotationElement", "HighlightAnnotationElement", "UnderlineAnnotationElement", "SquigglyAnnotationElement", "StrikeOutAnnotationElement", "StampAnnotationElement", "FileAttachmentAnnotationElement", "AnnotationElement", "isRenderable", "ignoreBorder", "createQuadrilaterals", "linkService", "downloadManager", "imageResourcesPath", "renderForms", "svgFactory", "enableScripting", "_fieldObjects", "fieldObjects", "_mouseState", "mouseState", "_createContainer", "quadrilaterals", "_createQuadrilaterals", "borderStyle", "borderWidth", "horizontalRadius", "horizontalCornerRadius", "verticalRadius", "verticalCornerRadius", "radius", "borderRadius", "borderBottomStyle", "borderColor", "setRotation", "elementWidth", "elementHeight", "_commonActions", "setColor", "jsName", "styleName", "detail", "ColorConverters", "hidden", "preventScroll", "userName", "title", "readonly", "required", "_setRequired", "bgColor", "fgColor", "textColor", "_dispatchEventFromSandbox", "actions", "jsEvent", "commonActions", "_setDefaultPropertiesFromJS", "storedData", "eventProxy", "quadPoints", "savedRect", "quadPoint", "_createPopup", "trigger", "popupElement", "PopupElement", "modificationDate", "richText", "hideWrapper", "popup", "_renderQuadrilaterals", "quadrilateral", "_getElementsByName", "skipId", "fields", "fieldObj", "exportValues", "exportValue", "domElement", "querySelector", "getElementsByName", "isTooltipOnly", "link", "isBound", "addLinkAttributes", "newWindow", "_bindNamedAction", "_bindLink", "Action", "_bindJSAction", "resetForm", "_bindResetFormAction", "index", "linkElement", "cloneNode", "destination", "getDestinationHash", "onclick", "goToDestination", "getAnchorUrl", "executeNamedAction", "otherClickAction", "resetFormFields", "refs", "resetFormRefs", "include", "allFields", "fieldIds", "fieldName", "field", "storage", "allIds", "dispatchEvent", "Event", "hasPopup", "alt", "dataset", "l10nId", "l10nArgs", "alternativeText", "_getKeyModifier", "_setEventListener", "baseName", "eventName", "valueGetter", "modifier", "_setEventListeners", "getter", "_setBackgroundColor", "_setTextStyle", "TEXT_ALIGNMENT", "fontColor", "defaultAppearanceData", "computedFontSize", "multiLine", "numberOfLines", "lineHeight", "textAlignment", "textAlign", "isRequired", "hasAppearance", "fieldValue", "setPropertyOnSiblings", "keyInStorage", "formattedValue", "maxLen", "charLimit", "elementData", "userValue", "valueOnFocus", "doNotScroll", "overflowY", "overflowX", "disabled", "readOnly", "tabIndex", "maxLength", "defaultFieldValue", "blurListener", "scrollLeft", "selRange", "setSelectionRange", "willCommit", "commitKey", "selStart", "selectionStart", "selEnd", "selectionEnd", "_blurListener", "isDown", "Keystroke", "inputType", "change", "comb", "fieldWidth", "combWidth", "letterSpacing", "verticalAlign", "checked", "checkbox", "curChecked", "buttonValue", "radio", "pdfButtonValue", "lastChild", "selectElement", "addAnEmptyEntry", "combo", "multiSelect", "multiple", "option", "selected", "optionElement", "displayValue", "removeEmptyEntry", "noneOptionElement", "prepend", "isExport", "selectedIndex", "getItems", "multipleSelection", "findIndex", "selectChild", "before", "indices", "editable", "changeEx", "keyDown", "IGNORE_TYPES", "parentType", "selector", "parentId", "parentElements", "querySelectorAll", "from", "parentRect", "popupLeft", "popupTop", "pinned", "BACKGROUND_ENLIGHT", "hideElement", "dir", "dateObject", "toLocaleDateString", "toLocaleTimeString", "XfaLayer", "xfaHtml", "html", "contents", "_formatContents", "_toggle", "_show", "_hide", "lines", "pin", "unpin", "lineSpan", "lineCoordinates", "square", "circle", "containerClassName", "svgElementName", "coordinate", "vertices", "polyline", "inkList", "inkLists", "file", "_download", "openOrDownloadData", "AnnotationLayer", "appendElement", "contentElement", "rendered", "renderedElement", "setAnnotationCanvasMap", "replaceWith", "makeColorComp", "CMYK_G", "G_CMYK", "G_RGB", "G_HTML", "G", "RGB_G", "RGB_HTML", "R", "B", "T_HTML", "CMYK_RGB", "CMYK_HTML", "components", "RGB_CMYK", "_xfa_text", "setupStorage", "xfaOn", "xfaOff", "getAttribute", "setAttributes", "isHTMLAnchorElement", "HTMLAnchorElement", "dataId", "root", "rootHtml", "stack", "rootDiv", "textDivs", "childHtml", "xmlns", "MAX_TEXT_DIVS_TO_RENDER", "DEFAULT_FONT_ASCENT", "ascentCache", "AllWhitespaceRegexp", "getAscent", "cachedAscent", "metrics", "ascent", "fontBoundingBoxAscent", "descent", "fontBoundingBoxDescent", "ratio", "pixels", "appendText", "geom", "textDiv", "textDivProperties", "_enhanceTextSelection", "hasText", "hasEOL", "originalTransform", "paddingBottom", "paddingLeft", "paddingRight", "paddingTop", "_textDivs", "_viewport", "atan2", "fontName", "fontHeight", "fontAscent", "sin", "cos", "_fontInspectorEnabled", "shouldScaleText", "absScaleX", "absScaleY", "_textDivProperties", "_textContentStream", "_layoutText", "angleCos", "angleSin", "divWidth", "divHeight", "right", "bottom", "_canceled", "textDivsLength", "_renderingDone", "findPositiveMin", "ts", "expand", "expanded", "expandBounds", "divProperties", "Float64Array", "jj", "boxScale", "boxes", "x1New", "x2New", "expandBoundsLTR", "sort", "fakeBoundary", "horizon", "boundary", "horizonPart", "affectedBoundary", "maxXNew", "xNew", "changedHorizon", "lastBoundary", "useBoundary", "unshift", "used", "TextLayerRenderTask", "textContentStream", "textContentItemsStr", "enhanceTextSelection", "_textContent", "_container", "_textContentItemsStr", "_reader", "_layoutTextLastFontSize", "_layoutTextLastFontFamily", "_layoutTextCtx", "_renderTimer", "_devicePixelRatio", "_processItems", "styleCache", "parentNode", "_render", "timeout", "textItems", "textStyles", "expandTextDivs", "expandDivs", "transformBuf", "paddingBuf", "divProps", "renderTextLayer", "renderParameters", "SVGGraphics", "opListToTree", "opList", "opTree", "opListElement", "fn", "pf", "toFixed", "pm", "acos", "SVG_DEFAULTS", "fontStyle", "XML_NS", "XLINK_NS", "contentType", "forceDataSchema", "digits", "b1", "b2", "b3", "d1", "d2", "d3", "d4", "convertImgDataToPng", "PNG_HEADER", "CHUNK_WRAPPER_SIZE", "crcTable", "crc32", "crc", "writePngChunk", "adler32", "deflateSync", "literals", "deflateSyncUncompressed", "maxBlockLength", "deflateBlocks", "idat", "pi", "adler", "encode", "isMask", "bitDepth", "colorType", "offsetLiterals", "offsetBytes", "ihdr", "pngLength", "SVGExtraState", "dependencies", "activeClipUrl", "clipGroup", "maskId", "clipCount", "maskCount", "shadingCount", "transformMatrix", "transformStack", "extraStack", "embedFonts", "embeddedFonts", "cssStyle", "_operatorIdMapping", "tgrp", "executeOpTree", "loadDependencies", "getSVG", "svgElement", "convertOpList", "operatorIdMapping", "opTreeElement", "lineMatrix", "xcoords", "ycoords", "tspan", "setAttributeNS", "txtElement", "txtgrp", "lineWidthScale", "_setStrokeAttributes", "_ensureTransformGroup", "addFontStyle", "defs", "hasChildNodes", "setStrokeAlpha", "setFillAlpha", "_makeColorN_Pattern", "_makeShadingPattern", "_makeTilingPattern", "tilingId", "tx0", "ty0", "tx1", "ty1", "xscale", "yscale", "txstep", "tystep", "tiling", "childNodes", "shadingId", "colorStops", "gradient", "point0", "point1", "focalPoint", "circlePoint", "focalRadius", "circleRadius", "stop", "getAttributeNS", "clipId", "clipPath", "clipElement", "prev", "imgSrc", "cliprect", "imgEl", "definitions", "rootGroup", "_ensureClipGroup", "http", "https", "fileUriRegex", "parseUrl", "sourceUrl", "parsedUrl", "parse", "host", "PDFNodeStream", "isHttp", "isFsUrl", "_rangeRequestReaders", "PDFNodeStreamFsFullReader", "PDFNodeStreamFullReader", "PDFNodeStreamFsRangeReader", "PDFNodeStreamRangeReader", "BaseFullReader", "_url", "_storedError", "_disableRange", "_rangeChunkSize", "_readableStream", "_readCapability", "_headersCapability", "_error", "_setReadableStream", "BaseRangeReader", "createRequestOptions", "headers", "auth", "hostname", "method", "handleResponse", "statusCode", "getResponseHeader", "allowRangeRequests", "suggestedLength", "validateRangeRequestCapabilities", "extractFilenameFromHeader", "_request", "_httpHeaders", "Range", "lstat", "stat", "createReadStream", "returnValues", "contentEncoding", "contentDisposition", "getFilenameFromContentDispositionHeader", "createResponseStatusError", "validateResponseStatus", "needsEncodingFixup", "toParamRegExp", "rfc2616unquote", "rfc5987decode", "rfc2047decode", "fixupEncoding", "rfc2231getparam", "attributePattern", "flags", "textdecode", "contentDispositionStr", "iter", "quot", "part", "parts", "quotindex", "extvalue", "encodingend", "langvalue", "charset", "hex", "OK_RESPONSE", "PARTIAL_CONTENT_RESPONSE", "getArrayBuffer", "xhr", "NetworkManager", "getXhr", "NetworkManager_getXhr", "currXhrId", "pendingRequests", "requestRange", "listeners", "requestFull", "xhrId", "pendingRequest", "setRequestHeader", "expectedStatus", "onError", "onStateChange", "onprogress", "onHeadersReceived", "onDone", "xhrStatus", "ok_response_on_range_request", "rangeHeader", "getRequestXhr", "isPendingRequest", "abortRequest", "PDFNetworkStream", "_source", "_manager", "_onRangeRequestReaderClosed", "PDFNetworkStreamFullRequestReader", "PDFNetworkStreamRangeRequestReader", "onClosed", "manager", "_onHeadersReceived", "_onDone", "_onError", "_fullRequestId", "_headersReceivedCapability", "_cachedChunks", "fullRequestXhrId", "fullRequestXhr", "lengthComputable", "_requestId", "_close", "createFetchOptions", "abortController", "signal", "credentials", "redirect", "createHeaders", "Headers", "PDFFetchStream", "PDFFetchStreamReader", "PDFFetchStreamRangeReader", "_withCredentials", "_abortController", "AbortController", "_headers", "_worker_options", "pdfjsVersion", "pdfjsBuild", "exports", "exports", "module", "exports", "module", "i", "n", "s", "exports", "module", "exports", "module", "exports", "module", "x", "exports", "module", "x", "y", "i", "checker", "exports", "module", "fn", "e", "id", "classnames", "h", "v", "e", "import_classnames", "e", "i", "classNames", "d", "i", "h", "e", "s", "p", "results", "import_classnames", "import_classnames", "p", "h", "_", "value", "p", "e", "classNames", "h", "v", "s", "e", "classnames", "import_react_tiny_popover", "import_classnames", "h", "e", "classNames", "import_classnames", "h", "classnames", "s", "z", "e", "import_classnames", "classNames", "e", "import_classnames", "import_classnames", "h", "_", "p", "value", "e", "classNames", "h", "p", "e", "import_classnames", "classnames", "h", "p", "e", "import_classnames", "h", "p", "i", "e", "classNames", "h", "refsAreVisible", "p", "e", "classNames", "pdfjs", "i", "i", "i", "obj", "i", "o", "p", "_setPrototypeOf", "o", "_getPrototypeOf", "import_prop_types", "makeEventProps", "eventProps", "r", "e", "t", "f", "n", "isProduction", "x", "PropTypes", "LinkService", "get", "i", "_n", "i", "o", "n", "i", "get", "import_prop_types", "PropTypes", "isFile", "isPageIndex", "isPageNumber", "i", "e", "PDFDataRangeTransport", "Document", "onPassword", "get", "w", "PropTypes", "isFile", "import_prop_types", "import_prop_types", "Ref", "_excluded", "_createSuper", "_isNativeReflectConstruct", "e", "OutlineItemInternal", "w", "PropTypes", "OutlineItem", "ownKeys", "_objectSpread", "i", "_createSuper", "_isNativeReflectConstruct", "e", "OutlineInternal", "get", "w", "PropTypes", "import_prop_types", "import_prop_types", "pdfjs", "_createSuper", "_isNativeReflectConstruct", "e", "PageCanvasInternal", "get", "w", "PropTypes", "import_prop_types", "pdfjs", "_createSuper", "_isNativeReflectConstruct", "e", "PageSVGInternal", "get", "w", "PropTypes", "import_prop_types", "pdfjs", "ownKeys", "_objectSpread", "i", "_createSuper", "_isNativeReflectConstruct", "e", "TextLayerInternal", "get", "renderTextLayer", "w", "PropTypes", "import_prop_types", "pdfjs", "_createSuper", "_isNativeReflectConstruct", "e", "AnnotationLayerInternal", "get", "w", "PropTypes", "AnnotationLayer", "ownKeys", "_objectSpread", "i", "_createSuper", "_isNativeReflectConstruct", "e", "PageInternal", "get", "renderTextLayer", "renderAnnotationLayer", "w", "isFunctionOrNode", "PropTypes", "pdfjs", "h", "e", "h", "e", "p", "z", "z", "e", "s", "e", "h", "e", "s", "p", "results", "e", "h", "p", "e", "h", "p", "e", "e", "h", "p", "e", "h", "e", "import_classnames", "ImageSearch", "h", "i", "p", "e", "classNames", "h", "e", "h", "h", "e"]
}
