@elizaos/plugin-pdf 2.0.0-alpha.11 → 2.0.0-alpha.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,12 +1,11 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../services/pdf.ts", "../../node_modules/pdf-parse/dist/pdf-parse/web/pdf-parse.es.js", "../../index.ts"],
3
+ "sources": ["../../services/pdf.ts", "../../index.ts"],
4
4
  "sourcesContent": [
5
- "import { Service, ServiceType, logger, type IAgentRuntime } from \"@elizaos/core\";\nimport * as _pdfParse from \"pdf-parse\";\nconst pdfParse = (_pdfParse as any).default || _pdfParse;\nimport type {\n PdfConversionResult,\n PdfDocumentInfo,\n PdfExtractionOptions,\n} from \"../types\";\n\nexport class PdfService extends Service {\n static serviceType = ServiceType.PDF;\n capabilityDescription = \"The agent is able to convert PDF files to text\";\n\n static async start(_runtime: IAgentRuntime): Promise<PdfService> {\n return new PdfService();\n }\n\n static async stop(runtime: IAgentRuntime): Promise<void> {\n const service = await runtime.getService(ServiceType.PDF);\n if (service) {\n await (service as any).stop?.();\n }\n }\n\n async stop(): Promise<void> {}\n\n async convertPdfToText(pdfBuffer: Buffer): Promise<string> {\n try {\n const data = await pdfParse(pdfBuffer);\n return this.cleanUpContent(data.text);\n } catch (error) {\n logger.error(`PdfService: Failed to convert PDF to text - error: ${error}`);\n throw error;\n }\n }\n\n async convertPdfToTextWithOptions(\n pdfBuffer: Buffer,\n options: PdfExtractionOptions = {}\n ): Promise<PdfConversionResult> {\n try {\n const parseOptions: any = {};\n if (options.endPage) {\n parseOptions.max = options.endPage;\n }\n \n const data = await pdfParse(pdfBuffer, parseOptions);\n let text = data.text;\n\n if (options.cleanContent !== false) {\n text = this.cleanUpContent(text);\n }\n\n return {\n success: true,\n text,\n pageCount: data.numpages,\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n }\n\n async getDocumentInfo(pdfBuffer: Buffer): Promise<PdfDocumentInfo> {\n try {\n const data = await pdfParse(pdfBuffer);\n return {\n pageCount: data.numpages,\n metadata: {\n title: data.info?.Title,\n author: data.info?.Author,\n creator: data.info?.Creator,\n producer: data.info?.Producer,\n },\n text: this.cleanUpContent(data.text),\n pages: [],\n };\n } catch (error) {\n logger.error(`PdfService: Failed to get document info - error: ${error}`);\n throw error;\n }\n }\n\n cleanUpContent(content: string): string {\n try {\n const cleaned = content\n .replace(/[^\\S\\r\\n]+/g, \" \")\n .replace(/[ \\t]+(\\r?\\n)/g, \"$1\")\n .trim();\n return cleaned;\n } catch (error) {\n logger.error(`PdfService: Failed to clean up content - error: ${error}`);\n return content;\n }\n }\n}\n\nexport default PdfService;\n",
6
- "var __typeError = (msg) => {\n throw TypeError(msg);\n};\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), getter ? getter.call(obj) : member.get(obj));\nvar __privateAdd = (obj, member, value) => member.has(obj) ? __typeError(\"Cannot add the same private member more than once\") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\nvar __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, \"write to private field\"), setter ? setter.call(obj, value) : member.set(obj, value), value);\nvar __privateMethod = (obj, member, method) => (__accessCheck(obj, member, \"access private method\"), method);\nvar __privateWrapper = (obj, member, setter, getter) => ({\n set _(value) {\n __privateSet(obj, member, value, setter);\n },\n get _() {\n return __privateGet(obj, member, getter);\n }\n});\nvar _capability, _messageHandler, _port, _webWorker, _fakeWorkerId, _isWorkerDisabled, _workerPorts, _PDFWorker_instances, resolve_fn, initializeFromPort_fn, initialize_fn, setupFakeWorker_fn, _PDFWorker_static, mainThreadWorkerMessageHandler_get;\nvar __webpack_modules__ = {\n /***/\n 34: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var isCallable = __webpack_require__2(4901);\n module.exports = function(it) {\n return typeof it == \"object\" ? it !== null : isCallable(it);\n };\n })\n ),\n /***/\n 81: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var call = __webpack_require__2(9565);\n var aCallable = __webpack_require__2(9306);\n var anObject = __webpack_require__2(8551);\n var tryToString = __webpack_require__2(6823);\n var getIteratorMethod = __webpack_require__2(851);\n var $TypeError = TypeError;\n module.exports = function(argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n throw new $TypeError(tryToString(argument) + \" is not iterable\");\n };\n })\n ),\n /***/\n 116: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n var $ = __webpack_require__2(6518);\n var call = __webpack_require__2(9565);\n var iterate = __webpack_require__2(2652);\n var aCallable = __webpack_require__2(9306);\n var anObject = __webpack_require__2(8551);\n var getIteratorDirect = __webpack_require__2(1767);\n var iteratorClose = __webpack_require__2(9539);\n var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__2(4549);\n var findWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError(\"find\", TypeError);\n $({ target: \"Iterator\", proto: true, real: true, forced: findWithoutClosingOnEarlyError }, {\n find: function find(predicate) {\n anObject(this);\n try {\n aCallable(predicate);\n } catch (error) {\n iteratorClose(this, \"throw\", error);\n }\n if (findWithoutClosingOnEarlyError) return call(findWithoutClosingOnEarlyError, this, predicate);\n var record = getIteratorDirect(this);\n var counter = 0;\n return iterate(record, function(value, stop) {\n if (predicate(value, counter++)) return stop(value);\n }, { IS_RECORD: true, INTERRUPTED: true }).result;\n }\n });\n })\n ),\n /***/\n 283: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var uncurryThis = __webpack_require__2(9504);\n var fails = __webpack_require__2(9039);\n var isCallable = __webpack_require__2(4901);\n var hasOwn = __webpack_require__2(9297);\n var DESCRIPTORS = __webpack_require__2(3724);\n var CONFIGURABLE_FUNCTION_NAME = __webpack_require__2(350).CONFIGURABLE;\n var inspectSource = __webpack_require__2(3706);\n var InternalStateModule = __webpack_require__2(1181);\n var enforceInternalState = InternalStateModule.enforce;\n var getInternalState = InternalStateModule.get;\n var $String = String;\n var defineProperty = Object.defineProperty;\n var stringSlice = uncurryThis(\"\".slice);\n var replace = uncurryThis(\"\".replace);\n var join = uncurryThis([].join);\n var CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function() {\n return defineProperty(function() {\n }, \"length\", { value: 8 }).length !== 8;\n });\n var TEMPLATE = String(String).split(\"String\");\n var makeBuiltIn = module.exports = function(value, name, options) {\n if (stringSlice($String(name), 0, 7) === \"Symbol(\") {\n name = \"[\" + replace($String(name), /^Symbol\\(([^)]*)\\).*$/, \"$1\") + \"]\";\n }\n if (options && options.getter) name = \"get \" + name;\n if (options && options.setter) name = \"set \" + name;\n if (!hasOwn(value, \"name\") || CONFIGURABLE_FUNCTION_NAME && value.name !== name) {\n if (DESCRIPTORS) defineProperty(value, \"name\", { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, \"arity\") && value.length !== options.arity) {\n defineProperty(value, \"length\", { value: options.arity });\n }\n try {\n if (options && hasOwn(options, \"constructor\") && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, \"prototype\", { writable: false });\n } else if (value.prototype) value.prototype = void 0;\n } catch (error) {\n }\n var state = enforceInternalState(value);\n if (!hasOwn(state, \"source\")) {\n state.source = join(TEMPLATE, typeof name == \"string\" ? name : \"\");\n }\n return value;\n };\n Function.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n }, \"toString\");\n })\n ),\n /***/\n 350: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var DESCRIPTORS = __webpack_require__2(3724);\n var hasOwn = __webpack_require__2(9297);\n var FunctionPrototype = Function.prototype;\n var getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n var EXISTS = hasOwn(FunctionPrototype, \"name\");\n var PROPER = EXISTS && (function something() {\n }).name === \"something\";\n var CONFIGURABLE = EXISTS && (!DESCRIPTORS || DESCRIPTORS && getDescriptor(FunctionPrototype, \"name\").configurable);\n module.exports = {\n EXISTS,\n PROPER,\n CONFIGURABLE\n };\n })\n ),\n /***/\n 397: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var getBuiltIn = __webpack_require__2(7751);\n module.exports = getBuiltIn(\"document\", \"documentElement\");\n })\n ),\n /***/\n 421: (\n /***/\n ((module) => {\n module.exports = {};\n })\n ),\n /***/\n 456: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n var $ = __webpack_require__2(6518);\n var globalThis2 = __webpack_require__2(4576);\n var uncurryThis = __webpack_require__2(9504);\n var anUint8Array = __webpack_require__2(4154);\n var notDetached = __webpack_require__2(5169);\n var numberToString = uncurryThis(1.1.toString);\n var Uint8Array2 = globalThis2.Uint8Array;\n var INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS = !Uint8Array2 || !Uint8Array2.prototype.toHex || !(function() {\n try {\n var target = new Uint8Array2([255, 255, 255, 255, 255, 255, 255, 255]);\n return target.toHex() === \"ffffffffffffffff\";\n } catch (error) {\n return false;\n }\n })();\n if (Uint8Array2) $({ target: \"Uint8Array\", proto: true, forced: INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS }, {\n toHex: function toHex() {\n anUint8Array(this);\n notDetached(this.buffer);\n var result = \"\";\n for (var i = 0, length = this.length; i < length; i++) {\n var hex = numberToString(this[i], 16);\n result += hex.length === 1 ? \"0\" + hex : hex;\n }\n return result;\n }\n });\n })\n ),\n /***/\n 507: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var call = __webpack_require__2(9565);\n module.exports = function(record, fn, ITERATOR_INSTEAD_OF_RECORD) {\n var iterator = ITERATOR_INSTEAD_OF_RECORD ? record : record.iterator;\n var next = record.next;\n var step, result;\n while (!(step = call(next, iterator)).done) {\n result = fn(step.value);\n if (result !== void 0) return result;\n }\n };\n })\n ),\n /***/\n 531: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n var $ = __webpack_require__2(6518);\n var call = __webpack_require__2(9565);\n var aCallable = __webpack_require__2(9306);\n var anObject = __webpack_require__2(8551);\n var getIteratorDirect = __webpack_require__2(1767);\n var getIteratorFlattenable = __webpack_require__2(8646);\n var createIteratorProxy = __webpack_require__2(9462);\n var iteratorClose = __webpack_require__2(9539);\n var IS_PURE = __webpack_require__2(6395);\n var iteratorHelperThrowsOnInvalidIterator = __webpack_require__2(684);\n var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__2(4549);\n var FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE && !iteratorHelperThrowsOnInvalidIterator(\"flatMap\", function() {\n });\n var flatMapWithoutClosingOnEarlyError = !IS_PURE && !FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR && iteratorHelperWithoutClosingOnEarlyError(\"flatMap\", TypeError);\n var FORCED = IS_PURE || FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR || flatMapWithoutClosingOnEarlyError;\n var IteratorProxy = createIteratorProxy(function() {\n var iterator = this.iterator;\n var mapper = this.mapper;\n var result, inner;\n while (true) {\n if (inner = this.inner) try {\n result = anObject(call(inner.next, inner.iterator));\n if (!result.done) return result.value;\n this.inner = null;\n } catch (error) {\n iteratorClose(iterator, \"throw\", error);\n }\n result = anObject(call(this.next, iterator));\n if (this.done = !!result.done) return;\n try {\n this.inner = getIteratorFlattenable(mapper(result.value, this.counter++), false);\n } catch (error) {\n iteratorClose(iterator, \"throw\", error);\n }\n }\n });\n $({ target: \"Iterator\", proto: true, real: true, forced: FORCED }, {\n flatMap: function flatMap(mapper) {\n anObject(this);\n try {\n aCallable(mapper);\n } catch (error) {\n iteratorClose(this, \"throw\", error);\n }\n if (flatMapWithoutClosingOnEarlyError) return call(flatMapWithoutClosingOnEarlyError, this, mapper);\n return new IteratorProxy(getIteratorDirect(this), {\n mapper,\n inner: null\n });\n }\n });\n })\n ),\n /***/\n 616: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var fails = __webpack_require__2(9039);\n module.exports = !fails(function() {\n var test = (function() {\n }).bind();\n return typeof test != \"function\" || test.hasOwnProperty(\"prototype\");\n });\n })\n ),\n /***/\n 655: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var classof = __webpack_require__2(6955);\n var $String = String;\n module.exports = function(argument) {\n if (classof(argument) === \"Symbol\") throw new TypeError(\"Cannot convert a Symbol value to a string\");\n return $String(argument);\n };\n })\n ),\n /***/\n 679: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var isPrototypeOf = __webpack_require__2(1625);\n var $TypeError = TypeError;\n module.exports = function(it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw new $TypeError(\"Incorrect invocation\");\n };\n })\n ),\n /***/\n 684: (\n /***/\n ((module) => {\n module.exports = function(methodName, argument) {\n var method = typeof Iterator == \"function\" && Iterator.prototype[methodName];\n if (method) try {\n method.call({ next: null }, argument).next();\n } catch (error) {\n return true;\n }\n };\n })\n ),\n /***/\n 741: (\n /***/\n ((module) => {\n var ceil2 = Math.ceil;\n var floor2 = Math.floor;\n module.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor2 : ceil2)(n);\n };\n })\n ),\n /***/\n 757: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var getBuiltIn = __webpack_require__2(7751);\n var isCallable = __webpack_require__2(4901);\n var isPrototypeOf = __webpack_require__2(1625);\n var USE_SYMBOL_AS_UID = __webpack_require__2(7040);\n var $Object = Object;\n module.exports = USE_SYMBOL_AS_UID ? function(it) {\n return typeof it == \"symbol\";\n } : function(it) {\n var $Symbol = getBuiltIn(\"Symbol\");\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n };\n })\n ),\n /***/\n 851: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var classof = __webpack_require__2(6955);\n var getMethod = __webpack_require__2(5966);\n var isNullOrUndefined = __webpack_require__2(4117);\n var Iterators = __webpack_require__2(6269);\n var wellKnownSymbol = __webpack_require__2(8227);\n var ITERATOR = wellKnownSymbol(\"iterator\");\n module.exports = function(it) {\n if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR) || getMethod(it, \"@@iterator\") || Iterators[classof(it)];\n };\n })\n ),\n /***/\n 944: (\n /***/\n ((module) => {\n var $TypeError = TypeError;\n module.exports = function(options) {\n var alphabet = options && options.alphabet;\n if (alphabet === void 0 || alphabet === \"base64\" || alphabet === \"base64url\") return alphabet || \"base64\";\n throw new $TypeError(\"Incorrect `alphabet` option\");\n };\n })\n ),\n /***/\n 1072: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var internalObjectKeys = __webpack_require__2(1828);\n var enumBugKeys = __webpack_require__2(8727);\n module.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n };\n })\n ),\n /***/\n 1103: (\n /***/\n ((module) => {\n module.exports = function(exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n };\n })\n ),\n /***/\n 1108: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var classof = __webpack_require__2(6955);\n module.exports = function(it) {\n var klass = classof(it);\n return klass === \"BigInt64Array\" || klass === \"BigUint64Array\";\n };\n })\n ),\n /***/\n 1148: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n var $ = __webpack_require__2(6518);\n var call = __webpack_require__2(9565);\n var iterate = __webpack_require__2(2652);\n var aCallable = __webpack_require__2(9306);\n var anObject = __webpack_require__2(8551);\n var getIteratorDirect = __webpack_require__2(1767);\n var iteratorClose = __webpack_require__2(9539);\n var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__2(4549);\n var everyWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError(\"every\", TypeError);\n $({ target: \"Iterator\", proto: true, real: true, forced: everyWithoutClosingOnEarlyError }, {\n every: function every(predicate) {\n anObject(this);\n try {\n aCallable(predicate);\n } catch (error) {\n iteratorClose(this, \"throw\", error);\n }\n if (everyWithoutClosingOnEarlyError) return call(everyWithoutClosingOnEarlyError, this, predicate);\n var record = getIteratorDirect(this);\n var counter = 0;\n return !iterate(record, function(value, stop) {\n if (!predicate(value, counter++)) return stop();\n }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\n }\n });\n })\n ),\n /***/\n 1181: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var NATIVE_WEAK_MAP = __webpack_require__2(8622);\n var globalThis2 = __webpack_require__2(4576);\n var isObject = __webpack_require__2(34);\n var createNonEnumerableProperty = __webpack_require__2(6699);\n var hasOwn = __webpack_require__2(9297);\n var shared = __webpack_require__2(7629);\n var sharedKey = __webpack_require__2(6119);\n var hiddenKeys = __webpack_require__2(421);\n var OBJECT_ALREADY_INITIALIZED = \"Object already initialized\";\n var TypeError2 = globalThis2.TypeError;\n var WeakMap2 = globalThis2.WeakMap;\n var set, get, has;\n var enforce = function(it) {\n return has(it) ? get(it) : set(it, {});\n };\n var getterFor = function(TYPE) {\n return function(it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw new TypeError2(\"Incompatible receiver, \" + TYPE + \" required\");\n }\n return state;\n };\n };\n if (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap2());\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n set = function(it, metadata) {\n if (store.has(it)) throw new TypeError2(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function(it) {\n return store.get(it) || {};\n };\n has = function(it) {\n return store.has(it);\n };\n } else {\n var STATE = sharedKey(\"state\");\n hiddenKeys[STATE] = true;\n set = function(it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError2(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function(it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function(it) {\n return hasOwn(it, STATE);\n };\n }\n module.exports = {\n set,\n get,\n has,\n enforce,\n getterFor\n };\n })\n ),\n /***/\n 1291: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var trunc = __webpack_require__2(741);\n module.exports = function(argument) {\n var number = +argument;\n return number !== number || number === 0 ? 0 : trunc(number);\n };\n })\n ),\n /***/\n 1385: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var iteratorClose = __webpack_require__2(9539);\n module.exports = function(iters, kind, value) {\n for (var i = iters.length - 1; i >= 0; i--) {\n if (iters[i] === void 0) continue;\n try {\n value = iteratorClose(iters[i].iterator, kind, value);\n } catch (error) {\n kind = \"throw\";\n value = error;\n }\n }\n if (kind === \"throw\") throw value;\n return value;\n };\n })\n ),\n /***/\n 1548: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var globalThis2 = __webpack_require__2(4576);\n var fails = __webpack_require__2(9039);\n var V8 = __webpack_require__2(9519);\n var ENVIRONMENT = __webpack_require__2(4215);\n var structuredClone2 = globalThis2.structuredClone;\n module.exports = !!structuredClone2 && !fails(function() {\n if (ENVIRONMENT === \"DENO\" && V8 > 92 || ENVIRONMENT === \"NODE\" && V8 > 94 || ENVIRONMENT === \"BROWSER\" && V8 > 97) return false;\n var buffer = new ArrayBuffer(8);\n var clone = structuredClone2(buffer, { transfer: [buffer] });\n return buffer.byteLength !== 0 || clone.byteLength !== 8;\n });\n })\n ),\n /***/\n 1549: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n __webpack_require__2(6632);\n })\n ),\n /***/\n 1625: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var uncurryThis = __webpack_require__2(9504);\n module.exports = uncurryThis({}.isPrototypeOf);\n })\n ),\n /***/\n 1689: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n var $ = __webpack_require__2(6518);\n var globalThis2 = __webpack_require__2(4576);\n var apply = __webpack_require__2(8745);\n var slice = __webpack_require__2(7680);\n var newPromiseCapabilityModule = __webpack_require__2(6043);\n var aCallable = __webpack_require__2(9306);\n var perform = __webpack_require__2(1103);\n var Promise2 = globalThis2.Promise;\n var ACCEPT_ARGUMENTS = false;\n var FORCED = !Promise2 || !Promise2[\"try\"] || perform(function() {\n Promise2[\"try\"](function(argument) {\n ACCEPT_ARGUMENTS = argument === 8;\n }, 8);\n }).error || !ACCEPT_ARGUMENTS;\n $({ target: \"Promise\", stat: true, forced: FORCED }, {\n \"try\": function(callbackfn) {\n var args = arguments.length > 1 ? slice(arguments, 1) : [];\n var promiseCapability = newPromiseCapabilityModule.f(this);\n var result = perform(function() {\n return apply(aCallable(callbackfn), void 0, args);\n });\n (result.error ? promiseCapability.reject : promiseCapability.resolve)(result.value);\n return promiseCapability.promise;\n }\n });\n })\n ),\n /***/\n 1698: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n var $ = __webpack_require__2(6518);\n var union = __webpack_require__2(4204);\n var setMethodGetKeysBeforeCloning = __webpack_require__2(9835);\n var setMethodAcceptSetLike = __webpack_require__2(4916);\n var FORCED = !setMethodAcceptSetLike(\"union\") || !setMethodGetKeysBeforeCloning(\"union\");\n $({ target: \"Set\", proto: true, real: true, forced: FORCED }, {\n union\n });\n })\n ),\n /***/\n 1701: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n var $ = __webpack_require__2(6518);\n var call = __webpack_require__2(9565);\n var aCallable = __webpack_require__2(9306);\n var anObject = __webpack_require__2(8551);\n var getIteratorDirect = __webpack_require__2(1767);\n var createIteratorProxy = __webpack_require__2(9462);\n var callWithSafeIterationClosing = __webpack_require__2(6319);\n var iteratorClose = __webpack_require__2(9539);\n var iteratorHelperThrowsOnInvalidIterator = __webpack_require__2(684);\n var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__2(4549);\n var IS_PURE = __webpack_require__2(6395);\n var MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE && !iteratorHelperThrowsOnInvalidIterator(\"map\", function() {\n });\n var mapWithoutClosingOnEarlyError = !IS_PURE && !MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR && iteratorHelperWithoutClosingOnEarlyError(\"map\", TypeError);\n var FORCED = IS_PURE || MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR || mapWithoutClosingOnEarlyError;\n var IteratorProxy = createIteratorProxy(function() {\n var iterator = this.iterator;\n var result = anObject(call(this.next, iterator));\n var done = this.done = !!result.done;\n if (!done) return callWithSafeIterationClosing(iterator, this.mapper, [result.value, this.counter++], true);\n });\n $({ target: \"Iterator\", proto: true, real: true, forced: FORCED }, {\n map: function map(mapper) {\n anObject(this);\n try {\n aCallable(mapper);\n } catch (error) {\n iteratorClose(this, \"throw\", error);\n }\n if (mapWithoutClosingOnEarlyError) return call(mapWithoutClosingOnEarlyError, this, mapper);\n return new IteratorProxy(getIteratorDirect(this), {\n mapper\n });\n }\n });\n })\n ),\n /***/\n 1767: (\n /***/\n ((module) => {\n module.exports = function(obj) {\n return {\n iterator: obj,\n next: obj.next,\n done: false\n };\n };\n })\n ),\n /***/\n 1828: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var uncurryThis = __webpack_require__2(9504);\n var hasOwn = __webpack_require__2(9297);\n var toIndexedObject = __webpack_require__2(5397);\n var indexOf = __webpack_require__2(9617).indexOf;\n var hiddenKeys = __webpack_require__2(421);\n var push = uncurryThis([].push);\n module.exports = function(object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n };\n })\n ),\n /***/\n 2106: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var makeBuiltIn = __webpack_require__2(283);\n var defineProperty = __webpack_require__2(4913);\n module.exports = function(target, name, descriptor) {\n if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n return defineProperty.f(target, name, descriptor);\n };\n })\n ),\n /***/\n 2140: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var wellKnownSymbol = __webpack_require__2(8227);\n var TO_STRING_TAG = wellKnownSymbol(\"toStringTag\");\n var test = {};\n test[TO_STRING_TAG] = \"z\";\n module.exports = String(test) === \"[object z]\";\n })\n ),\n /***/\n 2195: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var uncurryThis = __webpack_require__2(9504);\n var toString = uncurryThis({}.toString);\n var stringSlice = uncurryThis(\"\".slice);\n module.exports = function(it) {\n return stringSlice(toString(it), 8, -1);\n };\n })\n ),\n /***/\n 2211: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var fails = __webpack_require__2(9039);\n module.exports = !fails(function() {\n function F() {\n }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n });\n })\n ),\n /***/\n 2303: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var globalThis2 = __webpack_require__2(4576);\n var uncurryThis = __webpack_require__2(9504);\n var Uint8Array2 = globalThis2.Uint8Array;\n var SyntaxError2 = globalThis2.SyntaxError;\n var parseInt2 = globalThis2.parseInt;\n var min = Math.min;\n var NOT_HEX = /[^\\da-f]/i;\n var exec = uncurryThis(NOT_HEX.exec);\n var stringSlice = uncurryThis(\"\".slice);\n module.exports = function(string, into) {\n var stringLength = string.length;\n if (stringLength % 2 !== 0) throw new SyntaxError2(\"String should be an even number of characters\");\n var maxLength = into ? min(into.length, stringLength / 2) : stringLength / 2;\n var bytes = into || new Uint8Array2(maxLength);\n var read = 0;\n var written = 0;\n while (written < maxLength) {\n var hexits = stringSlice(string, read, read += 2);\n if (exec(NOT_HEX, hexits)) throw new SyntaxError2(\"String should only contain hex characters\");\n bytes[written++] = parseInt2(hexits, 16);\n }\n return { bytes, read };\n };\n })\n ),\n /***/\n 2360: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var anObject = __webpack_require__2(8551);\n var definePropertiesModule = __webpack_require__2(6801);\n var enumBugKeys = __webpack_require__2(8727);\n var hiddenKeys = __webpack_require__2(421);\n var html = __webpack_require__2(397);\n var documentCreateElement = __webpack_require__2(4055);\n var sharedKey = __webpack_require__2(6119);\n var GT = \">\";\n var LT = \"<\";\n var PROTOTYPE = \"prototype\";\n var SCRIPT = \"script\";\n var IE_PROTO = sharedKey(\"IE_PROTO\");\n var EmptyConstructor = function() {\n };\n var scriptTag = function(content) {\n return LT + SCRIPT + GT + content + LT + \"/\" + SCRIPT + GT;\n };\n var NullProtoObjectViaActiveX = function(activeXDocument2) {\n activeXDocument2.write(scriptTag(\"\"));\n activeXDocument2.close();\n var temp = activeXDocument2.parentWindow.Object;\n activeXDocument2 = null;\n return temp;\n };\n var NullProtoObjectViaIFrame = function() {\n var iframe = documentCreateElement(\"iframe\");\n var JS = \"java\" + SCRIPT + \":\";\n var iframeDocument;\n iframe.style.display = \"none\";\n html.appendChild(iframe);\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag(\"document.F=Object\"));\n iframeDocument.close();\n return iframeDocument.F;\n };\n var activeXDocument;\n var NullProtoObject = function() {\n try {\n activeXDocument = new ActiveXObject(\"htmlfile\");\n } catch (error) {\n }\n NullProtoObject = typeof document != \"undefined\" ? document.domain && activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame() : NullProtoObjectViaActiveX(activeXDocument);\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n };\n hiddenKeys[IE_PROTO] = true;\n module.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === void 0 ? result : definePropertiesModule.f(result, Properties);\n };\n })\n ),\n /***/\n 2475: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n var $ = __webpack_require__2(6518);\n var isSupersetOf = __webpack_require__2(8527);\n var setMethodAcceptSetLike = __webpack_require__2(4916);\n var INCORRECT = !setMethodAcceptSetLike(\"isSupersetOf\", function(result) {\n return !result;\n });\n $({ target: \"Set\", proto: true, real: true, forced: INCORRECT }, {\n isSupersetOf\n });\n })\n ),\n /***/\n 2489: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n var $ = __webpack_require__2(6518);\n var call = __webpack_require__2(9565);\n var aCallable = __webpack_require__2(9306);\n var anObject = __webpack_require__2(8551);\n var getIteratorDirect = __webpack_require__2(1767);\n var createIteratorProxy = __webpack_require__2(9462);\n var callWithSafeIterationClosing = __webpack_require__2(6319);\n var IS_PURE = __webpack_require__2(6395);\n var iteratorClose = __webpack_require__2(9539);\n var iteratorHelperThrowsOnInvalidIterator = __webpack_require__2(684);\n var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__2(4549);\n var FILTER_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE && !iteratorHelperThrowsOnInvalidIterator(\"filter\", function() {\n });\n var filterWithoutClosingOnEarlyError = !IS_PURE && !FILTER_WITHOUT_THROWING_ON_INVALID_ITERATOR && iteratorHelperWithoutClosingOnEarlyError(\"filter\", TypeError);\n var FORCED = IS_PURE || FILTER_WITHOUT_THROWING_ON_INVALID_ITERATOR || filterWithoutClosingOnEarlyError;\n var IteratorProxy = createIteratorProxy(function() {\n var iterator = this.iterator;\n var predicate = this.predicate;\n var next = this.next;\n var result, done, value;\n while (true) {\n result = anObject(call(next, iterator));\n done = this.done = !!result.done;\n if (done) return;\n value = result.value;\n if (callWithSafeIterationClosing(iterator, predicate, [value, this.counter++], true)) return value;\n }\n });\n $({ target: \"Iterator\", proto: true, real: true, forced: FORCED }, {\n filter: function filter(predicate) {\n anObject(this);\n try {\n aCallable(predicate);\n } catch (error) {\n iteratorClose(this, \"throw\", error);\n }\n if (filterWithoutClosingOnEarlyError) return call(filterWithoutClosingOnEarlyError, this, predicate);\n return new IteratorProxy(getIteratorDirect(this), {\n predicate\n });\n }\n });\n })\n ),\n /***/\n 2529: (\n /***/\n ((module) => {\n module.exports = function(value, done) {\n return { value, done };\n };\n })\n ),\n /***/\n 2603: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var toString = __webpack_require__2(655);\n module.exports = function(argument, $default) {\n return argument === void 0 ? arguments.length < 2 ? \"\" : $default : toString(argument);\n };\n })\n ),\n /***/\n 2652: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var bind = __webpack_require__2(6080);\n var call = __webpack_require__2(9565);\n var anObject = __webpack_require__2(8551);\n var tryToString = __webpack_require__2(6823);\n var isArrayIteratorMethod = __webpack_require__2(4209);\n var lengthOfArrayLike = __webpack_require__2(6198);\n var isPrototypeOf = __webpack_require__2(1625);\n var getIterator = __webpack_require__2(81);\n var getIteratorMethod = __webpack_require__2(851);\n var iteratorClose = __webpack_require__2(9539);\n var $TypeError = TypeError;\n var Result = function(stopped, result) {\n this.stopped = stopped;\n this.result = result;\n };\n var ResultPrototype = Result.prototype;\n module.exports = function(iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_RECORD = !!(options && options.IS_RECORD);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that);\n var iterator, iterFn, index, length, result, next, step;\n var stop = function(condition) {\n if (iterator) iteratorClose(iterator, \"normal\");\n return new Result(true, condition);\n };\n var callFn = function(value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n }\n return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n if (IS_RECORD) {\n iterator = iterable.iterator;\n } else if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (!iterFn) throw new $TypeError(tryToString(iterable) + \" is not iterable\");\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && isPrototypeOf(ResultPrototype, result)) return result;\n }\n return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n next = IS_RECORD ? iterable.next : iterator.next;\n while (!(step = call(next, iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, \"throw\", error);\n }\n if (typeof result == \"object\" && result && isPrototypeOf(ResultPrototype, result)) return result;\n }\n return new Result(false);\n };\n })\n ),\n /***/\n 2777: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var call = __webpack_require__2(9565);\n var isObject = __webpack_require__2(34);\n var isSymbol = __webpack_require__2(757);\n var getMethod = __webpack_require__2(5966);\n var ordinaryToPrimitive = __webpack_require__2(4270);\n var wellKnownSymbol = __webpack_require__2(8227);\n var $TypeError = TypeError;\n var TO_PRIMITIVE = wellKnownSymbol(\"toPrimitive\");\n module.exports = function(input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === void 0) pref = \"default\";\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw new $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === void 0) pref = \"number\";\n return ordinaryToPrimitive(input, pref);\n };\n })\n ),\n /***/\n 2787: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var hasOwn = __webpack_require__2(9297);\n var isCallable = __webpack_require__2(4901);\n var toObject = __webpack_require__2(8981);\n var sharedKey = __webpack_require__2(6119);\n var CORRECT_PROTOTYPE_GETTER = __webpack_require__2(2211);\n var IE_PROTO = sharedKey(\"IE_PROTO\");\n var $Object = Object;\n var ObjectPrototype = $Object.prototype;\n module.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function(O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n }\n return object instanceof $Object ? ObjectPrototype : null;\n };\n })\n ),\n /***/\n 2796: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var fails = __webpack_require__2(9039);\n var isCallable = __webpack_require__2(4901);\n var replacement = /#|\\.prototype\\./;\n var isForced = function(feature, detection) {\n var value = data[normalize(feature)];\n return value === POLYFILL ? true : value === NATIVE ? false : isCallable(detection) ? fails(detection) : !!detection;\n };\n var normalize = isForced.normalize = function(string) {\n return String(string).replace(replacement, \".\").toLowerCase();\n };\n var data = isForced.data = {};\n var NATIVE = isForced.NATIVE = \"N\";\n var POLYFILL = isForced.POLYFILL = \"P\";\n module.exports = isForced;\n })\n ),\n /***/\n 2804: (\n /***/\n ((module) => {\n var commonAlphabet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n var base64Alphabet = commonAlphabet + \"+/\";\n var base64UrlAlphabet = commonAlphabet + \"-_\";\n var inverse = function(characters) {\n var result = {};\n var index = 0;\n for (; index < 64; index++) result[characters.charAt(index)] = index;\n return result;\n };\n module.exports = {\n i2c: base64Alphabet,\n c2i: inverse(base64Alphabet),\n i2cUrl: base64UrlAlphabet,\n c2iUrl: inverse(base64UrlAlphabet)\n };\n })\n ),\n /***/\n 2812: (\n /***/\n ((module) => {\n var $TypeError = TypeError;\n module.exports = function(passed, required) {\n if (passed < required) throw new $TypeError(\"Not enough arguments\");\n return passed;\n };\n })\n ),\n /***/\n 2839: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var globalThis2 = __webpack_require__2(4576);\n var navigator2 = globalThis2.navigator;\n var userAgent = navigator2 && navigator2.userAgent;\n module.exports = userAgent ? String(userAgent) : \"\";\n })\n ),\n /***/\n 2967: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var uncurryThisAccessor = __webpack_require__2(6706);\n var isObject = __webpack_require__2(34);\n var requireObjectCoercible = __webpack_require__2(7750);\n var aPossiblePrototype = __webpack_require__2(3506);\n module.exports = Object.setPrototypeOf || (\"__proto__\" in {} ? (function() {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = uncurryThisAccessor(Object.prototype, \"__proto__\", \"set\");\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) {\n }\n return function setPrototypeOf(O, proto) {\n requireObjectCoercible(O);\n aPossiblePrototype(proto);\n if (!isObject(O)) return O;\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n })() : void 0);\n })\n ),\n /***/\n 3068: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n var $ = __webpack_require__2(6518);\n var uncurryThis = __webpack_require__2(9504);\n var iterate = __webpack_require__2(2652);\n var $RangeError = RangeError;\n var $TypeError = TypeError;\n var $Infinity = Infinity;\n var $NaN = NaN;\n var abs = Math.abs;\n var pow = Math.pow;\n var push = uncurryThis([].push);\n var POW_2_1023 = pow(2, 1023);\n var MAX_SAFE_INTEGER = pow(2, 53) - 1;\n var MAX_DOUBLE = Number.MAX_VALUE;\n var MAX_ULP = pow(2, 971);\n var NOT_A_NUMBER = {};\n var MINUS_INFINITY = {};\n var PLUS_INFINITY = {};\n var MINUS_ZERO = {};\n var FINITE = {};\n var twosum = function(x, y) {\n var hi = x + y;\n var lo = y - (hi - x);\n return { hi, lo };\n };\n $({ target: \"Math\", stat: true }, {\n // eslint-disable-next-line max-statements -- ok\n sumPrecise: function sumPrecise(items) {\n var numbers = [];\n var count = 0;\n var state = MINUS_ZERO;\n iterate(items, function(n2) {\n if (++count >= MAX_SAFE_INTEGER) throw new $RangeError(\"Maximum allowed index exceeded\");\n if (typeof n2 != \"number\") throw new $TypeError(\"Value is not a number\");\n if (state !== NOT_A_NUMBER) {\n if (n2 !== n2) state = NOT_A_NUMBER;\n else if (n2 === $Infinity) state = state === MINUS_INFINITY ? NOT_A_NUMBER : PLUS_INFINITY;\n else if (n2 === -$Infinity) state = state === PLUS_INFINITY ? NOT_A_NUMBER : MINUS_INFINITY;\n else if ((n2 !== 0 || 1 / n2 === $Infinity) && (state === MINUS_ZERO || state === FINITE)) {\n state = FINITE;\n push(numbers, n2);\n }\n }\n });\n switch (state) {\n case NOT_A_NUMBER:\n return $NaN;\n case MINUS_INFINITY:\n return -$Infinity;\n case PLUS_INFINITY:\n return $Infinity;\n case MINUS_ZERO:\n return -0;\n }\n var partials = [];\n var overflow = 0;\n var x, y, sum, hi, lo, tmp;\n for (var i = 0; i < numbers.length; i++) {\n x = numbers[i];\n var actuallyUsedPartials = 0;\n for (var j = 0; j < partials.length; j++) {\n y = partials[j];\n if (abs(x) < abs(y)) {\n tmp = x;\n x = y;\n y = tmp;\n }\n sum = twosum(x, y);\n hi = sum.hi;\n lo = sum.lo;\n if (abs(hi) === $Infinity) {\n var sign = hi === $Infinity ? 1 : -1;\n overflow += sign;\n x = x - sign * POW_2_1023 - sign * POW_2_1023;\n if (abs(x) < abs(y)) {\n tmp = x;\n x = y;\n y = tmp;\n }\n sum = twosum(x, y);\n hi = sum.hi;\n lo = sum.lo;\n }\n if (lo !== 0) partials[actuallyUsedPartials++] = lo;\n x = hi;\n }\n partials.length = actuallyUsedPartials;\n if (x !== 0) push(partials, x);\n }\n var n = partials.length - 1;\n hi = 0;\n lo = 0;\n if (overflow !== 0) {\n var next = n >= 0 ? partials[n] : 0;\n n--;\n if (abs(overflow) > 1 || overflow > 0 && next > 0 || overflow < 0 && next < 0) {\n return overflow > 0 ? $Infinity : -$Infinity;\n }\n sum = twosum(overflow * POW_2_1023, next / 2);\n hi = sum.hi;\n lo = sum.lo;\n lo *= 2;\n if (abs(2 * hi) === $Infinity) {\n if (hi > 0) {\n return hi === POW_2_1023 && lo === -(MAX_ULP / 2) && n >= 0 && partials[n] < 0 ? MAX_DOUBLE : $Infinity;\n }\n return hi === -POW_2_1023 && lo === MAX_ULP / 2 && n >= 0 && partials[n] > 0 ? -MAX_DOUBLE : -$Infinity;\n }\n if (lo !== 0) {\n partials[++n] = lo;\n lo = 0;\n }\n hi *= 2;\n }\n while (n >= 0) {\n sum = twosum(hi, partials[n--]);\n hi = sum.hi;\n lo = sum.lo;\n if (lo !== 0) break;\n }\n if (n >= 0 && (lo < 0 && partials[n] < 0 || lo > 0 && partials[n] > 0)) {\n y = lo * 2;\n x = hi + y;\n if (y === x - hi) hi = x;\n }\n return hi;\n }\n });\n })\n ),\n /***/\n 3167: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var isCallable = __webpack_require__2(4901);\n var isObject = __webpack_require__2(34);\n var setPrototypeOf = __webpack_require__2(2967);\n module.exports = function($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf && // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n isCallable(NewTarget = dummy.constructor) && NewTarget !== Wrapper && isObject(NewTargetPrototype = NewTarget.prototype) && NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n };\n })\n ),\n /***/\n 3238: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var globalThis2 = __webpack_require__2(4576);\n var NATIVE_ARRAY_BUFFER = __webpack_require__2(7811);\n var arrayBufferByteLength = __webpack_require__2(7394);\n var DataView2 = globalThis2.DataView;\n module.exports = function(O) {\n if (!NATIVE_ARRAY_BUFFER || arrayBufferByteLength(O) !== 0) return false;\n try {\n new DataView2(O);\n return false;\n } catch (error) {\n return true;\n }\n };\n })\n ),\n /***/\n 3392: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var uncurryThis = __webpack_require__2(9504);\n var id = 0;\n var postfix = Math.random();\n var toString = uncurryThis(1.1.toString);\n module.exports = function(key) {\n return \"Symbol(\" + (key === void 0 ? \"\" : key) + \")_\" + toString(++id + postfix, 36);\n };\n })\n ),\n /***/\n 3440: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var aSet = __webpack_require__2(7080);\n var SetHelpers = __webpack_require__2(4402);\n var clone = __webpack_require__2(9286);\n var size = __webpack_require__2(5170);\n var getSetRecord = __webpack_require__2(3789);\n var iterateSet = __webpack_require__2(8469);\n var iterateSimple = __webpack_require__2(507);\n var has = SetHelpers.has;\n var remove = SetHelpers.remove;\n module.exports = function difference(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n var result = clone(O);\n if (size(O) <= otherRec.size) iterateSet(O, function(e) {\n if (otherRec.includes(e)) remove(result, e);\n });\n else iterateSimple(otherRec.getIterator(), function(e) {\n if (has(result, e)) remove(result, e);\n });\n return result;\n };\n })\n ),\n /***/\n 3463: (\n /***/\n ((module) => {\n var $TypeError = TypeError;\n module.exports = function(argument) {\n if (typeof argument == \"string\") return argument;\n throw new $TypeError(\"Argument is not a string\");\n };\n })\n ),\n /***/\n 3506: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var isPossiblePrototype = __webpack_require__2(3925);\n var $String = String;\n var $TypeError = TypeError;\n module.exports = function(argument) {\n if (isPossiblePrototype(argument)) return argument;\n throw new $TypeError(\"Can't set \" + $String(argument) + \" as a prototype\");\n };\n })\n ),\n /***/\n 3579: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n var $ = __webpack_require__2(6518);\n var call = __webpack_require__2(9565);\n var iterate = __webpack_require__2(2652);\n var aCallable = __webpack_require__2(9306);\n var anObject = __webpack_require__2(8551);\n var getIteratorDirect = __webpack_require__2(1767);\n var iteratorClose = __webpack_require__2(9539);\n var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__2(4549);\n var someWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError(\"some\", TypeError);\n $({ target: \"Iterator\", proto: true, real: true, forced: someWithoutClosingOnEarlyError }, {\n some: function some(predicate) {\n anObject(this);\n try {\n aCallable(predicate);\n } catch (error) {\n iteratorClose(this, \"throw\", error);\n }\n if (someWithoutClosingOnEarlyError) return call(someWithoutClosingOnEarlyError, this, predicate);\n var record = getIteratorDirect(this);\n var counter = 0;\n return iterate(record, function(value, stop) {\n if (predicate(value, counter++)) return stop();\n }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\n }\n });\n })\n ),\n /***/\n 3650: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var aSet = __webpack_require__2(7080);\n var SetHelpers = __webpack_require__2(4402);\n var clone = __webpack_require__2(9286);\n var getSetRecord = __webpack_require__2(3789);\n var iterateSimple = __webpack_require__2(507);\n var add = SetHelpers.add;\n var has = SetHelpers.has;\n var remove = SetHelpers.remove;\n module.exports = function symmetricDifference(other) {\n var O = aSet(this);\n var keysIter = getSetRecord(other).getIterator();\n var result = clone(O);\n iterateSimple(keysIter, function(e) {\n if (has(O, e)) remove(result, e);\n else add(result, e);\n });\n return result;\n };\n })\n ),\n /***/\n 3706: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var uncurryThis = __webpack_require__2(9504);\n var isCallable = __webpack_require__2(4901);\n var store = __webpack_require__2(7629);\n var functionToString = uncurryThis(Function.toString);\n if (!isCallable(store.inspectSource)) {\n store.inspectSource = function(it) {\n return functionToString(it);\n };\n }\n module.exports = store.inspectSource;\n })\n ),\n /***/\n 3717: (\n /***/\n ((__unused_webpack_module, exports) => {\n exports.f = Object.getOwnPropertySymbols;\n })\n ),\n /***/\n 3724: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var fails = __webpack_require__2(9039);\n module.exports = !fails(function() {\n return Object.defineProperty({}, 1, { get: function() {\n return 7;\n } })[1] !== 7;\n });\n })\n ),\n /***/\n 3789: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var aCallable = __webpack_require__2(9306);\n var anObject = __webpack_require__2(8551);\n var call = __webpack_require__2(9565);\n var toIntegerOrInfinity = __webpack_require__2(1291);\n var getIteratorDirect = __webpack_require__2(1767);\n var INVALID_SIZE = \"Invalid size\";\n var $RangeError = RangeError;\n var $TypeError = TypeError;\n var max = Math.max;\n var SetRecord = function(set, intSize) {\n this.set = set;\n this.size = max(intSize, 0);\n this.has = aCallable(set.has);\n this.keys = aCallable(set.keys);\n };\n SetRecord.prototype = {\n getIterator: function() {\n return getIteratorDirect(anObject(call(this.keys, this.set)));\n },\n includes: function(it) {\n return call(this.has, this.set, it);\n }\n };\n module.exports = function(obj) {\n anObject(obj);\n var numSize = +obj.size;\n if (numSize !== numSize) throw new $TypeError(INVALID_SIZE);\n var intSize = toIntegerOrInfinity(numSize);\n if (intSize < 0) throw new $RangeError(INVALID_SIZE);\n return new SetRecord(obj, intSize);\n };\n })\n ),\n /***/\n 3838: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var aSet = __webpack_require__2(7080);\n var size = __webpack_require__2(5170);\n var iterate = __webpack_require__2(8469);\n var getSetRecord = __webpack_require__2(3789);\n module.exports = function isSubsetOf(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n if (size(O) > otherRec.size) return false;\n return iterate(O, function(e) {\n if (!otherRec.includes(e)) return false;\n }, true) !== false;\n };\n })\n ),\n /***/\n 3853: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n var $ = __webpack_require__2(6518);\n var isDisjointFrom = __webpack_require__2(4449);\n var setMethodAcceptSetLike = __webpack_require__2(4916);\n var INCORRECT = !setMethodAcceptSetLike(\"isDisjointFrom\", function(result) {\n return !result;\n });\n $({ target: \"Set\", proto: true, real: true, forced: INCORRECT }, {\n isDisjointFrom\n });\n })\n ),\n /***/\n 3925: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var isObject = __webpack_require__2(34);\n module.exports = function(argument) {\n return isObject(argument) || argument === null;\n };\n })\n ),\n /***/\n 3972: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var isObject = __webpack_require__2(34);\n var $String = String;\n var $TypeError = TypeError;\n module.exports = function(argument) {\n if (argument === void 0 || isObject(argument)) return argument;\n throw new $TypeError($String(argument) + \" is not an object or undefined\");\n };\n })\n ),\n /***/\n 4055: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var globalThis2 = __webpack_require__2(4576);\n var isObject = __webpack_require__2(34);\n var document2 = globalThis2.document;\n var EXISTS = isObject(document2) && isObject(document2.createElement);\n module.exports = function(it) {\n return EXISTS ? document2.createElement(it) : {};\n };\n })\n ),\n /***/\n 4114: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n var $ = __webpack_require__2(6518);\n var toObject = __webpack_require__2(8981);\n var lengthOfArrayLike = __webpack_require__2(6198);\n var setArrayLength = __webpack_require__2(4527);\n var doesNotExceedSafeInteger = __webpack_require__2(6837);\n var fails = __webpack_require__2(9039);\n var INCORRECT_TO_LENGTH = fails(function() {\n return [].push.call({ length: 4294967296 }, 1) !== 4294967297;\n });\n var properErrorOnNonWritableLength = function() {\n try {\n Object.defineProperty([], \"length\", { writable: false }).push();\n } catch (error) {\n return error instanceof TypeError;\n }\n };\n var FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\n $({ target: \"Array\", proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n push: function push(item) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var argCount = arguments.length;\n doesNotExceedSafeInteger(len + argCount);\n for (var i = 0; i < argCount; i++) {\n O[len] = arguments[i];\n len++;\n }\n setArrayLength(O, len);\n return len;\n }\n });\n })\n ),\n /***/\n 4117: (\n /***/\n ((module) => {\n module.exports = function(it) {\n return it === null || it === void 0;\n };\n })\n ),\n /***/\n 4149: (\n /***/\n ((module) => {\n var $RangeError = RangeError;\n module.exports = function(it) {\n if (it === it) return it;\n throw new $RangeError(\"NaN is not allowed\");\n };\n })\n ),\n /***/\n 4154: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var classof = __webpack_require__2(6955);\n var $TypeError = TypeError;\n module.exports = function(argument) {\n if (classof(argument) === \"Uint8Array\") return argument;\n throw new $TypeError(\"Argument is not an Uint8Array\");\n };\n })\n ),\n /***/\n 4204: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var aSet = __webpack_require__2(7080);\n var add = __webpack_require__2(4402).add;\n var clone = __webpack_require__2(9286);\n var getSetRecord = __webpack_require__2(3789);\n var iterateSimple = __webpack_require__2(507);\n module.exports = function union(other) {\n var O = aSet(this);\n var keysIter = getSetRecord(other).getIterator();\n var result = clone(O);\n iterateSimple(keysIter, function(it) {\n add(result, it);\n });\n return result;\n };\n })\n ),\n /***/\n 4209: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var wellKnownSymbol = __webpack_require__2(8227);\n var Iterators = __webpack_require__2(6269);\n var ITERATOR = wellKnownSymbol(\"iterator\");\n var ArrayPrototype = Array.prototype;\n module.exports = function(it) {\n return it !== void 0 && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n };\n })\n ),\n /***/\n 4215: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var globalThis2 = __webpack_require__2(4576);\n var userAgent = __webpack_require__2(2839);\n var classof = __webpack_require__2(2195);\n var userAgentStartsWith = function(string) {\n return userAgent.slice(0, string.length) === string;\n };\n module.exports = (function() {\n if (userAgentStartsWith(\"Bun/\")) return \"BUN\";\n if (userAgentStartsWith(\"Cloudflare-Workers\")) return \"CLOUDFLARE\";\n if (userAgentStartsWith(\"Deno/\")) return \"DENO\";\n if (userAgentStartsWith(\"Node.js/\")) return \"NODE\";\n if (globalThis2.Bun && typeof Bun.version == \"string\") return \"BUN\";\n if (globalThis2.Deno && typeof Deno.version == \"object\") return \"DENO\";\n if (classof(globalThis2.process) === \"process\") return \"NODE\";\n if (globalThis2.window && globalThis2.document) return \"BROWSER\";\n return \"REST\";\n })();\n })\n ),\n /***/\n 4226: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n var $ = __webpack_require__2(6518);\n var globalThis2 = __webpack_require__2(4576);\n var aString = __webpack_require__2(3463);\n var anUint8Array = __webpack_require__2(4154);\n var notDetached = __webpack_require__2(5169);\n var $fromHex = __webpack_require__2(2303);\n if (globalThis2.Uint8Array) $({ target: \"Uint8Array\", proto: true }, {\n setFromHex: function setFromHex(string) {\n anUint8Array(this);\n aString(string);\n notDetached(this.buffer);\n var read = $fromHex(string, this).read;\n return { read, written: read / 2 };\n }\n });\n })\n ),\n /***/\n 4235: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n __webpack_require__2(3068);\n })\n ),\n /***/\n 4270: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var call = __webpack_require__2(9565);\n var isCallable = __webpack_require__2(4901);\n var isObject = __webpack_require__2(34);\n var $TypeError = TypeError;\n module.exports = function(input, pref) {\n var fn, val;\n if (pref === \"string\" && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== \"string\" && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw new $TypeError(\"Can't convert object to primitive value\");\n };\n })\n ),\n /***/\n 4376: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var classof = __webpack_require__2(2195);\n module.exports = Array.isArray || function isArray(argument) {\n return classof(argument) === \"Array\";\n };\n })\n ),\n /***/\n 4402: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var uncurryThis = __webpack_require__2(9504);\n var SetPrototype = Set.prototype;\n module.exports = {\n // eslint-disable-next-line es/no-set -- safe\n Set,\n add: uncurryThis(SetPrototype.add),\n has: uncurryThis(SetPrototype.has),\n remove: uncurryThis(SetPrototype[\"delete\"]),\n proto: SetPrototype\n };\n })\n ),\n /***/\n 4449: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var aSet = __webpack_require__2(7080);\n var has = __webpack_require__2(4402).has;\n var size = __webpack_require__2(5170);\n var getSetRecord = __webpack_require__2(3789);\n var iterateSet = __webpack_require__2(8469);\n var iterateSimple = __webpack_require__2(507);\n var iteratorClose = __webpack_require__2(9539);\n module.exports = function isDisjointFrom(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n if (size(O) <= otherRec.size) return iterateSet(O, function(e) {\n if (otherRec.includes(e)) return false;\n }, true) !== false;\n var iterator = otherRec.getIterator();\n return iterateSimple(iterator, function(e) {\n if (has(O, e)) return iteratorClose(iterator, \"normal\", false);\n }) !== false;\n };\n })\n ),\n /***/\n 4483: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var globalThis2 = __webpack_require__2(4576);\n var getBuiltInNodeModule = __webpack_require__2(9429);\n var PROPER_STRUCTURED_CLONE_TRANSFER = __webpack_require__2(1548);\n var structuredClone2 = globalThis2.structuredClone;\n var $ArrayBuffer = globalThis2.ArrayBuffer;\n var $MessageChannel = globalThis2.MessageChannel;\n var detach = false;\n var WorkerThreads, channel, buffer, $detach;\n if (PROPER_STRUCTURED_CLONE_TRANSFER) {\n detach = function(transferable) {\n structuredClone2(transferable, { transfer: [transferable] });\n };\n } else if ($ArrayBuffer) try {\n if (!$MessageChannel) {\n WorkerThreads = getBuiltInNodeModule(\"worker_threads\");\n if (WorkerThreads) $MessageChannel = WorkerThreads.MessageChannel;\n }\n if ($MessageChannel) {\n channel = new $MessageChannel();\n buffer = new $ArrayBuffer(2);\n $detach = function(transferable) {\n channel.port1.postMessage(null, [transferable]);\n };\n if (buffer.byteLength === 2) {\n $detach(buffer);\n if (buffer.byteLength === 0) detach = $detach;\n }\n }\n } catch (error) {\n }\n module.exports = detach;\n })\n ),\n /***/\n 4495: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var V8_VERSION = __webpack_require__2(9519);\n var fails = __webpack_require__2(9039);\n var globalThis2 = __webpack_require__2(4576);\n var $String = globalThis2.String;\n module.exports = !!Object.getOwnPropertySymbols && !fails(function() {\n var symbol = Symbol(\"symbol detection\");\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) || // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n });\n })\n ),\n /***/\n 4527: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var DESCRIPTORS = __webpack_require__2(3724);\n var isArray = __webpack_require__2(4376);\n var $TypeError = TypeError;\n var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n var SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !(function() {\n if (this !== void 0) return true;\n try {\n Object.defineProperty([], \"length\", { writable: false }).length = 1;\n } catch (error) {\n return error instanceof TypeError;\n }\n })();\n module.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function(O, length) {\n if (isArray(O) && !getOwnPropertyDescriptor(O, \"length\").writable) {\n throw new $TypeError(\"Cannot set read only .length\");\n }\n return O.length = length;\n } : function(O, length) {\n return O.length = length;\n };\n })\n ),\n /***/\n 4549: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var globalThis2 = __webpack_require__2(4576);\n module.exports = function(METHOD_NAME, ExpectedError) {\n var Iterator2 = globalThis2.Iterator;\n var IteratorPrototype = Iterator2 && Iterator2.prototype;\n var method = IteratorPrototype && IteratorPrototype[METHOD_NAME];\n var CLOSED = false;\n if (method) try {\n method.call({\n next: function() {\n return { done: true };\n },\n \"return\": function() {\n CLOSED = true;\n }\n }, -1);\n } catch (error) {\n if (!(error instanceof ExpectedError)) CLOSED = false;\n }\n if (!CLOSED) return method;\n };\n })\n ),\n /***/\n 4576: (\n /***/\n (function(module) {\n var check = function(it) {\n return it && it.Math === Math && it;\n };\n module.exports = // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == \"object\" && globalThis) || check(typeof window == \"object\" && window) || // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == \"object\" && self) || check(typeof global == \"object\" && global) || check(typeof this == \"object\" && this) || // eslint-disable-next-line no-new-func -- fallback\n /* @__PURE__ */ (function() {\n return this;\n })() || Function(\"return this\")();\n })\n ),\n /***/\n 4603: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n var defineBuiltIn = __webpack_require__2(6840);\n var uncurryThis = __webpack_require__2(9504);\n var toString = __webpack_require__2(655);\n var validateArgumentsLength = __webpack_require__2(2812);\n var $URLSearchParams = URLSearchParams;\n var URLSearchParamsPrototype = $URLSearchParams.prototype;\n var append = uncurryThis(URLSearchParamsPrototype.append);\n var $delete = uncurryThis(URLSearchParamsPrototype[\"delete\"]);\n var forEach = uncurryThis(URLSearchParamsPrototype.forEach);\n var push = uncurryThis([].push);\n var params = new $URLSearchParams(\"a=1&a=2&b=3\");\n params[\"delete\"](\"a\", 1);\n params[\"delete\"](\"b\", void 0);\n if (params + \"\" !== \"a=2\") {\n defineBuiltIn(URLSearchParamsPrototype, \"delete\", function(name) {\n var length = arguments.length;\n var $value = length < 2 ? void 0 : arguments[1];\n if (length && $value === void 0) return $delete(this, name);\n var entries = [];\n forEach(this, function(v, k) {\n push(entries, { key: k, value: v });\n });\n validateArgumentsLength(length, 1);\n var key = toString(name);\n var value = toString($value);\n var index = 0;\n var dindex = 0;\n var found = false;\n var entriesLength = entries.length;\n var entry;\n while (index < entriesLength) {\n entry = entries[index++];\n if (found || entry.key === key) {\n found = true;\n $delete(this, entry.key);\n } else dindex++;\n }\n while (dindex < entriesLength) {\n entry = entries[dindex++];\n if (!(entry.key === key && entry.value === value)) append(this, entry.key, entry.value);\n }\n }, { enumerable: true, unsafe: true });\n }\n })\n ),\n /***/\n 4628: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n var $ = __webpack_require__2(6518);\n var newPromiseCapabilityModule = __webpack_require__2(6043);\n $({ target: \"Promise\", stat: true }, {\n withResolvers: function withResolvers() {\n var promiseCapability = newPromiseCapabilityModule.f(this);\n return {\n promise: promiseCapability.promise,\n resolve: promiseCapability.resolve,\n reject: promiseCapability.reject\n };\n }\n });\n })\n ),\n /***/\n 4644: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var NATIVE_ARRAY_BUFFER = __webpack_require__2(7811);\n var DESCRIPTORS = __webpack_require__2(3724);\n var globalThis2 = __webpack_require__2(4576);\n var isCallable = __webpack_require__2(4901);\n var isObject = __webpack_require__2(34);\n var hasOwn = __webpack_require__2(9297);\n var classof = __webpack_require__2(6955);\n var tryToString = __webpack_require__2(6823);\n var createNonEnumerableProperty = __webpack_require__2(6699);\n var defineBuiltIn = __webpack_require__2(6840);\n var defineBuiltInAccessor = __webpack_require__2(2106);\n var isPrototypeOf = __webpack_require__2(1625);\n var getPrototypeOf = __webpack_require__2(2787);\n var setPrototypeOf = __webpack_require__2(2967);\n var wellKnownSymbol = __webpack_require__2(8227);\n var uid = __webpack_require__2(3392);\n var InternalStateModule = __webpack_require__2(1181);\n var enforceInternalState = InternalStateModule.enforce;\n var getInternalState = InternalStateModule.get;\n var Int8Array2 = globalThis2.Int8Array;\n var Int8ArrayPrototype = Int8Array2 && Int8Array2.prototype;\n var Uint8ClampedArray2 = globalThis2.Uint8ClampedArray;\n var Uint8ClampedArrayPrototype = Uint8ClampedArray2 && Uint8ClampedArray2.prototype;\n var TypedArray = Int8Array2 && getPrototypeOf(Int8Array2);\n var TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\n var ObjectPrototype = Object.prototype;\n var TypeError2 = globalThis2.TypeError;\n var TO_STRING_TAG = wellKnownSymbol(\"toStringTag\");\n var TYPED_ARRAY_TAG = uid(\"TYPED_ARRAY_TAG\");\n var TYPED_ARRAY_CONSTRUCTOR = \"TypedArrayConstructor\";\n var NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(globalThis2.opera) !== \"Opera\";\n var TYPED_ARRAY_TAG_REQUIRED = false;\n var NAME, Constructor, Prototype;\n var TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n };\n var BigIntArrayConstructorsList = {\n BigInt64Array: 8,\n BigUint64Array: 8\n };\n var isView = function isView2(it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return klass === \"DataView\" || hasOwn(TypedArrayConstructorsList, klass) || hasOwn(BigIntArrayConstructorsList, klass);\n };\n var getTypedArrayConstructor = function(it) {\n var proto = getPrototypeOf(it);\n if (!isObject(proto)) return;\n var state = getInternalState(proto);\n return state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto);\n };\n var isTypedArray = function(it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return hasOwn(TypedArrayConstructorsList, klass) || hasOwn(BigIntArrayConstructorsList, klass);\n };\n var aTypedArray = function(it) {\n if (isTypedArray(it)) return it;\n throw new TypeError2(\"Target is not a typed array\");\n };\n var aTypedArrayConstructor = function(C) {\n if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\n throw new TypeError2(tryToString(C) + \" is not a typed array constructor\");\n };\n var exportTypedArrayMethod = function(KEY, property, forced, options) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = globalThis2[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\n delete TypedArrayConstructor.prototype[KEY];\n } catch (error) {\n try {\n TypedArrayConstructor.prototype[KEY] = property;\n } catch (error2) {\n }\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n defineBuiltIn(TypedArrayPrototype, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);\n }\n };\n var exportTypedArrayStaticMethod = function(KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = globalThis2[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\n delete TypedArrayConstructor[KEY];\n } catch (error) {\n }\n }\n if (!TypedArray[KEY] || forced) {\n try {\n return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n } catch (error) {\n }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = globalThis2[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n defineBuiltIn(TypedArrayConstructor, KEY, property);\n }\n }\n };\n for (NAME in TypedArrayConstructorsList) {\n Constructor = globalThis2[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n else NATIVE_ARRAY_BUFFER_VIEWS = false;\n }\n for (NAME in BigIntArrayConstructorsList) {\n Constructor = globalThis2[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n }\n if (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\n TypedArray = function TypedArray2() {\n throw new TypeError2(\"Incorrect invocation\");\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (globalThis2[NAME]) setPrototypeOf(globalThis2[NAME], TypedArray);\n }\n }\n if (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (globalThis2[NAME]) setPrototypeOf(globalThis2[NAME].prototype, TypedArrayPrototype);\n }\n }\n if (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n }\n if (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQUIRED = true;\n defineBuiltInAccessor(TypedArrayPrototype, TO_STRING_TAG, {\n configurable: true,\n get: function() {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : void 0;\n }\n });\n for (NAME in TypedArrayConstructorsList) if (globalThis2[NAME]) {\n createNonEnumerableProperty(globalThis2[NAME], TYPED_ARRAY_TAG, NAME);\n }\n }\n module.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,\n aTypedArray,\n aTypedArrayConstructor,\n exportTypedArrayMethod,\n exportTypedArrayStaticMethod,\n getTypedArrayConstructor,\n isView,\n isTypedArray,\n TypedArray,\n TypedArrayPrototype\n };\n })\n ),\n /***/\n 4659: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var DESCRIPTORS = __webpack_require__2(3724);\n var definePropertyModule = __webpack_require__2(4913);\n var createPropertyDescriptor = __webpack_require__2(6980);\n module.exports = function(object, key, value) {\n if (DESCRIPTORS) definePropertyModule.f(object, key, createPropertyDescriptor(0, value));\n else object[key] = value;\n };\n })\n ),\n /***/\n 4901: (\n /***/\n ((module) => {\n var documentAll = typeof document == \"object\" && document.all;\n module.exports = typeof documentAll == \"undefined\" && documentAll !== void 0 ? function(argument) {\n return typeof argument == \"function\" || argument === documentAll;\n } : function(argument) {\n return typeof argument == \"function\";\n };\n })\n ),\n /***/\n 4913: (\n /***/\n ((__unused_webpack_module, exports, __webpack_require__2) => {\n var DESCRIPTORS = __webpack_require__2(3724);\n var IE8_DOM_DEFINE = __webpack_require__2(5917);\n var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__2(8686);\n var anObject = __webpack_require__2(8551);\n var toPropertyKey = __webpack_require__2(6969);\n var $TypeError = TypeError;\n var $defineProperty = Object.defineProperty;\n var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n var ENUMERABLE = \"enumerable\";\n var CONFIGURABLE = \"configurable\";\n var WRITABLE = \"writable\";\n exports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === \"function\" && P === \"prototype\" && \"value\" in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n }\n return $defineProperty(O, P, Attributes);\n } : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) {\n }\n if (\"get\" in Attributes || \"set\" in Attributes) throw new $TypeError(\"Accessors not supported\");\n if (\"value\" in Attributes) O[P] = Attributes.value;\n return O;\n };\n })\n ),\n /***/\n 4916: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var getBuiltIn = __webpack_require__2(7751);\n var createSetLike = function(size) {\n return {\n size,\n has: function() {\n return false;\n },\n keys: function() {\n return {\n next: function() {\n return { done: true };\n }\n };\n }\n };\n };\n var createSetLikeWithInfinitySize = function(size) {\n return {\n size,\n has: function() {\n return true;\n },\n keys: function() {\n throw new Error(\"e\");\n }\n };\n };\n module.exports = function(name, callback) {\n var Set2 = getBuiltIn(\"Set\");\n try {\n new Set2()[name](createSetLike(0));\n try {\n new Set2()[name](createSetLike(-1));\n return false;\n } catch (error2) {\n if (!callback) return true;\n try {\n new Set2()[name](createSetLikeWithInfinitySize(-Infinity));\n return false;\n } catch (error) {\n var set = new Set2();\n set.add(1);\n set.add(2);\n return callback(set[name](createSetLikeWithInfinitySize(Infinity)));\n }\n }\n } catch (error) {\n return false;\n }\n };\n })\n ),\n /***/\n 4972: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n var $ = __webpack_require__2(6518);\n var call = __webpack_require__2(9565);\n var anObject = __webpack_require__2(8551);\n var getIteratorDirect = __webpack_require__2(1767);\n var notANaN = __webpack_require__2(4149);\n var toPositiveInteger = __webpack_require__2(9590);\n var createIteratorProxy = __webpack_require__2(9462);\n var iteratorClose = __webpack_require__2(9539);\n var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__2(4549);\n var IS_PURE = __webpack_require__2(6395);\n var takeWithoutClosingOnEarlyError = !IS_PURE && iteratorHelperWithoutClosingOnEarlyError(\"take\", RangeError);\n var IteratorProxy = createIteratorProxy(function() {\n var iterator = this.iterator;\n if (!this.remaining--) {\n this.done = true;\n return iteratorClose(iterator, \"normal\", void 0);\n }\n var result = anObject(call(this.next, iterator));\n var done = this.done = !!result.done;\n if (!done) return result.value;\n });\n $({ target: \"Iterator\", proto: true, real: true, forced: IS_PURE || takeWithoutClosingOnEarlyError }, {\n take: function take(limit) {\n anObject(this);\n var remaining;\n try {\n remaining = toPositiveInteger(notANaN(+limit));\n } catch (error) {\n iteratorClose(this, \"throw\", error);\n }\n if (takeWithoutClosingOnEarlyError) return call(takeWithoutClosingOnEarlyError, this, remaining);\n return new IteratorProxy(getIteratorDirect(this), {\n remaining\n });\n }\n });\n })\n ),\n /***/\n 4979: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n var $ = __webpack_require__2(6518);\n var globalThis2 = __webpack_require__2(4576);\n var getBuiltIn = __webpack_require__2(7751);\n var createPropertyDescriptor = __webpack_require__2(6980);\n var defineProperty = __webpack_require__2(4913).f;\n var hasOwn = __webpack_require__2(9297);\n var anInstance = __webpack_require__2(679);\n var inheritIfRequired = __webpack_require__2(3167);\n var normalizeStringArgument = __webpack_require__2(2603);\n var DOMExceptionConstants = __webpack_require__2(5002);\n var clearErrorStack = __webpack_require__2(8574);\n var DESCRIPTORS = __webpack_require__2(3724);\n var IS_PURE = __webpack_require__2(6395);\n var DOM_EXCEPTION = \"DOMException\";\n var Error2 = getBuiltIn(\"Error\");\n var NativeDOMException = getBuiltIn(DOM_EXCEPTION);\n var $DOMException = function DOMException() {\n anInstance(this, DOMExceptionPrototype);\n var argumentsLength = arguments.length;\n var message = normalizeStringArgument(argumentsLength < 1 ? void 0 : arguments[0]);\n var name = normalizeStringArgument(argumentsLength < 2 ? void 0 : arguments[1], \"Error\");\n var that = new NativeDOMException(message, name);\n var error = new Error2(message);\n error.name = DOM_EXCEPTION;\n defineProperty(that, \"stack\", createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));\n inheritIfRequired(that, this, $DOMException);\n return that;\n };\n var DOMExceptionPrototype = $DOMException.prototype = NativeDOMException.prototype;\n var ERROR_HAS_STACK = \"stack\" in new Error2(DOM_EXCEPTION);\n var DOM_EXCEPTION_HAS_STACK = \"stack\" in new NativeDOMException(1, 2);\n var descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(globalThis2, DOM_EXCEPTION);\n var BUGGY_DESCRIPTOR = !!descriptor && !(descriptor.writable && descriptor.configurable);\n var FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !BUGGY_DESCRIPTOR && !DOM_EXCEPTION_HAS_STACK;\n $({ global: true, constructor: true, forced: IS_PURE || FORCED_CONSTRUCTOR }, {\n // TODO: fix export logic\n DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException\n });\n var PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);\n var PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;\n if (PolyfilledDOMExceptionPrototype.constructor !== PolyfilledDOMException) {\n if (!IS_PURE) {\n defineProperty(PolyfilledDOMExceptionPrototype, \"constructor\", createPropertyDescriptor(1, PolyfilledDOMException));\n }\n for (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {\n var constant = DOMExceptionConstants[key];\n var constantName = constant.s;\n if (!hasOwn(PolyfilledDOMException, constantName)) {\n defineProperty(PolyfilledDOMException, constantName, createPropertyDescriptor(6, constant.c));\n }\n }\n }\n })\n ),\n /***/\n 5002: (\n /***/\n ((module) => {\n module.exports = {\n IndexSizeError: { s: \"INDEX_SIZE_ERR\", c: 1, m: 1 },\n DOMStringSizeError: { s: \"DOMSTRING_SIZE_ERR\", c: 2, m: 0 },\n HierarchyRequestError: { s: \"HIERARCHY_REQUEST_ERR\", c: 3, m: 1 },\n WrongDocumentError: { s: \"WRONG_DOCUMENT_ERR\", c: 4, m: 1 },\n InvalidCharacterError: { s: \"INVALID_CHARACTER_ERR\", c: 5, m: 1 },\n NoDataAllowedError: { s: \"NO_DATA_ALLOWED_ERR\", c: 6, m: 0 },\n NoModificationAllowedError: { s: \"NO_MODIFICATION_ALLOWED_ERR\", c: 7, m: 1 },\n NotFoundError: { s: \"NOT_FOUND_ERR\", c: 8, m: 1 },\n NotSupportedError: { s: \"NOT_SUPPORTED_ERR\", c: 9, m: 1 },\n InUseAttributeError: { s: \"INUSE_ATTRIBUTE_ERR\", c: 10, m: 1 },\n InvalidStateError: { s: \"INVALID_STATE_ERR\", c: 11, m: 1 },\n SyntaxError: { s: \"SYNTAX_ERR\", c: 12, m: 1 },\n InvalidModificationError: { s: \"INVALID_MODIFICATION_ERR\", c: 13, m: 1 },\n NamespaceError: { s: \"NAMESPACE_ERR\", c: 14, m: 1 },\n InvalidAccessError: { s: \"INVALID_ACCESS_ERR\", c: 15, m: 1 },\n ValidationError: { s: \"VALIDATION_ERR\", c: 16, m: 0 },\n TypeMismatchError: { s: \"TYPE_MISMATCH_ERR\", c: 17, m: 1 },\n SecurityError: { s: \"SECURITY_ERR\", c: 18, m: 1 },\n NetworkError: { s: \"NETWORK_ERR\", c: 19, m: 1 },\n AbortError: { s: \"ABORT_ERR\", c: 20, m: 1 },\n URLMismatchError: { s: \"URL_MISMATCH_ERR\", c: 21, m: 1 },\n QuotaExceededError: { s: \"QUOTA_EXCEEDED_ERR\", c: 22, m: 1 },\n TimeoutError: { s: \"TIMEOUT_ERR\", c: 23, m: 1 },\n InvalidNodeTypeError: { s: \"INVALID_NODE_TYPE_ERR\", c: 24, m: 1 },\n DataCloneError: { s: \"DATA_CLONE_ERR\", c: 25, m: 1 }\n };\n })\n ),\n /***/\n 5024: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n var $ = __webpack_require__2(6518);\n var symmetricDifference = __webpack_require__2(3650);\n var setMethodGetKeysBeforeCloning = __webpack_require__2(9835);\n var setMethodAcceptSetLike = __webpack_require__2(4916);\n var FORCED = !setMethodAcceptSetLike(\"symmetricDifference\") || !setMethodGetKeysBeforeCloning(\"symmetricDifference\");\n $({ target: \"Set\", proto: true, real: true, forced: FORCED }, {\n symmetricDifference\n });\n })\n ),\n /***/\n 5031: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var getBuiltIn = __webpack_require__2(7751);\n var uncurryThis = __webpack_require__2(9504);\n var getOwnPropertyNamesModule = __webpack_require__2(8480);\n var getOwnPropertySymbolsModule = __webpack_require__2(3717);\n var anObject = __webpack_require__2(8551);\n var concat = uncurryThis([].concat);\n module.exports = getBuiltIn(\"Reflect\", \"ownKeys\") || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n };\n })\n ),\n /***/\n 5169: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var isDetached = __webpack_require__2(3238);\n var $TypeError = TypeError;\n module.exports = function(it) {\n if (isDetached(it)) throw new $TypeError(\"ArrayBuffer is detached\");\n return it;\n };\n })\n ),\n /***/\n 5170: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var uncurryThisAccessor = __webpack_require__2(6706);\n var SetHelpers = __webpack_require__2(4402);\n module.exports = uncurryThisAccessor(SetHelpers.proto, \"size\", \"get\") || function(set) {\n return set.size;\n };\n })\n ),\n /***/\n 5213: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n var $ = __webpack_require__2(6518);\n var globalThis2 = __webpack_require__2(4576);\n var arrayFromConstructorAndList = __webpack_require__2(5370);\n var $fromBase64 = __webpack_require__2(9143);\n var Uint8Array2 = globalThis2.Uint8Array;\n var INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS = !Uint8Array2 || !Uint8Array2.fromBase64 || !(function() {\n try {\n Uint8Array2.fromBase64(\"a\");\n return;\n } catch (error) {\n }\n try {\n Uint8Array2.fromBase64(\"\", null);\n } catch (error) {\n return true;\n }\n })();\n if (Uint8Array2) $({ target: \"Uint8Array\", stat: true, forced: INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS }, {\n fromBase64: function fromBase64(string) {\n var result = $fromBase64(string, arguments.length > 1 ? arguments[1] : void 0, null, 9007199254740991);\n return arrayFromConstructorAndList(Uint8Array2, result.bytes);\n }\n });\n })\n ),\n /***/\n 5370: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var lengthOfArrayLike = __webpack_require__2(6198);\n module.exports = function(Constructor, list, $length) {\n var index = 0;\n var length = arguments.length > 2 ? $length : lengthOfArrayLike(list);\n var result = new Constructor(length);\n while (length > index) result[index] = list[index++];\n return result;\n };\n })\n ),\n /***/\n 5397: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var IndexedObject = __webpack_require__2(7055);\n var requireObjectCoercible = __webpack_require__2(7750);\n module.exports = function(it) {\n return IndexedObject(requireObjectCoercible(it));\n };\n })\n ),\n /***/\n 5610: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var toIntegerOrInfinity = __webpack_require__2(1291);\n var max = Math.max;\n var min = Math.min;\n module.exports = function(index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n };\n })\n ),\n /***/\n 5623: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n __webpack_require__2(456);\n })\n ),\n /***/\n 5636: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var globalThis2 = __webpack_require__2(4576);\n var uncurryThis = __webpack_require__2(9504);\n var uncurryThisAccessor = __webpack_require__2(6706);\n var toIndex = __webpack_require__2(7696);\n var notDetached = __webpack_require__2(5169);\n var arrayBufferByteLength = __webpack_require__2(7394);\n var detachTransferable = __webpack_require__2(4483);\n var PROPER_STRUCTURED_CLONE_TRANSFER = __webpack_require__2(1548);\n var structuredClone2 = globalThis2.structuredClone;\n var ArrayBuffer2 = globalThis2.ArrayBuffer;\n var DataView2 = globalThis2.DataView;\n var min = Math.min;\n var ArrayBufferPrototype = ArrayBuffer2.prototype;\n var DataViewPrototype = DataView2.prototype;\n var slice = uncurryThis(ArrayBufferPrototype.slice);\n var isResizable = uncurryThisAccessor(ArrayBufferPrototype, \"resizable\", \"get\");\n var maxByteLength = uncurryThisAccessor(ArrayBufferPrototype, \"maxByteLength\", \"get\");\n var getInt8 = uncurryThis(DataViewPrototype.getInt8);\n var setInt8 = uncurryThis(DataViewPrototype.setInt8);\n module.exports = (PROPER_STRUCTURED_CLONE_TRANSFER || detachTransferable) && function(arrayBuffer, newLength, preserveResizability) {\n var byteLength = arrayBufferByteLength(arrayBuffer);\n var newByteLength = newLength === void 0 ? byteLength : toIndex(newLength);\n var fixedLength = !isResizable || !isResizable(arrayBuffer);\n var newBuffer;\n notDetached(arrayBuffer);\n if (PROPER_STRUCTURED_CLONE_TRANSFER) {\n arrayBuffer = structuredClone2(arrayBuffer, { transfer: [arrayBuffer] });\n if (byteLength === newByteLength && (preserveResizability || fixedLength)) return arrayBuffer;\n }\n if (byteLength >= newByteLength && (!preserveResizability || fixedLength)) {\n newBuffer = slice(arrayBuffer, 0, newByteLength);\n } else {\n var options = preserveResizability && !fixedLength && maxByteLength ? { maxByteLength: maxByteLength(arrayBuffer) } : void 0;\n newBuffer = new ArrayBuffer2(newByteLength, options);\n var a = new DataView2(arrayBuffer);\n var b = new DataView2(newBuffer);\n var copyLength = min(newByteLength, byteLength);\n for (var i = 0; i < copyLength; i++) setInt8(b, i, getInt8(a, i));\n }\n if (!PROPER_STRUCTURED_CLONE_TRANSFER) detachTransferable(arrayBuffer);\n return newBuffer;\n };\n })\n ),\n /***/\n 5745: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var store = __webpack_require__2(7629);\n module.exports = function(key, value) {\n return store[key] || (store[key] = value || {});\n };\n })\n ),\n /***/\n 5781: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n var $ = __webpack_require__2(6518);\n var getBuiltIn = __webpack_require__2(7751);\n var validateArgumentsLength = __webpack_require__2(2812);\n var toString = __webpack_require__2(655);\n var USE_NATIVE_URL = __webpack_require__2(7416);\n var URL2 = getBuiltIn(\"URL\");\n $({ target: \"URL\", stat: true, forced: !USE_NATIVE_URL }, {\n parse: function parse(url) {\n var length = validateArgumentsLength(arguments.length, 1);\n var urlString = toString(url);\n var base = length < 2 || arguments[1] === void 0 ? void 0 : toString(arguments[1]);\n try {\n return new URL2(urlString, base);\n } catch (error) {\n return null;\n }\n }\n });\n })\n ),\n /***/\n 5854: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var toPrimitive = __webpack_require__2(2777);\n var $TypeError = TypeError;\n module.exports = function(argument) {\n var prim = toPrimitive(argument, \"number\");\n if (typeof prim == \"number\") throw new $TypeError(\"Can't convert number to bigint\");\n return BigInt(prim);\n };\n })\n ),\n /***/\n 5876: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n var $ = __webpack_require__2(6518);\n var isSubsetOf = __webpack_require__2(3838);\n var setMethodAcceptSetLike = __webpack_require__2(4916);\n var INCORRECT = !setMethodAcceptSetLike(\"isSubsetOf\", function(result) {\n return result;\n });\n $({ target: \"Set\", proto: true, real: true, forced: INCORRECT }, {\n isSubsetOf\n });\n })\n ),\n /***/\n 5917: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var DESCRIPTORS = __webpack_require__2(3724);\n var fails = __webpack_require__2(9039);\n var createElement = __webpack_require__2(4055);\n module.exports = !DESCRIPTORS && !fails(function() {\n return Object.defineProperty(createElement(\"div\"), \"a\", {\n get: function() {\n return 7;\n }\n }).a !== 7;\n });\n })\n ),\n /***/\n 5966: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var aCallable = __webpack_require__2(9306);\n var isNullOrUndefined = __webpack_require__2(4117);\n module.exports = function(V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? void 0 : aCallable(func);\n };\n })\n ),\n /***/\n 6043: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var aCallable = __webpack_require__2(9306);\n var $TypeError = TypeError;\n var PromiseCapability = function(C) {\n var resolve, reject;\n this.promise = new C(function($$resolve, $$reject) {\n if (resolve !== void 0 || reject !== void 0) throw new $TypeError(\"Bad Promise constructor\");\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aCallable(resolve);\n this.reject = aCallable(reject);\n };\n module.exports.f = function(C) {\n return new PromiseCapability(C);\n };\n })\n ),\n /***/\n 6080: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var uncurryThis = __webpack_require__2(7476);\n var aCallable = __webpack_require__2(9306);\n var NATIVE_BIND = __webpack_require__2(616);\n var bind = uncurryThis(uncurryThis.bind);\n module.exports = function(fn, that) {\n aCallable(fn);\n return that === void 0 ? fn : NATIVE_BIND ? bind(fn, that) : function() {\n return fn.apply(that, arguments);\n };\n };\n })\n ),\n /***/\n 6119: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var shared = __webpack_require__2(5745);\n var uid = __webpack_require__2(3392);\n var keys = shared(\"keys\");\n module.exports = function(key) {\n return keys[key] || (keys[key] = uid(key));\n };\n })\n ),\n /***/\n 6193: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var ENVIRONMENT = __webpack_require__2(4215);\n module.exports = ENVIRONMENT === \"NODE\";\n })\n ),\n /***/\n 6198: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var toLength = __webpack_require__2(8014);\n module.exports = function(obj) {\n return toLength(obj.length);\n };\n })\n ),\n /***/\n 6269: (\n /***/\n ((module) => {\n module.exports = {};\n })\n ),\n /***/\n 6279: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var defineBuiltIn = __webpack_require__2(6840);\n module.exports = function(target, src, options) {\n for (var key in src) defineBuiltIn(target, key, src[key], options);\n return target;\n };\n })\n ),\n /***/\n 6319: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var anObject = __webpack_require__2(8551);\n var iteratorClose = __webpack_require__2(9539);\n module.exports = function(iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator, \"throw\", error);\n }\n };\n })\n ),\n /***/\n 6395: (\n /***/\n ((module) => {\n module.exports = false;\n })\n ),\n /***/\n 6518: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var globalThis2 = __webpack_require__2(4576);\n var getOwnPropertyDescriptor = __webpack_require__2(7347).f;\n var createNonEnumerableProperty = __webpack_require__2(6699);\n var defineBuiltIn = __webpack_require__2(6840);\n var defineGlobalProperty = __webpack_require__2(9433);\n var copyConstructorProperties = __webpack_require__2(7740);\n var isForced = __webpack_require__2(2796);\n module.exports = function(options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = globalThis2;\n } else if (STATIC) {\n target = globalThis2[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = globalThis2[TARGET] && globalThis2[TARGET].prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? \".\" : \"#\") + key, options.forced);\n if (!FORCED && targetProperty !== void 0) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n if (options.sham || targetProperty && targetProperty.sham) {\n createNonEnumerableProperty(sourceProperty, \"sham\", true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n };\n })\n ),\n /***/\n 6573: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n var DESCRIPTORS = __webpack_require__2(3724);\n var defineBuiltInAccessor = __webpack_require__2(2106);\n var isDetached = __webpack_require__2(3238);\n var ArrayBufferPrototype = ArrayBuffer.prototype;\n if (DESCRIPTORS && !(\"detached\" in ArrayBufferPrototype)) {\n defineBuiltInAccessor(ArrayBufferPrototype, \"detached\", {\n configurable: true,\n get: function detached() {\n return isDetached(this);\n }\n });\n }\n })\n ),\n /***/\n 6632: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n var $ = __webpack_require__2(6518);\n var globalThis2 = __webpack_require__2(4576);\n var $fromBase64 = __webpack_require__2(9143);\n var anUint8Array = __webpack_require__2(4154);\n var Uint8Array2 = globalThis2.Uint8Array;\n var INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS = !Uint8Array2 || !Uint8Array2.prototype.setFromBase64 || !(function() {\n var target = new Uint8Array2([255, 255, 255, 255, 255]);\n try {\n target.setFromBase64(\"\", null);\n return;\n } catch (error) {\n }\n try {\n target.setFromBase64(\"a\");\n return;\n } catch (error) {\n }\n try {\n target.setFromBase64(\"MjYyZg===\");\n } catch (error) {\n return target[0] === 50 && target[1] === 54 && target[2] === 50 && target[3] === 255 && target[4] === 255;\n }\n })();\n if (Uint8Array2) $({ target: \"Uint8Array\", proto: true, forced: INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS }, {\n setFromBase64: function setFromBase64(string) {\n anUint8Array(this);\n var result = $fromBase64(string, arguments.length > 1 ? arguments[1] : void 0, this, this.length);\n return { read: result.read, written: result.written };\n }\n });\n })\n ),\n /***/\n 6699: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var DESCRIPTORS = __webpack_require__2(3724);\n var definePropertyModule = __webpack_require__2(4913);\n var createPropertyDescriptor = __webpack_require__2(6980);\n module.exports = DESCRIPTORS ? function(object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n } : function(object, key, value) {\n object[key] = value;\n return object;\n };\n })\n ),\n /***/\n 6706: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var uncurryThis = __webpack_require__2(9504);\n var aCallable = __webpack_require__2(9306);\n module.exports = function(object, key, method) {\n try {\n return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n } catch (error) {\n }\n };\n })\n ),\n /***/\n 6801: (\n /***/\n ((__unused_webpack_module, exports, __webpack_require__2) => {\n var DESCRIPTORS = __webpack_require__2(3724);\n var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__2(8686);\n var definePropertyModule = __webpack_require__2(4913);\n var anObject = __webpack_require__2(8551);\n var toIndexedObject = __webpack_require__2(5397);\n var objectKeys = __webpack_require__2(1072);\n exports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n };\n })\n ),\n /***/\n 6823: (\n /***/\n ((module) => {\n var $String = String;\n module.exports = function(argument) {\n try {\n return $String(argument);\n } catch (error) {\n return \"Object\";\n }\n };\n })\n ),\n /***/\n 6837: (\n /***/\n ((module) => {\n var $TypeError = TypeError;\n var MAX_SAFE_INTEGER = 9007199254740991;\n module.exports = function(it) {\n if (it > MAX_SAFE_INTEGER) throw $TypeError(\"Maximum allowed index exceeded\");\n return it;\n };\n })\n ),\n /***/\n 6840: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var isCallable = __webpack_require__2(4901);\n var definePropertyModule = __webpack_require__2(4913);\n var makeBuiltIn = __webpack_require__2(283);\n var defineGlobalProperty = __webpack_require__2(9433);\n module.exports = function(O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== void 0 ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) {\n }\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n }\n return O;\n };\n })\n ),\n /***/\n 6955: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var TO_STRING_TAG_SUPPORT = __webpack_require__2(2140);\n var isCallable = __webpack_require__2(4901);\n var classofRaw = __webpack_require__2(2195);\n var wellKnownSymbol = __webpack_require__2(8227);\n var TO_STRING_TAG = wellKnownSymbol(\"toStringTag\");\n var $Object = Object;\n var CORRECT_ARGUMENTS = classofRaw(/* @__PURE__ */ (function() {\n return arguments;\n })()) === \"Arguments\";\n var tryGet = function(it, key) {\n try {\n return it[key];\n } catch (error) {\n }\n };\n module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function(it) {\n var O, tag, result;\n return it === void 0 ? \"Undefined\" : it === null ? \"Null\" : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == \"string\" ? tag : CORRECT_ARGUMENTS ? classofRaw(O) : (result = classofRaw(O)) === \"Object\" && isCallable(O.callee) ? \"Arguments\" : result;\n };\n })\n ),\n /***/\n 6969: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var toPrimitive = __webpack_require__2(2777);\n var isSymbol = __webpack_require__2(757);\n module.exports = function(argument) {\n var key = toPrimitive(argument, \"string\");\n return isSymbol(key) ? key : key + \"\";\n };\n })\n ),\n /***/\n 6980: (\n /***/\n ((module) => {\n module.exports = function(bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value\n };\n };\n })\n ),\n /***/\n 7040: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var NATIVE_SYMBOL = __webpack_require__2(4495);\n module.exports = NATIVE_SYMBOL && !Symbol.sham && typeof Symbol.iterator == \"symbol\";\n })\n ),\n /***/\n 7055: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var uncurryThis = __webpack_require__2(9504);\n var fails = __webpack_require__2(9039);\n var classof = __webpack_require__2(2195);\n var $Object = Object;\n var split = uncurryThis(\"\".split);\n module.exports = fails(function() {\n return !$Object(\"z\").propertyIsEnumerable(0);\n }) ? function(it) {\n return classof(it) === \"String\" ? split(it, \"\") : $Object(it);\n } : $Object;\n })\n ),\n /***/\n 7080: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var has = __webpack_require__2(4402).has;\n module.exports = function(it) {\n has(it);\n return it;\n };\n })\n ),\n /***/\n 7347: (\n /***/\n ((__unused_webpack_module, exports, __webpack_require__2) => {\n var DESCRIPTORS = __webpack_require__2(3724);\n var call = __webpack_require__2(9565);\n var propertyIsEnumerableModule = __webpack_require__2(8773);\n var createPropertyDescriptor = __webpack_require__2(6980);\n var toIndexedObject = __webpack_require__2(5397);\n var toPropertyKey = __webpack_require__2(6969);\n var hasOwn = __webpack_require__2(9297);\n var IE8_DOM_DEFINE = __webpack_require__2(5917);\n var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n exports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) {\n }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n };\n })\n ),\n /***/\n 7394: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var globalThis2 = __webpack_require__2(4576);\n var uncurryThisAccessor = __webpack_require__2(6706);\n var classof = __webpack_require__2(2195);\n var ArrayBuffer2 = globalThis2.ArrayBuffer;\n var TypeError2 = globalThis2.TypeError;\n module.exports = ArrayBuffer2 && uncurryThisAccessor(ArrayBuffer2.prototype, \"byteLength\", \"get\") || function(O) {\n if (classof(O) !== \"ArrayBuffer\") throw new TypeError2(\"ArrayBuffer expected\");\n return O.byteLength;\n };\n })\n ),\n /***/\n 7416: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var fails = __webpack_require__2(9039);\n var wellKnownSymbol = __webpack_require__2(8227);\n var DESCRIPTORS = __webpack_require__2(3724);\n var IS_PURE = __webpack_require__2(6395);\n var ITERATOR = wellKnownSymbol(\"iterator\");\n module.exports = !fails(function() {\n var url = new URL(\"b?a=1&b=2&c=3\", \"https://a\");\n var params = url.searchParams;\n var params2 = new URLSearchParams(\"a=1&a=2&b=3\");\n var result = \"\";\n url.pathname = \"c%20d\";\n params.forEach(function(value, key) {\n params[\"delete\"](\"b\");\n result += key + value;\n });\n params2[\"delete\"](\"a\", 2);\n params2[\"delete\"](\"b\", void 0);\n return IS_PURE && (!url.toJSON || !params2.has(\"a\", 1) || params2.has(\"a\", 2) || !params2.has(\"a\", void 0) || params2.has(\"b\")) || !params.size && (IS_PURE || !DESCRIPTORS) || !params.sort || url.href !== \"https://a/c%20d?a=1&c=3\" || params.get(\"c\") !== \"3\" || String(new URLSearchParams(\"?a=1\")) !== \"a=1\" || !params[ITERATOR] || new URL(\"https://a@b\").username !== \"a\" || new URLSearchParams(new URLSearchParams(\"a=b\")).get(\"a\") !== \"b\" || new URL(\"https://тест\").host !== \"xn--e1aybc\" || new URL(\"https://a#б\").hash !== \"#%D0%B1\" || result !== \"a1c3\" || new URL(\"https://x\", void 0).host !== \"x\";\n });\n })\n ),\n /***/\n 7476: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var classofRaw = __webpack_require__2(2195);\n var uncurryThis = __webpack_require__2(9504);\n module.exports = function(fn) {\n if (classofRaw(fn) === \"Function\") return uncurryThis(fn);\n };\n })\n ),\n /***/\n 7566: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n var defineBuiltIn = __webpack_require__2(6840);\n var uncurryThis = __webpack_require__2(9504);\n var toString = __webpack_require__2(655);\n var validateArgumentsLength = __webpack_require__2(2812);\n var $URLSearchParams = URLSearchParams;\n var URLSearchParamsPrototype = $URLSearchParams.prototype;\n var getAll = uncurryThis(URLSearchParamsPrototype.getAll);\n var $has = uncurryThis(URLSearchParamsPrototype.has);\n var params = new $URLSearchParams(\"a=1\");\n if (params.has(\"a\", 2) || !params.has(\"a\", void 0)) {\n defineBuiltIn(URLSearchParamsPrototype, \"has\", function has(name) {\n var length = arguments.length;\n var $value = length < 2 ? void 0 : arguments[1];\n if (length && $value === void 0) return $has(this, name);\n var values = getAll(this, name);\n validateArgumentsLength(length, 1);\n var value = toString($value);\n var index = 0;\n while (index < values.length) {\n if (values[index++] === value) return true;\n }\n return false;\n }, { enumerable: true, unsafe: true });\n }\n })\n ),\n /***/\n 7588: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n var $ = __webpack_require__2(6518);\n var call = __webpack_require__2(9565);\n var iterate = __webpack_require__2(2652);\n var aCallable = __webpack_require__2(9306);\n var anObject = __webpack_require__2(8551);\n var getIteratorDirect = __webpack_require__2(1767);\n var iteratorClose = __webpack_require__2(9539);\n var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__2(4549);\n var forEachWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError(\"forEach\", TypeError);\n $({ target: \"Iterator\", proto: true, real: true, forced: forEachWithoutClosingOnEarlyError }, {\n forEach: function forEach(fn) {\n anObject(this);\n try {\n aCallable(fn);\n } catch (error) {\n iteratorClose(this, \"throw\", error);\n }\n if (forEachWithoutClosingOnEarlyError) return call(forEachWithoutClosingOnEarlyError, this, fn);\n var record = getIteratorDirect(this);\n var counter = 0;\n iterate(record, function(value) {\n fn(value, counter++);\n }, { IS_RECORD: true });\n }\n });\n })\n ),\n /***/\n 7629: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var IS_PURE = __webpack_require__2(6395);\n var globalThis2 = __webpack_require__2(4576);\n var defineGlobalProperty = __webpack_require__2(9433);\n var SHARED = \"__core-js_shared__\";\n var store = module.exports = globalThis2[SHARED] || defineGlobalProperty(SHARED, {});\n (store.versions || (store.versions = [])).push({\n version: \"3.45.1\",\n mode: IS_PURE ? \"pure\" : \"global\",\n copyright: \"© 2014-2025 Denis Pushkarev (zloirock.ru)\",\n license: \"https://github.com/zloirock/core-js/blob/v3.45.1/LICENSE\",\n source: \"https://github.com/zloirock/core-js\"\n });\n })\n ),\n /***/\n 7642: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n var $ = __webpack_require__2(6518);\n var difference = __webpack_require__2(3440);\n var fails = __webpack_require__2(9039);\n var setMethodAcceptSetLike = __webpack_require__2(4916);\n var SET_LIKE_INCORRECT_BEHAVIOR = !setMethodAcceptSetLike(\"difference\", function(result) {\n return result.size === 0;\n });\n var FORCED = SET_LIKE_INCORRECT_BEHAVIOR || fails(function() {\n var setLike = {\n size: 1,\n has: function() {\n return true;\n },\n keys: function() {\n var index = 0;\n return {\n next: function() {\n var done = index++ > 1;\n if (baseSet.has(1)) baseSet.clear();\n return { done, value: 2 };\n }\n };\n }\n };\n var baseSet = /* @__PURE__ */ new Set([1, 2, 3, 4]);\n return baseSet.difference(setLike).size !== 3;\n });\n $({ target: \"Set\", proto: true, real: true, forced: FORCED }, {\n difference\n });\n })\n ),\n /***/\n 7657: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var fails = __webpack_require__2(9039);\n var isCallable = __webpack_require__2(4901);\n var isObject = __webpack_require__2(34);\n var create = __webpack_require__2(2360);\n var getPrototypeOf = __webpack_require__2(2787);\n var defineBuiltIn = __webpack_require__2(6840);\n var wellKnownSymbol = __webpack_require__2(8227);\n var IS_PURE = __webpack_require__2(6395);\n var ITERATOR = wellKnownSymbol(\"iterator\");\n var BUGGY_SAFARI_ITERATORS = false;\n var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n if ([].keys) {\n arrayIterator = [].keys();\n if (!(\"next\" in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n }\n var NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function() {\n var test = {};\n return IteratorPrototype[ITERATOR].call(test) !== test;\n });\n if (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\n else if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n if (!isCallable(IteratorPrototype[ITERATOR])) {\n defineBuiltIn(IteratorPrototype, ITERATOR, function() {\n return this;\n });\n }\n module.exports = {\n IteratorPrototype,\n BUGGY_SAFARI_ITERATORS\n };\n })\n ),\n /***/\n 7680: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var uncurryThis = __webpack_require__2(9504);\n module.exports = uncurryThis([].slice);\n })\n ),\n /***/\n 7696: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var toIntegerOrInfinity = __webpack_require__2(1291);\n var toLength = __webpack_require__2(8014);\n var $RangeError = RangeError;\n module.exports = function(it) {\n if (it === void 0) return 0;\n var number = toIntegerOrInfinity(it);\n var length = toLength(number);\n if (number !== length) throw new $RangeError(\"Wrong length or index\");\n return length;\n };\n })\n ),\n /***/\n 7740: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var hasOwn = __webpack_require__2(9297);\n var ownKeys = __webpack_require__2(5031);\n var getOwnPropertyDescriptorModule = __webpack_require__2(7347);\n var definePropertyModule = __webpack_require__2(4913);\n module.exports = function(target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n };\n })\n ),\n /***/\n 7750: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var isNullOrUndefined = __webpack_require__2(4117);\n var $TypeError = TypeError;\n module.exports = function(it) {\n if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n return it;\n };\n })\n ),\n /***/\n 7751: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var globalThis2 = __webpack_require__2(4576);\n var isCallable = __webpack_require__2(4901);\n var aFunction = function(argument) {\n return isCallable(argument) ? argument : void 0;\n };\n module.exports = function(namespace, method) {\n return arguments.length < 2 ? aFunction(globalThis2[namespace]) : globalThis2[namespace] && globalThis2[namespace][method];\n };\n })\n ),\n /***/\n 7811: (\n /***/\n ((module) => {\n module.exports = typeof ArrayBuffer != \"undefined\" && typeof DataView != \"undefined\";\n })\n ),\n /***/\n 7936: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n var $ = __webpack_require__2(6518);\n var $transfer = __webpack_require__2(5636);\n if ($transfer) $({ target: \"ArrayBuffer\", proto: true }, {\n transferToFixedLength: function transferToFixedLength() {\n return $transfer(this, arguments.length ? arguments[0] : void 0, false);\n }\n });\n })\n ),\n /***/\n 8004: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n var $ = __webpack_require__2(6518);\n var fails = __webpack_require__2(9039);\n var intersection = __webpack_require__2(8750);\n var setMethodAcceptSetLike = __webpack_require__2(4916);\n var INCORRECT = !setMethodAcceptSetLike(\"intersection\", function(result) {\n return result.size === 2 && result.has(1) && result.has(2);\n }) || fails(function() {\n return String(Array.from((/* @__PURE__ */ new Set([1, 2, 3])).intersection(/* @__PURE__ */ new Set([3, 2])))) !== \"3,2\";\n });\n $({ target: \"Set\", proto: true, real: true, forced: INCORRECT }, {\n intersection\n });\n })\n ),\n /***/\n 8014: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var toIntegerOrInfinity = __webpack_require__2(1291);\n var min = Math.min;\n module.exports = function(argument) {\n var len = toIntegerOrInfinity(argument);\n return len > 0 ? min(len, 9007199254740991) : 0;\n };\n })\n ),\n /***/\n 8100: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n var $ = __webpack_require__2(6518);\n var $transfer = __webpack_require__2(5636);\n if ($transfer) $({ target: \"ArrayBuffer\", proto: true }, {\n transfer: function transfer() {\n return $transfer(this, arguments.length ? arguments[0] : void 0, true);\n }\n });\n })\n ),\n /***/\n 8111: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n var $ = __webpack_require__2(6518);\n var globalThis2 = __webpack_require__2(4576);\n var anInstance = __webpack_require__2(679);\n var anObject = __webpack_require__2(8551);\n var isCallable = __webpack_require__2(4901);\n var getPrototypeOf = __webpack_require__2(2787);\n var defineBuiltInAccessor = __webpack_require__2(2106);\n var createProperty = __webpack_require__2(4659);\n var fails = __webpack_require__2(9039);\n var hasOwn = __webpack_require__2(9297);\n var wellKnownSymbol = __webpack_require__2(8227);\n var IteratorPrototype = __webpack_require__2(7657).IteratorPrototype;\n var DESCRIPTORS = __webpack_require__2(3724);\n var IS_PURE = __webpack_require__2(6395);\n var CONSTRUCTOR = \"constructor\";\n var ITERATOR = \"Iterator\";\n var TO_STRING_TAG = wellKnownSymbol(\"toStringTag\");\n var $TypeError = TypeError;\n var NativeIterator = globalThis2[ITERATOR];\n var FORCED = IS_PURE || !isCallable(NativeIterator) || NativeIterator.prototype !== IteratorPrototype || !fails(function() {\n NativeIterator({});\n });\n var IteratorConstructor = function Iterator2() {\n anInstance(this, IteratorPrototype);\n if (getPrototypeOf(this) === IteratorPrototype) throw new $TypeError(\"Abstract class Iterator not directly constructable\");\n };\n var defineIteratorPrototypeAccessor = function(key, value) {\n if (DESCRIPTORS) {\n defineBuiltInAccessor(IteratorPrototype, key, {\n configurable: true,\n get: function() {\n return value;\n },\n set: function(replacement) {\n anObject(this);\n if (this === IteratorPrototype) throw new $TypeError(\"You can't redefine this property\");\n if (hasOwn(this, key)) this[key] = replacement;\n else createProperty(this, key, replacement);\n }\n });\n } else IteratorPrototype[key] = value;\n };\n if (!hasOwn(IteratorPrototype, TO_STRING_TAG)) defineIteratorPrototypeAccessor(TO_STRING_TAG, ITERATOR);\n if (FORCED || !hasOwn(IteratorPrototype, CONSTRUCTOR) || IteratorPrototype[CONSTRUCTOR] === Object) {\n defineIteratorPrototypeAccessor(CONSTRUCTOR, IteratorConstructor);\n }\n IteratorConstructor.prototype = IteratorPrototype;\n $({ global: true, constructor: true, forced: FORCED }, {\n Iterator: IteratorConstructor\n });\n })\n ),\n /***/\n 8227: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var globalThis2 = __webpack_require__2(4576);\n var shared = __webpack_require__2(5745);\n var hasOwn = __webpack_require__2(9297);\n var uid = __webpack_require__2(3392);\n var NATIVE_SYMBOL = __webpack_require__2(4495);\n var USE_SYMBOL_AS_UID = __webpack_require__2(7040);\n var Symbol2 = globalThis2.Symbol;\n var WellKnownSymbolsStore = shared(\"wks\");\n var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol2[\"for\"] || Symbol2 : Symbol2 && Symbol2.withoutSetter || uid;\n module.exports = function(name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol2, name) ? Symbol2[name] : createWellKnownSymbol(\"Symbol.\" + name);\n }\n return WellKnownSymbolsStore[name];\n };\n })\n ),\n /***/\n 8235: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var uncurryThis = __webpack_require__2(9504);\n var hasOwn = __webpack_require__2(9297);\n var $SyntaxError = SyntaxError;\n var $parseInt = parseInt;\n var fromCharCode = String.fromCharCode;\n var at = uncurryThis(\"\".charAt);\n var slice = uncurryThis(\"\".slice);\n var exec = uncurryThis(/./.exec);\n var codePoints = {\n '\\\\\"': '\"',\n \"\\\\\\\\\": \"\\\\\",\n \"\\\\/\": \"/\",\n \"\\\\b\": \"\\b\",\n \"\\\\f\": \"\\f\",\n \"\\\\n\": \"\\n\",\n \"\\\\r\": \"\\r\",\n \"\\\\t\": \"\t\"\n };\n var IS_4_HEX_DIGITS = /^[\\da-f]{4}$/i;\n var IS_C0_CONTROL_CODE = /^[\\u0000-\\u001F]$/;\n module.exports = function(source, i) {\n var unterminated = true;\n var value = \"\";\n while (i < source.length) {\n var chr = at(source, i);\n if (chr === \"\\\\\") {\n var twoChars = slice(source, i, i + 2);\n if (hasOwn(codePoints, twoChars)) {\n value += codePoints[twoChars];\n i += 2;\n } else if (twoChars === \"\\\\u\") {\n i += 2;\n var fourHexDigits = slice(source, i, i + 4);\n if (!exec(IS_4_HEX_DIGITS, fourHexDigits)) throw new $SyntaxError(\"Bad Unicode escape at: \" + i);\n value += fromCharCode($parseInt(fourHexDigits, 16));\n i += 4;\n } else throw new $SyntaxError('Unknown escape sequence: \"' + twoChars + '\"');\n } else if (chr === '\"') {\n unterminated = false;\n i++;\n break;\n } else {\n if (exec(IS_C0_CONTROL_CODE, chr)) throw new $SyntaxError(\"Bad control character in string literal at: \" + i);\n value += chr;\n i++;\n }\n }\n if (unterminated) throw new $SyntaxError(\"Unterminated string at: \" + i);\n return { value, end: i };\n };\n })\n ),\n /***/\n 8237: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n var $ = __webpack_require__2(6518);\n var iterate = __webpack_require__2(2652);\n var aCallable = __webpack_require__2(9306);\n var anObject = __webpack_require__2(8551);\n var getIteratorDirect = __webpack_require__2(1767);\n var iteratorClose = __webpack_require__2(9539);\n var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__2(4549);\n var apply = __webpack_require__2(8745);\n var fails = __webpack_require__2(9039);\n var $TypeError = TypeError;\n var FAILS_ON_INITIAL_UNDEFINED = fails(function() {\n [].keys().reduce(function() {\n }, void 0);\n });\n var reduceWithoutClosingOnEarlyError = !FAILS_ON_INITIAL_UNDEFINED && iteratorHelperWithoutClosingOnEarlyError(\"reduce\", $TypeError);\n $({ target: \"Iterator\", proto: true, real: true, forced: FAILS_ON_INITIAL_UNDEFINED || reduceWithoutClosingOnEarlyError }, {\n reduce: function reduce(reducer) {\n anObject(this);\n try {\n aCallable(reducer);\n } catch (error) {\n iteratorClose(this, \"throw\", error);\n }\n var noInitial = arguments.length < 2;\n var accumulator = noInitial ? void 0 : arguments[1];\n if (reduceWithoutClosingOnEarlyError) {\n return apply(reduceWithoutClosingOnEarlyError, this, noInitial ? [reducer] : [reducer, accumulator]);\n }\n var record = getIteratorDirect(this);\n var counter = 0;\n iterate(record, function(value) {\n if (noInitial) {\n noInitial = false;\n accumulator = value;\n } else {\n accumulator = reducer(accumulator, value, counter);\n }\n counter++;\n }, { IS_RECORD: true });\n if (noInitial) throw new $TypeError(\"Reduce of empty iterator with no initial value\");\n return accumulator;\n }\n });\n })\n ),\n /***/\n 8335: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n var $ = __webpack_require__2(6518);\n var DESCRIPTORS = __webpack_require__2(3724);\n var globalThis2 = __webpack_require__2(4576);\n var getBuiltIn = __webpack_require__2(7751);\n var uncurryThis = __webpack_require__2(9504);\n var call = __webpack_require__2(9565);\n var isCallable = __webpack_require__2(4901);\n var isObject = __webpack_require__2(34);\n var isArray = __webpack_require__2(4376);\n var hasOwn = __webpack_require__2(9297);\n var toString = __webpack_require__2(655);\n var lengthOfArrayLike = __webpack_require__2(6198);\n var createProperty = __webpack_require__2(4659);\n var fails = __webpack_require__2(9039);\n var parseJSONString = __webpack_require__2(8235);\n var NATIVE_SYMBOL = __webpack_require__2(4495);\n var JSON2 = globalThis2.JSON;\n var Number2 = globalThis2.Number;\n var SyntaxError2 = globalThis2.SyntaxError;\n var nativeParse = JSON2 && JSON2.parse;\n var enumerableOwnProperties = getBuiltIn(\"Object\", \"keys\");\n var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n var at = uncurryThis(\"\".charAt);\n var slice = uncurryThis(\"\".slice);\n var exec = uncurryThis(/./.exec);\n var push = uncurryThis([].push);\n var IS_DIGIT = /^\\d$/;\n var IS_NON_ZERO_DIGIT = /^[1-9]$/;\n var IS_NUMBER_START = /^[\\d-]$/;\n var IS_WHITESPACE = /^[\\t\\n\\r ]$/;\n var PRIMITIVE = 0;\n var OBJECT = 1;\n var $parse = function(source, reviver) {\n source = toString(source);\n var context = new Context(source, 0);\n var root = context.parse();\n var value = root.value;\n var endIndex = context.skip(IS_WHITESPACE, root.end);\n if (endIndex < source.length) {\n throw new SyntaxError2('Unexpected extra character: \"' + at(source, endIndex) + '\" after the parsed data at: ' + endIndex);\n }\n return isCallable(reviver) ? internalize({ \"\": value }, \"\", reviver, root) : value;\n };\n var internalize = function(holder, name, reviver, node) {\n var val = holder[name];\n var unmodified = node && val === node.value;\n var context = unmodified && typeof node.source == \"string\" ? { source: node.source } : {};\n var elementRecordsLen, keys, len, i, P;\n if (isObject(val)) {\n var nodeIsArray = isArray(val);\n var nodes = unmodified ? node.nodes : nodeIsArray ? [] : {};\n if (nodeIsArray) {\n elementRecordsLen = nodes.length;\n len = lengthOfArrayLike(val);\n for (i = 0; i < len; i++) {\n internalizeProperty(val, i, internalize(val, \"\" + i, reviver, i < elementRecordsLen ? nodes[i] : void 0));\n }\n } else {\n keys = enumerableOwnProperties(val);\n len = lengthOfArrayLike(keys);\n for (i = 0; i < len; i++) {\n P = keys[i];\n internalizeProperty(val, P, internalize(val, P, reviver, hasOwn(nodes, P) ? nodes[P] : void 0));\n }\n }\n }\n return call(reviver, holder, name, val, context);\n };\n var internalizeProperty = function(object, key, value) {\n if (DESCRIPTORS) {\n var descriptor = getOwnPropertyDescriptor(object, key);\n if (descriptor && !descriptor.configurable) return;\n }\n if (value === void 0) delete object[key];\n else createProperty(object, key, value);\n };\n var Node2 = function(value, end, source, nodes) {\n this.value = value;\n this.end = end;\n this.source = source;\n this.nodes = nodes;\n };\n var Context = function(source, index) {\n this.source = source;\n this.index = index;\n };\n Context.prototype = {\n fork: function(nextIndex) {\n return new Context(this.source, nextIndex);\n },\n parse: function() {\n var source = this.source;\n var i = this.skip(IS_WHITESPACE, this.index);\n var fork = this.fork(i);\n var chr = at(source, i);\n if (exec(IS_NUMBER_START, chr)) return fork.number();\n switch (chr) {\n case \"{\":\n return fork.object();\n case \"[\":\n return fork.array();\n case '\"':\n return fork.string();\n case \"t\":\n return fork.keyword(true);\n case \"f\":\n return fork.keyword(false);\n case \"n\":\n return fork.keyword(null);\n }\n throw new SyntaxError2('Unexpected character: \"' + chr + '\" at: ' + i);\n },\n node: function(type, value, start, end, nodes) {\n return new Node2(value, end, type ? null : slice(this.source, start, end), nodes);\n },\n object: function() {\n var source = this.source;\n var i = this.index + 1;\n var expectKeypair = false;\n var object = {};\n var nodes = {};\n while (i < source.length) {\n i = this.until(['\"', \"}\"], i);\n if (at(source, i) === \"}\" && !expectKeypair) {\n i++;\n break;\n }\n var result = this.fork(i).string();\n var key = result.value;\n i = result.end;\n i = this.until([\":\"], i) + 1;\n i = this.skip(IS_WHITESPACE, i);\n result = this.fork(i).parse();\n createProperty(nodes, key, result);\n createProperty(object, key, result.value);\n i = this.until([\",\", \"}\"], result.end);\n var chr = at(source, i);\n if (chr === \",\") {\n expectKeypair = true;\n i++;\n } else if (chr === \"}\") {\n i++;\n break;\n }\n }\n return this.node(OBJECT, object, this.index, i, nodes);\n },\n array: function() {\n var source = this.source;\n var i = this.index + 1;\n var expectElement = false;\n var array = [];\n var nodes = [];\n while (i < source.length) {\n i = this.skip(IS_WHITESPACE, i);\n if (at(source, i) === \"]\" && !expectElement) {\n i++;\n break;\n }\n var result = this.fork(i).parse();\n push(nodes, result);\n push(array, result.value);\n i = this.until([\",\", \"]\"], result.end);\n if (at(source, i) === \",\") {\n expectElement = true;\n i++;\n } else if (at(source, i) === \"]\") {\n i++;\n break;\n }\n }\n return this.node(OBJECT, array, this.index, i, nodes);\n },\n string: function() {\n var index = this.index;\n var parsed = parseJSONString(this.source, this.index + 1);\n return this.node(PRIMITIVE, parsed.value, index, parsed.end);\n },\n number: function() {\n var source = this.source;\n var startIndex = this.index;\n var i = startIndex;\n if (at(source, i) === \"-\") i++;\n if (at(source, i) === \"0\") i++;\n else if (exec(IS_NON_ZERO_DIGIT, at(source, i))) i = this.skip(IS_DIGIT, i + 1);\n else throw new SyntaxError2(\"Failed to parse number at: \" + i);\n if (at(source, i) === \".\") i = this.skip(IS_DIGIT, i + 1);\n if (at(source, i) === \"e\" || at(source, i) === \"E\") {\n i++;\n if (at(source, i) === \"+\" || at(source, i) === \"-\") i++;\n var exponentStartIndex = i;\n i = this.skip(IS_DIGIT, i);\n if (exponentStartIndex === i) throw new SyntaxError2(\"Failed to parse number's exponent value at: \" + i);\n }\n return this.node(PRIMITIVE, Number2(slice(source, startIndex, i)), startIndex, i);\n },\n keyword: function(value) {\n var keyword = \"\" + value;\n var index = this.index;\n var endIndex = index + keyword.length;\n if (slice(this.source, index, endIndex) !== keyword) throw new SyntaxError2(\"Failed to parse value at: \" + index);\n return this.node(PRIMITIVE, value, index, endIndex);\n },\n skip: function(regex, i) {\n var source = this.source;\n for (; i < source.length; i++) if (!exec(regex, at(source, i))) break;\n return i;\n },\n until: function(array, i) {\n i = this.skip(IS_WHITESPACE, i);\n var chr = at(this.source, i);\n for (var j = 0; j < array.length; j++) if (array[j] === chr) return i;\n throw new SyntaxError2('Unexpected character: \"' + chr + '\" at: ' + i);\n }\n };\n var NO_SOURCE_SUPPORT = fails(function() {\n var unsafeInt = \"9007199254740993\";\n var source;\n nativeParse(unsafeInt, function(key, value, context) {\n source = context.source;\n });\n return source !== unsafeInt;\n });\n var PROPER_BASE_PARSE = NATIVE_SYMBOL && !fails(function() {\n return 1 / nativeParse(\"-0 \t\") !== -Infinity;\n });\n $({ target: \"JSON\", stat: true, forced: NO_SOURCE_SUPPORT }, {\n parse: function parse(text, reviver) {\n return PROPER_BASE_PARSE && !isCallable(reviver) ? nativeParse(text) : $parse(text, reviver);\n }\n });\n })\n ),\n /***/\n 8469: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var uncurryThis = __webpack_require__2(9504);\n var iterateSimple = __webpack_require__2(507);\n var SetHelpers = __webpack_require__2(4402);\n var Set2 = SetHelpers.Set;\n var SetPrototype = SetHelpers.proto;\n var forEach = uncurryThis(SetPrototype.forEach);\n var keys = uncurryThis(SetPrototype.keys);\n var next = keys(new Set2()).next;\n module.exports = function(set, fn, interruptible) {\n return interruptible ? iterateSimple({ iterator: keys(set), next }, fn) : forEach(set, fn);\n };\n })\n ),\n /***/\n 8480: (\n /***/\n ((__unused_webpack_module, exports, __webpack_require__2) => {\n var internalObjectKeys = __webpack_require__2(1828);\n var enumBugKeys = __webpack_require__2(8727);\n var hiddenKeys = enumBugKeys.concat(\"length\", \"prototype\");\n exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n };\n })\n ),\n /***/\n 8527: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var aSet = __webpack_require__2(7080);\n var has = __webpack_require__2(4402).has;\n var size = __webpack_require__2(5170);\n var getSetRecord = __webpack_require__2(3789);\n var iterateSimple = __webpack_require__2(507);\n var iteratorClose = __webpack_require__2(9539);\n module.exports = function isSupersetOf(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n if (size(O) < otherRec.size) return false;\n var iterator = otherRec.getIterator();\n return iterateSimple(iterator, function(e) {\n if (!has(O, e)) return iteratorClose(iterator, \"normal\", false);\n }) !== false;\n };\n })\n ),\n /***/\n 8551: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var isObject = __webpack_require__2(34);\n var $String = String;\n var $TypeError = TypeError;\n module.exports = function(argument) {\n if (isObject(argument)) return argument;\n throw new $TypeError($String(argument) + \" is not an object\");\n };\n })\n ),\n /***/\n 8574: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var uncurryThis = __webpack_require__2(9504);\n var $Error = Error;\n var replace = uncurryThis(\"\".replace);\n var TEST = (function(arg) {\n return String(new $Error(arg).stack);\n })(\"zxcasd\");\n var V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\n var IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n module.exports = function(stack, dropEntries) {\n if (IS_V8_OR_CHAKRA_STACK && typeof stack == \"string\" && !$Error.prepareStackTrace) {\n while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, \"\");\n }\n return stack;\n };\n })\n ),\n /***/\n 8622: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var globalThis2 = __webpack_require__2(4576);\n var isCallable = __webpack_require__2(4901);\n var WeakMap2 = globalThis2.WeakMap;\n module.exports = isCallable(WeakMap2) && /native code/.test(String(WeakMap2));\n })\n ),\n /***/\n 8646: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var call = __webpack_require__2(9565);\n var anObject = __webpack_require__2(8551);\n var getIteratorDirect = __webpack_require__2(1767);\n var getIteratorMethod = __webpack_require__2(851);\n module.exports = function(obj, stringHandling) {\n if (!stringHandling || typeof obj !== \"string\") anObject(obj);\n var method = getIteratorMethod(obj);\n return getIteratorDirect(anObject(method !== void 0 ? call(method, obj) : obj));\n };\n })\n ),\n /***/\n 8686: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var DESCRIPTORS = __webpack_require__2(3724);\n var fails = __webpack_require__2(9039);\n module.exports = DESCRIPTORS && fails(function() {\n return Object.defineProperty(function() {\n }, \"prototype\", {\n value: 42,\n writable: false\n }).prototype !== 42;\n });\n })\n ),\n /***/\n 8721: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n var DESCRIPTORS = __webpack_require__2(3724);\n var uncurryThis = __webpack_require__2(9504);\n var defineBuiltInAccessor = __webpack_require__2(2106);\n var URLSearchParamsPrototype = URLSearchParams.prototype;\n var forEach = uncurryThis(URLSearchParamsPrototype.forEach);\n if (DESCRIPTORS && !(\"size\" in URLSearchParamsPrototype)) {\n defineBuiltInAccessor(URLSearchParamsPrototype, \"size\", {\n get: function size() {\n var count = 0;\n forEach(this, function() {\n count++;\n });\n return count;\n },\n configurable: true,\n enumerable: true\n });\n }\n })\n ),\n /***/\n 8727: (\n /***/\n ((module) => {\n module.exports = [\n \"constructor\",\n \"hasOwnProperty\",\n \"isPrototypeOf\",\n \"propertyIsEnumerable\",\n \"toLocaleString\",\n \"toString\",\n \"valueOf\"\n ];\n })\n ),\n /***/\n 8745: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var NATIVE_BIND = __webpack_require__2(616);\n var FunctionPrototype = Function.prototype;\n var apply = FunctionPrototype.apply;\n var call = FunctionPrototype.call;\n module.exports = typeof Reflect == \"object\" && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function() {\n return call.apply(apply, arguments);\n });\n })\n ),\n /***/\n 8750: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var aSet = __webpack_require__2(7080);\n var SetHelpers = __webpack_require__2(4402);\n var size = __webpack_require__2(5170);\n var getSetRecord = __webpack_require__2(3789);\n var iterateSet = __webpack_require__2(8469);\n var iterateSimple = __webpack_require__2(507);\n var Set2 = SetHelpers.Set;\n var add = SetHelpers.add;\n var has = SetHelpers.has;\n module.exports = function intersection(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n var result = new Set2();\n if (size(O) > otherRec.size) {\n iterateSimple(otherRec.getIterator(), function(e) {\n if (has(O, e)) add(result, e);\n });\n } else {\n iterateSet(O, function(e) {\n if (otherRec.includes(e)) add(result, e);\n });\n }\n return result;\n };\n })\n ),\n /***/\n 8773: (\n /***/\n ((__unused_webpack_module, exports) => {\n var $propertyIsEnumerable = {}.propertyIsEnumerable;\n var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n var NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n } : $propertyIsEnumerable;\n })\n ),\n /***/\n 8981: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var requireObjectCoercible = __webpack_require__2(7750);\n var $Object = Object;\n module.exports = function(argument) {\n return $Object(requireObjectCoercible(argument));\n };\n })\n ),\n /***/\n 9039: (\n /***/\n ((module) => {\n module.exports = function(exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n };\n })\n ),\n /***/\n 9143: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var globalThis2 = __webpack_require__2(4576);\n var uncurryThis = __webpack_require__2(9504);\n var anObjectOrUndefined = __webpack_require__2(3972);\n var aString = __webpack_require__2(3463);\n var hasOwn = __webpack_require__2(9297);\n var base64Map = __webpack_require__2(2804);\n var getAlphabetOption = __webpack_require__2(944);\n var notDetached = __webpack_require__2(5169);\n var base64Alphabet = base64Map.c2i;\n var base64UrlAlphabet = base64Map.c2iUrl;\n var SyntaxError2 = globalThis2.SyntaxError;\n var TypeError2 = globalThis2.TypeError;\n var at = uncurryThis(\"\".charAt);\n var skipAsciiWhitespace = function(string, index) {\n var length = string.length;\n for (; index < length; index++) {\n var chr = at(string, index);\n if (chr !== \" \" && chr !== \"\t\" && chr !== \"\\n\" && chr !== \"\\f\" && chr !== \"\\r\") break;\n }\n return index;\n };\n var decodeBase64Chunk = function(chunk, alphabet, throwOnExtraBits) {\n var chunkLength = chunk.length;\n if (chunkLength < 4) {\n chunk += chunkLength === 2 ? \"AA\" : \"A\";\n }\n var triplet = (alphabet[at(chunk, 0)] << 18) + (alphabet[at(chunk, 1)] << 12) + (alphabet[at(chunk, 2)] << 6) + alphabet[at(chunk, 3)];\n var chunkBytes = [\n triplet >> 16 & 255,\n triplet >> 8 & 255,\n triplet & 255\n ];\n if (chunkLength === 2) {\n if (throwOnExtraBits && chunkBytes[1] !== 0) {\n throw new SyntaxError2(\"Extra bits\");\n }\n return [chunkBytes[0]];\n }\n if (chunkLength === 3) {\n if (throwOnExtraBits && chunkBytes[2] !== 0) {\n throw new SyntaxError2(\"Extra bits\");\n }\n return [chunkBytes[0], chunkBytes[1]];\n }\n return chunkBytes;\n };\n var writeBytes = function(bytes, elements, written) {\n var elementsLength = elements.length;\n for (var index = 0; index < elementsLength; index++) {\n bytes[written + index] = elements[index];\n }\n return written + elementsLength;\n };\n module.exports = function(string, options, into, maxLength) {\n aString(string);\n anObjectOrUndefined(options);\n var alphabet = getAlphabetOption(options) === \"base64\" ? base64Alphabet : base64UrlAlphabet;\n var lastChunkHandling = options ? options.lastChunkHandling : void 0;\n if (lastChunkHandling === void 0) lastChunkHandling = \"loose\";\n if (lastChunkHandling !== \"loose\" && lastChunkHandling !== \"strict\" && lastChunkHandling !== \"stop-before-partial\") {\n throw new TypeError2(\"Incorrect `lastChunkHandling` option\");\n }\n if (into) notDetached(into.buffer);\n var stringLength = string.length;\n var bytes = into || [];\n var written = 0;\n var read = 0;\n var chunk = \"\";\n var index = 0;\n if (maxLength) while (true) {\n index = skipAsciiWhitespace(string, index);\n if (index === stringLength) {\n if (chunk.length > 0) {\n if (lastChunkHandling === \"stop-before-partial\") {\n break;\n }\n if (lastChunkHandling === \"loose\") {\n if (chunk.length === 1) {\n throw new SyntaxError2(\"Malformed padding: exactly one additional character\");\n }\n written = writeBytes(bytes, decodeBase64Chunk(chunk, alphabet, false), written);\n } else {\n throw new SyntaxError2(\"Missing padding\");\n }\n }\n read = stringLength;\n break;\n }\n var chr = at(string, index);\n ++index;\n if (chr === \"=\") {\n if (chunk.length < 2) {\n throw new SyntaxError2(\"Padding is too early\");\n }\n index = skipAsciiWhitespace(string, index);\n if (chunk.length === 2) {\n if (index === stringLength) {\n if (lastChunkHandling === \"stop-before-partial\") {\n break;\n }\n throw new SyntaxError2(\"Malformed padding: only one =\");\n }\n if (at(string, index) === \"=\") {\n ++index;\n index = skipAsciiWhitespace(string, index);\n }\n }\n if (index < stringLength) {\n throw new SyntaxError2(\"Unexpected character after padding\");\n }\n written = writeBytes(bytes, decodeBase64Chunk(chunk, alphabet, lastChunkHandling === \"strict\"), written);\n read = stringLength;\n break;\n }\n if (!hasOwn(alphabet, chr)) {\n throw new SyntaxError2(\"Unexpected character\");\n }\n var remainingBytes = maxLength - written;\n if (remainingBytes === 1 && chunk.length === 2 || remainingBytes === 2 && chunk.length === 3) {\n break;\n }\n chunk += chr;\n if (chunk.length === 4) {\n written = writeBytes(bytes, decodeBase64Chunk(chunk, alphabet, false), written);\n chunk = \"\";\n read = index;\n if (written === maxLength) {\n break;\n }\n }\n }\n return { bytes, read, written };\n };\n })\n ),\n /***/\n 9286: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var SetHelpers = __webpack_require__2(4402);\n var iterate = __webpack_require__2(8469);\n var Set2 = SetHelpers.Set;\n var add = SetHelpers.add;\n module.exports = function(set) {\n var result = new Set2();\n iterate(set, function(it) {\n add(result, it);\n });\n return result;\n };\n })\n ),\n /***/\n 9297: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var uncurryThis = __webpack_require__2(9504);\n var toObject = __webpack_require__2(8981);\n var hasOwnProperty = uncurryThis({}.hasOwnProperty);\n module.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n };\n })\n ),\n /***/\n 9306: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var isCallable = __webpack_require__2(4901);\n var tryToString = __webpack_require__2(6823);\n var $TypeError = TypeError;\n module.exports = function(argument) {\n if (isCallable(argument)) return argument;\n throw new $TypeError(tryToString(argument) + \" is not a function\");\n };\n })\n ),\n /***/\n 9314: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n var $ = __webpack_require__2(6518);\n var call = __webpack_require__2(9565);\n var anObject = __webpack_require__2(8551);\n var getIteratorDirect = __webpack_require__2(1767);\n var notANaN = __webpack_require__2(4149);\n var toPositiveInteger = __webpack_require__2(9590);\n var iteratorClose = __webpack_require__2(9539);\n var createIteratorProxy = __webpack_require__2(9462);\n var iteratorHelperThrowsOnInvalidIterator = __webpack_require__2(684);\n var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__2(4549);\n var IS_PURE = __webpack_require__2(6395);\n var DROP_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE && !iteratorHelperThrowsOnInvalidIterator(\"drop\", 0);\n var dropWithoutClosingOnEarlyError = !IS_PURE && !DROP_WITHOUT_THROWING_ON_INVALID_ITERATOR && iteratorHelperWithoutClosingOnEarlyError(\"drop\", RangeError);\n var FORCED = IS_PURE || DROP_WITHOUT_THROWING_ON_INVALID_ITERATOR || dropWithoutClosingOnEarlyError;\n var IteratorProxy = createIteratorProxy(function() {\n var iterator = this.iterator;\n var next = this.next;\n var result, done;\n while (this.remaining) {\n this.remaining--;\n result = anObject(call(next, iterator));\n done = this.done = !!result.done;\n if (done) return;\n }\n result = anObject(call(next, iterator));\n done = this.done = !!result.done;\n if (!done) return result.value;\n });\n $({ target: \"Iterator\", proto: true, real: true, forced: FORCED }, {\n drop: function drop(limit) {\n anObject(this);\n var remaining;\n try {\n remaining = toPositiveInteger(notANaN(+limit));\n } catch (error) {\n iteratorClose(this, \"throw\", error);\n }\n if (dropWithoutClosingOnEarlyError) return call(dropWithoutClosingOnEarlyError, this, remaining);\n return new IteratorProxy(getIteratorDirect(this), {\n remaining\n });\n }\n });\n })\n ),\n /***/\n 9429: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var globalThis2 = __webpack_require__2(4576);\n var IS_NODE = __webpack_require__2(6193);\n module.exports = function(name) {\n if (IS_NODE) {\n try {\n return globalThis2.process.getBuiltinModule(name);\n } catch (error) {\n }\n try {\n return Function('return require(\"' + name + '\")')();\n } catch (error) {\n }\n }\n };\n })\n ),\n /***/\n 9432: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n __webpack_require__2(5213);\n })\n ),\n /***/\n 9433: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var globalThis2 = __webpack_require__2(4576);\n var defineProperty = Object.defineProperty;\n module.exports = function(key, value) {\n try {\n defineProperty(globalThis2, key, { value, configurable: true, writable: true });\n } catch (error) {\n globalThis2[key] = value;\n }\n return value;\n };\n })\n ),\n /***/\n 9462: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var call = __webpack_require__2(9565);\n var create = __webpack_require__2(2360);\n var createNonEnumerableProperty = __webpack_require__2(6699);\n var defineBuiltIns = __webpack_require__2(6279);\n var wellKnownSymbol = __webpack_require__2(8227);\n var InternalStateModule = __webpack_require__2(1181);\n var getMethod = __webpack_require__2(5966);\n var IteratorPrototype = __webpack_require__2(7657).IteratorPrototype;\n var createIterResultObject = __webpack_require__2(2529);\n var iteratorClose = __webpack_require__2(9539);\n var iteratorCloseAll = __webpack_require__2(1385);\n var TO_STRING_TAG = wellKnownSymbol(\"toStringTag\");\n var ITERATOR_HELPER = \"IteratorHelper\";\n var WRAP_FOR_VALID_ITERATOR = \"WrapForValidIterator\";\n var NORMAL = \"normal\";\n var THROW = \"throw\";\n var setInternalState = InternalStateModule.set;\n var createIteratorProxyPrototype = function(IS_ITERATOR) {\n var getInternalState = InternalStateModule.getterFor(IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER);\n return defineBuiltIns(create(IteratorPrototype), {\n next: function next() {\n var state = getInternalState(this);\n if (IS_ITERATOR) return state.nextHandler();\n if (state.done) return createIterResultObject(void 0, true);\n try {\n var result = state.nextHandler();\n return state.returnHandlerResult ? result : createIterResultObject(result, state.done);\n } catch (error) {\n state.done = true;\n throw error;\n }\n },\n \"return\": function() {\n var state = getInternalState(this);\n var iterator = state.iterator;\n state.done = true;\n if (IS_ITERATOR) {\n var returnMethod = getMethod(iterator, \"return\");\n return returnMethod ? call(returnMethod, iterator) : createIterResultObject(void 0, true);\n }\n if (state.inner) try {\n iteratorClose(state.inner.iterator, NORMAL);\n } catch (error) {\n return iteratorClose(iterator, THROW, error);\n }\n if (state.openIters) try {\n iteratorCloseAll(state.openIters, NORMAL);\n } catch (error) {\n return iteratorClose(iterator, THROW, error);\n }\n if (iterator) iteratorClose(iterator, NORMAL);\n return createIterResultObject(void 0, true);\n }\n });\n };\n var WrapForValidIteratorPrototype = createIteratorProxyPrototype(true);\n var IteratorHelperPrototype = createIteratorProxyPrototype(false);\n createNonEnumerableProperty(IteratorHelperPrototype, TO_STRING_TAG, \"Iterator Helper\");\n module.exports = function(nextHandler, IS_ITERATOR, RETURN_HANDLER_RESULT) {\n var IteratorProxy = function Iterator2(record, state) {\n if (state) {\n state.iterator = record.iterator;\n state.next = record.next;\n } else state = record;\n state.type = IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER;\n state.returnHandlerResult = !!RETURN_HANDLER_RESULT;\n state.nextHandler = nextHandler;\n state.counter = 0;\n state.done = false;\n setInternalState(this, state);\n };\n IteratorProxy.prototype = IS_ITERATOR ? WrapForValidIteratorPrototype : IteratorHelperPrototype;\n return IteratorProxy;\n };\n })\n ),\n /***/\n 9486: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n var $ = __webpack_require__2(6518);\n var globalThis2 = __webpack_require__2(4576);\n var uncurryThis = __webpack_require__2(9504);\n var anObjectOrUndefined = __webpack_require__2(3972);\n var anUint8Array = __webpack_require__2(4154);\n var notDetached = __webpack_require__2(5169);\n var base64Map = __webpack_require__2(2804);\n var getAlphabetOption = __webpack_require__2(944);\n var base64Alphabet = base64Map.i2c;\n var base64UrlAlphabet = base64Map.i2cUrl;\n var charAt = uncurryThis(\"\".charAt);\n var Uint8Array2 = globalThis2.Uint8Array;\n var INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS = !Uint8Array2 || !Uint8Array2.prototype.toBase64 || !(function() {\n try {\n var target = new Uint8Array2();\n target.toBase64(null);\n } catch (error) {\n return true;\n }\n })();\n if (Uint8Array2) $({ target: \"Uint8Array\", proto: true, forced: INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS }, {\n toBase64: function toBase64() {\n var array = anUint8Array(this);\n var options = arguments.length ? anObjectOrUndefined(arguments[0]) : void 0;\n var alphabet = getAlphabetOption(options) === \"base64\" ? base64Alphabet : base64UrlAlphabet;\n var omitPadding = !!options && !!options.omitPadding;\n notDetached(this.buffer);\n var result = \"\";\n var i = 0;\n var length = array.length;\n var triplet;\n var at = function(shift) {\n return charAt(alphabet, triplet >> 6 * shift & 63);\n };\n for (; i + 2 < length; i += 3) {\n triplet = (array[i] << 16) + (array[i + 1] << 8) + array[i + 2];\n result += at(3) + at(2) + at(1) + at(0);\n }\n if (i + 2 === length) {\n triplet = (array[i] << 16) + (array[i + 1] << 8);\n result += at(3) + at(2) + at(1) + (omitPadding ? \"\" : \"=\");\n } else if (i + 1 === length) {\n triplet = array[i] << 16;\n result += at(3) + at(2) + (omitPadding ? \"\" : \"==\");\n }\n return result;\n }\n });\n })\n ),\n /***/\n 9504: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var NATIVE_BIND = __webpack_require__2(616);\n var FunctionPrototype = Function.prototype;\n var call = FunctionPrototype.call;\n var uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n module.exports = NATIVE_BIND ? uncurryThisWithBind : function(fn) {\n return function() {\n return call.apply(fn, arguments);\n };\n };\n })\n ),\n /***/\n 9519: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var globalThis2 = __webpack_require__2(4576);\n var userAgent = __webpack_require__2(2839);\n var process2 = globalThis2.process;\n var Deno2 = globalThis2.Deno;\n var versions = process2 && process2.versions || Deno2 && Deno2.version;\n var v8 = versions && versions.v8;\n var match, version2;\n if (v8) {\n match = v8.split(\".\");\n version2 = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n }\n if (!version2 && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version2 = +match[1];\n }\n }\n module.exports = version2;\n })\n ),\n /***/\n 9539: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var call = __webpack_require__2(9565);\n var anObject = __webpack_require__2(8551);\n var getMethod = __webpack_require__2(5966);\n module.exports = function(iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, \"return\");\n if (!innerResult) {\n if (kind === \"throw\") throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === \"throw\") throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n };\n })\n ),\n /***/\n 9565: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var NATIVE_BIND = __webpack_require__2(616);\n var call = Function.prototype.call;\n module.exports = NATIVE_BIND ? call.bind(call) : function() {\n return call.apply(call, arguments);\n };\n })\n ),\n /***/\n 9577: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n var arrayWith = __webpack_require__2(9928);\n var ArrayBufferViewCore = __webpack_require__2(4644);\n var isBigIntArray = __webpack_require__2(1108);\n var toIntegerOrInfinity = __webpack_require__2(1291);\n var toBigInt = __webpack_require__2(5854);\n var aTypedArray = ArrayBufferViewCore.aTypedArray;\n var getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\n var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n var PROPER_ORDER = (function() {\n try {\n new Int8Array(1)[\"with\"](2, { valueOf: function() {\n throw 8;\n } });\n } catch (error) {\n return error === 8;\n }\n })();\n var THROW_ON_NEGATIVE_FRACTIONAL_INDEX = PROPER_ORDER && (function() {\n try {\n new Int8Array(1)[\"with\"](-0.5, 1);\n } catch (error) {\n return true;\n }\n })();\n exportTypedArrayMethod(\"with\", { \"with\": function(index, value) {\n var O = aTypedArray(this);\n var relativeIndex = toIntegerOrInfinity(index);\n var actualValue = isBigIntArray(O) ? toBigInt(value) : +value;\n return arrayWith(O, getTypedArrayConstructor(O), relativeIndex, actualValue);\n } }[\"with\"], !PROPER_ORDER || THROW_ON_NEGATIVE_FRACTIONAL_INDEX);\n })\n ),\n /***/\n 9590: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var toIntegerOrInfinity = __webpack_require__2(1291);\n var $RangeError = RangeError;\n module.exports = function(it) {\n var result = toIntegerOrInfinity(it);\n if (result < 0) throw new $RangeError(\"The argument can't be less than 0\");\n return result;\n };\n })\n ),\n /***/\n 9617: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var toIndexedObject = __webpack_require__2(5397);\n var toAbsoluteIndex = __webpack_require__2(5610);\n var lengthOfArrayLike = __webpack_require__2(6198);\n var createMethod = function(IS_INCLUDES) {\n return function($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n if (length === 0) return !IS_INCLUDES && -1;\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n if (IS_INCLUDES && el !== el) while (length > index) {\n value = O[index++];\n if (value !== value) return true;\n }\n else for (; length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n }\n return !IS_INCLUDES && -1;\n };\n };\n module.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n };\n })\n ),\n /***/\n 9631: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n __webpack_require__2(9486);\n })\n ),\n /***/\n 9797: (\n /***/\n ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__2) => {\n __webpack_require__2(4226);\n })\n ),\n /***/\n 9835: (\n /***/\n ((module) => {\n module.exports = function(METHOD_NAME) {\n try {\n var baseSet = /* @__PURE__ */ new Set();\n var setLike = {\n size: 0,\n has: function() {\n return true;\n },\n keys: function() {\n return Object.defineProperty({}, \"next\", {\n get: function() {\n baseSet.clear();\n baseSet.add(4);\n return function() {\n return { done: true };\n };\n }\n });\n }\n };\n var result = baseSet[METHOD_NAME](setLike);\n return result.size === 1 && result.values().next().value === 4;\n } catch (error) {\n return false;\n }\n };\n })\n ),\n /***/\n 9928: (\n /***/\n ((module, __unused_webpack_exports, __webpack_require__2) => {\n var lengthOfArrayLike = __webpack_require__2(6198);\n var toIntegerOrInfinity = __webpack_require__2(1291);\n var $RangeError = RangeError;\n module.exports = function(O, C, index, value) {\n var len = lengthOfArrayLike(O);\n var relativeIndex = toIntegerOrInfinity(index);\n var actualIndex = relativeIndex < 0 ? len + relativeIndex : relativeIndex;\n if (actualIndex >= len || actualIndex < 0) throw new $RangeError(\"Incorrect index\");\n var A = new C(len);\n var k = 0;\n for (; k < len; k++) A[k] = k === actualIndex ? value : O[k];\n return A;\n };\n })\n )\n /******/\n};\nvar __webpack_module_cache__ = {};\nfunction __webpack_require__(moduleId) {\n var cachedModule = __webpack_module_cache__[moduleId];\n if (cachedModule !== void 0) {\n return cachedModule.exports;\n }\n var module = __webpack_module_cache__[moduleId] = {\n /******/\n // no module.id needed\n /******/\n // no module.loaded needed\n /******/\n exports: {}\n /******/\n };\n __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n return module.exports;\n}\n(() => {\n __webpack_require__.d = (exports, definition) => {\n for (var key in definition) {\n if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n };\n})();\n(() => {\n __webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\n})();\n__webpack_require__(4114);\n__webpack_require__(6573);\n__webpack_require__(8100);\n__webpack_require__(7936);\n__webpack_require__(8111);\n__webpack_require__(8237);\n__webpack_require__(1689);\n__webpack_require__(9577);\n__webpack_require__(4235);\n__webpack_require__(9432);\n__webpack_require__(1549);\n__webpack_require__(9797);\n__webpack_require__(9631);\n__webpack_require__(5623);\n__webpack_require__(4979);\n__webpack_require__(5781);\nconst isNodeJS = typeof process === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== \"browser\");\nconst FONT_IDENTITY_MATRIX = [1e-3, 0, 0, 1e-3, 0, 0];\nconst LINE_FACTOR = 1.35;\nconst RenderingIntentFlag = {\n ANY: 1,\n DISPLAY: 2,\n PRINT: 4,\n ANNOTATIONS_FORMS: 16,\n ANNOTATIONS_STORAGE: 32,\n ANNOTATIONS_DISABLE: 64,\n IS_EDITING: 128,\n OPLIST: 256\n};\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3\n};\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\nconst AnnotationEditorType = {\n DISABLE: -1,\n NONE: 0,\n FREETEXT: 3,\n HIGHLIGHT: 9,\n STAMP: 13,\n INK: 15,\n POPUP: 16,\n SIGNATURE: 101,\n COMMENT: 102\n};\nconst AnnotationEditorParamsType = {\n RESIZE: 1,\n CREATE: 2,\n FREETEXT_SIZE: 11,\n FREETEXT_COLOR: 12,\n FREETEXT_OPACITY: 13,\n INK_COLOR: 21,\n INK_THICKNESS: 22,\n INK_OPACITY: 23,\n HIGHLIGHT_COLOR: 31,\n HIGHLIGHT_THICKNESS: 32,\n HIGHLIGHT_FREE: 33,\n HIGHLIGHT_SHOW_ALL: 34,\n DRAW_STEP: 41\n};\nconst PermissionFlag = {\n PRINT: 4,\n MODIFY_CONTENTS: 8,\n COPY: 16,\n MODIFY_ANNOTATIONS: 32,\n FILL_INTERACTIVE_FORMS: 256,\n COPY_FOR_ACCESSIBILITY: 512,\n ASSEMBLE: 1024,\n PRINT_HIGH_QUALITY: 2048\n};\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4\n};\nconst util_ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3\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};\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5\n};\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5\n};\nconst OPS = {\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 beginAnnotation: 80,\n endAnnotation: 81,\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 setStrokeTransparent: 92,\n setFillTransparent: 93,\n rawFillPath: 94\n};\nconst DrawOPS = {\n moveTo: 0,\n lineTo: 1,\n curveTo: 2,\n closePath: 3\n};\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2\n};\nlet verbosity = VerbosityLevel.WARNINGS;\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\nfunction getVerbosityLevel() {\n return verbosity;\n}\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.info(`Info: ${msg}`);\n }\n}\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.warn(`Warning: ${msg}`);\n }\n}\nfunction unreachable(msg) {\n throw new Error(msg);\n}\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\nfunction _isValidProtocol(url) {\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}\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n if (options && typeof url === \"string\") {\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n if (dots?.length >= 2) {\n url = `http://${url}`;\n }\n }\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch {\n }\n }\n }\n const absoluteUrl = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\n return _isValidProtocol(absoluteUrl) ? absoluteUrl : null;\n}\nfunction updateUrlHash(url, hash, allowRel = false) {\n const res = URL.parse(url);\n if (res) {\n res.hash = hash;\n return res.href;\n }\n if (allowRel && createValidAbsoluteUrl(url, \"http://example.com\")) {\n return url.split(\"#\", 1)[0] + `${hash ? `#${hash}` : \"\"}`;\n }\n return \"\";\n}\nfunction shadow(obj, prop, value, nonSerializable = false) {\n Object.defineProperty(obj, prop, {\n value,\n enumerable: !nonSerializable,\n configurable: true,\n writable: false\n });\n return value;\n}\nconst BaseException = (function BaseExceptionClosure() {\n function BaseException2(message, name) {\n this.message = message;\n this.name = name;\n }\n BaseException2.prototype = new Error();\n BaseException2.constructor = BaseException2;\n return BaseException2;\n})();\nlet PasswordException$1 = class PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n};\nlet UnknownErrorException$1 = class UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n};\nlet InvalidPDFException$1 = class InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n};\nlet ResponseException$1 = class ResponseException extends BaseException {\n constructor(msg, status, missing) {\n super(msg, \"ResponseException\");\n this.status = status;\n this.missing = missing;\n }\n};\nlet FormatError$1 = class FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n};\nlet AbortException$1 = class AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n};\nfunction bytesToString(bytes) {\n if (typeof bytes !== \"object\" || bytes?.length === void 0) {\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}\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) & 255;\n }\n return bytes;\n}\nfunction string32(value) {\n return String.fromCharCode(value >> 24 & 255, value >> 16 & 255, value >> 8 & 255, value & 255);\n}\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}\nfunction isEvalSupported() {\n try {\n new Function(\"\");\n return true;\n } catch {\n return false;\n }\n}\nclass util_FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", isLittleEndian());\n }\n static get isEvalSupported() {\n return shadow(this, \"isEvalSupported\", isEvalSupported());\n }\n static get isOffscreenCanvasSupported() {\n return shadow(this, \"isOffscreenCanvasSupported\", typeof OffscreenCanvas !== \"undefined\");\n }\n static get isImageDecoderSupported() {\n return shadow(this, \"isImageDecoderSupported\", typeof ImageDecoder !== \"undefined\");\n }\n static get platform() {\n const {\n platform,\n userAgent\n } = navigator;\n return shadow(this, \"platform\", {\n isAndroid: userAgent.includes(\"Android\"),\n isLinux: platform.includes(\"Linux\"),\n isMac: platform.includes(\"Mac\"),\n isWindows: platform.includes(\"Win\"),\n isFirefox: userAgent.includes(\"Firefox\")\n });\n }\n static get isCSSRoundSupported() {\n return shadow(this, \"isCSSRoundSupported\", globalThis.CSS?.supports?.(\"width: round(1.5px, 1px)\"));\n }\n}\nconst hexNumbers = Array.from(Array(256).keys(), (n) => n.toString(16).padStart(2, \"0\"));\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n static domMatrixToTransform(dm) {\n return [dm.a, dm.b, dm.c, dm.d, dm.e, dm.f];\n }\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[2];\n minMax[2] = temp;\n }\n minMax[0] *= transform[0];\n minMax[2] *= transform[0];\n if (transform[3] < 0) {\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n }\n minMax[1] *= transform[3];\n minMax[3] *= transform[3];\n } else {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n if (transform[1] < 0) {\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n }\n minMax[1] *= transform[1];\n minMax[3] *= transform[1];\n if (transform[2] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n }\n minMax[0] *= transform[2];\n minMax[2] *= transform[2];\n }\n minMax[0] += transform[4];\n minMax[1] += transform[5];\n minMax[2] += transform[4];\n minMax[3] += transform[5];\n }\n static transform(m1, m2) {\n return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];\n }\n static multiplyByDOMMatrix(m, md) {\n return [m[0] * md.a + m[2] * md.b, m[1] * md.a + m[3] * md.b, m[0] * md.c + m[2] * md.d, m[1] * md.c + m[3] * md.d, m[0] * md.e + m[2] * md.f + m[4], m[1] * md.e + m[3] * md.f + m[5]];\n }\n static applyTransform(p, m, pos = 0) {\n const p0 = p[pos];\n const p1 = p[pos + 1];\n p[pos] = p0 * m[0] + p1 * m[2] + m[4];\n p[pos + 1] = p0 * m[1] + p1 * m[3] + m[5];\n }\n static applyTransformToBezier(p, transform, pos = 0) {\n const m0 = transform[0];\n const m1 = transform[1];\n const m2 = transform[2];\n const m3 = transform[3];\n const m4 = transform[4];\n const m5 = transform[5];\n for (let i = 0; i < 6; i += 2) {\n const pI = p[pos + i];\n const pI1 = p[pos + i + 1];\n p[pos + i] = pI * m0 + pI1 * m2 + m4;\n p[pos + i + 1] = pI * m1 + pI1 * m3 + m5;\n }\n }\n static applyInverseTransform(p, m) {\n const p0 = p[0];\n const p1 = p[1];\n const d = m[0] * m[3] - m[1] * m[2];\n p[0] = (p0 * m[3] - p1 * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n p[1] = (-p0 * m[1] + p1 * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n }\n static axialAlignedBoundingBox(rect, transform, output) {\n const m0 = transform[0];\n const m1 = transform[1];\n const m2 = transform[2];\n const m3 = transform[3];\n const m4 = transform[4];\n const m5 = transform[5];\n const r0 = rect[0];\n const r1 = rect[1];\n const r2 = rect[2];\n const r3 = rect[3];\n let a0 = m0 * r0 + m4;\n let a2 = a0;\n let a1 = m0 * r2 + m4;\n let a3 = a1;\n let b0 = m3 * r1 + m5;\n let b2 = b0;\n let b1 = m3 * r3 + m5;\n let b3 = b1;\n if (m1 !== 0 || m2 !== 0) {\n const m1r0 = m1 * r0;\n const m1r2 = m1 * r2;\n const m2r1 = m2 * r1;\n const m2r3 = m2 * r3;\n a0 += m2r1;\n a3 += m2r1;\n a1 += m2r3;\n a2 += m2r3;\n b0 += m1r0;\n b3 += m1r0;\n b1 += m1r2;\n b2 += m1r2;\n }\n output[0] = Math.min(output[0], a0, a1, a2, a3);\n output[1] = Math.min(output[1], b0, b1, b2, b3);\n output[2] = Math.max(output[2], a0, a1, a2, a3);\n output[3] = Math.max(output[3], b0, b1, b2, b3);\n }\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n }\n static singularValueDecompose2dScale(matrix, output) {\n const m0 = matrix[0];\n const m1 = matrix[1];\n const m2 = matrix[2];\n const m3 = matrix[3];\n const a = m0 ** 2 + m1 ** 2;\n const b = m0 * m2 + m1 * m3;\n const c = m2 ** 2 + m3 ** 2;\n const first = (a + c) / 2;\n const second = Math.sqrt(first ** 2 - (a * c - b ** 2));\n output[0] = Math.sqrt(first + second || 1);\n output[1] = Math.sqrt(first - second || 1);\n }\n static normalizeRect(rect) {\n const r = rect.slice(0);\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 static intersect(rect1, rect2) {\n const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2]));\n const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2]));\n if (xLow > xHigh) {\n return null;\n }\n const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3]));\n const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3]));\n if (yLow > yHigh) {\n return null;\n }\n return [xLow, yLow, xHigh, yHigh];\n }\n static pointBoundingBox(x, y, minMax) {\n minMax[0] = Math.min(minMax[0], x);\n minMax[1] = Math.min(minMax[1], y);\n minMax[2] = Math.max(minMax[2], x);\n minMax[3] = Math.max(minMax[3], y);\n }\n static rectBoundingBox(x0, y0, x1, y1, minMax) {\n minMax[0] = Math.min(minMax[0], x0, x1);\n minMax[1] = Math.min(minMax[1], y0, y1);\n minMax[2] = Math.max(minMax[2], x0, x1);\n minMax[3] = Math.max(minMax[3], y0, y1);\n }\n static #getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, t, minMax) {\n if (t <= 0 || t >= 1) {\n return;\n }\n const mt = 1 - t;\n const tt = t * t;\n const ttt = tt * t;\n const x = mt * (mt * (mt * x0 + 3 * t * x1) + 3 * tt * x2) + ttt * x3;\n const y = mt * (mt * (mt * y0 + 3 * t * y1) + 3 * tt * y2) + ttt * y3;\n minMax[0] = Math.min(minMax[0], x);\n minMax[1] = Math.min(minMax[1], y);\n minMax[2] = Math.max(minMax[2], x);\n minMax[3] = Math.max(minMax[3], y);\n }\n static #getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, a, b, c, minMax) {\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) >= 1e-12) {\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, -c / b, minMax);\n }\n return;\n }\n const delta = b ** 2 - 4 * c * a;\n if (delta < 0) {\n return;\n }\n const sqrtDelta = Math.sqrt(delta);\n const a2 = 2 * a;\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b + sqrtDelta) / a2, minMax);\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b - sqrtDelta) / a2, minMax);\n }\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n minMax[0] = Math.min(minMax[0], x0, x3);\n minMax[1] = Math.min(minMax[1], y0, y3);\n minMax[2] = Math.max(minMax[2], x0, x3);\n minMax[3] = Math.max(minMax[3], y0, y3);\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-x0 + 3 * (x1 - x2) + x3), 6 * (x0 - 2 * x1 + x2), 3 * (x1 - x0), minMax);\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-y0 + 3 * (y1 - y2) + y3), 6 * (y0 - 2 * y1 + y2), 3 * (y1 - y0), minMax);\n }\n}\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n if (!NormalizeRegex) {\n NormalizeRegex = /([\\u00a0\\u00b5\\u037e\\u0eb3\\u2000-\\u200a\\u202f\\u2126\\ufb00-\\ufb04\\ufb06\\ufb20-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufba1\\ufba4-\\ufba9\\ufbae-\\ufbb1\\ufbd3-\\ufbdc\\ufbde-\\ufbe7\\ufbea-\\ufbf8\\ufbfc-\\ufbfd\\ufc00-\\ufc5d\\ufc64-\\ufcf1\\ufcf5-\\ufd3d\\ufd88\\ufdf4\\ufdfa-\\ufdfb\\ufe71\\ufe77\\ufe79\\ufe7b\\ufe7d]+)|(\\ufb05+)/gu;\n NormalizationMap = /* @__PURE__ */ new Map([[\"ſt\", \"ſt\"]]);\n }\n return str.replaceAll(NormalizeRegex, (_, p1, p2) => p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2));\n}\nfunction getUuid() {\n if (typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const buf = new Uint8Array(32);\n crypto.getRandomValues(buf);\n return bytesToString(buf);\n}\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\nfunction _isValidExplicitDest(validRef, validName, dest) {\n if (!Array.isArray(dest) || dest.length < 2) {\n return false;\n }\n const [page, zoom, ...args] = dest;\n if (!validRef(page) && !Number.isInteger(page)) {\n return false;\n }\n if (!validName(zoom)) {\n return false;\n }\n const argsLen = args.length;\n let allowNull = true;\n switch (zoom.name) {\n case \"XYZ\":\n if (argsLen < 2 || argsLen > 3) {\n return false;\n }\n break;\n case \"Fit\":\n case \"FitB\":\n return argsLen === 0;\n case \"FitH\":\n case \"FitBH\":\n case \"FitV\":\n case \"FitBV\":\n if (argsLen > 1) {\n return false;\n }\n break;\n case \"FitR\":\n if (argsLen !== 4) {\n return false;\n }\n allowNull = false;\n break;\n default:\n return false;\n }\n for (const arg of args) {\n if (typeof arg === \"number\" || allowNull && arg === null) {\n continue;\n }\n return false;\n }\n return true;\n}\nfunction MathClamp(v, min, max) {\n return Math.min(Math.max(v, min), max);\n}\nfunction toBase64Util(arr) {\n if (Uint8Array.prototype.toBase64) {\n return arr.toBase64();\n }\n return btoa(bytesToString(arr));\n}\nfunction fromBase64Util(str) {\n if (Uint8Array.fromBase64) {\n return Uint8Array.fromBase64(str);\n }\n return stringToBytes(atob(str));\n}\nif (typeof Math.sumPrecise !== \"function\") {\n Math.sumPrecise = function(numbers) {\n return numbers.reduce((a, b) => a + b, 0);\n };\n}\nif (typeof AbortSignal.any !== \"function\") {\n AbortSignal.any = function(iterable) {\n const ac = new AbortController();\n const {\n signal\n } = ac;\n for (const s of iterable) {\n if (s.aborted) {\n ac.abort(s.reason);\n return signal;\n }\n }\n for (const s of iterable) {\n s.addEventListener(\"abort\", () => {\n ac.abort(s.reason);\n }, {\n signal\n });\n }\n return signal;\n };\n}\n__webpack_require__(1701);\n__webpack_require__(4603);\n__webpack_require__(7566);\n__webpack_require__(8721);\nclass XfaText {\n static textContent(xfa) {\n const items = [];\n const output = {\n items,\n styles: /* @__PURE__ */ 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 static shouldBuildText(name) {\n return !(name === \"textarea\" || name === \"input\" || name === \"option\" || name === \"select\");\n }\n}\nclass XfaLayer {\n static setupStorage(html, id, element, storage, intent) {\n const storedData = storage.getValue(id, {\n value: null\n });\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, {\n value: event.target.value\n });\n });\n break;\n case \"input\":\n if (element.attributes.type === \"radio\" || element.attributes.type === \"checkbox\") {\n if (storedData.value === element.attributes.xfaOn) {\n html.setAttribute(\"checked\", true);\n } else if (storedData.value === element.attributes.xfaOff) {\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 ? event.target.getAttribute(\"xfaOn\") : 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, {\n value: event.target.value\n });\n });\n }\n break;\n case \"select\":\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n for (const option of element.children) {\n if (option.attributes.value === storedData.value) {\n option.attributes.selected = true;\n } else if (option.attributes.hasOwnProperty(\"selected\")) {\n delete option.attributes.selected;\n }\n }\n }\n html.addEventListener(\"input\", (event) => {\n const options = event.target.options;\n const value = options.selectedIndex === -1 ? \"\" : options[options.selectedIndex].value;\n storage.setValue(id, {\n value\n });\n });\n break;\n }\n }\n static setAttributes({\n html,\n element,\n storage = null,\n intent,\n linkService\n }) {\n const {\n attributes\n } = element;\n const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n if (attributes.type === \"radio\") {\n attributes.name = `${attributes.name}-${intent}`;\n }\n for (const [key, value] of Object.entries(attributes)) {\n if (value === null || value === void 0) {\n continue;\n }\n switch (key) {\n case \"class\":\n if (value.length) {\n html.setAttribute(key, value.join(\" \"));\n }\n break;\n case \"dataId\":\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 if (isHTMLAnchorElement) {\n linkService.addLinkAttributes(html, attributes.href, attributes.newWindow);\n }\n if (storage && attributes.dataId) {\n this.setupStorage(html, attributes.dataId, element, storage);\n }\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 isNotForRichText = intent !== \"richText\";\n const rootDiv = parameters.div;\n rootDiv.append(rootHtml);\n if (parameters.viewport) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n rootDiv.style.transform = transform;\n }\n if (isNotForRichText) {\n rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n }\n const textDivs = [];\n if (root.children.length === 0) {\n if (root.value) {\n const node = document.createTextNode(root.value);\n rootHtml.append(node);\n if (isNotForRichText && XfaText.shouldBuildText(root.name)) {\n textDivs.push(node);\n }\n }\n return {\n textDivs\n };\n }\n const stack = [[root, -1, rootHtml]];\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 const child = parent.children[++stack.at(-1)[1]];\n if (child === null) {\n continue;\n }\n const {\n name\n } = child;\n if (name === \"#text\") {\n const node = document.createTextNode(child.value);\n textDivs.push(node);\n html.append(node);\n continue;\n }\n const childHtml = child?.attributes?.xmlns ? document.createElementNS(child.attributes.xmlns, name) : document.createElement(name);\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 if (child.children?.length > 0) {\n stack.push([child, -1, childHtml]);\n } else if (child.value) {\n const node = document.createTextNode(child.value);\n if (isNotForRichText && XfaText.shouldBuildText(name)) {\n textDivs.push(node);\n }\n childHtml.append(node);\n }\n }\n for (const el of rootDiv.querySelectorAll(\".xfaNonInteractive input, .xfaNonInteractive textarea\")) {\n el.setAttribute(\"readOnly\", true);\n }\n return {\n textDivs\n };\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}\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\nclass PixelsPerInch {\n static CSS = 96;\n static PDF = 72;\n static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\nasync function fetchData(url, type = \"text\") {\n if (isValidFetchUrl(url, document.baseURI)) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n switch (type) {\n case \"arraybuffer\":\n return response.arrayBuffer();\n case \"blob\":\n return response.blob();\n case \"json\":\n return response.json();\n }\n return response.text();\n }\n return new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open(\"GET\", url, true);\n request.responseType = type;\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n if (request.status === 200 || request.status === 0) {\n switch (type) {\n case \"arraybuffer\":\n case \"blob\":\n case \"json\":\n resolve(request.response);\n return;\n }\n resolve(request.responseText);\n return;\n }\n reject(new Error(request.statusText));\n };\n request.send(null);\n });\n}\nclass PageViewport {\n constructor({\n viewBox,\n userUnit,\n scale,\n rotation,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n }) {\n this.viewBox = viewBox;\n this.userUnit = userUnit;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n scale *= userUnit;\n const centerX = (viewBox[2] + viewBox[0]) / 2;\n const centerY = (viewBox[3] + viewBox[1]) / 2;\n let rotateA, rotateB, rotateC, rotateD;\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(\"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\");\n }\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\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 = (viewBox[3] - viewBox[1]) * scale;\n height = (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 = (viewBox[2] - viewBox[0]) * scale;\n height = (viewBox[3] - viewBox[1]) * scale;\n }\n this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];\n this.width = width;\n this.height = height;\n }\n get rawDims() {\n const dims = this.viewBox;\n return shadow(this, \"rawDims\", {\n pageWidth: dims[2] - dims[0],\n pageHeight: dims[3] - dims[1],\n pageX: dims[0],\n pageY: dims[1]\n });\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 userUnit: this.userUnit,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n convertToViewportPoint(x, y) {\n const p = [x, y];\n Util.applyTransform(p, this.transform);\n return p;\n }\n convertToViewportRectangle(rect) {\n const topLeft = [rect[0], rect[1]];\n Util.applyTransform(topLeft, this.transform);\n const bottomRight = [rect[2], rect[3]];\n Util.applyTransform(bottomRight, this.transform);\n return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n }\n convertToPdfPoint(x, y) {\n const p = [x, y];\n Util.applyInverseTransform(p, this.transform);\n return p;\n }\n}\nclass RenderingCancelledException extends BaseException {\n constructor(msg, extraDelay = 0) {\n super(msg, \"RenderingCancelledException\");\n this.extraDelay = extraDelay;\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}\nfunction isPdfFile(filename) {\n return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\nfunction getFilenameFromUrl(url) {\n [url] = url.split(/[#?]/, 1);\n return url.substring(url.lastIndexOf(\"/\") + 1);\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 getURL = (urlString) => {\n try {\n return new URL(urlString);\n } catch {\n try {\n return new URL(decodeURIComponent(urlString));\n } catch {\n try {\n return new URL(urlString, \"https://foo.bar\");\n } catch {\n try {\n return new URL(decodeURIComponent(urlString), \"https://foo.bar\");\n } catch {\n return null;\n }\n }\n }\n }\n };\n const newURL = getURL(url);\n if (!newURL) {\n return defaultFilename;\n }\n const decode = (name) => {\n try {\n let decoded = decodeURIComponent(name);\n if (decoded.includes(\"/\")) {\n decoded = decoded.split(\"/\").at(-1);\n if (decoded.test(/^\\.pdf$/i)) {\n return decoded;\n }\n return name;\n }\n return decoded;\n } catch {\n return name;\n }\n };\n const pdfRegex = /\\.pdf$/i;\n const filename = newURL.pathname.split(\"/\").at(-1);\n if (pdfRegex.test(filename)) {\n return decode(filename);\n }\n if (newURL.searchParams.size > 0) {\n const values = Array.from(newURL.searchParams.values()).reverse();\n for (const value of values) {\n if (pdfRegex.test(value)) {\n return decode(value);\n }\n }\n const keys = Array.from(newURL.searchParams.keys()).reverse();\n for (const key of keys) {\n if (pdfRegex.test(key)) {\n return decode(key);\n }\n }\n }\n if (newURL.hash) {\n const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n const hashFilename = reFilename.exec(newURL.hash);\n if (hashFilename) {\n return decode(hashFilename[0]);\n }\n }\n return defaultFilename;\n}\nclass StatTimer {\n started = /* @__PURE__ */ Object.create(null);\n times = [];\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 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 delete this.started[name];\n }\n toString() {\n const outBuf = [];\n let longest = 0;\n for (const {\n name\n } of this.times) {\n longest = Math.max(name.length, longest);\n }\n for (const {\n name,\n start,\n end\n } of this.times) {\n outBuf.push(`${name.padEnd(longest)} ${end - start}ms\n`);\n }\n return outBuf.join(\"\");\n }\n}\nfunction isValidFetchUrl(url, baseUrl) {\n const res = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\n return res?.protocol === \"http:\" || res?.protocol === \"https:\";\n}\nfunction noContextMenu(e) {\n e.preventDefault();\n}\nfunction stopEvent(e) {\n e.preventDefault();\n e.stopPropagation();\n}\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\nclass PDFDateString {\n static #regex;\n static toDateObject(input) {\n if (input instanceof Date) {\n return input;\n }\n if (!input || typeof input !== \"string\") {\n return null;\n }\n this.#regex ||= new RegExp(\"^D:(\\\\d{4})(\\\\d{2})?(\\\\d{2})?(\\\\d{2})?(\\\\d{2})?(\\\\d{2})?([Z|+|-])?(\\\\d{2})?'?(\\\\d{2})?'?\");\n const matches = this.#regex.exec(input);\n if (!matches) {\n return null;\n }\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 if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n}\nfunction getXfaPageViewport(xfaPage, {\n scale = 1,\n rotation = 0\n}) {\n const {\n width,\n height\n } = xfaPage.attributes.style;\n const viewBox = [0, 0, parseInt(width), parseInt(height)];\n return new PageViewport({\n viewBox,\n userUnit: 1,\n scale,\n rotation\n });\n}\nfunction getRGB(color) {\n if (color.startsWith(\"#\")) {\n const colorRGB = parseInt(color.slice(1), 16);\n return [(colorRGB & 16711680) >> 16, (colorRGB & 65280) >> 8, colorRGB & 255];\n }\n if (color.startsWith(\"rgb(\")) {\n return color.slice(4, -1).split(\",\").map((x) => parseInt(x));\n }\n if (color.startsWith(\"rgba(\")) {\n return color.slice(5, -1).split(\",\").map((x) => parseInt(x)).slice(0, 3);\n }\n warn(`Not a valid color format: \"${color}\"`);\n return [0, 0, 0];\n}\nfunction getColorValues(colors) {\n const span = document.createElement(\"span\");\n span.style.visibility = \"hidden\";\n span.style.colorScheme = \"only light\";\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}\nfunction getCurrentTransform(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform();\n return [a, b, c, d, e, f];\n}\nfunction getCurrentTransformInverse(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform().invertSelf();\n return [a, b, c, d, e, f];\n}\nfunction setLayerDimensions(div, viewport, mustFlip = false, mustRotate = true) {\n if (viewport instanceof PageViewport) {\n const {\n pageWidth,\n pageHeight\n } = viewport.rawDims;\n const {\n style\n } = div;\n const useRound = util_FeatureTest.isCSSRoundSupported;\n const w = `var(--total-scale-factor) * ${pageWidth}px`, h = `var(--total-scale-factor) * ${pageHeight}px`;\n const widthStr = useRound ? `round(down, ${w}, var(--scale-round-x))` : `calc(${w})`, heightStr = useRound ? `round(down, ${h}, var(--scale-round-y))` : `calc(${h})`;\n if (!mustFlip || viewport.rotation % 180 === 0) {\n style.width = widthStr;\n style.height = heightStr;\n } else {\n style.width = heightStr;\n style.height = widthStr;\n }\n }\n if (mustRotate) {\n div.setAttribute(\"data-main-rotation\", viewport.rotation);\n }\n}\nclass OutputScale {\n constructor() {\n const {\n pixelRatio\n } = OutputScale;\n this.sx = pixelRatio;\n this.sy = pixelRatio;\n }\n get scaled() {\n return this.sx !== 1 || this.sy !== 1;\n }\n get symmetric() {\n return this.sx === this.sy;\n }\n limitCanvas(width, height, maxPixels, maxDim, capAreaFactor = -1) {\n let maxAreaScale = Infinity, maxWidthScale = Infinity, maxHeightScale = Infinity;\n maxPixels = OutputScale.capPixels(maxPixels, capAreaFactor);\n if (maxPixels > 0) {\n maxAreaScale = Math.sqrt(maxPixels / (width * height));\n }\n if (maxDim !== -1) {\n maxWidthScale = maxDim / width;\n maxHeightScale = maxDim / height;\n }\n const maxScale = Math.min(maxAreaScale, maxWidthScale, maxHeightScale);\n if (this.sx > maxScale || this.sy > maxScale) {\n this.sx = maxScale;\n this.sy = maxScale;\n return true;\n }\n return false;\n }\n static get pixelRatio() {\n return globalThis.devicePixelRatio || 1;\n }\n static capPixels(maxPixels, capAreaFactor) {\n if (capAreaFactor >= 0) {\n const winPixels = Math.ceil(window.screen.availWidth * window.screen.availHeight * this.pixelRatio ** 2 * (1 + capAreaFactor / 100));\n return maxPixels > 0 ? Math.min(maxPixels, winPixels) : winPixels;\n }\n return maxPixels;\n }\n}\nconst SupportedImageMimeTypes = [\"image/apng\", \"image/avif\", \"image/bmp\", \"image/gif\", \"image/jpeg\", \"image/png\", \"image/svg+xml\", \"image/webp\", \"image/x-icon\"];\nclass ColorScheme {\n static get isDarkMode() {\n return shadow(this, \"isDarkMode\", !!window?.matchMedia?.(\"(prefers-color-scheme: dark)\").matches);\n }\n}\nclass CSSConstants {\n static get commentForegroundColor() {\n const element = document.createElement(\"span\");\n element.classList.add(\"comment\", \"sidebar\");\n const {\n style\n } = element;\n style.width = style.height = \"0\";\n style.display = \"none\";\n style.color = \"var(--comment-fg-color)\";\n document.body.append(element);\n const {\n color\n } = window.getComputedStyle(element);\n element.remove();\n return shadow(this, \"commentForegroundColor\", getRGB(color));\n }\n}\nfunction applyOpacity(r, g, b, opacity) {\n opacity = Math.min(Math.max(opacity ?? 1, 0), 1);\n const white = 255 * (1 - opacity);\n r = Math.round(r * opacity + white);\n g = Math.round(g * opacity + white);\n b = Math.round(b * opacity + white);\n return [r, g, b];\n}\nfunction RGBToHSL(rgb, output) {\n const r = rgb[0] / 255;\n const g = rgb[1] / 255;\n const b = rgb[2] / 255;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n if (max === min) {\n output[0] = output[1] = 0;\n } else {\n const d = max - min;\n output[1] = l < 0.5 ? d / (max + min) : d / (2 - max - min);\n switch (max) {\n case r:\n output[0] = ((g - b) / d + (g < b ? 6 : 0)) * 60;\n break;\n case g:\n output[0] = ((b - r) / d + 2) * 60;\n break;\n case b:\n output[0] = ((r - g) / d + 4) * 60;\n break;\n }\n }\n output[2] = l;\n}\nfunction HSLToRGB(hsl, output) {\n const h = hsl[0];\n const s = hsl[1];\n const l = hsl[2];\n const c = (1 - Math.abs(2 * l - 1)) * s;\n const x = c * (1 - Math.abs(h / 60 % 2 - 1));\n const m = l - c / 2;\n switch (Math.floor(h / 60)) {\n case 0:\n output[0] = c + m;\n output[1] = x + m;\n output[2] = m;\n break;\n case 1:\n output[0] = x + m;\n output[1] = c + m;\n output[2] = m;\n break;\n case 2:\n output[0] = m;\n output[1] = c + m;\n output[2] = x + m;\n break;\n case 3:\n output[0] = m;\n output[1] = x + m;\n output[2] = c + m;\n break;\n case 4:\n output[0] = x + m;\n output[1] = m;\n output[2] = c + m;\n break;\n case 5:\n case 6:\n output[0] = c + m;\n output[1] = m;\n output[2] = x + m;\n break;\n }\n}\nfunction computeLuminance(x) {\n return x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n}\nfunction contrastRatio(hsl1, hsl2, output) {\n HSLToRGB(hsl1, output);\n output.map(computeLuminance);\n const lum1 = 0.2126 * output[0] + 0.7152 * output[1] + 0.0722 * output[2];\n HSLToRGB(hsl2, output);\n output.map(computeLuminance);\n const lum2 = 0.2126 * output[0] + 0.7152 * output[1] + 0.0722 * output[2];\n return lum1 > lum2 ? (lum1 + 0.05) / (lum2 + 0.05) : (lum2 + 0.05) / (lum1 + 0.05);\n}\nconst contrastCache = /* @__PURE__ */ new Map();\nfunction findContrastColor(baseColor, fixedColor) {\n const key = baseColor[0] + baseColor[1] * 256 + baseColor[2] * 65536 + fixedColor[0] * 16777216 + fixedColor[1] * 4294967296 + fixedColor[2] * 1099511627776;\n let cachedValue = contrastCache.get(key);\n if (cachedValue) {\n return cachedValue;\n }\n const array = new Float32Array(9);\n const output = array.subarray(0, 3);\n const baseHSL = array.subarray(3, 6);\n RGBToHSL(baseColor, baseHSL);\n const fixedHSL = array.subarray(6, 9);\n RGBToHSL(fixedColor, fixedHSL);\n const isFixedColorDark = fixedHSL[2] < 0.5;\n const minContrast = isFixedColorDark ? 12 : 4.5;\n baseHSL[2] = isFixedColorDark ? Math.sqrt(baseHSL[2]) : 1 - Math.sqrt(1 - baseHSL[2]);\n if (contrastRatio(baseHSL, fixedHSL, output) < minContrast) {\n let start, end;\n if (isFixedColorDark) {\n start = baseHSL[2];\n end = 1;\n } else {\n start = 0;\n end = baseHSL[2];\n }\n const PRECISION = 5e-3;\n while (end - start > PRECISION) {\n const mid = baseHSL[2] = (start + end) / 2;\n if (isFixedColorDark === contrastRatio(baseHSL, fixedHSL, output) < minContrast) {\n start = mid;\n } else {\n end = mid;\n }\n }\n baseHSL[2] = isFixedColorDark ? end : start;\n }\n HSLToRGB(baseHSL, output);\n cachedValue = Util.makeHexColor(Math.round(output[0] * 255), Math.round(output[1] * 255), Math.round(output[2] * 255));\n contrastCache.set(key, cachedValue);\n return cachedValue;\n}\nfunction renderRichText({\n html,\n dir,\n className\n}, container) {\n const fragment = document.createDocumentFragment();\n if (typeof html === \"string\") {\n const p = document.createElement(\"p\");\n p.dir = dir || \"auto\";\n const lines = html.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 fragment.append(p);\n } else {\n XfaLayer.render({\n xfaHtml: html,\n div: fragment,\n intent: \"richText\"\n });\n }\n fragment.firstChild.classList.add(\"richText\", className);\n container.append(fragment);\n}\n__webpack_require__(4972);\n__webpack_require__(4628);\n__webpack_require__(7642);\n__webpack_require__(8004);\n__webpack_require__(3853);\n__webpack_require__(5876);\n__webpack_require__(2475);\n__webpack_require__(5024);\n__webpack_require__(1698);\n__webpack_require__(9314);\n__webpack_require__(1148);\n__webpack_require__(3579);\n__webpack_require__(8335);\nclass EditorToolbar {\n #toolbar = null;\n #colorPicker = null;\n #editor;\n #buttons = null;\n #altText = null;\n #comment = null;\n #commentButtonDivider = null;\n #signatureDescriptionButton = null;\n static #l10nRemove = null;\n constructor(editor) {\n this.#editor = editor;\n EditorToolbar.#l10nRemove ||= Object.freeze({\n freetext: \"pdfjs-editor-remove-freetext-button\",\n highlight: \"pdfjs-editor-remove-highlight-button\",\n ink: \"pdfjs-editor-remove-ink-button\",\n stamp: \"pdfjs-editor-remove-stamp-button\",\n signature: \"pdfjs-editor-remove-signature-button\"\n });\n }\n render() {\n const editToolbar = this.#toolbar = document.createElement(\"div\");\n editToolbar.classList.add(\"editToolbar\", \"hidden\");\n editToolbar.setAttribute(\"role\", \"toolbar\");\n const signal = this.#editor._uiManager._signal;\n if (signal instanceof AbortSignal && !signal.aborted) {\n editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n editToolbar.addEventListener(\"pointerdown\", EditorToolbar.#pointerDown, {\n signal\n });\n }\n const buttons = this.#buttons = document.createElement(\"div\");\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n const position = this.#editor.toolbarPosition;\n if (position) {\n const {\n style\n } = editToolbar;\n const x = this.#editor._uiManager.direction === \"ltr\" ? 1 - position[0] : position[0];\n style.insetInlineEnd = `${100 * x}%`;\n style.top = `calc(${100 * position[1]}% + var(--editor-toolbar-vert-offset))`;\n }\n return editToolbar;\n }\n get div() {\n return this.#toolbar;\n }\n static #pointerDown(e) {\n e.stopPropagation();\n }\n #focusIn(e) {\n this.#editor._focusEventsAllowed = false;\n stopEvent(e);\n }\n #focusOut(e) {\n this.#editor._focusEventsAllowed = true;\n stopEvent(e);\n }\n #addListenersToElement(element) {\n const signal = this.#editor._uiManager._signal;\n if (!(signal instanceof AbortSignal) || signal.aborted) {\n return false;\n }\n element.addEventListener(\"focusin\", this.#focusIn.bind(this), {\n capture: true,\n signal\n });\n element.addEventListener(\"focusout\", this.#focusOut.bind(this), {\n capture: true,\n signal\n });\n element.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n return true;\n }\n hide() {\n this.#toolbar.classList.add(\"hidden\");\n this.#colorPicker?.hideDropdown();\n }\n show() {\n this.#toolbar.classList.remove(\"hidden\");\n this.#altText?.shown();\n this.#comment?.shown();\n }\n addDeleteButton() {\n const {\n editorType,\n _uiManager\n } = this.#editor;\n const button = document.createElement(\"button\");\n button.classList.add(\"basic\", \"deleteButton\");\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", EditorToolbar.#l10nRemove[editorType]);\n if (this.#addListenersToElement(button)) {\n button.addEventListener(\"click\", (e) => {\n _uiManager.delete();\n }, {\n signal: _uiManager._signal\n });\n }\n this.#buttons.append(button);\n }\n get #divider() {\n const divider = document.createElement(\"div\");\n divider.className = \"divider\";\n return divider;\n }\n async addAltText(altText) {\n const button = await altText.render();\n this.#addListenersToElement(button);\n this.#buttons.append(button, this.#divider);\n this.#altText = altText;\n }\n addComment(comment, beforeElement = null) {\n if (this.#comment) {\n return;\n }\n const button = comment.renderForToolbar();\n if (!button) {\n return;\n }\n this.#addListenersToElement(button);\n const divider = this.#commentButtonDivider = this.#divider;\n if (!beforeElement) {\n this.#buttons.append(button, divider);\n } else {\n this.#buttons.insertBefore(button, beforeElement);\n this.#buttons.insertBefore(divider, beforeElement);\n }\n this.#comment = comment;\n comment.toolbar = this;\n }\n addColorPicker(colorPicker) {\n if (this.#colorPicker) {\n return;\n }\n this.#colorPicker = colorPicker;\n const button = colorPicker.renderButton();\n this.#addListenersToElement(button);\n this.#buttons.append(button, this.#divider);\n }\n async addEditSignatureButton(signatureManager) {\n const button = this.#signatureDescriptionButton = await signatureManager.renderEditButton(this.#editor);\n this.#addListenersToElement(button);\n this.#buttons.append(button, this.#divider);\n }\n removeButton(name) {\n switch (name) {\n case \"comment\":\n this.#comment?.removeToolbarCommentButton();\n this.#comment = null;\n this.#commentButtonDivider?.remove();\n this.#commentButtonDivider = null;\n break;\n }\n }\n async addButton(name, tool) {\n switch (name) {\n case \"colorPicker\":\n this.addColorPicker(tool);\n break;\n case \"altText\":\n await this.addAltText(tool);\n break;\n case \"editSignature\":\n await this.addEditSignatureButton(tool);\n break;\n case \"delete\":\n this.addDeleteButton();\n break;\n case \"comment\":\n this.addComment(tool);\n break;\n }\n }\n async addButtonBefore(name, tool, beforeSelector) {\n const beforeElement = this.#buttons.querySelector(beforeSelector);\n if (!beforeElement) {\n return;\n }\n if (name === \"comment\") {\n this.addComment(tool, beforeElement);\n }\n }\n updateEditSignatureButton(description) {\n if (this.#signatureDescriptionButton) {\n this.#signatureDescriptionButton.title = description;\n }\n }\n remove() {\n this.#toolbar.remove();\n this.#colorPicker?.destroy();\n this.#colorPicker = null;\n }\n}\nclass FloatingToolbar {\n #buttons = null;\n #toolbar = null;\n #uiManager;\n constructor(uiManager) {\n this.#uiManager = uiManager;\n }\n #render() {\n const editToolbar = this.#toolbar = document.createElement(\"div\");\n editToolbar.className = \"editToolbar\";\n editToolbar.setAttribute(\"role\", \"toolbar\");\n const signal = this.#uiManager._signal;\n if (signal instanceof AbortSignal && !signal.aborted) {\n editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n }\n const buttons = this.#buttons = document.createElement(\"div\");\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n if (this.#uiManager.hasCommentManager()) {\n this.#makeButton(\"commentButton\", `pdfjs-comment-floating-button`, \"pdfjs-comment-floating-button-label\", () => {\n this.#uiManager.commentSelection(\"floating_button\");\n });\n }\n this.#makeButton(\"highlightButton\", `pdfjs-highlight-floating-button1`, \"pdfjs-highlight-floating-button-label\", () => {\n this.#uiManager.highlightSelection(\"floating_button\");\n });\n return editToolbar;\n }\n #getLastPoint(boxes, isLTR) {\n let lastY = 0;\n let lastX = 0;\n for (const box of boxes) {\n const y = box.y + box.height;\n if (y < lastY) {\n continue;\n }\n const x = box.x + (isLTR ? box.width : 0);\n if (y > lastY) {\n lastX = x;\n lastY = y;\n continue;\n }\n if (isLTR) {\n if (x > lastX) {\n lastX = x;\n }\n } else if (x < lastX) {\n lastX = x;\n }\n }\n return [isLTR ? 1 - lastX : lastX, lastY];\n }\n show(parent, boxes, isLTR) {\n const [x, y] = this.#getLastPoint(boxes, isLTR);\n const {\n style\n } = this.#toolbar ||= this.#render();\n parent.append(this.#toolbar);\n style.insetInlineEnd = `${100 * x}%`;\n style.top = `calc(${100 * y}% + var(--editor-toolbar-vert-offset))`;\n }\n hide() {\n this.#toolbar.remove();\n }\n #makeButton(buttonClass, l10nId, labelL10nId, clickHandler) {\n const button = document.createElement(\"button\");\n button.classList.add(\"basic\", buttonClass);\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", l10nId);\n const span = document.createElement(\"span\");\n button.append(span);\n span.className = \"visuallyHidden\";\n span.setAttribute(\"data-l10n-id\", labelL10nId);\n const signal = this.#uiManager._signal;\n if (signal instanceof AbortSignal && !signal.aborted) {\n button.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n button.addEventListener(\"click\", clickHandler, {\n signal\n });\n }\n this.#buttons.append(button);\n }\n}\nfunction bindEvents(obj, element, names) {\n for (const name of names) {\n element.addEventListener(name, obj[name].bind(obj));\n }\n}\nclass IdManager {\n #id = 0;\n get id() {\n return `${AnnotationEditorPrefix}${this.#id++}`;\n }\n}\nclass ImageManager {\n #baseId = getUuid();\n #id = 0;\n #cache = null;\n static get _isSVGFittingCanvas() {\n const svg = `data:image/svg+xml;charset=UTF-8,<svg viewBox=\"0 0 1 1\" width=\"1\" height=\"1\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"1\" height=\"1\" style=\"fill:red;\"/></svg>`;\n const canvas = new OffscreenCanvas(1, 3);\n const ctx = canvas.getContext(\"2d\", {\n willReadFrequently: true\n });\n const image = new Image();\n image.src = svg;\n const promise = image.decode().then(() => {\n ctx.drawImage(image, 0, 0, 1, 1, 0, 0, 1, 3);\n return new Uint32Array(ctx.getImageData(0, 0, 1, 1).data.buffer)[0] === 0;\n });\n return shadow(this, \"_isSVGFittingCanvas\", promise);\n }\n async #get(key, rawData) {\n this.#cache ||= /* @__PURE__ */ new Map();\n let data = this.#cache.get(key);\n if (data === null) {\n return null;\n }\n if (data?.bitmap) {\n data.refCounter += 1;\n return data;\n }\n try {\n data ||= {\n bitmap: null,\n id: `image_${this.#baseId}_${this.#id++}`,\n refCounter: 0,\n isSvg: false\n };\n let image;\n if (typeof rawData === \"string\") {\n data.url = rawData;\n image = await fetchData(rawData, \"blob\");\n } else if (rawData instanceof File) {\n image = data.file = rawData;\n } else if (rawData instanceof Blob) {\n image = rawData;\n }\n if (image.type === \"image/svg+xml\") {\n const mustRemoveAspectRatioPromise = ImageManager._isSVGFittingCanvas;\n const fileReader = new FileReader();\n const imageElement = new Image();\n const imagePromise = new Promise((resolve, reject) => {\n imageElement.onload = () => {\n data.bitmap = imageElement;\n data.isSvg = true;\n resolve();\n };\n fileReader.onload = async () => {\n const url = data.svgUrl = fileReader.result;\n imageElement.src = await mustRemoveAspectRatioPromise ? `${url}#svgView(preserveAspectRatio(none))` : url;\n };\n imageElement.onerror = fileReader.onerror = reject;\n });\n fileReader.readAsDataURL(image);\n await imagePromise;\n } else {\n data.bitmap = await createImageBitmap(image);\n }\n data.refCounter = 1;\n } catch (e) {\n warn(e);\n data = null;\n }\n this.#cache.set(key, data);\n if (data) {\n this.#cache.set(data.id, data);\n }\n return data;\n }\n async getFromFile(file) {\n const {\n lastModified,\n name,\n size,\n type\n } = file;\n return this.#get(`${lastModified}_${name}_${size}_${type}`, file);\n }\n async getFromUrl(url) {\n return this.#get(url, url);\n }\n async getFromBlob(id, blobPromise) {\n const blob = await blobPromise;\n return this.#get(id, blob);\n }\n async getFromId(id) {\n this.#cache ||= /* @__PURE__ */ new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return null;\n }\n if (data.bitmap) {\n data.refCounter += 1;\n return data;\n }\n if (data.file) {\n return this.getFromFile(data.file);\n }\n if (data.blobPromise) {\n const {\n blobPromise\n } = data;\n delete data.blobPromise;\n return this.getFromBlob(data.id, blobPromise);\n }\n return this.getFromUrl(data.url);\n }\n getFromCanvas(id, canvas) {\n this.#cache ||= /* @__PURE__ */ new Map();\n let data = this.#cache.get(id);\n if (data?.bitmap) {\n data.refCounter += 1;\n return data;\n }\n const offscreen = new OffscreenCanvas(canvas.width, canvas.height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(canvas, 0, 0);\n data = {\n bitmap: offscreen.transferToImageBitmap(),\n id: `image_${this.#baseId}_${this.#id++}`,\n refCounter: 1,\n isSvg: false\n };\n this.#cache.set(id, data);\n this.#cache.set(data.id, data);\n return data;\n }\n getSvgUrl(id) {\n const data = this.#cache.get(id);\n if (!data?.isSvg) {\n return null;\n }\n return data.svgUrl;\n }\n deleteId(id) {\n this.#cache ||= /* @__PURE__ */ new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return;\n }\n data.refCounter -= 1;\n if (data.refCounter !== 0) {\n return;\n }\n const {\n bitmap\n } = data;\n if (!data.url && !data.file) {\n const canvas = new OffscreenCanvas(bitmap.width, bitmap.height);\n const ctx = canvas.getContext(\"bitmaprenderer\");\n ctx.transferFromImageBitmap(bitmap);\n data.blobPromise = canvas.convertToBlob();\n }\n bitmap.close?.();\n data.bitmap = null;\n }\n isValidId(id) {\n return id.startsWith(`image_${this.#baseId}_`);\n }\n}\nclass CommandManager {\n #commands = [];\n #locked = false;\n #maxSize;\n #position = -1;\n constructor(maxSize = 128) {\n this.#maxSize = maxSize;\n }\n add({\n cmd,\n undo,\n post,\n mustExec,\n type = NaN,\n overwriteIfSameType = false,\n keepUndo = false\n }) {\n if (mustExec) {\n cmd();\n }\n if (this.#locked) {\n return;\n }\n const save = {\n cmd,\n undo,\n post,\n type\n };\n if (this.#position === -1) {\n if (this.#commands.length > 0) {\n this.#commands.length = 0;\n }\n this.#position = 0;\n this.#commands.push(save);\n return;\n }\n if (overwriteIfSameType && this.#commands[this.#position].type === type) {\n if (keepUndo) {\n save.undo = this.#commands[this.#position].undo;\n }\n this.#commands[this.#position] = save;\n return;\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 this.#commands.push(save);\n }\n undo() {\n if (this.#position === -1) {\n return;\n }\n this.#locked = true;\n const {\n undo,\n post\n } = this.#commands[this.#position];\n undo();\n post?.();\n this.#locked = false;\n this.#position -= 1;\n }\n redo() {\n if (this.#position < this.#commands.length - 1) {\n this.#position += 1;\n this.#locked = true;\n const {\n cmd,\n post\n } = this.#commands[this.#position];\n cmd();\n post?.();\n this.#locked = false;\n }\n }\n hasSomethingToUndo() {\n return this.#position !== -1;\n }\n hasSomethingToRedo() {\n return this.#position < this.#commands.length - 1;\n }\n cleanType(type) {\n if (this.#position === -1) {\n return;\n }\n for (let i = this.#position; i >= 0; i--) {\n if (this.#commands[i].type !== type) {\n this.#commands.splice(i + 1, this.#position - i);\n this.#position = i;\n return;\n }\n }\n this.#commands.length = 0;\n this.#position = -1;\n }\n destroy() {\n this.#commands = null;\n }\n}\nclass KeyboardManager {\n constructor(callbacks) {\n this.buffer = [];\n this.callbacks = /* @__PURE__ */ new Map();\n this.allKeys = /* @__PURE__ */ new Set();\n const {\n isMac\n } = util_FeatureTest.platform;\n for (const [keys, callback, options = {}] 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), {\n callback,\n options\n });\n this.allKeys.add(key.split(\"+\").at(-1));\n } else if (!isMac && !isMacKey) {\n this.callbacks.set(key, {\n callback,\n options\n });\n this.allKeys.add(key.split(\"+\").at(-1));\n }\n }\n }\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 return str;\n }\n exec(self2, event) {\n if (!this.allKeys.has(event.key)) {\n return;\n }\n const info2 = this.callbacks.get(this.#serialize(event));\n if (!info2) {\n return;\n }\n const {\n callback,\n options: {\n bubbles = false,\n args = [],\n checker = null\n }\n } = info2;\n if (checker && !checker(self2, event)) {\n return;\n }\n callback.bind(self2, ...args, event)();\n if (!bubbles) {\n stopEvent(event);\n }\n }\n}\nclass ColorManager {\n static _colorsMapping = /* @__PURE__ */ new Map([[\"CanvasText\", [0, 0, 0]], [\"Canvas\", [255, 255, 255]]]);\n get _colors() {\n const colors = /* @__PURE__ */ new Map([[\"CanvasText\", null], [\"Canvas\", null]]);\n getColorValues(colors);\n return shadow(this, \"_colors\", colors);\n }\n convert(color) {\n const rgb = getRGB(color);\n if (!window.matchMedia(\"(forced-colors: active)\").matches) {\n return rgb;\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 getHexCode(name) {\n const rgb = this._colors.get(name);\n if (!rgb) {\n return name;\n }\n return Util.makeHexColor(...rgb);\n }\n}\nclass AnnotationEditorUIManager {\n #abortController = new AbortController();\n #activeEditor = null;\n #allEditableAnnotations = null;\n #allEditors = /* @__PURE__ */ new Map();\n #allLayers = /* @__PURE__ */ new Map();\n #altTextManager = null;\n #annotationStorage = null;\n #changedExistingAnnotations = null;\n #commandManager = new CommandManager();\n #commentManager = null;\n #copyPasteAC = null;\n #currentDrawingSession = null;\n #currentPageIndex = 0;\n #deletedAnnotationsElementIds = /* @__PURE__ */ new Set();\n #draggingEditors = null;\n #editorTypes = null;\n #editorsToRescale = /* @__PURE__ */ new Set();\n _editorUndoBar = null;\n #enableHighlightFloatingButton = false;\n #enableUpdatedAddImage = false;\n #enableNewAltTextWhenAddingImage = false;\n #filterFactory = null;\n #focusMainContainerTimeoutId = null;\n #focusManagerAC = null;\n #highlightColors = null;\n #highlightWhenShiftUp = false;\n #floatingToolbar = null;\n #idManager = new IdManager();\n #isEnabled = false;\n #isPointerDown = false;\n #isWaiting = false;\n #keyboardManagerAC = null;\n #lastActiveElement = null;\n #mainHighlightColorPicker = null;\n #missingCanvases = null;\n #mlManager = null;\n #mode = AnnotationEditorType.NONE;\n #selectedEditors = /* @__PURE__ */ new Set();\n #selectedTextNode = null;\n #signatureManager = null;\n #pageColors = null;\n #showAllStates = null;\n #pdfDocument = null;\n #previousStates = {\n isEditing: false,\n isEmpty: true,\n hasSomethingToUndo: false,\n hasSomethingToRedo: false,\n hasSelectedEditor: false,\n hasSelectedText: false\n };\n #translation = [0, 0];\n #translationTimeoutId = null;\n #container = null;\n #viewer = null;\n #viewerAlert = null;\n #updateModeCapability = null;\n static TRANSLATE_SMALL = 1;\n static TRANSLATE_BIG = 10;\n static get _keyboardManager() {\n const proto = AnnotationEditorUIManager.prototype;\n const arrowChecker = (self2) => self2.#container.contains(document.activeElement) && document.activeElement.tagName !== \"BUTTON\" && self2.hasSomethingToControl();\n const textInputChecker = (_self, {\n target: el\n }) => {\n if (el instanceof HTMLInputElement) {\n const {\n type\n } = el;\n return type !== \"text\" && type !== \"number\";\n }\n return true;\n };\n const small = this.TRANSLATE_SMALL;\n const big = this.TRANSLATE_BIG;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+a\", \"mac+meta+a\"], proto.selectAll, {\n checker: textInputChecker\n }], [[\"ctrl+z\", \"mac+meta+z\"], proto.undo, {\n checker: textInputChecker\n }], [[\"ctrl+y\", \"ctrl+shift+z\", \"mac+meta+shift+z\", \"ctrl+shift+Z\", \"mac+meta+shift+Z\"], proto.redo, {\n checker: textInputChecker\n }], [[\"Backspace\", \"alt+Backspace\", \"ctrl+Backspace\", \"shift+Backspace\", \"mac+Backspace\", \"mac+alt+Backspace\", \"mac+ctrl+Backspace\", \"Delete\", \"ctrl+Delete\", \"shift+Delete\", \"mac+Delete\"], proto.delete, {\n checker: textInputChecker\n }], [[\"Enter\", \"mac+Enter\"], proto.addNewEditorFromKeyboard, {\n checker: (self2, {\n target: el\n }) => !(el instanceof HTMLButtonElement) && self2.#container.contains(el) && !self2.isEnterHandled\n }], [[\" \", \"mac+ \"], proto.addNewEditorFromKeyboard, {\n checker: (self2, {\n target: el\n }) => !(el instanceof HTMLButtonElement) && self2.#container.contains(document.activeElement)\n }], [[\"Escape\", \"mac+Escape\"], proto.unselectAll], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto.translateSelectedEditors, {\n args: [-small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto.translateSelectedEditors, {\n args: [-big, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto.translateSelectedEditors, {\n args: [small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto.translateSelectedEditors, {\n args: [big, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto.translateSelectedEditors, {\n args: [0, -small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto.translateSelectedEditors, {\n args: [0, -big],\n checker: arrowChecker\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto.translateSelectedEditors, {\n args: [0, small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto.translateSelectedEditors, {\n args: [0, big],\n checker: arrowChecker\n }]]));\n }\n constructor(container, viewer, viewerAlert, altTextManager, commentManager, signatureManager, eventBus, pdfDocument, pageColors, highlightColors, enableHighlightFloatingButton, enableUpdatedAddImage, enableNewAltTextWhenAddingImage, mlManager, editorUndoBar, supportsPinchToZoom) {\n const signal = this._signal = this.#abortController.signal;\n this.#container = container;\n this.#viewer = viewer;\n this.#viewerAlert = viewerAlert;\n this.#altTextManager = altTextManager;\n this.#commentManager = commentManager;\n this.#signatureManager = signatureManager;\n this.#pdfDocument = pdfDocument;\n this._eventBus = eventBus;\n eventBus._on(\"editingaction\", this.onEditingAction.bind(this), {\n signal\n });\n eventBus._on(\"pagechanging\", this.onPageChanging.bind(this), {\n signal\n });\n eventBus._on(\"scalechanging\", this.onScaleChanging.bind(this), {\n signal\n });\n eventBus._on(\"rotationchanging\", this.onRotationChanging.bind(this), {\n signal\n });\n eventBus._on(\"setpreference\", this.onSetPreference.bind(this), {\n signal\n });\n eventBus._on(\"switchannotationeditorparams\", (evt) => this.updateParams(evt.type, evt.value), {\n signal\n });\n window.addEventListener(\"pointerdown\", () => {\n this.#isPointerDown = true;\n }, {\n capture: true,\n signal\n });\n window.addEventListener(\"pointerup\", () => {\n this.#isPointerDown = false;\n }, {\n capture: true,\n signal\n });\n this.#addSelectionListener();\n this.#addDragAndDropListeners();\n this.#addKeyboardManager();\n this.#annotationStorage = pdfDocument.annotationStorage;\n this.#filterFactory = pdfDocument.filterFactory;\n this.#pageColors = pageColors;\n this.#highlightColors = highlightColors || null;\n this.#enableHighlightFloatingButton = enableHighlightFloatingButton;\n this.#enableUpdatedAddImage = enableUpdatedAddImage;\n this.#enableNewAltTextWhenAddingImage = enableNewAltTextWhenAddingImage;\n this.#mlManager = mlManager || null;\n this.viewParameters = {\n realScale: PixelsPerInch.PDF_TO_CSS_UNITS,\n rotation: 0\n };\n this.isShiftKeyDown = false;\n this._editorUndoBar = editorUndoBar || null;\n this._supportsPinchToZoom = supportsPinchToZoom !== false;\n commentManager?.setSidebarUiManager(this);\n }\n destroy() {\n this.#updateModeCapability?.resolve();\n this.#updateModeCapability = null;\n this.#abortController?.abort();\n this.#abortController = null;\n this._signal = null;\n for (const layer of this.#allLayers.values()) {\n layer.destroy();\n }\n this.#allLayers.clear();\n this.#allEditors.clear();\n this.#editorsToRescale.clear();\n this.#missingCanvases?.clear();\n this.#activeEditor = null;\n this.#selectedEditors.clear();\n this.#commandManager.destroy();\n this.#altTextManager?.destroy();\n this.#commentManager?.destroy();\n this.#signatureManager?.destroy();\n this.#floatingToolbar?.hide();\n this.#floatingToolbar = null;\n this.#mainHighlightColorPicker?.destroy();\n this.#mainHighlightColorPicker = null;\n this.#allEditableAnnotations = null;\n if (this.#focusMainContainerTimeoutId) {\n clearTimeout(this.#focusMainContainerTimeoutId);\n this.#focusMainContainerTimeoutId = null;\n }\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n this.#translationTimeoutId = null;\n }\n this._editorUndoBar?.destroy();\n this.#pdfDocument = null;\n }\n combinedSignal(ac) {\n return AbortSignal.any([this._signal, ac.signal]);\n }\n get mlManager() {\n return this.#mlManager;\n }\n get useNewAltTextFlow() {\n return this.#enableUpdatedAddImage;\n }\n get useNewAltTextWhenAddingImage() {\n return this.#enableNewAltTextWhenAddingImage;\n }\n get hcmFilter() {\n return shadow(this, \"hcmFilter\", this.#pageColors ? this.#filterFactory.addHCMFilter(this.#pageColors.foreground, this.#pageColors.background) : \"none\");\n }\n get direction() {\n return shadow(this, \"direction\", getComputedStyle(this.#container).direction);\n }\n get _highlightColors() {\n return shadow(this, \"_highlightColors\", this.#highlightColors ? new Map(this.#highlightColors.split(\",\").map((pair) => {\n pair = pair.split(\"=\").map((x) => x.trim());\n pair[1] = pair[1].toUpperCase();\n return pair;\n })) : null);\n }\n get highlightColors() {\n const {\n _highlightColors\n } = this;\n if (!_highlightColors) {\n return shadow(this, \"highlightColors\", null);\n }\n const map = /* @__PURE__ */ new Map();\n const hasHCM = !!this.#pageColors;\n for (const [name, color] of _highlightColors) {\n const isNameForHCM = name.endsWith(\"_HCM\");\n if (hasHCM && isNameForHCM) {\n map.set(name.replace(\"_HCM\", \"\"), color);\n continue;\n }\n if (!hasHCM && !isNameForHCM) {\n map.set(name, color);\n }\n }\n return shadow(this, \"highlightColors\", map);\n }\n get highlightColorNames() {\n return shadow(this, \"highlightColorNames\", this.highlightColors ? new Map(Array.from(this.highlightColors, (e) => e.reverse())) : null);\n }\n getNonHCMColor(color) {\n if (!this._highlightColors) {\n return color;\n }\n const colorName = this.highlightColorNames.get(color);\n return this._highlightColors.get(colorName) || color;\n }\n getNonHCMColorName(color) {\n return this.highlightColorNames.get(color) || color;\n }\n setCurrentDrawingSession(layer) {\n if (layer) {\n this.unselectAll();\n this.disableUserSelect(true);\n } else {\n this.disableUserSelect(false);\n }\n this.#currentDrawingSession = layer;\n }\n setMainHighlightColorPicker(colorPicker) {\n this.#mainHighlightColorPicker = colorPicker;\n }\n editAltText(editor, firstTime = false) {\n this.#altTextManager?.editAltText(this, editor, firstTime);\n }\n hasCommentManager() {\n return !!this.#commentManager;\n }\n editComment(editor, posX, posY, options) {\n this.#commentManager?.showDialog(this, editor, posX, posY, options);\n }\n selectComment(pageIndex, uid) {\n const layer = this.#allLayers.get(pageIndex);\n const editor = layer?.getEditorByUID(uid);\n editor?.toggleComment(true, true);\n }\n updateComment(editor) {\n this.#commentManager?.updateComment(editor.getData());\n }\n updatePopupColor(editor) {\n this.#commentManager?.updatePopupColor(editor);\n }\n removeComment(editor) {\n this.#commentManager?.removeComments([editor.uid]);\n }\n toggleComment(editor, isSelected, visibility = void 0) {\n this.#commentManager?.toggleCommentPopup(editor, isSelected, visibility);\n }\n makeCommentColor(color, opacity) {\n return color && this.#commentManager?.makeCommentColor(color, opacity) || null;\n }\n getCommentDialogElement() {\n return this.#commentManager?.dialogElement || null;\n }\n async waitForEditorsRendered(pageNumber) {\n if (this.#allLayers.has(pageNumber - 1)) {\n return;\n }\n const {\n resolve,\n promise\n } = Promise.withResolvers();\n const onEditorsRendered = (evt) => {\n if (evt.pageNumber === pageNumber) {\n this._eventBus._off(\"editorsrendered\", onEditorsRendered);\n resolve();\n }\n };\n this._eventBus.on(\"editorsrendered\", onEditorsRendered);\n await promise;\n }\n getSignature(editor) {\n this.#signatureManager?.getSignature({\n uiManager: this,\n editor\n });\n }\n get signatureManager() {\n return this.#signatureManager;\n }\n switchToMode(mode, callback) {\n this._eventBus.on(\"annotationeditormodechanged\", callback, {\n once: true,\n signal: this._signal\n });\n this._eventBus.dispatch(\"showannotationeditorui\", {\n source: this,\n mode\n });\n }\n setPreference(name, value) {\n this._eventBus.dispatch(\"setpreference\", {\n source: this,\n name,\n value\n });\n }\n onSetPreference({\n name,\n value\n }) {\n switch (name) {\n case \"enableNewAltTextWhenAddingImage\":\n this.#enableNewAltTextWhenAddingImage = value;\n break;\n }\n }\n onPageChanging({\n pageNumber\n }) {\n this.#currentPageIndex = pageNumber - 1;\n }\n focusMainContainer() {\n this.#container.focus();\n }\n findParent(x, y) {\n for (const layer of this.#allLayers.values()) {\n const {\n x: layerX,\n y: layerY,\n width,\n height\n } = layer.div.getBoundingClientRect();\n if (x >= layerX && x <= layerX + width && y >= layerY && y <= layerY + height) {\n return layer;\n }\n }\n return null;\n }\n disableUserSelect(value = false) {\n this.#viewer.classList.toggle(\"noUserSelect\", value);\n }\n addShouldRescale(editor) {\n this.#editorsToRescale.add(editor);\n }\n removeShouldRescale(editor) {\n this.#editorsToRescale.delete(editor);\n }\n onScaleChanging({\n scale\n }) {\n this.commitOrRemove();\n this.viewParameters.realScale = scale * PixelsPerInch.PDF_TO_CSS_UNITS;\n for (const editor of this.#editorsToRescale) {\n editor.onScaleChanging();\n }\n this.#currentDrawingSession?.onScaleChanging();\n }\n onRotationChanging({\n pagesRotation\n }) {\n this.commitOrRemove();\n this.viewParameters.rotation = pagesRotation;\n }\n #getAnchorElementForSelection({\n anchorNode\n }) {\n return anchorNode.nodeType === Node.TEXT_NODE ? anchorNode.parentElement : anchorNode;\n }\n #getLayerForTextLayer(textLayer) {\n const {\n currentLayer\n } = this;\n if (currentLayer.hasTextLayer(textLayer)) {\n return currentLayer;\n }\n for (const layer of this.#allLayers.values()) {\n if (layer.hasTextLayer(textLayer)) {\n return layer;\n }\n }\n return null;\n }\n highlightSelection(methodOfCreation = \"\", comment = false) {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const {\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset\n } = selection;\n const text = selection.toString();\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n const boxes = this.getSelectionBoxes(textLayer);\n if (!boxes) {\n return;\n }\n selection.empty();\n const layer = this.#getLayerForTextLayer(textLayer);\n const isNoneMode = this.#mode === AnnotationEditorType.NONE;\n const callback = () => {\n const editor = layer?.createAndAddNewEditor({\n x: 0,\n y: 0\n }, false, {\n methodOfCreation,\n boxes,\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset,\n text\n });\n if (isNoneMode) {\n this.showAllEditors(\"highlight\", true, true);\n }\n if (comment) {\n editor?.editComment();\n }\n };\n if (isNoneMode) {\n this.switchToMode(AnnotationEditorType.HIGHLIGHT, callback);\n return;\n }\n callback();\n }\n commentSelection(methodOfCreation = \"\") {\n this.highlightSelection(methodOfCreation, true);\n }\n #displayFloatingToolbar() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n const boxes = this.getSelectionBoxes(textLayer);\n if (!boxes) {\n return;\n }\n this.#floatingToolbar ||= new FloatingToolbar(this);\n this.#floatingToolbar.show(textLayer, boxes, this.direction === \"ltr\");\n }\n getAndRemoveDataFromAnnotationStorage(annotationId) {\n if (!this.#annotationStorage) {\n return null;\n }\n const key = `${AnnotationEditorPrefix}${annotationId}`;\n const storedValue = this.#annotationStorage.getRawValue(key);\n if (storedValue) {\n this.#annotationStorage.remove(key);\n }\n return storedValue;\n }\n addToAnnotationStorage(editor) {\n if (!editor.isEmpty() && this.#annotationStorage && !this.#annotationStorage.has(editor.id)) {\n this.#annotationStorage.setValue(editor.id, editor);\n }\n }\n a11yAlert(messageId, args = null) {\n const viewerAlert = this.#viewerAlert;\n if (!viewerAlert) {\n return;\n }\n viewerAlert.setAttribute(\"data-l10n-id\", messageId);\n if (args) {\n viewerAlert.setAttribute(\"data-l10n-args\", JSON.stringify(args));\n } else {\n viewerAlert.removeAttribute(\"data-l10n-args\");\n }\n }\n #selectionChange() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n if (this.#selectedTextNode) {\n this.#floatingToolbar?.hide();\n this.#selectedTextNode = null;\n this.#dispatchUpdateStates({\n hasSelectedText: false\n });\n }\n return;\n }\n const {\n anchorNode\n } = selection;\n if (anchorNode === this.#selectedTextNode) {\n return;\n }\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n if (!textLayer) {\n if (this.#selectedTextNode) {\n this.#floatingToolbar?.hide();\n this.#selectedTextNode = null;\n this.#dispatchUpdateStates({\n hasSelectedText: false\n });\n }\n return;\n }\n this.#floatingToolbar?.hide();\n this.#selectedTextNode = anchorNode;\n this.#dispatchUpdateStates({\n hasSelectedText: true\n });\n if (this.#mode !== AnnotationEditorType.HIGHLIGHT && this.#mode !== AnnotationEditorType.NONE) {\n return;\n }\n if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n this.showAllEditors(\"highlight\", true, true);\n }\n this.#highlightWhenShiftUp = this.isShiftKeyDown;\n if (!this.isShiftKeyDown) {\n const activeLayer = this.#mode === AnnotationEditorType.HIGHLIGHT ? this.#getLayerForTextLayer(textLayer) : null;\n activeLayer?.toggleDrawing();\n if (this.#isPointerDown) {\n const ac = new AbortController();\n const signal = this.combinedSignal(ac);\n const pointerup = (e) => {\n if (e.type === \"pointerup\" && e.button !== 0) {\n return;\n }\n ac.abort();\n activeLayer?.toggleDrawing(true);\n if (e.type === \"pointerup\") {\n this.#onSelectEnd(\"main_toolbar\");\n }\n };\n window.addEventListener(\"pointerup\", pointerup, {\n signal\n });\n window.addEventListener(\"blur\", pointerup, {\n signal\n });\n } else {\n activeLayer?.toggleDrawing(true);\n this.#onSelectEnd(\"main_toolbar\");\n }\n }\n }\n #onSelectEnd(methodOfCreation = \"\") {\n if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n this.highlightSelection(methodOfCreation);\n } else if (this.#enableHighlightFloatingButton) {\n this.#displayFloatingToolbar();\n }\n }\n #addSelectionListener() {\n document.addEventListener(\"selectionchange\", this.#selectionChange.bind(this), {\n signal: this._signal\n });\n }\n #addFocusManager() {\n if (this.#focusManagerAC) {\n return;\n }\n this.#focusManagerAC = new AbortController();\n const signal = this.combinedSignal(this.#focusManagerAC);\n window.addEventListener(\"focus\", this.focus.bind(this), {\n signal\n });\n window.addEventListener(\"blur\", this.blur.bind(this), {\n signal\n });\n }\n #removeFocusManager() {\n this.#focusManagerAC?.abort();\n this.#focusManagerAC = null;\n }\n blur() {\n this.isShiftKeyDown = false;\n if (this.#highlightWhenShiftUp) {\n this.#highlightWhenShiftUp = false;\n this.#onSelectEnd(\"main_toolbar\");\n }\n if (!this.hasSelection) {\n return;\n }\n const {\n activeElement\n } = document;\n for (const editor of this.#selectedEditors) {\n if (editor.div.contains(activeElement)) {\n this.#lastActiveElement = [editor, activeElement];\n editor._focusEventsAllowed = false;\n break;\n }\n }\n }\n focus() {\n if (!this.#lastActiveElement) {\n return;\n }\n const [lastEditor, lastActiveElement] = this.#lastActiveElement;\n this.#lastActiveElement = null;\n lastActiveElement.addEventListener(\"focusin\", () => {\n lastEditor._focusEventsAllowed = true;\n }, {\n once: true,\n signal: this._signal\n });\n lastActiveElement.focus();\n }\n #addKeyboardManager() {\n if (this.#keyboardManagerAC) {\n return;\n }\n this.#keyboardManagerAC = new AbortController();\n const signal = this.combinedSignal(this.#keyboardManagerAC);\n window.addEventListener(\"keydown\", this.keydown.bind(this), {\n signal\n });\n window.addEventListener(\"keyup\", this.keyup.bind(this), {\n signal\n });\n }\n #removeKeyboardManager() {\n this.#keyboardManagerAC?.abort();\n this.#keyboardManagerAC = null;\n }\n #addCopyPasteListeners() {\n if (this.#copyPasteAC) {\n return;\n }\n this.#copyPasteAC = new AbortController();\n const signal = this.combinedSignal(this.#copyPasteAC);\n document.addEventListener(\"copy\", this.copy.bind(this), {\n signal\n });\n document.addEventListener(\"cut\", this.cut.bind(this), {\n signal\n });\n document.addEventListener(\"paste\", this.paste.bind(this), {\n signal\n });\n }\n #removeCopyPasteListeners() {\n this.#copyPasteAC?.abort();\n this.#copyPasteAC = null;\n }\n #addDragAndDropListeners() {\n const signal = this._signal;\n document.addEventListener(\"dragover\", this.dragOver.bind(this), {\n signal\n });\n document.addEventListener(\"drop\", this.drop.bind(this), {\n signal\n });\n }\n addEditListeners() {\n this.#addKeyboardManager();\n this.#addCopyPasteListeners();\n }\n removeEditListeners() {\n this.#removeKeyboardManager();\n this.#removeCopyPasteListeners();\n }\n dragOver(event) {\n for (const {\n type\n } of event.dataTransfer.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(type)) {\n event.dataTransfer.dropEffect = \"copy\";\n event.preventDefault();\n return;\n }\n }\n }\n }\n drop(event) {\n for (const item of event.dataTransfer.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n event.preventDefault();\n return;\n }\n }\n }\n }\n copy(event) {\n event.preventDefault();\n this.#activeEditor?.commitOrRemove();\n if (!this.hasSelection) {\n return;\n }\n const editors = [];\n for (const editor of this.#selectedEditors) {\n const serialized = editor.serialize(true);\n if (serialized) {\n editors.push(serialized);\n }\n }\n if (editors.length === 0) {\n return;\n }\n event.clipboardData.setData(\"application/pdfjs\", JSON.stringify(editors));\n }\n cut(event) {\n this.copy(event);\n this.delete();\n }\n async paste(event) {\n event.preventDefault();\n const {\n clipboardData\n } = event;\n for (const item of clipboardData.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n return;\n }\n }\n }\n let data = clipboardData.getData(\"application/pdfjs\");\n if (!data) {\n return;\n }\n try {\n data = JSON.parse(data);\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n return;\n }\n if (!Array.isArray(data)) {\n return;\n }\n this.unselectAll();\n const layer = this.currentLayer;\n try {\n const newEditors = [];\n for (const editor of data) {\n const deserializedEditor = await layer.deserialize(editor);\n if (!deserializedEditor) {\n return;\n }\n newEditors.push(deserializedEditor);\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({\n cmd,\n undo,\n mustExec: true\n });\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n }\n }\n keydown(event) {\n if (!this.isShiftKeyDown && event.key === \"Shift\") {\n this.isShiftKeyDown = true;\n }\n if (this.#mode !== AnnotationEditorType.NONE && !this.isEditorHandlingKeyboard) {\n AnnotationEditorUIManager._keyboardManager.exec(this, event);\n }\n }\n keyup(event) {\n if (this.isShiftKeyDown && event.key === \"Shift\") {\n this.isShiftKeyDown = false;\n if (this.#highlightWhenShiftUp) {\n this.#highlightWhenShiftUp = false;\n this.#onSelectEnd(\"main_toolbar\");\n }\n }\n }\n onEditingAction({\n name\n }) {\n switch (name) {\n case \"undo\":\n case \"redo\":\n case \"delete\":\n case \"selectAll\":\n this[name]();\n break;\n case \"highlightSelection\":\n this.highlightSelection(\"context_menu\");\n break;\n case \"commentSelection\":\n this.commentSelection(\"context_menu\");\n break;\n }\n }\n #dispatchUpdateStates(details) {\n const hasChanged = Object.entries(details).some(([key, value]) => this.#previousStates[key] !== value);\n if (hasChanged) {\n this._eventBus.dispatch(\"annotationeditorstateschanged\", {\n source: this,\n details: Object.assign(this.#previousStates, details)\n });\n if (this.#mode === AnnotationEditorType.HIGHLIGHT && details.hasSelectedEditor === false) {\n this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_FREE, true]]);\n }\n }\n }\n #dispatchUpdateUI(details) {\n this._eventBus.dispatch(\"annotationeditorparamschanged\", {\n source: this,\n details\n });\n }\n setEditingState(isEditing) {\n if (isEditing) {\n this.#addFocusManager();\n this.#addCopyPasteListeners();\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 });\n } else {\n this.#removeFocusManager();\n this.#removeCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: false\n });\n this.disableUserSelect(false);\n }\n }\n registerEditorTypes(types) {\n if (this.#editorTypes) {\n return;\n }\n this.#editorTypes = types;\n for (const editorType of this.#editorTypes) {\n this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n }\n }\n getId() {\n return this.#idManager.id;\n }\n get currentLayer() {\n return this.#allLayers.get(this.#currentPageIndex);\n }\n getLayer(pageIndex) {\n return this.#allLayers.get(pageIndex);\n }\n get currentPageIndex() {\n return this.#currentPageIndex;\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 removeLayer(layer) {\n this.#allLayers.delete(layer.pageIndex);\n }\n async updateMode(mode, editId = null, isFromKeyboard = false, mustEnterInEditMode = false, editComment = false) {\n if (this.#mode === mode) {\n return;\n }\n if (this.#updateModeCapability) {\n await this.#updateModeCapability.promise;\n if (!this.#updateModeCapability) {\n return;\n }\n }\n this.#updateModeCapability = Promise.withResolvers();\n this.#currentDrawingSession?.commitOrRemove();\n if (this.#mode === AnnotationEditorType.POPUP) {\n this.#commentManager?.hideSidebar();\n }\n this.#commentManager?.destroyPopup();\n this.#mode = mode;\n if (mode === AnnotationEditorType.NONE) {\n this.setEditingState(false);\n this.#disableAll();\n for (const editor of this.#allEditors.values()) {\n editor.hideStandaloneCommentButton();\n }\n this._editorUndoBar?.hide();\n this.toggleComment(null);\n this.#updateModeCapability.resolve();\n return;\n }\n for (const editor of this.#allEditors.values()) {\n editor.addStandaloneCommentButton();\n }\n if (mode === AnnotationEditorType.SIGNATURE) {\n await this.#signatureManager?.loadSignatures();\n }\n this.setEditingState(true);\n await this.#enableAll();\n this.unselectAll();\n for (const layer of this.#allLayers.values()) {\n layer.updateMode(mode);\n }\n if (mode === AnnotationEditorType.POPUP) {\n this.#allEditableAnnotations ||= await this.#pdfDocument.getAnnotationsByType(new Set(this.#editorTypes.map((editorClass) => editorClass._editorType)));\n const elementIds = /* @__PURE__ */ new Set();\n const allComments = [];\n for (const editor of this.#allEditors.values()) {\n const {\n annotationElementId,\n hasComment,\n deleted\n } = editor;\n if (annotationElementId) {\n elementIds.add(annotationElementId);\n }\n if (hasComment && !deleted) {\n allComments.push(editor.getData());\n }\n }\n for (const annotation of this.#allEditableAnnotations) {\n const {\n id,\n popupRef,\n contentsObj\n } = annotation;\n if (popupRef && contentsObj?.str && !elementIds.has(id) && !this.#deletedAnnotationsElementIds.has(id)) {\n allComments.push(annotation);\n }\n }\n this.#commentManager?.showSidebar(allComments);\n }\n if (!editId) {\n if (isFromKeyboard) {\n this.addNewEditorFromKeyboard();\n }\n this.#updateModeCapability.resolve();\n return;\n }\n for (const editor of this.#allEditors.values()) {\n if (editor.uid === editId) {\n this.setSelected(editor);\n if (editComment) {\n editor.editComment();\n } else if (mustEnterInEditMode) {\n editor.enterInEditMode();\n } else {\n editor.focus();\n }\n } else {\n editor.unselect();\n }\n }\n this.#updateModeCapability.resolve();\n }\n addNewEditorFromKeyboard() {\n if (this.currentLayer.canCreateNewEmptyEditor()) {\n this.currentLayer.addNewEditor();\n }\n }\n updateToolbar(options) {\n if (options.mode === this.#mode) {\n return;\n }\n this._eventBus.dispatch(\"switchannotationeditormode\", {\n source: this,\n ...options\n });\n }\n updateParams(type, value) {\n if (!this.#editorTypes) {\n return;\n }\n switch (type) {\n case AnnotationEditorParamsType.CREATE:\n this.currentLayer.addNewEditor(value);\n return;\n case AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL:\n this._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n data: {\n type: \"highlight\",\n action: \"toggle_visibility\"\n }\n }\n });\n (this.#showAllStates ||= /* @__PURE__ */ new Map()).set(type, value);\n this.showAllEditors(\"highlight\", value);\n break;\n }\n if (this.hasSelection) {\n for (const editor of this.#selectedEditors) {\n editor.updateParams(type, value);\n }\n } else {\n for (const editorType of this.#editorTypes) {\n editorType.updateDefaultParams(type, value);\n }\n }\n }\n showAllEditors(type, visible, updateButton = false) {\n for (const editor of this.#allEditors.values()) {\n if (editor.editorType === type) {\n editor.show(visible);\n }\n }\n const state = this.#showAllStates?.get(AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL) ?? true;\n if (state !== visible) {\n this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL, visible]]);\n }\n }\n enableWaiting(mustWait = false) {\n if (this.#isWaiting === mustWait) {\n return;\n }\n this.#isWaiting = mustWait;\n for (const layer of this.#allLayers.values()) {\n if (mustWait) {\n layer.disableClick();\n } else {\n layer.enableClick();\n }\n layer.div.classList.toggle(\"waiting\", mustWait);\n }\n }\n async #enableAll() {\n if (!this.#isEnabled) {\n this.#isEnabled = true;\n const promises = [];\n for (const layer of this.#allLayers.values()) {\n promises.push(layer.enable());\n }\n await Promise.all(promises);\n for (const editor of this.#allEditors.values()) {\n editor.enable();\n }\n }\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 for (const editor of this.#allEditors.values()) {\n editor.disable();\n }\n }\n }\n *getEditors(pageIndex) {\n for (const editor of this.#allEditors.values()) {\n if (editor.pageIndex === pageIndex) {\n yield editor;\n }\n }\n }\n getEditor(id) {\n return this.#allEditors.get(id);\n }\n addEditor(editor) {\n this.#allEditors.set(editor.id, editor);\n }\n removeEditor(editor) {\n if (editor.div.contains(document.activeElement)) {\n if (this.#focusMainContainerTimeoutId) {\n clearTimeout(this.#focusMainContainerTimeoutId);\n }\n this.#focusMainContainerTimeoutId = setTimeout(() => {\n this.focusMainContainer();\n this.#focusMainContainerTimeoutId = null;\n }, 0);\n }\n this.#allEditors.delete(editor.id);\n if (editor.annotationElementId) {\n this.#missingCanvases?.delete(editor.annotationElementId);\n }\n this.unselect(editor);\n if (!editor.annotationElementId || !this.#deletedAnnotationsElementIds.has(editor.annotationElementId)) {\n this.#annotationStorage?.remove(editor.id);\n }\n }\n addDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.add(editor.annotationElementId);\n this.addChangedExistingAnnotation(editor);\n editor.deleted = true;\n }\n isDeletedAnnotationElement(annotationElementId) {\n return this.#deletedAnnotationsElementIds.has(annotationElementId);\n }\n removeDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.delete(editor.annotationElementId);\n this.removeChangedExistingAnnotation(editor);\n editor.deleted = false;\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 this.addToAnnotationStorage(editor);\n }\n }\n setActiveEditor(editor) {\n if (this.#activeEditor === editor) {\n return;\n }\n this.#activeEditor = editor;\n if (editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n get #lastSelectedEditor() {\n let ed = null;\n for (ed of this.#selectedEditors) {\n }\n return ed;\n }\n updateUI(editor) {\n if (this.#lastSelectedEditor === editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n updateUIForDefaultProperties(editorType) {\n this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\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 setSelected(editor) {\n this.updateToolbar({\n mode: editor.mode,\n editId: editor.id\n });\n this.#currentDrawingSession?.commitOrRemove();\n for (const ed of this.#selectedEditors) {\n if (ed !== editor) {\n ed.unselect();\n }\n }\n this.#selectedEditors.clear();\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n isSelected(editor) {\n return this.#selectedEditors.has(editor);\n }\n get firstSelectedEditor() {\n return this.#selectedEditors.values().next().value;\n }\n unselect(editor) {\n editor.unselect();\n this.#selectedEditors.delete(editor);\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n get hasSelection() {\n return this.#selectedEditors.size !== 0;\n }\n get isEnterHandled() {\n return this.#selectedEditors.size === 1 && this.firstSelectedEditor.isEnterHandled;\n }\n undo() {\n this.#commandManager.undo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: true,\n isEmpty: this.#isEmpty()\n });\n this._editorUndoBar?.hide();\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 addCommands(params) {\n this.#commandManager.add(params);\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: false,\n isEmpty: this.#isEmpty()\n });\n }\n cleanUndoStack(type) {\n this.#commandManager.cleanType(type);\n }\n #isEmpty() {\n if (this.#allEditors.size === 0) {\n return true;\n }\n if (this.#allEditors.size === 1) {\n for (const editor of this.#allEditors.values()) {\n return editor.isEmpty();\n }\n }\n return false;\n }\n delete() {\n this.commitOrRemove();\n const drawingEditor = this.currentLayer?.endDrawingSession(true);\n if (!this.hasSelection && !drawingEditor) {\n return;\n }\n const editors = drawingEditor ? [drawingEditor] : [...this.#selectedEditors];\n const cmd = () => {\n this._editorUndoBar?.show(undo, editors.length === 1 ? editors[0].editorType : editors.length);\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 this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n commitOrRemove() {\n this.#activeEditor?.commitOrRemove();\n }\n hasSomethingToControl() {\n return this.#activeEditor || this.hasSelection;\n }\n #selectEditors(editors) {\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\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({\n hasSelectedEditor: this.hasSelection\n });\n }\n selectAll() {\n for (const editor of this.#selectedEditors) {\n editor.commit();\n }\n this.#selectEditors(this.#allEditors.values());\n }\n unselectAll() {\n if (this.#activeEditor) {\n this.#activeEditor.commitOrRemove();\n if (this.#mode !== AnnotationEditorType.NONE) {\n return;\n }\n }\n if (this.#currentDrawingSession?.commitOrRemove()) {\n return;\n }\n if (!this.hasSelection) {\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 translateSelectedEditors(x, y, noCommit = false) {\n if (!noCommit) {\n this.commitOrRemove();\n }\n if (!this.hasSelection) {\n return;\n }\n this.#translation[0] += x;\n this.#translation[1] += y;\n const [totalX, totalY] = this.#translation;\n const editors = [...this.#selectedEditors];\n const TIME_TO_WAIT = 1e3;\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n }\n this.#translationTimeoutId = setTimeout(() => {\n this.#translationTimeoutId = null;\n this.#translation[0] = this.#translation[1] = 0;\n this.addCommands({\n cmd: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(totalX, totalY);\n editor.translationDone();\n }\n }\n },\n undo: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(-totalX, -totalY);\n editor.translationDone();\n }\n }\n },\n mustExec: false\n });\n }, TIME_TO_WAIT);\n for (const editor of editors) {\n editor.translateInPage(x, y);\n editor.translationDone();\n }\n }\n setUpDragSession() {\n if (!this.hasSelection) {\n return;\n }\n this.disableUserSelect(true);\n this.#draggingEditors = /* @__PURE__ */ new Map();\n for (const editor of this.#selectedEditors) {\n this.#draggingEditors.set(editor, {\n savedX: editor.x,\n savedY: editor.y,\n savedPageIndex: editor.pageIndex,\n newX: 0,\n newY: 0,\n newPageIndex: -1\n });\n }\n }\n endDragSession() {\n if (!this.#draggingEditors) {\n return false;\n }\n this.disableUserSelect(false);\n const map = this.#draggingEditors;\n this.#draggingEditors = null;\n let mustBeAddedInUndoStack = false;\n for (const [{\n x,\n y,\n pageIndex\n }, value] of map) {\n value.newX = x;\n value.newY = y;\n value.newPageIndex = pageIndex;\n mustBeAddedInUndoStack ||= x !== value.savedX || y !== value.savedY || pageIndex !== value.savedPageIndex;\n }\n if (!mustBeAddedInUndoStack) {\n return false;\n }\n const move = (editor, x, y, pageIndex) => {\n if (this.#allEditors.has(editor.id)) {\n const parent = this.#allLayers.get(pageIndex);\n if (parent) {\n editor._setParentAndPosition(parent, x, y);\n } else {\n editor.pageIndex = pageIndex;\n editor.x = x;\n editor.y = y;\n }\n }\n };\n this.addCommands({\n cmd: () => {\n for (const [editor, {\n newX,\n newY,\n newPageIndex\n }] of map) {\n move(editor, newX, newY, newPageIndex);\n }\n },\n undo: () => {\n for (const [editor, {\n savedX,\n savedY,\n savedPageIndex\n }] of map) {\n move(editor, savedX, savedY, savedPageIndex);\n }\n },\n mustExec: true\n });\n return true;\n }\n dragSelectedEditors(tx, ty) {\n if (!this.#draggingEditors) {\n return;\n }\n for (const editor of this.#draggingEditors.keys()) {\n editor.drag(tx, ty);\n }\n }\n rebuild(editor) {\n if (editor.parent === null) {\n const parent = this.getLayer(editor.pageIndex);\n if (parent) {\n parent.changeParent(editor);\n parent.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n editor.rebuild();\n }\n } else {\n editor.parent.addOrRebuild(editor);\n }\n }\n get isEditorHandlingKeyboard() {\n return this.getActive()?.shouldGetKeyboardEvents() || this.#selectedEditors.size === 1 && this.firstSelectedEditor.shouldGetKeyboardEvents();\n }\n isActive(editor) {\n return this.#activeEditor === editor;\n }\n getActive() {\n return this.#activeEditor;\n }\n getMode() {\n return this.#mode;\n }\n isEditingMode() {\n return this.#mode !== AnnotationEditorType.NONE;\n }\n get imageManager() {\n return shadow(this, \"imageManager\", new ImageManager());\n }\n getSelectionBoxes(textLayer) {\n if (!textLayer) {\n return null;\n }\n const selection = document.getSelection();\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n if (!textLayer.contains(selection.getRangeAt(i).commonAncestorContainer)) {\n return null;\n }\n }\n const {\n x: layerX,\n y: layerY,\n width: parentWidth,\n height: parentHeight\n } = textLayer.getBoundingClientRect();\n let rotator;\n switch (textLayer.getAttribute(\"data-main-rotation\")) {\n case \"90\":\n rotator = (x, y, w, h) => ({\n x: (y - layerY) / parentHeight,\n y: 1 - (x + w - layerX) / parentWidth,\n width: h / parentHeight,\n height: w / parentWidth\n });\n break;\n case \"180\":\n rotator = (x, y, w, h) => ({\n x: 1 - (x + w - layerX) / parentWidth,\n y: 1 - (y + h - layerY) / parentHeight,\n width: w / parentWidth,\n height: h / parentHeight\n });\n break;\n case \"270\":\n rotator = (x, y, w, h) => ({\n x: 1 - (y + h - layerY) / parentHeight,\n y: (x - layerX) / parentWidth,\n width: h / parentHeight,\n height: w / parentWidth\n });\n break;\n default:\n rotator = (x, y, w, h) => ({\n x: (x - layerX) / parentWidth,\n y: (y - layerY) / parentHeight,\n width: w / parentWidth,\n height: h / parentHeight\n });\n break;\n }\n const boxes = [];\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n const range = selection.getRangeAt(i);\n if (range.collapsed) {\n continue;\n }\n for (const {\n x,\n y,\n width,\n height\n } of range.getClientRects()) {\n if (width === 0 || height === 0) {\n continue;\n }\n boxes.push(rotator(x, y, width, height));\n }\n }\n return boxes.length === 0 ? null : boxes;\n }\n addChangedExistingAnnotation({\n annotationElementId,\n id\n }) {\n (this.#changedExistingAnnotations ||= /* @__PURE__ */ new Map()).set(annotationElementId, id);\n }\n removeChangedExistingAnnotation({\n annotationElementId\n }) {\n this.#changedExistingAnnotations?.delete(annotationElementId);\n }\n renderAnnotationElement(annotation) {\n const editorId = this.#changedExistingAnnotations?.get(annotation.data.id);\n if (!editorId) {\n return;\n }\n const editor = this.#annotationStorage.getRawValue(editorId);\n if (!editor) {\n return;\n }\n if (this.#mode === AnnotationEditorType.NONE && !editor.hasBeenModified) {\n return;\n }\n editor.renderAnnotationElement(annotation);\n }\n setMissingCanvas(annotationId, annotationElementId, canvas) {\n const editor = this.#missingCanvases?.get(annotationId);\n if (!editor) {\n return;\n }\n editor.setCanvas(annotationElementId, canvas);\n this.#missingCanvases.delete(annotationId);\n }\n addMissingCanvas(annotationId, editor) {\n (this.#missingCanvases ||= /* @__PURE__ */ new Map()).set(annotationId, editor);\n }\n}\nclass AltText {\n #altText = null;\n #altTextDecorative = false;\n #altTextButton = null;\n #altTextButtonLabel = null;\n #altTextTooltip = null;\n #altTextTooltipTimeout = null;\n #altTextWasFromKeyBoard = false;\n #badge = null;\n #editor = null;\n #guessedText = null;\n #textWithDisclaimer = null;\n #useNewAltTextFlow = false;\n static #l10nNewButton = null;\n static _l10n = null;\n constructor(editor) {\n this.#editor = editor;\n this.#useNewAltTextFlow = editor._uiManager.useNewAltTextFlow;\n AltText.#l10nNewButton ||= Object.freeze({\n added: \"pdfjs-editor-new-alt-text-added-button\",\n \"added-label\": \"pdfjs-editor-new-alt-text-added-button-label\",\n missing: \"pdfjs-editor-new-alt-text-missing-button\",\n \"missing-label\": \"pdfjs-editor-new-alt-text-missing-button-label\",\n review: \"pdfjs-editor-new-alt-text-to-review-button\",\n \"review-label\": \"pdfjs-editor-new-alt-text-to-review-button-label\"\n });\n }\n static initialize(l10n) {\n AltText._l10n ??= l10n;\n }\n async render() {\n const altText = this.#altTextButton = document.createElement(\"button\");\n altText.className = \"altText\";\n altText.tabIndex = \"0\";\n const label = this.#altTextButtonLabel = document.createElement(\"span\");\n altText.append(label);\n if (this.#useNewAltTextFlow) {\n altText.classList.add(\"new\");\n altText.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton.missing);\n label.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[\"missing-label\"]);\n } else {\n altText.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button\");\n label.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button-label\");\n }\n const signal = this.#editor._uiManager._signal;\n altText.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n altText.addEventListener(\"pointerdown\", (event) => event.stopPropagation(), {\n signal\n });\n const onClick = (event) => {\n event.preventDefault();\n this.#editor._uiManager.editAltText(this.#editor);\n if (this.#useNewAltTextFlow) {\n this.#editor._reportTelemetry({\n action: \"pdfjs.image.alt_text.image_status_label_clicked\",\n data: {\n label: this.#label\n }\n });\n }\n };\n altText.addEventListener(\"click\", onClick, {\n capture: true,\n signal\n });\n altText.addEventListener(\"keydown\", (event) => {\n if (event.target === altText && event.key === \"Enter\") {\n this.#altTextWasFromKeyBoard = true;\n onClick(event);\n }\n }, {\n signal\n });\n await this.#setState();\n return altText;\n }\n get #label() {\n return this.#altText && \"added\" || this.#altText === null && this.guessedText && \"review\" || \"missing\";\n }\n finish() {\n if (!this.#altTextButton) {\n return;\n }\n this.#altTextButton.focus({\n focusVisible: this.#altTextWasFromKeyBoard\n });\n this.#altTextWasFromKeyBoard = false;\n }\n isEmpty() {\n if (this.#useNewAltTextFlow) {\n return this.#altText === null;\n }\n return !this.#altText && !this.#altTextDecorative;\n }\n hasData() {\n if (this.#useNewAltTextFlow) {\n return this.#altText !== null || !!this.#guessedText;\n }\n return this.isEmpty();\n }\n get guessedText() {\n return this.#guessedText;\n }\n async setGuessedText(guessedText) {\n if (this.#altText !== null) {\n return;\n }\n this.#guessedText = guessedText;\n this.#textWithDisclaimer = await AltText._l10n.get(\"pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer\", {\n generatedAltText: guessedText\n });\n this.#setState();\n }\n toggleAltTextBadge(visibility = false) {\n if (!this.#useNewAltTextFlow || this.#altText) {\n this.#badge?.remove();\n this.#badge = null;\n return;\n }\n if (!this.#badge) {\n const badge = this.#badge = document.createElement(\"div\");\n badge.className = \"noAltTextBadge\";\n this.#editor.div.append(badge);\n }\n this.#badge.classList.toggle(\"hidden\", !visibility);\n }\n serialize(isForCopying) {\n let altText = this.#altText;\n if (!isForCopying && this.#guessedText === altText) {\n altText = this.#textWithDisclaimer;\n }\n return {\n altText,\n decorative: this.#altTextDecorative,\n guessedText: this.#guessedText,\n textWithDisclaimer: this.#textWithDisclaimer\n };\n }\n get data() {\n return {\n altText: this.#altText,\n decorative: this.#altTextDecorative\n };\n }\n set data({\n altText,\n decorative,\n guessedText,\n textWithDisclaimer,\n cancel = false\n }) {\n if (guessedText) {\n this.#guessedText = guessedText;\n this.#textWithDisclaimer = textWithDisclaimer;\n }\n if (this.#altText === altText && this.#altTextDecorative === decorative) {\n return;\n }\n if (!cancel) {\n this.#altText = altText;\n this.#altTextDecorative = decorative;\n }\n this.#setState();\n }\n toggle(enabled = false) {\n if (!this.#altTextButton) {\n return;\n }\n if (!enabled && this.#altTextTooltipTimeout) {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }\n this.#altTextButton.disabled = !enabled;\n }\n shown() {\n this.#editor._reportTelemetry({\n action: \"pdfjs.image.alt_text.image_status_label_displayed\",\n data: {\n label: this.#label\n }\n });\n }\n destroy() {\n this.#altTextButton?.remove();\n this.#altTextButton = null;\n this.#altTextButtonLabel = null;\n this.#altTextTooltip = null;\n this.#badge?.remove();\n this.#badge = null;\n }\n async #setState() {\n const button = this.#altTextButton;\n if (!button) {\n return;\n }\n if (this.#useNewAltTextFlow) {\n button.classList.toggle(\"done\", !!this.#altText);\n button.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[this.#label]);\n this.#altTextButtonLabel?.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[`${this.#label}-label`]);\n if (!this.#altText) {\n this.#altTextTooltip?.remove();\n return;\n }\n } else {\n if (!this.#altText && !this.#altTextDecorative) {\n button.classList.remove(\"done\");\n this.#altTextTooltip?.remove();\n return;\n }\n button.classList.add(\"done\");\n button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-edit-button\");\n }\n let tooltip = this.#altTextTooltip;\n if (!tooltip) {\n this.#altTextTooltip = tooltip = document.createElement(\"span\");\n tooltip.className = \"tooltip\";\n tooltip.setAttribute(\"role\", \"tooltip\");\n tooltip.id = `alt-text-tooltip-${this.#editor.id}`;\n const DELAY_TO_SHOW_TOOLTIP = 100;\n const signal = this.#editor._uiManager._signal;\n signal.addEventListener(\"abort\", () => {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }, {\n once: true\n });\n button.addEventListener(\"mouseenter\", () => {\n this.#altTextTooltipTimeout = setTimeout(() => {\n this.#altTextTooltipTimeout = null;\n this.#altTextTooltip.classList.add(\"show\");\n this.#editor._reportTelemetry({\n action: \"alt_text_tooltip\"\n });\n }, DELAY_TO_SHOW_TOOLTIP);\n }, {\n signal\n });\n button.addEventListener(\"mouseleave\", () => {\n if (this.#altTextTooltipTimeout) {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }\n this.#altTextTooltip?.classList.remove(\"show\");\n }, {\n signal\n });\n }\n if (this.#altTextDecorative) {\n tooltip.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-decorative-tooltip\");\n } else {\n tooltip.removeAttribute(\"data-l10n-id\");\n tooltip.textContent = this.#altText;\n }\n if (!tooltip.parentNode) {\n button.append(tooltip);\n }\n const element = this.#editor.getElementForAltText();\n element?.setAttribute(\"aria-describedby\", tooltip.id);\n }\n}\nclass Comment {\n #commentStandaloneButton = null;\n #commentToolbarButton = null;\n #commentWasFromKeyBoard = false;\n #editor = null;\n #initialText = null;\n #richText = null;\n #text = null;\n #date = null;\n #deleted = false;\n #popupPosition = null;\n constructor(editor) {\n this.#editor = editor;\n }\n renderForToolbar() {\n const button = this.#commentToolbarButton = document.createElement(\"button\");\n button.className = \"comment\";\n return this.#render(button, false);\n }\n renderForStandalone() {\n const button = this.#commentStandaloneButton = document.createElement(\"button\");\n button.className = \"annotationCommentButton\";\n const position = this.#editor.commentButtonPosition;\n if (position) {\n const {\n style\n } = button;\n style.insetInlineEnd = `calc(${100 * (this.#editor._uiManager.direction === \"ltr\" ? 1 - position[0] : position[0])}% - var(--comment-button-dim))`;\n style.top = `calc(${100 * position[1]}% - var(--comment-button-dim))`;\n const color = this.#editor.commentButtonColor;\n if (color) {\n style.backgroundColor = color;\n }\n }\n return this.#render(button, true);\n }\n focusButton() {\n setTimeout(() => {\n (this.#commentStandaloneButton ?? this.#commentToolbarButton)?.focus();\n }, 0);\n }\n onUpdatedColor() {\n if (!this.#commentStandaloneButton) {\n return;\n }\n const color = this.#editor.commentButtonColor;\n if (color) {\n this.#commentStandaloneButton.style.backgroundColor = color;\n }\n this.#editor._uiManager.updatePopupColor(this.#editor);\n }\n get commentButtonWidth() {\n return (this.#commentStandaloneButton?.getBoundingClientRect().width ?? 0) / this.#editor.parent.boundingClientRect.width;\n }\n get commentPopupPositionInLayer() {\n if (this.#popupPosition) {\n return this.#popupPosition;\n }\n if (!this.#commentStandaloneButton) {\n return null;\n }\n const {\n x,\n y,\n height\n } = this.#commentStandaloneButton.getBoundingClientRect();\n const {\n x: parentX,\n y: parentY,\n width: parentWidth,\n height: parentHeight\n } = this.#editor.parent.boundingClientRect;\n return [(x - parentX) / parentWidth, (y + height - parentY) / parentHeight];\n }\n set commentPopupPositionInLayer(pos) {\n this.#popupPosition = pos;\n }\n hasDefaultPopupPosition() {\n return this.#popupPosition === null;\n }\n removeStandaloneCommentButton() {\n this.#commentStandaloneButton?.remove();\n this.#commentStandaloneButton = null;\n }\n removeToolbarCommentButton() {\n this.#commentToolbarButton?.remove();\n this.#commentToolbarButton = null;\n }\n setCommentButtonStates({\n selected,\n hasPopup\n }) {\n if (!this.#commentStandaloneButton) {\n return;\n }\n this.#commentStandaloneButton.classList.toggle(\"selected\", selected);\n this.#commentStandaloneButton.ariaExpanded = hasPopup;\n }\n #render(comment, isStandalone) {\n if (!this.#editor._uiManager.hasCommentManager()) {\n return null;\n }\n comment.tabIndex = \"0\";\n comment.ariaHasPopup = \"dialog\";\n if (isStandalone) {\n comment.ariaControls = \"commentPopup\";\n comment.setAttribute(\"data-l10n-id\", \"pdfjs-show-comment-button\");\n } else {\n comment.ariaControlsElements = [this.#editor._uiManager.getCommentDialogElement()];\n comment.setAttribute(\"data-l10n-id\", \"pdfjs-editor-edit-comment-button\");\n }\n const signal = this.#editor._uiManager._signal;\n if (!(signal instanceof AbortSignal) || signal.aborted) {\n return comment;\n }\n comment.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n if (isStandalone) {\n comment.addEventListener(\"focusin\", (e) => {\n this.#editor._focusEventsAllowed = false;\n stopEvent(e);\n }, {\n capture: true,\n signal\n });\n comment.addEventListener(\"focusout\", (e) => {\n this.#editor._focusEventsAllowed = true;\n stopEvent(e);\n }, {\n capture: true,\n signal\n });\n }\n comment.addEventListener(\"pointerdown\", (event) => event.stopPropagation(), {\n signal\n });\n const onClick = (event) => {\n event.preventDefault();\n if (comment === this.#commentToolbarButton) {\n this.edit();\n } else {\n this.#editor.toggleComment(true);\n }\n };\n comment.addEventListener(\"click\", onClick, {\n capture: true,\n signal\n });\n comment.addEventListener(\"keydown\", (event) => {\n if (event.target === comment && event.key === \"Enter\") {\n this.#commentWasFromKeyBoard = true;\n onClick(event);\n }\n }, {\n signal\n });\n comment.addEventListener(\"pointerenter\", () => {\n this.#editor.toggleComment(false, true);\n }, {\n signal\n });\n comment.addEventListener(\"pointerleave\", () => {\n this.#editor.toggleComment(false, false);\n }, {\n signal\n });\n return comment;\n }\n edit(options) {\n const position = this.commentPopupPositionInLayer;\n let posX, posY;\n if (position) {\n [posX, posY] = position;\n } else {\n [posX, posY] = this.#editor.commentButtonPosition;\n const {\n width,\n height,\n x,\n y\n } = this.#editor;\n posX = x + posX * width;\n posY = y + posY * height;\n }\n const parentDimensions = this.#editor.parent.boundingClientRect;\n const {\n x: parentX,\n y: parentY,\n width: parentWidth,\n height: parentHeight\n } = parentDimensions;\n this.#editor._uiManager.editComment(this.#editor, parentX + posX * parentWidth, parentY + posY * parentHeight, {\n ...options,\n parentDimensions\n });\n }\n finish() {\n if (!this.#commentToolbarButton) {\n return;\n }\n this.#commentToolbarButton.focus({\n focusVisible: this.#commentWasFromKeyBoard\n });\n this.#commentWasFromKeyBoard = false;\n }\n isDeleted() {\n return this.#deleted || this.#text === \"\";\n }\n isEmpty() {\n return this.#text === null;\n }\n hasBeenEdited() {\n return this.isDeleted() || this.#text !== this.#initialText;\n }\n serialize() {\n return this.data;\n }\n get data() {\n return {\n text: this.#text,\n richText: this.#richText,\n date: this.#date,\n deleted: this.isDeleted()\n };\n }\n set data(text) {\n if (text !== this.#text) {\n this.#richText = null;\n }\n if (text === null) {\n this.#text = \"\";\n this.#deleted = true;\n return;\n }\n this.#text = text;\n this.#date = /* @__PURE__ */ new Date();\n this.#deleted = false;\n }\n setInitialText(text, richText = null) {\n this.#initialText = text;\n this.data = text;\n this.#date = null;\n this.#richText = richText;\n }\n shown() {\n }\n destroy() {\n this.#commentToolbarButton?.remove();\n this.#commentToolbarButton = null;\n this.#commentStandaloneButton?.remove();\n this.#commentStandaloneButton = null;\n this.#text = \"\";\n this.#richText = null;\n this.#date = null;\n this.#editor = null;\n this.#commentWasFromKeyBoard = false;\n this.#deleted = false;\n }\n}\nclass TouchManager {\n #container;\n #isPinching = false;\n #isPinchingStopped = null;\n #isPinchingDisabled;\n #onPinchStart;\n #onPinching;\n #onPinchEnd;\n #pointerDownAC = null;\n #signal;\n #touchInfo = null;\n #touchManagerAC;\n #touchMoveAC = null;\n constructor({\n container,\n isPinchingDisabled = null,\n isPinchingStopped = null,\n onPinchStart = null,\n onPinching = null,\n onPinchEnd = null,\n signal\n }) {\n this.#container = container;\n this.#isPinchingStopped = isPinchingStopped;\n this.#isPinchingDisabled = isPinchingDisabled;\n this.#onPinchStart = onPinchStart;\n this.#onPinching = onPinching;\n this.#onPinchEnd = onPinchEnd;\n this.#touchManagerAC = new AbortController();\n this.#signal = AbortSignal.any([signal, this.#touchManagerAC.signal]);\n container.addEventListener(\"touchstart\", this.#onTouchStart.bind(this), {\n passive: false,\n signal: this.#signal\n });\n }\n get MIN_TOUCH_DISTANCE_TO_PINCH() {\n return 35 / OutputScale.pixelRatio;\n }\n #onTouchStart(evt) {\n if (this.#isPinchingDisabled?.()) {\n return;\n }\n if (evt.touches.length === 1) {\n if (this.#pointerDownAC) {\n return;\n }\n const pointerDownAC = this.#pointerDownAC = new AbortController();\n const signal = AbortSignal.any([this.#signal, pointerDownAC.signal]);\n const container = this.#container;\n const opts = {\n capture: true,\n signal,\n passive: false\n };\n const cancelPointerDown = (e) => {\n if (e.pointerType === \"touch\") {\n this.#pointerDownAC?.abort();\n this.#pointerDownAC = null;\n }\n };\n container.addEventListener(\"pointerdown\", (e) => {\n if (e.pointerType === \"touch\") {\n stopEvent(e);\n cancelPointerDown(e);\n }\n }, opts);\n container.addEventListener(\"pointerup\", cancelPointerDown, opts);\n container.addEventListener(\"pointercancel\", cancelPointerDown, opts);\n return;\n }\n if (!this.#touchMoveAC) {\n this.#touchMoveAC = new AbortController();\n const signal = AbortSignal.any([this.#signal, this.#touchMoveAC.signal]);\n const container = this.#container;\n const opt = {\n signal,\n capture: false,\n passive: false\n };\n container.addEventListener(\"touchmove\", this.#onTouchMove.bind(this), opt);\n const onTouchEnd = this.#onTouchEnd.bind(this);\n container.addEventListener(\"touchend\", onTouchEnd, opt);\n container.addEventListener(\"touchcancel\", onTouchEnd, opt);\n opt.capture = true;\n container.addEventListener(\"pointerdown\", stopEvent, opt);\n container.addEventListener(\"pointermove\", stopEvent, opt);\n container.addEventListener(\"pointercancel\", stopEvent, opt);\n container.addEventListener(\"pointerup\", stopEvent, opt);\n this.#onPinchStart?.();\n }\n stopEvent(evt);\n if (evt.touches.length !== 2 || this.#isPinchingStopped?.()) {\n this.#touchInfo = null;\n return;\n }\n let [touch0, touch1] = evt.touches;\n if (touch0.identifier > touch1.identifier) {\n [touch0, touch1] = [touch1, touch0];\n }\n this.#touchInfo = {\n touch0X: touch0.screenX,\n touch0Y: touch0.screenY,\n touch1X: touch1.screenX,\n touch1Y: touch1.screenY\n };\n }\n #onTouchMove(evt) {\n if (!this.#touchInfo || evt.touches.length !== 2) {\n return;\n }\n stopEvent(evt);\n let [touch0, touch1] = evt.touches;\n if (touch0.identifier > touch1.identifier) {\n [touch0, touch1] = [touch1, touch0];\n }\n const {\n screenX: screen0X,\n screenY: screen0Y\n } = touch0;\n const {\n screenX: screen1X,\n screenY: screen1Y\n } = touch1;\n const touchInfo = this.#touchInfo;\n const {\n touch0X: pTouch0X,\n touch0Y: pTouch0Y,\n touch1X: pTouch1X,\n touch1Y: pTouch1Y\n } = touchInfo;\n const prevGapX = pTouch1X - pTouch0X;\n const prevGapY = pTouch1Y - pTouch0Y;\n const currGapX = screen1X - screen0X;\n const currGapY = screen1Y - screen0Y;\n const distance = Math.hypot(currGapX, currGapY) || 1;\n const pDistance = Math.hypot(prevGapX, prevGapY) || 1;\n if (!this.#isPinching && Math.abs(pDistance - distance) <= TouchManager.MIN_TOUCH_DISTANCE_TO_PINCH) {\n return;\n }\n touchInfo.touch0X = screen0X;\n touchInfo.touch0Y = screen0Y;\n touchInfo.touch1X = screen1X;\n touchInfo.touch1Y = screen1Y;\n if (!this.#isPinching) {\n this.#isPinching = true;\n return;\n }\n const origin = [(screen0X + screen1X) / 2, (screen0Y + screen1Y) / 2];\n this.#onPinching?.(origin, pDistance, distance);\n }\n #onTouchEnd(evt) {\n if (evt.touches.length >= 2) {\n return;\n }\n if (this.#touchMoveAC) {\n this.#touchMoveAC.abort();\n this.#touchMoveAC = null;\n this.#onPinchEnd?.();\n }\n if (!this.#touchInfo) {\n return;\n }\n stopEvent(evt);\n this.#touchInfo = null;\n this.#isPinching = false;\n }\n destroy() {\n this.#touchManagerAC?.abort();\n this.#touchManagerAC = null;\n this.#pointerDownAC?.abort();\n this.#pointerDownAC = null;\n }\n}\nclass AnnotationEditor {\n #accessibilityData = null;\n #allResizerDivs = null;\n #altText = null;\n #comment = null;\n #commentStandaloneButton = null;\n #disabled = false;\n #dragPointerId = null;\n #dragPointerType = \"\";\n #resizersDiv = null;\n #lastPointerCoords = null;\n #savedDimensions = null;\n #fakeAnnotation = null;\n #focusAC = null;\n #focusedResizerName = \"\";\n #hasBeenClicked = false;\n #initialRect = null;\n #isEditing = false;\n #isInEditMode = false;\n #isResizerEnabledForKeyboard = false;\n #moveInDOMTimeout = null;\n #prevDragX = 0;\n #prevDragY = 0;\n #telemetryTimeouts = null;\n #touchManager = null;\n isSelected = false;\n _isCopy = false;\n _editToolbar = null;\n _initialOptions = /* @__PURE__ */ Object.create(null);\n _initialData = null;\n _isVisible = true;\n _uiManager = null;\n _focusEventsAllowed = true;\n static _l10n = null;\n static _l10nResizer = null;\n #isDraggable = false;\n #zIndex = AnnotationEditor._zIndex++;\n static _borderLineWidth = -1;\n static _colorManager = new ColorManager();\n static _zIndex = 1;\n static _telemetryTimeout = 1e3;\n static get _resizerKeyboardManager() {\n const resize = AnnotationEditor.prototype._resizeWithKeyboard;\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n return shadow(this, \"_resizerKeyboardManager\", new KeyboardManager([[[\"ArrowLeft\", \"mac+ArrowLeft\"], resize, {\n args: [-small, 0]\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], resize, {\n args: [-big, 0]\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], resize, {\n args: [small, 0]\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], resize, {\n args: [big, 0]\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], resize, {\n args: [0, -small]\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], resize, {\n args: [0, -big]\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], resize, {\n args: [0, small]\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], resize, {\n args: [0, big]\n }], [[\"Escape\", \"mac+Escape\"], AnnotationEditor.prototype._stopResizingWithKeyboard]]));\n }\n constructor(parameters) {\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 this._uiManager = parameters.uiManager;\n this.annotationElementId = null;\n this._willKeepAspectRatio = false;\n this._initialOptions.isCentered = parameters.isCentered;\n this._structTreeParentId = null;\n this.annotationElementId = parameters.annotationElementId || null;\n this.creationDate = parameters.creationDate || /* @__PURE__ */ new Date();\n this.modificationDate = parameters.modificationDate || null;\n const {\n rotation,\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n } = this.parent.viewport;\n this.rotation = rotation;\n this.pageRotation = (360 + rotation - this._uiManager.viewParameters.rotation) % 360;\n this.pageDimensions = [pageWidth, pageHeight];\n this.pageTranslation = [pageX, pageY];\n const [width, height] = this.parentDimensions;\n this.x = parameters.x / width;\n this.y = parameters.y / height;\n this.isAttachedToDOM = false;\n this.deleted = false;\n }\n get editorType() {\n return Object.getPrototypeOf(this).constructor._type;\n }\n get mode() {\n return Object.getPrototypeOf(this).constructor._editorType;\n }\n static get isDrawer() {\n return false;\n }\n static get _defaultLineColor() {\n return shadow(this, \"_defaultLineColor\", this._colorManager.getHexCode(\"CanvasText\"));\n }\n static deleteAnnotationElement(editor) {\n const fakeEditor = new FakeEditor({\n id: editor.parent.getNextId(),\n parent: editor.parent,\n uiManager: editor._uiManager\n });\n fakeEditor.annotationElementId = editor.annotationElementId;\n fakeEditor.deleted = true;\n fakeEditor._uiManager.addToAnnotationStorage(fakeEditor);\n }\n static initialize(l10n, _uiManager) {\n AnnotationEditor._l10n ??= l10n;\n AnnotationEditor._l10nResizer ||= Object.freeze({\n topLeft: \"pdfjs-editor-resizer-top-left\",\n topMiddle: \"pdfjs-editor-resizer-top-middle\",\n topRight: \"pdfjs-editor-resizer-top-right\",\n middleRight: \"pdfjs-editor-resizer-middle-right\",\n bottomRight: \"pdfjs-editor-resizer-bottom-right\",\n bottomMiddle: \"pdfjs-editor-resizer-bottom-middle\",\n bottomLeft: \"pdfjs-editor-resizer-bottom-left\",\n middleLeft: \"pdfjs-editor-resizer-middle-left\"\n });\n if (AnnotationEditor._borderLineWidth !== -1) {\n return;\n }\n const style = getComputedStyle(document.documentElement);\n AnnotationEditor._borderLineWidth = parseFloat(style.getPropertyValue(\"--outline-width\")) || 0;\n }\n static updateDefaultParams(_type, _value) {\n }\n static get defaultPropertiesToUpdate() {\n return [];\n }\n static isHandlingMimeForPasting(mime) {\n return false;\n }\n static paste(item, parent) {\n unreachable(\"Not implemented\");\n }\n get propertiesToUpdate() {\n return [];\n }\n get _isDraggable() {\n return this.#isDraggable;\n }\n set _isDraggable(value) {\n this.#isDraggable = value;\n this.div?.classList.toggle(\"draggable\", value);\n }\n get uid() {\n return this.annotationElementId || this.id;\n }\n get isEnterHandled() {\n return true;\n }\n center() {\n const [pageWidth, pageHeight] = this.pageDimensions;\n switch (this.parentRotation) {\n case 90:\n this.x -= this.height * pageHeight / (pageWidth * 2);\n this.y += this.width * pageWidth / (pageHeight * 2);\n break;\n case 180:\n this.x += this.width / 2;\n this.y += this.height / 2;\n break;\n case 270:\n this.x += this.height * pageHeight / (pageWidth * 2);\n this.y -= this.width * pageWidth / (pageHeight * 2);\n break;\n default:\n this.x -= this.width / 2;\n this.y -= this.height / 2;\n break;\n }\n this.fixAndSetPosition();\n }\n addCommands(params) {\n this._uiManager.addCommands(params);\n }\n get currentLayer() {\n return this._uiManager.currentLayer;\n }\n setInBackground() {\n this.div.style.zIndex = 0;\n }\n setInForeground() {\n this.div.style.zIndex = this.#zIndex;\n }\n setParent(parent) {\n if (parent !== null) {\n this.pageIndex = parent.pageIndex;\n this.pageDimensions = parent.pageDimensions;\n } else {\n this.#stopResizing();\n this.#fakeAnnotation?.remove();\n this.#fakeAnnotation = null;\n }\n this.parent = parent;\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.#hasBeenClicked) {\n this.parent.setSelected(this);\n } else {\n this.#hasBeenClicked = false;\n }\n }\n focusout(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.isAttachedToDOM) {\n return;\n }\n const target = event.relatedTarget;\n if (target?.closest(`#${this.id}`)) {\n return;\n }\n event.preventDefault();\n if (!this.parent?.isMultipleSelection) {\n this.commitOrRemove();\n }\n }\n commitOrRemove() {\n if (this.isEmpty()) {\n this.remove();\n } else {\n this.commit();\n }\n }\n commit() {\n if (!this.isInEditMode()) {\n return;\n }\n this.addToAnnotationStorage();\n }\n addToAnnotationStorage() {\n this._uiManager.addToAnnotationStorage(this);\n }\n setAt(x, y, tx, ty) {\n const [width, height] = this.parentDimensions;\n [tx, ty] = this.screenToPageTranslation(tx, ty);\n this.x = (x + tx) / width;\n this.y = (y + ty) / height;\n this.fixAndSetPosition();\n }\n _moveAfterPaste(baseX, baseY) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n this._onTranslated();\n }\n #translate([width, height], x, y) {\n [x, y] = this.screenToPageTranslation(x, y);\n this.x += x / width;\n this.y += y / height;\n this._onTranslating(this.x, this.y);\n this.fixAndSetPosition();\n }\n translate(x, y) {\n this.#translate(this.parentDimensions, x, y);\n }\n translateInPage(x, y) {\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n this.#translate(this.pageDimensions, x, y);\n this.div.scrollIntoView({\n block: \"nearest\"\n });\n }\n translationDone() {\n this._onTranslated(this.x, this.y);\n }\n drag(tx, ty) {\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n const {\n div,\n parentDimensions: [parentWidth, parentHeight]\n } = this;\n this.x += tx / parentWidth;\n this.y += ty / parentHeight;\n if (this.parent && (this.x < 0 || this.x > 1 || this.y < 0 || this.y > 1)) {\n const {\n x: x2,\n y: y2\n } = this.div.getBoundingClientRect();\n if (this.parent.findNewParent(this, x2, y2)) {\n this.x -= Math.floor(this.x);\n this.y -= Math.floor(this.y);\n }\n }\n let {\n x,\n y\n } = this;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n const {\n style\n } = div;\n style.left = `${(100 * x).toFixed(2)}%`;\n style.top = `${(100 * y).toFixed(2)}%`;\n this._onTranslating(x, y);\n div.scrollIntoView({\n block: \"nearest\"\n });\n }\n _onTranslating(x, y) {\n }\n _onTranslated(x, y) {\n }\n get _hasBeenMoved() {\n return !!this.#initialRect && (this.#initialRect[0] !== this.x || this.#initialRect[1] !== this.y);\n }\n get _hasBeenResized() {\n return !!this.#initialRect && (this.#initialRect[2] !== this.width || this.#initialRect[3] !== this.height);\n }\n getBaseTranslation() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const {\n _borderLineWidth\n } = AnnotationEditor;\n const x = _borderLineWidth / parentWidth;\n const y = _borderLineWidth / parentHeight;\n switch (this.rotation) {\n case 90:\n return [-x, y];\n case 180:\n return [x, y];\n case 270:\n return [x, -y];\n default:\n return [-x, -y];\n }\n }\n get _mustFixPosition() {\n return true;\n }\n fixAndSetPosition(rotation = this.rotation) {\n const {\n div: {\n style\n },\n pageDimensions: [pageWidth, pageHeight]\n } = this;\n let {\n x,\n y,\n width,\n height\n } = this;\n width *= pageWidth;\n height *= pageHeight;\n x *= pageWidth;\n y *= pageHeight;\n if (this._mustFixPosition) {\n switch (rotation) {\n case 0:\n x = MathClamp(x, 0, pageWidth - width);\n y = MathClamp(y, 0, pageHeight - height);\n break;\n case 90:\n x = MathClamp(x, 0, pageWidth - height);\n y = MathClamp(y, width, pageHeight);\n break;\n case 180:\n x = MathClamp(x, width, pageWidth);\n y = MathClamp(y, height, pageHeight);\n break;\n case 270:\n x = MathClamp(x, height, pageWidth);\n y = MathClamp(y, 0, pageHeight - width);\n break;\n }\n }\n this.x = x /= pageWidth;\n this.y = y /= pageHeight;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n style.left = `${(100 * x).toFixed(2)}%`;\n style.top = `${(100 * y).toFixed(2)}%`;\n this.moveInDOM();\n }\n static #rotatePoint(x, y, angle) {\n switch (angle) {\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 screenToPageTranslation(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, this.parentRotation);\n }\n pageTranslationToScreen(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, 360 - this.parentRotation);\n }\n #getRotationMatrix(rotation) {\n switch (rotation) {\n case 90: {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, -pageWidth / pageHeight, pageHeight / pageWidth, 0];\n }\n case 180:\n return [-1, 0, 0, -1];\n case 270: {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, pageWidth / pageHeight, -pageHeight / pageWidth, 0];\n }\n default:\n return [1, 0, 0, 1];\n }\n }\n get parentScale() {\n return this._uiManager.viewParameters.realScale;\n }\n get parentRotation() {\n return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\n }\n get parentDimensions() {\n const {\n parentScale,\n pageDimensions: [pageWidth, pageHeight]\n } = this;\n return [pageWidth * parentScale, pageHeight * parentScale];\n }\n setDims() {\n const {\n div: {\n style\n },\n width,\n height\n } = this;\n style.width = `${(100 * width).toFixed(2)}%`;\n style.height = `${(100 * height).toFixed(2)}%`;\n }\n getInitialTranslation() {\n return [0, 0];\n }\n #createResizers() {\n if (this.#resizersDiv) {\n return;\n }\n this.#resizersDiv = document.createElement(\"div\");\n this.#resizersDiv.classList.add(\"resizers\");\n const classes = this._willKeepAspectRatio ? [\"topLeft\", \"topRight\", \"bottomRight\", \"bottomLeft\"] : [\"topLeft\", \"topMiddle\", \"topRight\", \"middleRight\", \"bottomRight\", \"bottomMiddle\", \"bottomLeft\", \"middleLeft\"];\n const signal = this._uiManager._signal;\n for (const name of classes) {\n const div = document.createElement(\"div\");\n this.#resizersDiv.append(div);\n div.classList.add(\"resizer\", name);\n div.setAttribute(\"data-resizer-name\", name);\n div.addEventListener(\"pointerdown\", this.#resizerPointerdown.bind(this, name), {\n signal\n });\n div.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n div.tabIndex = -1;\n }\n this.div.prepend(this.#resizersDiv);\n }\n #resizerPointerdown(name, event) {\n event.preventDefault();\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n this.#altText?.toggle(false);\n const savedDraggable = this._isDraggable;\n this._isDraggable = false;\n this.#lastPointerCoords = [event.screenX, event.screenY];\n const ac = new AbortController();\n const signal = this._uiManager.combinedSignal(ac);\n this.parent.togglePointerEvents(false);\n window.addEventListener(\"pointermove\", this.#resizerPointermove.bind(this, name), {\n passive: true,\n capture: true,\n signal\n });\n window.addEventListener(\"touchmove\", stopEvent, {\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n const savedParentCursor = this.parent.div.style.cursor;\n const savedCursor = this.div.style.cursor;\n this.div.style.cursor = this.parent.div.style.cursor = window.getComputedStyle(event.target).cursor;\n const pointerUpCallback = () => {\n ac.abort();\n this.parent.togglePointerEvents(true);\n this.#altText?.toggle(true);\n this._isDraggable = savedDraggable;\n this.parent.div.style.cursor = savedParentCursor;\n this.div.style.cursor = savedCursor;\n this.#addResizeToUndoStack();\n };\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n }\n #resize(x, y, width, height) {\n this.width = width;\n this.height = height;\n this.x = x;\n this.y = y;\n this.setDims();\n this.fixAndSetPosition();\n this._onResized();\n }\n _onResized() {\n }\n #addResizeToUndoStack() {\n if (!this.#savedDimensions) {\n return;\n }\n const {\n savedX,\n savedY,\n savedWidth,\n savedHeight\n } = this.#savedDimensions;\n this.#savedDimensions = null;\n const newX = this.x;\n const newY = this.y;\n const newWidth = this.width;\n const newHeight = this.height;\n if (newX === savedX && newY === savedY && newWidth === savedWidth && newHeight === savedHeight) {\n return;\n }\n this.addCommands({\n cmd: this.#resize.bind(this, newX, newY, newWidth, newHeight),\n undo: this.#resize.bind(this, savedX, savedY, savedWidth, savedHeight),\n mustExec: true\n });\n }\n static _round(x) {\n return Math.round(x * 1e4) / 1e4;\n }\n #resizerPointermove(name, event) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n const rotationMatrix = this.#getRotationMatrix(this.rotation);\n const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];\n const invRotationMatrix = this.#getRotationMatrix(360 - this.rotation);\n const invTransf = (x, y) => [invRotationMatrix[0] * x + invRotationMatrix[2] * y, invRotationMatrix[1] * x + invRotationMatrix[3] * y];\n let getPoint;\n let getOpposite;\n let isDiagonal = false;\n let isHorizontal = false;\n switch (name) {\n case \"topLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, 0];\n getOpposite = (w, h) => [w, h];\n break;\n case \"topMiddle\":\n getPoint = (w, h) => [w / 2, 0];\n getOpposite = (w, h) => [w / 2, h];\n break;\n case \"topRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, 0];\n getOpposite = (w, h) => [0, h];\n break;\n case \"middleRight\":\n isHorizontal = true;\n getPoint = (w, h) => [w, h / 2];\n getOpposite = (w, h) => [0, h / 2];\n break;\n case \"bottomRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, h];\n getOpposite = (w, h) => [0, 0];\n break;\n case \"bottomMiddle\":\n getPoint = (w, h) => [w / 2, h];\n getOpposite = (w, h) => [w / 2, 0];\n break;\n case \"bottomLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, h];\n getOpposite = (w, h) => [w, 0];\n break;\n case \"middleLeft\":\n isHorizontal = true;\n getPoint = (w, h) => [0, h / 2];\n getOpposite = (w, h) => [w, h / 2];\n break;\n }\n const point = getPoint(savedWidth, savedHeight);\n const oppositePoint = getOpposite(savedWidth, savedHeight);\n let transfOppositePoint = transf(...oppositePoint);\n const oppositeX = AnnotationEditor._round(savedX + transfOppositePoint[0]);\n const oppositeY = AnnotationEditor._round(savedY + transfOppositePoint[1]);\n let ratioX = 1;\n let ratioY = 1;\n let deltaX, deltaY;\n if (!event.fromKeyboard) {\n const {\n screenX,\n screenY\n } = event;\n const [lastScreenX, lastScreenY] = this.#lastPointerCoords;\n [deltaX, deltaY] = this.screenToPageTranslation(screenX - lastScreenX, screenY - lastScreenY);\n this.#lastPointerCoords[0] = screenX;\n this.#lastPointerCoords[1] = screenY;\n } else {\n ({\n deltaX,\n deltaY\n } = event);\n }\n [deltaX, deltaY] = invTransf(deltaX / parentWidth, deltaY / parentHeight);\n if (isDiagonal) {\n const oldDiag = Math.hypot(savedWidth, savedHeight);\n ratioX = ratioY = Math.max(Math.min(Math.hypot(oppositePoint[0] - point[0] - deltaX, oppositePoint[1] - point[1] - deltaY) / oldDiag, 1 / savedWidth, 1 / savedHeight), minWidth / savedWidth, minHeight / savedHeight);\n } else if (isHorizontal) {\n ratioX = MathClamp(Math.abs(oppositePoint[0] - point[0] - deltaX), minWidth, 1) / savedWidth;\n } else {\n ratioY = MathClamp(Math.abs(oppositePoint[1] - point[1] - deltaY), minHeight, 1) / savedHeight;\n }\n const newWidth = AnnotationEditor._round(savedWidth * ratioX);\n const newHeight = AnnotationEditor._round(savedHeight * ratioY);\n transfOppositePoint = transf(...getOpposite(newWidth, newHeight));\n const newX = oppositeX - transfOppositePoint[0];\n const newY = oppositeY - transfOppositePoint[1];\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n this.width = newWidth;\n this.height = newHeight;\n this.x = newX;\n this.y = newY;\n this.setDims();\n this.fixAndSetPosition();\n this._onResizing();\n }\n _onResizing() {\n }\n altTextFinish() {\n this.#altText?.finish();\n }\n get toolbarButtons() {\n return null;\n }\n async addEditToolbar() {\n if (this._editToolbar || this.#isInEditMode) {\n return this._editToolbar;\n }\n this._editToolbar = new EditorToolbar(this);\n this.div.append(this._editToolbar.render());\n const {\n toolbarButtons\n } = this;\n if (toolbarButtons) {\n for (const [name, tool] of toolbarButtons) {\n await this._editToolbar.addButton(name, tool);\n }\n }\n if (!this.hasComment) {\n this._editToolbar.addButton(\"comment\", this.addCommentButton());\n }\n this._editToolbar.addButton(\"delete\");\n return this._editToolbar;\n }\n addCommentButtonInToolbar() {\n this._editToolbar?.addButtonBefore(\"comment\", this.addCommentButton(), \".deleteButton\");\n }\n removeCommentButtonFromToolbar() {\n this._editToolbar?.removeButton(\"comment\");\n }\n removeEditToolbar() {\n this._editToolbar?.remove();\n this._editToolbar = null;\n this.#altText?.destroy();\n }\n addContainer(container) {\n const editToolbarDiv = this._editToolbar?.div;\n if (editToolbarDiv) {\n editToolbarDiv.before(container);\n } else {\n this.div.append(container);\n }\n }\n getClientDimensions() {\n return this.div.getBoundingClientRect();\n }\n createAltText() {\n if (!this.#altText) {\n AltText.initialize(AnnotationEditor._l10n);\n this.#altText = new AltText(this);\n if (this.#accessibilityData) {\n this.#altText.data = this.#accessibilityData;\n this.#accessibilityData = null;\n }\n }\n return this.#altText;\n }\n get altTextData() {\n return this.#altText?.data;\n }\n set altTextData(data) {\n if (!this.#altText) {\n return;\n }\n this.#altText.data = data;\n }\n get guessedAltText() {\n return this.#altText?.guessedText;\n }\n async setGuessedAltText(text) {\n await this.#altText?.setGuessedText(text);\n }\n serializeAltText(isForCopying) {\n return this.#altText?.serialize(isForCopying);\n }\n hasAltText() {\n return !!this.#altText && !this.#altText.isEmpty();\n }\n hasAltTextData() {\n return this.#altText?.hasData() ?? false;\n }\n focusCommentButton() {\n this.#comment?.focusButton();\n }\n addCommentButton() {\n return this.#comment ||= new Comment(this);\n }\n addStandaloneCommentButton() {\n if (this.#commentStandaloneButton) {\n if (this._uiManager.isEditingMode()) {\n this.#commentStandaloneButton.classList.remove(\"hidden\");\n }\n return;\n }\n if (!this.hasComment) {\n return;\n }\n this.#commentStandaloneButton = this.#comment.renderForStandalone();\n this.div.append(this.#commentStandaloneButton);\n }\n removeStandaloneCommentButton() {\n this.#comment.removeStandaloneCommentButton();\n this.#commentStandaloneButton = null;\n }\n hideStandaloneCommentButton() {\n this.#commentStandaloneButton?.classList.add(\"hidden\");\n }\n get comment() {\n const {\n data: {\n richText,\n text,\n date,\n deleted\n }\n } = this.#comment;\n return {\n text,\n richText,\n date,\n deleted,\n color: this.getNonHCMColor(),\n opacity: this.opacity ?? 1\n };\n }\n set comment(text) {\n this.#comment ||= new Comment(this);\n this.#comment.data = text;\n if (this.hasComment) {\n this.removeCommentButtonFromToolbar();\n this.addStandaloneCommentButton();\n this._uiManager.updateComment(this);\n } else {\n this.addCommentButtonInToolbar();\n this.removeStandaloneCommentButton();\n this._uiManager.removeComment(this);\n }\n }\n setCommentData({\n comment,\n popupRef,\n richText\n }) {\n if (!popupRef) {\n return;\n }\n this.#comment ||= new Comment(this);\n this.#comment.setInitialText(comment, richText);\n if (!this.annotationElementId) {\n return;\n }\n const storedData = this._uiManager.getAndRemoveDataFromAnnotationStorage(this.annotationElementId);\n if (storedData) {\n this.updateFromAnnotationLayer(storedData);\n }\n }\n get hasEditedComment() {\n return this.#comment?.hasBeenEdited();\n }\n get hasDeletedComment() {\n return this.#comment?.isDeleted();\n }\n get hasComment() {\n return !!this.#comment && !this.#comment.isEmpty() && !this.#comment.isDeleted();\n }\n async editComment(options) {\n this.#comment ||= new Comment(this);\n this.#comment.edit(options);\n }\n toggleComment(isSelected, visibility = void 0) {\n if (this.hasComment) {\n this._uiManager.toggleComment(this, isSelected, visibility);\n }\n }\n setSelectedCommentButton(selected) {\n this.#comment.setSelectedButton(selected);\n }\n addComment(serialized) {\n if (this.hasEditedComment) {\n const DEFAULT_POPUP_WIDTH = 180;\n const DEFAULT_POPUP_HEIGHT = 100;\n const [, , , trY] = serialized.rect;\n const [pageWidth] = this.pageDimensions;\n const [pageX] = this.pageTranslation;\n const blX = pageX + pageWidth + 1;\n const blY = trY - DEFAULT_POPUP_HEIGHT;\n const trX = blX + DEFAULT_POPUP_WIDTH;\n serialized.popup = {\n contents: this.comment.text,\n deleted: this.comment.deleted,\n rect: [blX, blY, trX, trY]\n };\n }\n }\n updateFromAnnotationLayer({\n popup: {\n contents,\n deleted\n }\n }) {\n this.#comment.data = deleted ? null : contents;\n }\n get parentBoundingClientRect() {\n return this.parent.boundingClientRect;\n }\n render() {\n const div = this.div = document.createElement(\"div\");\n div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n div.className = this.name;\n div.setAttribute(\"id\", this.id);\n div.tabIndex = this.#disabled ? -1 : 0;\n div.setAttribute(\"role\", \"application\");\n if (this.defaultL10nId) {\n div.setAttribute(\"data-l10n-id\", this.defaultL10nId);\n }\n if (!this._isVisible) {\n div.classList.add(\"hidden\");\n }\n this.setInForeground();\n this.#addFocusListeners();\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.parentRotation % 180 !== 0) {\n div.style.maxWidth = `${(100 * parentHeight / parentWidth).toFixed(2)}%`;\n div.style.maxHeight = `${(100 * parentWidth / parentHeight).toFixed(2)}%`;\n }\n const [tx, ty] = this.getInitialTranslation();\n this.translate(tx, ty);\n bindEvents(this, div, [\"keydown\", \"pointerdown\", \"dblclick\"]);\n if (this.isResizable && this._uiManager._supportsPinchToZoom) {\n this.#touchManager ||= new TouchManager({\n container: div,\n isPinchingDisabled: () => !this.isSelected,\n onPinchStart: this.#touchPinchStartCallback.bind(this),\n onPinching: this.#touchPinchCallback.bind(this),\n onPinchEnd: this.#touchPinchEndCallback.bind(this),\n signal: this._uiManager._signal\n });\n }\n this.addStandaloneCommentButton();\n this._uiManager._editorUndoBar?.hide();\n return div;\n }\n #touchPinchStartCallback() {\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n this.#altText?.toggle(false);\n this.parent.togglePointerEvents(false);\n }\n #touchPinchCallback(_origin, prevDistance, distance) {\n const slowDownFactor = 0.7;\n let factor = slowDownFactor * (distance / prevDistance) + 1 - slowDownFactor;\n if (factor === 1) {\n return;\n }\n const rotationMatrix = this.#getRotationMatrix(this.rotation);\n const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];\n const [parentWidth, parentHeight] = this.parentDimensions;\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n factor = Math.max(Math.min(factor, 1 / savedWidth, 1 / savedHeight), minWidth / savedWidth, minHeight / savedHeight);\n const newWidth = AnnotationEditor._round(savedWidth * factor);\n const newHeight = AnnotationEditor._round(savedHeight * factor);\n if (newWidth === savedWidth && newHeight === savedHeight) {\n return;\n }\n this.#initialRect ||= [savedX, savedY, savedWidth, savedHeight];\n const transfCenterPoint = transf(savedWidth / 2, savedHeight / 2);\n const centerX = AnnotationEditor._round(savedX + transfCenterPoint[0]);\n const centerY = AnnotationEditor._round(savedY + transfCenterPoint[1]);\n const newTransfCenterPoint = transf(newWidth / 2, newHeight / 2);\n this.x = centerX - newTransfCenterPoint[0];\n this.y = centerY - newTransfCenterPoint[1];\n this.width = newWidth;\n this.height = newHeight;\n this.setDims();\n this.fixAndSetPosition();\n this._onResizing();\n }\n #touchPinchEndCallback() {\n this.#altText?.toggle(true);\n this.parent.togglePointerEvents(true);\n this.#addResizeToUndoStack();\n }\n pointerdown(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n event.preventDefault();\n return;\n }\n this.#hasBeenClicked = true;\n if (this._isDraggable) {\n this.#setUpDragSession(event);\n return;\n }\n this.#selectOnPointerEvent(event);\n }\n #selectOnPointerEvent(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.ctrlKey && !isMac || event.shiftKey || event.metaKey && isMac) {\n this.parent.toggleSelected(this);\n } else {\n this.parent.setSelected(this);\n }\n }\n #setUpDragSession(event) {\n const {\n isSelected\n } = this;\n this._uiManager.setUpDragSession();\n let hasDraggingStarted = false;\n const ac = new AbortController();\n const signal = this._uiManager.combinedSignal(ac);\n const opts = {\n capture: true,\n passive: false,\n signal\n };\n const cancelDrag = (e) => {\n ac.abort();\n this.#dragPointerId = null;\n this.#hasBeenClicked = false;\n if (!this._uiManager.endDragSession()) {\n this.#selectOnPointerEvent(e);\n }\n if (hasDraggingStarted) {\n this._onStopDragging();\n }\n };\n if (isSelected) {\n this.#prevDragX = event.clientX;\n this.#prevDragY = event.clientY;\n this.#dragPointerId = event.pointerId;\n this.#dragPointerType = event.pointerType;\n window.addEventListener(\"pointermove\", (e) => {\n if (!hasDraggingStarted) {\n hasDraggingStarted = true;\n this._uiManager.toggleComment(this, true, false);\n this._onStartDragging();\n }\n const {\n clientX: x,\n clientY: y,\n pointerId\n } = e;\n if (pointerId !== this.#dragPointerId) {\n stopEvent(e);\n return;\n }\n const [tx, ty] = this.screenToPageTranslation(x - this.#prevDragX, y - this.#prevDragY);\n this.#prevDragX = x;\n this.#prevDragY = y;\n this._uiManager.dragSelectedEditors(tx, ty);\n }, opts);\n window.addEventListener(\"touchmove\", stopEvent, opts);\n window.addEventListener(\"pointerdown\", (e) => {\n if (e.pointerType === this.#dragPointerType) {\n if (this.#touchManager || e.isPrimary) {\n cancelDrag(e);\n }\n }\n stopEvent(e);\n }, opts);\n }\n const pointerUpCallback = (e) => {\n if (!this.#dragPointerId || this.#dragPointerId === e.pointerId) {\n cancelDrag(e);\n return;\n }\n stopEvent(e);\n };\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n }\n _onStartDragging() {\n }\n _onStopDragging() {\n }\n moveInDOM() {\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n }\n this.#moveInDOMTimeout = setTimeout(() => {\n this.#moveInDOMTimeout = null;\n this.parent?.moveEditorInDOM(this);\n }, 0);\n }\n _setParentAndPosition(parent, x, y) {\n parent.changeParent(this);\n this.x = x;\n this.y = y;\n this.fixAndSetPosition();\n this._onTranslated();\n }\n getRect(tx, ty, rotation = this.rotation) {\n const scale = this.parentScale;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const shiftX = tx / scale;\n const shiftY = ty / scale;\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 switch (rotation) {\n case 0:\n return [x + shiftX + pageX, pageHeight - y - shiftY - height + pageY, x + shiftX + width + pageX, pageHeight - y - shiftY + pageY];\n case 90:\n return [x + shiftY + pageX, pageHeight - y + shiftX + pageY, x + shiftY + height + pageX, pageHeight - y + shiftX + width + pageY];\n case 180:\n return [x - shiftX - width + pageX, pageHeight - y + shiftY + pageY, x - shiftX + pageX, pageHeight - y + shiftY + height + pageY];\n case 270:\n return [x - shiftY - height + pageX, pageHeight - y - shiftX - width + pageY, x - shiftY + pageX, pageHeight - y - shiftX + pageY];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n getRectInCurrentCoords(rect, pageHeight) {\n const [x1, y1, x2, y2] = rect;\n const width = x2 - x1;\n const height = y2 - y1;\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 getPDFRect() {\n return this.getRect(0, 0);\n }\n getNonHCMColor() {\n return this.color && AnnotationEditor._colorManager.convert(this._uiManager.getNonHCMColor(this.color));\n }\n onUpdatedColor() {\n this.#comment?.onUpdatedColor();\n }\n getData() {\n const {\n comment: {\n text: str,\n color,\n date,\n opacity,\n deleted,\n richText\n },\n uid: id,\n pageIndex,\n creationDate,\n modificationDate\n } = this;\n return {\n id,\n pageIndex,\n rect: this.getPDFRect(),\n richText,\n contentsObj: {\n str\n },\n creationDate,\n modificationDate: date || modificationDate,\n popupRef: !deleted,\n color,\n opacity\n };\n }\n onceAdded(focus) {\n }\n isEmpty() {\n return false;\n }\n enableEditMode() {\n if (this.isInEditMode()) {\n return false;\n }\n this.parent.setEditingState(false);\n this.#isInEditMode = true;\n return true;\n }\n disableEditMode() {\n if (!this.isInEditMode()) {\n return false;\n }\n this.parent.setEditingState(true);\n this.#isInEditMode = false;\n return true;\n }\n isInEditMode() {\n return this.#isInEditMode;\n }\n shouldGetKeyboardEvents() {\n return this.#isResizerEnabledForKeyboard;\n }\n needsToBeRebuilt() {\n return this.div && !this.isAttachedToDOM;\n }\n get isOnScreen() {\n const {\n top,\n left,\n bottom,\n right\n } = this.getClientDimensions();\n const {\n innerHeight,\n innerWidth\n } = window;\n return left < innerWidth && right > 0 && top < innerHeight && bottom > 0;\n }\n #addFocusListeners() {\n if (this.#focusAC || !this.div) {\n return;\n }\n this.#focusAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#focusAC);\n this.div.addEventListener(\"focusin\", this.focusin.bind(this), {\n signal\n });\n this.div.addEventListener(\"focusout\", this.focusout.bind(this), {\n signal\n });\n }\n rebuild() {\n this.#addFocusListeners();\n }\n rotate(_angle) {\n }\n resize() {\n }\n serializeDeleted() {\n return {\n id: this.annotationElementId,\n deleted: true,\n pageIndex: this.pageIndex,\n popupRef: this._initialData?.popupRef || \"\"\n };\n }\n serialize(isForCopying = false, context = null) {\n return {\n annotationType: this.mode,\n pageIndex: this.pageIndex,\n rect: this.getPDFRect(),\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId,\n popupRef: this._initialData?.popupRef || \"\"\n };\n }\n static async deserialize(data, parent, uiManager) {\n const editor = new this.prototype.constructor({\n parent,\n id: parent.getNextId(),\n uiManager,\n annotationElementId: data.annotationElementId,\n creationDate: data.creationDate,\n modificationDate: data.modificationDate\n });\n editor.rotation = data.rotation;\n editor.#accessibilityData = data.accessibilityData;\n editor._isCopy = data.isCopy || false;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [x, y, width, height] = editor.getRectInCurrentCoords(data.rect, pageHeight);\n editor.x = x / pageWidth;\n editor.y = y / pageHeight;\n editor.width = width / pageWidth;\n editor.height = height / pageHeight;\n return editor;\n }\n get hasBeenModified() {\n return !!this.annotationElementId && (this.deleted || this.serialize() !== null);\n }\n remove() {\n this.#focusAC?.abort();\n this.#focusAC = null;\n if (!this.isEmpty()) {\n this.commit();\n }\n if (this.parent) {\n this.parent.remove(this);\n } else {\n this._uiManager.removeEditor(this);\n }\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n this.#moveInDOMTimeout = null;\n }\n this.#stopResizing();\n this.removeEditToolbar();\n if (this.#telemetryTimeouts) {\n for (const timeout of this.#telemetryTimeouts.values()) {\n clearTimeout(timeout);\n }\n this.#telemetryTimeouts = null;\n }\n this.parent = null;\n this.#touchManager?.destroy();\n this.#touchManager = null;\n }\n get isResizable() {\n return false;\n }\n makeResizable() {\n if (this.isResizable) {\n this.#createResizers();\n this.#resizersDiv.classList.remove(\"hidden\");\n }\n }\n get toolbarPosition() {\n return null;\n }\n get commentButtonPosition() {\n return this._uiManager.direction === \"ltr\" ? [1, 0] : [0, 0];\n }\n get commentButtonPositionInPage() {\n const {\n commentButtonPosition: [posX, posY]\n } = this;\n const [blX, blY, trX, trY] = this.getPDFRect();\n return [AnnotationEditor._round(blX + (trX - blX) * posX), AnnotationEditor._round(blY + (trY - blY) * (1 - posY))];\n }\n get commentButtonColor() {\n return this._uiManager.makeCommentColor(this.getNonHCMColor(), this.opacity);\n }\n get commentPopupPosition() {\n return this.#comment.commentPopupPositionInLayer;\n }\n set commentPopupPosition(pos) {\n this.#comment.commentPopupPositionInLayer = pos;\n }\n hasDefaultPopupPosition() {\n return this.#comment.hasDefaultPopupPosition();\n }\n get commentButtonWidth() {\n return this.#comment.commentButtonWidth;\n }\n get elementBeforePopup() {\n return this.div;\n }\n setCommentButtonStates(options) {\n this.#comment.setCommentButtonStates(options);\n }\n keydown(event) {\n if (!this.isResizable || event.target !== this.div || event.key !== \"Enter\") {\n return;\n }\n this._uiManager.setSelected(this);\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n const children = this.#resizersDiv.children;\n if (!this.#allResizerDivs) {\n this.#allResizerDivs = Array.from(children);\n const boundResizerKeydown = this.#resizerKeydown.bind(this);\n const boundResizerBlur = this.#resizerBlur.bind(this);\n const signal = this._uiManager._signal;\n for (const div of this.#allResizerDivs) {\n const name = div.getAttribute(\"data-resizer-name\");\n div.setAttribute(\"role\", \"spinbutton\");\n div.addEventListener(\"keydown\", boundResizerKeydown, {\n signal\n });\n div.addEventListener(\"blur\", boundResizerBlur, {\n signal\n });\n div.addEventListener(\"focus\", this.#resizerFocus.bind(this, name), {\n signal\n });\n div.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n }\n }\n const first = this.#allResizerDivs[0];\n let firstPosition = 0;\n for (const div of children) {\n if (div === first) {\n break;\n }\n firstPosition++;\n }\n const nextFirstPosition = (360 - this.rotation + this.parentRotation) % 360 / 90 * (this.#allResizerDivs.length / 4);\n if (nextFirstPosition !== firstPosition) {\n if (nextFirstPosition < firstPosition) {\n for (let i2 = 0; i2 < firstPosition - nextFirstPosition; i2++) {\n this.#resizersDiv.append(this.#resizersDiv.firstChild);\n }\n } else if (nextFirstPosition > firstPosition) {\n for (let i2 = 0; i2 < nextFirstPosition - firstPosition; i2++) {\n this.#resizersDiv.firstChild.before(this.#resizersDiv.lastChild);\n }\n }\n let i = 0;\n for (const child of children) {\n const div = this.#allResizerDivs[i++];\n const name = div.getAttribute(\"data-resizer-name\");\n child.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n }\n }\n this.#setResizerTabIndex(0);\n this.#isResizerEnabledForKeyboard = true;\n this.#resizersDiv.firstChild.focus({\n focusVisible: true\n });\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n #resizerKeydown(event) {\n AnnotationEditor._resizerKeyboardManager.exec(this, event);\n }\n #resizerBlur(event) {\n if (this.#isResizerEnabledForKeyboard && event.relatedTarget?.parentNode !== this.#resizersDiv) {\n this.#stopResizing();\n }\n }\n #resizerFocus(name) {\n this.#focusedResizerName = this.#isResizerEnabledForKeyboard ? name : \"\";\n }\n #setResizerTabIndex(value) {\n if (!this.#allResizerDivs) {\n return;\n }\n for (const div of this.#allResizerDivs) {\n div.tabIndex = value;\n }\n }\n _resizeWithKeyboard(x, y) {\n if (!this.#isResizerEnabledForKeyboard) {\n return;\n }\n this.#resizerPointermove(this.#focusedResizerName, {\n deltaX: x,\n deltaY: y,\n fromKeyboard: true\n });\n }\n #stopResizing() {\n this.#isResizerEnabledForKeyboard = false;\n this.#setResizerTabIndex(-1);\n this.#addResizeToUndoStack();\n }\n _stopResizingWithKeyboard() {\n this.#stopResizing();\n this.div.focus();\n }\n select() {\n if (this.isSelected && this._editToolbar) {\n this._editToolbar.show();\n return;\n }\n this.isSelected = true;\n this.makeResizable();\n this.div?.classList.add(\"selectedEditor\");\n if (!this._editToolbar) {\n this.addEditToolbar().then(() => {\n if (this.div?.classList.contains(\"selectedEditor\")) {\n this._editToolbar?.show();\n }\n });\n return;\n }\n this._editToolbar?.show();\n this.#altText?.toggleAltTextBadge(false);\n }\n focus() {\n if (this.div && !this.div.contains(document.activeElement)) {\n setTimeout(() => this.div?.focus({\n preventScroll: true\n }), 0);\n }\n }\n unselect() {\n if (!this.isSelected) {\n return;\n }\n this.isSelected = false;\n this.#resizersDiv?.classList.add(\"hidden\");\n this.div?.classList.remove(\"selectedEditor\");\n if (this.div?.contains(document.activeElement)) {\n this._uiManager.currentLayer.div.focus({\n preventScroll: true\n });\n }\n this._editToolbar?.hide();\n this.#altText?.toggleAltTextBadge(true);\n if (this.hasComment) {\n this._uiManager.toggleComment(this, false, false);\n }\n }\n updateParams(type, value) {\n }\n disableEditing() {\n }\n enableEditing() {\n }\n get canChangeContent() {\n return false;\n }\n enterInEditMode() {\n if (!this.canChangeContent) {\n return;\n }\n this.enableEditMode();\n this.div.focus();\n }\n dblclick(event) {\n if (event.target.nodeName === \"BUTTON\") {\n return;\n }\n this.enterInEditMode();\n this.parent.updateToolbar({\n mode: this.constructor._editorType,\n editId: this.id\n });\n }\n getElementForAltText() {\n return this.div;\n }\n get contentDiv() {\n return this.div;\n }\n get isEditing() {\n return this.#isEditing;\n }\n set isEditing(value) {\n this.#isEditing = value;\n if (!this.parent) {\n return;\n }\n if (value) {\n this.parent.setSelected(this);\n this.parent.setActiveEditor(this);\n } else {\n this.parent.setActiveEditor(null);\n }\n }\n static get MIN_SIZE() {\n return 16;\n }\n static canCreateNewEmptyEditor() {\n return true;\n }\n get telemetryInitialData() {\n return {\n action: \"added\"\n };\n }\n get telemetryFinalData() {\n return null;\n }\n _reportTelemetry(data, mustWait = false) {\n if (mustWait) {\n this.#telemetryTimeouts ||= /* @__PURE__ */ new Map();\n const {\n action\n } = data;\n let timeout = this.#telemetryTimeouts.get(action);\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n this._reportTelemetry(data);\n this.#telemetryTimeouts.delete(action);\n if (this.#telemetryTimeouts.size === 0) {\n this.#telemetryTimeouts = null;\n }\n }, AnnotationEditor._telemetryTimeout);\n this.#telemetryTimeouts.set(action, timeout);\n return;\n }\n data.type ||= this.editorType;\n this._uiManager._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n data\n }\n });\n }\n show(visible = this._isVisible) {\n this.div.classList.toggle(\"hidden\", !visible);\n this._isVisible = visible;\n }\n enable() {\n if (this.div) {\n this.div.tabIndex = 0;\n }\n this.#disabled = false;\n }\n disable() {\n if (this.div) {\n this.div.tabIndex = -1;\n }\n this.#disabled = true;\n }\n updateFakeAnnotationElement(annotationLayer) {\n if (!this.#fakeAnnotation && !this.deleted) {\n this.#fakeAnnotation = annotationLayer.addFakeAnnotation(this);\n return;\n }\n if (this.deleted) {\n this.#fakeAnnotation.remove();\n this.#fakeAnnotation = null;\n return;\n }\n if (this.hasEditedComment || this._hasBeenMoved || this._hasBeenResized) {\n this.#fakeAnnotation.updateEdited({\n rect: this.getPDFRect(),\n popup: this.comment\n });\n }\n }\n renderAnnotationElement(annotation) {\n if (this.deleted) {\n annotation.hide();\n return null;\n }\n let content = annotation.container.querySelector(\".annotationContent\");\n if (!content) {\n content = document.createElement(\"div\");\n content.classList.add(\"annotationContent\", this.editorType);\n annotation.container.prepend(content);\n } else if (content.nodeName === \"CANVAS\") {\n const canvas = content;\n content = document.createElement(\"div\");\n content.classList.add(\"annotationContent\", this.editorType);\n canvas.before(content);\n }\n return content;\n }\n resetAnnotationElement(annotation) {\n const {\n firstChild\n } = annotation.container;\n if (firstChild?.nodeName === \"DIV\" && firstChild.classList.contains(\"annotationContent\")) {\n firstChild.remove();\n }\n }\n}\nclass FakeEditor extends AnnotationEditor {\n constructor(params) {\n super(params);\n this.annotationElementId = params.annotationElementId;\n this.deleted = true;\n }\n serialize() {\n return this.serializeDeleted();\n }\n}\nconst SEED = 3285377520;\nconst MASK_HIGH = 4294901760;\nconst MASK_LOW = 65535;\nclass MurmurHash3_64 {\n constructor(seed) {\n this.h1 = seed ? seed & 4294967295 : SEED;\n this.h2 = seed ? seed & 4294967295 : SEED;\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 <= 255) {\n data[length++] = code;\n } else {\n data[length++] = code >>> 8;\n data[length++] = code & 255;\n }\n }\n } else if (ArrayBuffer.isView(input)) {\n data = input.slice();\n length = data.byteLength;\n } else {\n throw new Error(\"Invalid data format, must be a string or TypedArray.\");\n }\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\n const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n let k1 = 0, k2 = 0;\n let h1 = this.h1, h2 = this.h2;\n const C1 = 3432918353, C2 = 461845907;\n const C1_LOW = C1 & MASK_LOW, C2_LOW = C2 & MASK_LOW;\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 + 3864292196;\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 + 3864292196;\n }\n }\n k1 = 0;\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n case 1:\n k1 ^= data[blockCounts * 4];\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 this.h1 = h1;\n this.h2 = h2;\n }\n hexdigest() {\n let h1 = this.h1, h2 = this.h2;\n h1 ^= h2 >>> 1;\n h1 = h1 * 3981806797 & MASK_HIGH | h1 * 36045 & MASK_LOW;\n h2 = h2 * 4283543511 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 2950163797 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n h1 = h1 * 444984403 & MASK_HIGH | h1 * 60499 & MASK_LOW;\n h2 = h2 * 3301882366 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 3120437893 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n return (h1 >>> 0).toString(16).padStart(8, \"0\") + (h2 >>> 0).toString(16).padStart(8, \"0\");\n }\n}\nconst SerializableEmpty = Object.freeze({\n map: null,\n hash: \"\",\n transfer: void 0\n});\nclass AnnotationStorage {\n #modified = false;\n #modifiedIds = null;\n #editorsMap = null;\n #storage = /* @__PURE__ */ new Map();\n constructor() {\n this.onSetModified = null;\n this.onResetModified = null;\n this.onAnnotationEditor = null;\n }\n getValue(key, defaultValue) {\n const value = this.#storage.get(key);\n if (value === void 0) {\n return defaultValue;\n }\n return Object.assign(defaultValue, value);\n }\n getRawValue(key) {\n return this.#storage.get(key);\n }\n remove(key) {\n const storedValue = this.#storage.get(key);\n if (storedValue === void 0) {\n return;\n }\n if (storedValue instanceof AnnotationEditor) {\n this.#editorsMap.delete(storedValue.annotationElementId);\n }\n this.#storage.delete(key);\n if (this.#storage.size === 0) {\n this.resetModified();\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 setValue(key, value) {\n const obj = this.#storage.get(key);\n let modified = false;\n if (obj !== void 0) {\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 if (value instanceof AnnotationEditor) {\n (this.#editorsMap ||= /* @__PURE__ */ new Map()).set(value.annotationElementId, value);\n if (typeof this.onAnnotationEditor === \"function\") {\n this.onAnnotationEditor(value.constructor._type);\n }\n }\n }\n has(key) {\n return this.#storage.has(key);\n }\n get size() {\n return this.#storage.size;\n }\n #setModified() {\n if (!this.#modified) {\n this.#modified = true;\n if (typeof this.onSetModified === \"function\") {\n this.onSetModified();\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 get print() {\n return new PrintAnnotationStorage(this);\n }\n get serializable() {\n if (this.#storage.size === 0) {\n return SerializableEmpty;\n }\n const map = /* @__PURE__ */ new Map(), hash = new MurmurHash3_64(), transfer = [];\n const context = /* @__PURE__ */ Object.create(null);\n let hasBitmap = false;\n for (const [key, val] of this.#storage) {\n const serialized = val instanceof AnnotationEditor ? val.serialize(false, context) : val;\n if (serialized) {\n map.set(key, serialized);\n hash.update(`${key}:${JSON.stringify(serialized)}`);\n hasBitmap ||= !!serialized.bitmap;\n }\n }\n if (hasBitmap) {\n for (const value of map.values()) {\n if (value.bitmap) {\n transfer.push(value.bitmap);\n }\n }\n }\n return map.size > 0 ? {\n map,\n hash: hash.hexdigest(),\n transfer\n } : SerializableEmpty;\n }\n get editorStats() {\n let stats = null;\n const typeToEditor = /* @__PURE__ */ new Map();\n let numberOfEditedComments = 0;\n let numberOfDeletedComments = 0;\n for (const value of this.#storage.values()) {\n if (!(value instanceof AnnotationEditor)) {\n if (value.popup) {\n if (value.popup.deleted) {\n numberOfDeletedComments += 1;\n } else {\n numberOfEditedComments += 1;\n }\n }\n continue;\n }\n if (value.isCommentDeleted) {\n numberOfDeletedComments += 1;\n } else if (value.hasEditedComment) {\n numberOfEditedComments += 1;\n }\n const editorStats = value.telemetryFinalData;\n if (!editorStats) {\n continue;\n }\n const {\n type\n } = editorStats;\n if (!typeToEditor.has(type)) {\n typeToEditor.set(type, Object.getPrototypeOf(value).constructor);\n }\n stats ||= /* @__PURE__ */ Object.create(null);\n const map = stats[type] ||= /* @__PURE__ */ new Map();\n for (const [key, val] of Object.entries(editorStats)) {\n if (key === \"type\") {\n continue;\n }\n let counters = map.get(key);\n if (!counters) {\n counters = /* @__PURE__ */ new Map();\n map.set(key, counters);\n }\n const count = counters.get(val) ?? 0;\n counters.set(val, count + 1);\n }\n }\n if (numberOfDeletedComments > 0 || numberOfEditedComments > 0) {\n stats ||= /* @__PURE__ */ Object.create(null);\n stats.comments = {\n deleted: numberOfDeletedComments,\n edited: numberOfEditedComments\n };\n }\n if (!stats) {\n return null;\n }\n for (const [type, editor] of typeToEditor) {\n stats[type] = editor.computeTelemetryFinalData(stats[type]);\n }\n return stats;\n }\n resetModifiedIds() {\n this.#modifiedIds = null;\n }\n updateEditor(annotationId, data) {\n const value = this.#editorsMap?.get(annotationId);\n if (value) {\n value.updateFromAnnotationLayer(data);\n return true;\n }\n return false;\n }\n getEditor(annotationId) {\n return this.#editorsMap?.get(annotationId) || null;\n }\n get modifiedIds() {\n if (this.#modifiedIds) {\n return this.#modifiedIds;\n }\n const ids = [];\n if (this.#editorsMap) {\n for (const value of this.#editorsMap.values()) {\n if (!value.serialize()) {\n continue;\n }\n ids.push(value.annotationElementId);\n }\n }\n return this.#modifiedIds = {\n ids: new Set(ids),\n hash: ids.join(\",\")\n };\n }\n [Symbol.iterator]() {\n return this.#storage.entries();\n }\n}\nclass PrintAnnotationStorage extends AnnotationStorage {\n #serializable;\n constructor(parent) {\n super();\n const {\n map,\n hash,\n transfer\n } = parent.serializable;\n const clone = structuredClone(map, transfer ? {\n transfer\n } : null);\n this.#serializable = {\n map: clone,\n hash,\n transfer\n };\n }\n get print() {\n unreachable(\"Should not call PrintAnnotationStorage.print\");\n }\n get serializable() {\n return this.#serializable;\n }\n get modifiedIds() {\n return shadow(this, \"modifiedIds\", {\n ids: /* @__PURE__ */ new Set(),\n hash: \"\"\n });\n }\n}\nclass FontLoader {\n #systemFonts = /* @__PURE__ */ new Set();\n constructor({\n ownerDocument = globalThis.document,\n styleElement = null\n }) {\n this._document = ownerDocument;\n this.nativeFontFaces = /* @__PURE__ */ new Set();\n this.styleElement = null;\n this.loadingRequests = [];\n this.loadTestFontId = 0;\n }\n addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.add(nativeFontFace);\n this._document.fonts.add(nativeFontFace);\n }\n removeNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.delete(nativeFontFace);\n this._document.fonts.delete(nativeFontFace);\n }\n insertRule(rule) {\n if (!this.styleElement) {\n this.styleElement = this._document.createElement(\"style\");\n this._document.documentElement.getElementsByTagName(\"head\")[0].append(this.styleElement);\n }\n const styleSheet = this.styleElement.sheet;\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n }\n clear() {\n for (const nativeFontFace of this.nativeFontFaces) {\n this._document.fonts.delete(nativeFontFace);\n }\n this.nativeFontFaces.clear();\n this.#systemFonts.clear();\n if (this.styleElement) {\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n async loadSystemFont({\n systemFontInfo: info2,\n disableFontFace,\n _inspectFont\n }) {\n if (!info2 || this.#systemFonts.has(info2.loadedName)) {\n return;\n }\n assert(!disableFontFace, \"loadSystemFont shouldn't be called when `disableFontFace` is set.\");\n if (this.isFontLoadingAPISupported) {\n const {\n loadedName,\n src,\n style\n } = info2;\n const fontFace = new FontFace(loadedName, src, style);\n this.addNativeFontFace(fontFace);\n try {\n await fontFace.load();\n this.#systemFonts.add(loadedName);\n _inspectFont?.(info2);\n } catch {\n warn(`Cannot load system font: ${info2.baseFontName}, installing it could help to improve PDF rendering.`);\n this.removeNativeFontFace(fontFace);\n }\n return;\n }\n unreachable(\"Not implemented: loadSystemFont without the Font Loading API.\");\n }\n async bind(font) {\n if (font.attached || font.missingFile && !font.systemFontInfo) {\n return;\n }\n font.attached = true;\n if (font.systemFontInfo) {\n await this.loadSystemFont(font);\n return;\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 warn(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n font.disableFontFace = true;\n throw ex;\n }\n }\n return;\n }\n const rule = font.createFontFaceRule();\n if (rule) {\n this.insertRule(rule);\n if (this.isSyncFontLoadingSupported) {\n return;\n }\n await new Promise((resolve) => {\n const request = this._queueLoadingCallback(resolve);\n this._prepareFontLoadEvent(font, request);\n });\n }\n }\n get isFontLoadingAPISupported() {\n const hasFonts = !!this._document?.fonts;\n return shadow(this, \"isFontLoadingAPISupported\", hasFonts);\n }\n get isSyncFontLoadingSupported() {\n return shadow(this, \"isSyncFontLoadingSupported\", isNodeJS || util_FeatureTest.platform.isFirefox);\n }\n _queueLoadingCallback(callback) {\n function completeRequest() {\n assert(!request.done, \"completeRequest() cannot be called twice.\");\n request.done = true;\n while (loadingRequests.length > 0 && loadingRequests[0].done) {\n const otherRequest = loadingRequests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n const {\n loadingRequests\n } = this;\n const request = {\n done: false,\n complete: completeRequest,\n callback\n };\n loadingRequests.push(request);\n return request;\n }\n get _loadTestFont() {\n const testFont = atob(\"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\");\n return shadow(this, \"_loadTestFont\", testFont);\n }\n _prepareFontLoadEvent(font, request) {\n function int32(data2, offset) {\n return data2.charCodeAt(offset) << 24 | data2.charCodeAt(offset + 1) << 16 | data2.charCodeAt(offset + 2) << 8 | data2.charCodeAt(offset + 3) & 255;\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 const canvas = this._document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n let called = 0;\n function isFontReady(name, callback) {\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 const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n let data = this._loadTestFont;\n const COMMENT_OFFSET = 976;\n data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);\n const CFF_CHECKSUM_OFFSET = 16;\n const XXXX_VALUE = 1482184792;\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 checksum = checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i) | 0;\n }\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\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 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 for (const name of [font.loadedName, loadTestFontId]) {\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 isFontReady(loadTestFontId, () => {\n div.remove();\n request.complete();\n });\n }\n}\nclass FontFaceObject {\n #fontData;\n constructor(translatedData, inspectFont = null, extra, charProcOperatorList) {\n this.compiledGlyphs = /* @__PURE__ */ Object.create(null);\n this.#fontData = translatedData;\n this._inspectFont = inspectFont;\n if (extra) {\n Object.assign(this, extra);\n }\n if (charProcOperatorList) {\n this.charProcOperatorList = charProcOperatorList;\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(this.cssFontInfo.fontFamily, this.data, css);\n }\n this._inspectFont?.(this);\n return nativeFontFace;\n }\n createFontFaceRule() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n const url = `url(data:${this.mimetype};base64,${toBase64Util(this.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 this._inspectFont?.(this, url);\n return rule;\n }\n getPathGenerator(objs, character) {\n if (this.compiledGlyphs[character] !== void 0) {\n return this.compiledGlyphs[character];\n }\n const objId = this.loadedName + \"_path_\" + character;\n let cmds;\n try {\n cmds = objs.get(objId);\n } catch (ex) {\n warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n }\n const path = new Path2D(cmds || \"\");\n if (!this.fontExtraProperties) {\n objs.delete(objId);\n }\n return this.compiledGlyphs[character] = path;\n }\n get black() {\n return this.#fontData.black;\n }\n get bold() {\n return this.#fontData.bold;\n }\n get disableFontFace() {\n return this.#fontData.disableFontFace ?? false;\n }\n get fontExtraProperties() {\n return this.#fontData.fontExtraProperties ?? false;\n }\n get isInvalidPDFjsFont() {\n return this.#fontData.isInvalidPDFjsFont;\n }\n get isType3Font() {\n return this.#fontData.isType3Font;\n }\n get italic() {\n return this.#fontData.italic;\n }\n get missingFile() {\n return this.#fontData.missingFile;\n }\n get remeasure() {\n return this.#fontData.remeasure;\n }\n get vertical() {\n return this.#fontData.vertical;\n }\n get ascent() {\n return this.#fontData.ascent;\n }\n get defaultWidth() {\n return this.#fontData.defaultWidth;\n }\n get descent() {\n return this.#fontData.descent;\n }\n get bbox() {\n return this.#fontData.bbox;\n }\n get fontMatrix() {\n return this.#fontData.fontMatrix;\n }\n get fallbackName() {\n return this.#fontData.fallbackName;\n }\n get loadedName() {\n return this.#fontData.loadedName;\n }\n get mimetype() {\n return this.#fontData.mimetype;\n }\n get name() {\n return this.#fontData.name;\n }\n get data() {\n return this.#fontData.data;\n }\n clearData() {\n this.#fontData.clearData();\n }\n get cssFontInfo() {\n return this.#fontData.cssFontInfo;\n }\n get systemFontInfo() {\n return this.#fontData.systemFontInfo;\n }\n get defaultVMetrics() {\n return this.#fontData.defaultVMetrics;\n }\n}\nfunction getUrlProp(val) {\n if (val instanceof URL) {\n return val.href;\n }\n if (typeof val === \"string\") {\n if (isNodeJS) {\n return val;\n }\n const url = URL.parse(val, window.location);\n if (url) {\n return url.href;\n }\n }\n throw new Error(\"Invalid PDF url data: either string or URL-object is expected in the url property.\");\n}\nfunction getDataProp(val) {\n if (isNodeJS && typeof Buffer !== \"undefined\" && val instanceof Buffer) {\n throw new Error(\"Please provide binary data as `Uint8Array`, rather than `Buffer`.\");\n }\n if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\n return val;\n }\n if (typeof val === \"string\") {\n return stringToBytes(val);\n }\n if (val instanceof ArrayBuffer || ArrayBuffer.isView(val) || typeof val === \"object\" && !isNaN(val?.length)) {\n return new Uint8Array(val);\n }\n throw new Error(\"Invalid PDF binary data: either TypedArray, string, or array-like object is expected in the data property.\");\n}\nfunction getFactoryUrlProp(val) {\n if (typeof val !== \"string\") {\n return null;\n }\n if (val.endsWith(\"/\")) {\n return val;\n }\n throw new Error(`Invalid factory url: \"${val}\" must include trailing slash.`);\n}\nconst isRefProxy = (v) => typeof v === \"object\" && Number.isInteger(v?.num) && v.num >= 0 && Number.isInteger(v?.gen) && v.gen >= 0;\nconst isNameProxy = (v) => typeof v === \"object\" && typeof v?.name === \"string\";\nconst isValidExplicitDest = _isValidExplicitDest.bind(null, isRefProxy, isNameProxy);\nclass LoopbackPort {\n #listeners = /* @__PURE__ */ new Map();\n #deferred = Promise.resolve();\n postMessage(obj, transfer) {\n const event = {\n data: structuredClone(obj, transfer ? {\n transfer\n } : null)\n };\n this.#deferred.then(() => {\n for (const [listener] of this.#listeners) {\n listener.call(this, event);\n }\n });\n }\n addEventListener(name, listener, options = null) {\n let rmAbort = null;\n if (options?.signal instanceof AbortSignal) {\n const {\n signal\n } = options;\n if (signal.aborted) {\n warn(\"LoopbackPort - cannot use an `aborted` signal.\");\n return;\n }\n const onAbort = () => this.removeEventListener(name, listener);\n rmAbort = () => signal.removeEventListener(\"abort\", onAbort);\n signal.addEventListener(\"abort\", onAbort);\n }\n this.#listeners.set(listener, rmAbort);\n }\n removeEventListener(name, listener) {\n const rmAbort = this.#listeners.get(listener);\n rmAbort?.();\n this.#listeners.delete(listener);\n }\n terminate() {\n for (const [, rmAbort] of this.#listeners) {\n rmAbort?.();\n }\n this.#listeners.clear();\n }\n}\nconst CallbackKind = {\n DATA: 1,\n ERROR: 2\n};\nconst StreamKind = {\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};\nfunction onFn() {\n}\nfunction wrapReason(ex) {\n if (ex instanceof AbortException$1 || ex instanceof InvalidPDFException$1 || ex instanceof PasswordException$1 || ex instanceof ResponseException$1 || ex instanceof UnknownErrorException$1) {\n return ex;\n }\n if (!(ex instanceof Error || typeof ex === \"object\" && ex !== null)) {\n unreachable('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n }\n switch (ex.name) {\n case \"AbortException\":\n return new AbortException$1(ex.message);\n case \"InvalidPDFException\":\n return new InvalidPDFException$1(ex.message);\n case \"PasswordException\":\n return new PasswordException$1(ex.message, ex.code);\n case \"ResponseException\":\n return new ResponseException$1(ex.message, ex.status, ex.missing);\n case \"UnknownErrorException\":\n return new UnknownErrorException$1(ex.message, ex.details);\n }\n return new UnknownErrorException$1(ex.message, ex.toString());\n}\nclass MessageHandler {\n #messageAC = new AbortController();\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 = /* @__PURE__ */ Object.create(null);\n this.streamControllers = /* @__PURE__ */ Object.create(null);\n this.callbackCapabilities = /* @__PURE__ */ Object.create(null);\n this.actionHandler = /* @__PURE__ */ Object.create(null);\n comObj.addEventListener(\"message\", this.#onMessage.bind(this), {\n signal: this.#messageAC.signal\n });\n }\n #onMessage({\n data\n }) {\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 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 sourceName = this.sourceName, targetName = data.sourceName, comObj = this.comObj;\n Promise.try(action, data.data).then(function(result) {\n comObj.postMessage({\n sourceName,\n targetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result\n });\n }, function(reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason)\n });\n });\n return;\n }\n if (data.streamId) {\n this.#createStreamSink(data);\n return;\n }\n action(data.data);\n }\n on(actionName, handler) {\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 send(actionName, data, transfers) {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data\n }, transfers);\n }\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = Promise.withResolvers();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data\n }, transfers);\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++, sourceName = this.sourceName, targetName = this.targetName, comObj = this.comObj;\n return new ReadableStream({\n start: (controller) => {\n const startCapability = Promise.withResolvers();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false\n };\n comObj.postMessage({\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize\n }, transfers);\n return startCapability.promise;\n },\n pull: (controller) => {\n const pullCapability = Promise.withResolvers();\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 return pullCapability.promise;\n },\n cancel: (reason) => {\n assert(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = Promise.withResolvers();\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 cancelCapability.promise;\n }\n }, queueingStrategy);\n }\n #createStreamSink(data) {\n const streamId = data.streamId, sourceName = this.sourceName, targetName = data.sourceName, comObj = this.comObj;\n const self2 = this, action = this.actionHandler[data.action];\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 if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = Promise.withResolvers();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk\n }, transfers);\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 self2.streamSinks[streamId];\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 sinkCapability: Promise.withResolvers(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null\n };\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n Promise.try(action, data.data, streamSink).then(function() {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true\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 #processStreamMessage(data) {\n const streamId = data.streamId, sourceName = this.sourceName, targetName = data.sourceName, comObj = this.comObj;\n const streamController = this.streamControllers[streamId], streamSink = this.streamSinks[streamId];\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 if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n break;\n }\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n streamSink.desiredSize = data.desiredSize;\n Promise.try(streamSink.onPull || onFn).then(function() {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\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 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 const dataReason = wrapReason(data.reason);\n Promise.try(streamSink.onCancel || onFn, dataReason).then(function() {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true\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 streamSink.sinkCapability.reject(dataReason);\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n async #deleteStreamController(streamController, streamId) {\n await Promise.allSettled([streamController.startCall?.promise, streamController.pullCall?.promise, streamController.cancelCall?.promise]);\n delete this.streamControllers[streamId];\n }\n destroy() {\n this.#messageAC?.abort();\n this.#messageAC = null;\n }\n}\nclass BaseCanvasFactory {\n #enableHWA = false;\n constructor({\n enableHWA = false\n }) {\n this.#enableHWA = enableHWA;\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 willReadFrequently: !this.#enableHWA\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 destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n _createCanvas(width, height) {\n unreachable(\"Abstract method `_createCanvas` called.\");\n }\n}\nclass DOMCanvasFactory extends BaseCanvasFactory {\n constructor({\n ownerDocument = globalThis.document,\n enableHWA = false\n }) {\n super({\n enableHWA\n });\n this._document = ownerDocument;\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}\nclass BaseCMapReaderFactory {\n constructor({\n baseUrl = null,\n isCompressed = true\n }) {\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n async fetch({\n name\n }) {\n if (!this.baseUrl) {\n throw new Error(\"Ensure that the `cMapUrl` and `cMapPacked` API parameters are provided.\");\n }\n if (!name) {\n throw new Error(\"CMap name must be specified.\");\n }\n const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n return this._fetch(url).then((cMapData) => ({\n cMapData,\n isCompressed: this.isCompressed\n })).catch((reason) => {\n throw new Error(`Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`);\n });\n }\n async _fetch(url) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\n async _fetch(url) {\n const data = await fetchData(url, this.isCompressed ? \"arraybuffer\" : \"text\");\n return data instanceof ArrayBuffer ? new Uint8Array(data) : stringToBytes(data);\n }\n}\n__webpack_require__(2489);\nclass BaseFilterFactory {\n addFilter(maps) {\n return \"none\";\n }\n addHCMFilter(fgColor, bgColor) {\n return \"none\";\n }\n addAlphaFilter(map) {\n return \"none\";\n }\n addLuminosityFilter(map) {\n return \"none\";\n }\n addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n return \"none\";\n }\n destroy(keepHCM = false) {\n }\n}\nclass DOMFilterFactory extends BaseFilterFactory {\n #baseUrl;\n #_cache;\n #_defs;\n #docId;\n #document;\n #_hcmCache;\n #id = 0;\n constructor({\n docId,\n ownerDocument = globalThis.document\n }) {\n super();\n this.#docId = docId;\n this.#document = ownerDocument;\n }\n get #cache() {\n return this.#_cache ||= /* @__PURE__ */ new Map();\n }\n get #hcmCache() {\n return this.#_hcmCache ||= /* @__PURE__ */ new Map();\n }\n get #defs() {\n if (!this.#_defs) {\n const div = this.#document.createElement(\"div\");\n const {\n style\n } = div;\n style.visibility = \"hidden\";\n style.contain = \"strict\";\n style.width = style.height = 0;\n style.position = \"absolute\";\n style.top = style.left = 0;\n style.zIndex = -1;\n const svg = this.#document.createElementNS(SVG_NS, \"svg\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n this.#_defs = this.#document.createElementNS(SVG_NS, \"defs\");\n div.append(svg);\n svg.append(this.#_defs);\n this.#document.body.append(div);\n }\n return this.#_defs;\n }\n #createTables(maps) {\n if (maps.length === 1) {\n const mapR2 = maps[0];\n const buffer = new Array(256);\n for (let i = 0; i < 256; i++) {\n buffer[i] = mapR2[i] / 255;\n }\n const table = buffer.join(\",\");\n return [table, table, table];\n }\n const [mapR, mapG, mapB] = maps;\n const bufferR = new Array(256);\n const bufferG = new Array(256);\n const bufferB = new Array(256);\n for (let i = 0; i < 256; i++) {\n bufferR[i] = mapR[i] / 255;\n bufferG[i] = mapG[i] / 255;\n bufferB[i] = mapB[i] / 255;\n }\n return [bufferR.join(\",\"), bufferG.join(\",\"), bufferB.join(\",\")];\n }\n #createUrl(id) {\n if (this.#baseUrl === void 0) {\n this.#baseUrl = \"\";\n const url = this.#document.URL;\n if (url !== this.#document.baseURI) {\n if (isDataScheme(url)) {\n warn('#createUrl: ignore \"data:\"-URL for performance reasons.');\n } else {\n this.#baseUrl = updateUrlHash(url, \"\");\n }\n }\n }\n return `url(${this.#baseUrl}#${id})`;\n }\n addFilter(maps) {\n if (!maps) {\n return \"none\";\n }\n let value = this.#cache.get(maps);\n if (value) {\n return value;\n }\n const [tableR, tableG, tableB] = this.#createTables(maps);\n const key = maps.length === 1 ? tableR : `${tableR}${tableG}${tableB}`;\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(maps, value);\n return value;\n }\n const id = `g_${this.#docId}_transfer_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(maps, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addTransferMapConversion(tableR, tableG, tableB, filter);\n return url;\n }\n addHCMFilter(fgColor, bgColor) {\n const key = `${fgColor}-${bgColor}`;\n const filterName = \"base\";\n let info2 = this.#hcmCache.get(filterName);\n if (info2?.key === key) {\n return info2.url;\n }\n if (info2) {\n info2.filter?.remove();\n info2.key = key;\n info2.url = \"none\";\n info2.filter = null;\n } else {\n info2 = {\n key,\n url: \"none\",\n filter: null\n };\n this.#hcmCache.set(filterName, info2);\n }\n if (!fgColor || !bgColor) {\n return info2.url;\n }\n const fgRGB = this.#getRGB(fgColor);\n fgColor = Util.makeHexColor(...fgRGB);\n const bgRGB = this.#getRGB(bgColor);\n bgColor = Util.makeHexColor(...bgRGB);\n this.#defs.style.color = \"\";\n if (fgColor === \"#000000\" && bgColor === \"#ffffff\" || fgColor === bgColor) {\n return info2.url;\n }\n const map = new Array(256);\n for (let i = 0; i <= 255; i++) {\n const x = i / 255;\n map[i] = x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n }\n const table = map.join(\",\");\n const id = `g_${this.#docId}_hcm_filter`;\n const filter = info2.filter = this.#createFilter(id);\n this.#addTransferMapConversion(table, table, table, filter);\n this.#addGrayConversion(filter);\n const getSteps = (c, n) => {\n const start = fgRGB[c] / 255;\n const end = bgRGB[c] / 255;\n const arr = new Array(n + 1);\n for (let i = 0; i <= n; i++) {\n arr[i] = start + i / n * (end - start);\n }\n return arr.join(\",\");\n };\n this.#addTransferMapConversion(getSteps(0, 5), getSteps(1, 5), getSteps(2, 5), filter);\n info2.url = this.#createUrl(id);\n return info2.url;\n }\n addAlphaFilter(map) {\n let value = this.#cache.get(map);\n if (value) {\n return value;\n }\n const [tableA] = this.#createTables([map]);\n const key = `alpha_${tableA}`;\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(map, value);\n return value;\n }\n const id = `g_${this.#docId}_alpha_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(map, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addTransferMapAlphaConversion(tableA, filter);\n return url;\n }\n addLuminosityFilter(map) {\n let value = this.#cache.get(map || \"luminosity\");\n if (value) {\n return value;\n }\n let tableA, key;\n if (map) {\n [tableA] = this.#createTables([map]);\n key = `luminosity_${tableA}`;\n } else {\n key = \"luminosity\";\n }\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(map, value);\n return value;\n }\n const id = `g_${this.#docId}_luminosity_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(map, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addLuminosityConversion(filter);\n if (map) {\n this.#addTransferMapAlphaConversion(tableA, filter);\n }\n return url;\n }\n addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`;\n let info2 = this.#hcmCache.get(filterName);\n if (info2?.key === key) {\n return info2.url;\n }\n if (info2) {\n info2.filter?.remove();\n info2.key = key;\n info2.url = \"none\";\n info2.filter = null;\n } else {\n info2 = {\n key,\n url: \"none\",\n filter: null\n };\n this.#hcmCache.set(filterName, info2);\n }\n if (!fgColor || !bgColor) {\n return info2.url;\n }\n const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this));\n let fgGray = Math.round(0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]);\n let bgGray = Math.round(0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]);\n let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(this.#getRGB.bind(this));\n if (bgGray < fgGray) {\n [fgGray, bgGray, newFgRGB, newBgRGB] = [bgGray, fgGray, newBgRGB, newFgRGB];\n }\n this.#defs.style.color = \"\";\n const getSteps = (fg, bg, n) => {\n const arr = new Array(256);\n const step = (bgGray - fgGray) / n;\n const newStart = fg / 255;\n const newStep = (bg - fg) / (255 * n);\n let prev = 0;\n for (let i = 0; i <= n; i++) {\n const k = Math.round(fgGray + i * step);\n const value = newStart + i * newStep;\n for (let j = prev; j <= k; j++) {\n arr[j] = value;\n }\n prev = k + 1;\n }\n for (let i = prev; i < 256; i++) {\n arr[i] = arr[prev - 1];\n }\n return arr.join(\",\");\n };\n const id = `g_${this.#docId}_hcm_${filterName}_filter`;\n const filter = info2.filter = this.#createFilter(id);\n this.#addGrayConversion(filter);\n this.#addTransferMapConversion(getSteps(newFgRGB[0], newBgRGB[0], 5), getSteps(newFgRGB[1], newBgRGB[1], 5), getSteps(newFgRGB[2], newBgRGB[2], 5), filter);\n info2.url = this.#createUrl(id);\n return info2.url;\n }\n destroy(keepHCM = false) {\n if (keepHCM && this.#_hcmCache?.size) {\n return;\n }\n this.#_defs?.parentNode.parentNode.remove();\n this.#_defs = null;\n this.#_cache?.clear();\n this.#_cache = null;\n this.#_hcmCache?.clear();\n this.#_hcmCache = null;\n this.#id = 0;\n }\n #addLuminosityConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\"values\", \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0\");\n filter.append(feColorMatrix);\n }\n #addGrayConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\"values\", \"0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0\");\n filter.append(feColorMatrix);\n }\n #createFilter(id) {\n const filter = this.#document.createElementNS(SVG_NS, \"filter\");\n filter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\n filter.setAttribute(\"id\", id);\n this.#defs.append(filter);\n return filter;\n }\n #appendFeFunc(feComponentTransfer, func, table) {\n const feFunc = this.#document.createElementNS(SVG_NS, func);\n feFunc.setAttribute(\"type\", \"discrete\");\n feFunc.setAttribute(\"tableValues\", table);\n feComponentTransfer.append(feFunc);\n }\n #addTransferMapConversion(rTable, gTable, bTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncR\", rTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncG\", gTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncB\", bTable);\n }\n #addTransferMapAlphaConversion(aTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncA\", aTable);\n }\n #getRGB(color) {\n this.#defs.style.color = color;\n return getRGB(getComputedStyle(this.#defs).getPropertyValue(\"color\"));\n }\n}\nclass BaseStandardFontDataFactory {\n constructor({\n baseUrl = null\n }) {\n this.baseUrl = baseUrl;\n }\n async fetch({\n filename\n }) {\n if (!this.baseUrl) {\n throw new Error(\"Ensure that the `standardFontDataUrl` API parameter is provided.\");\n }\n if (!filename) {\n throw new Error(\"Font filename must be specified.\");\n }\n const url = `${this.baseUrl}${filename}`;\n return this._fetch(url).catch((reason) => {\n throw new Error(`Unable to load font data at: ${url}`);\n });\n }\n async _fetch(url) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\n async _fetch(url) {\n const data = await fetchData(url, \"arraybuffer\");\n return new Uint8Array(data);\n }\n}\nclass BaseWasmFactory {\n constructor({\n baseUrl = null\n }) {\n this.baseUrl = baseUrl;\n }\n async fetch({\n filename\n }) {\n if (!this.baseUrl) {\n throw new Error(\"Ensure that the `wasmUrl` API parameter is provided.\");\n }\n if (!filename) {\n throw new Error(\"Wasm filename must be specified.\");\n }\n const url = `${this.baseUrl}${filename}`;\n return this._fetch(url).catch((reason) => {\n throw new Error(`Unable to load wasm data at: ${url}`);\n });\n }\n async _fetch(url) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMWasmFactory extends BaseWasmFactory {\n async _fetch(url) {\n const data = await fetchData(url, \"arraybuffer\");\n return new Uint8Array(data);\n }\n}\nif (isNodeJS) {\n let canvas;\n try {\n const require2 = process.getBuiltinModule(\"module\").createRequire(import.meta.url);\n try {\n canvas = require2(\"@napi-rs/canvas\");\n } catch (ex) {\n warn(`Cannot load \"@napi-rs/canvas\" package: \"${ex}\".`);\n }\n } catch (ex) {\n warn(`Cannot access the \\`require\\` function: \"${ex}\".`);\n }\n if (!globalThis.DOMMatrix) {\n if (canvas?.DOMMatrix) {\n globalThis.DOMMatrix = canvas.DOMMatrix;\n } else {\n warn(\"Cannot polyfill `DOMMatrix`, rendering may be broken.\");\n }\n }\n if (!globalThis.ImageData) {\n if (canvas?.ImageData) {\n globalThis.ImageData = canvas.ImageData;\n } else {\n warn(\"Cannot polyfill `ImageData`, rendering may be broken.\");\n }\n }\n if (!globalThis.Path2D) {\n if (canvas?.Path2D) {\n globalThis.Path2D = canvas.Path2D;\n } else {\n warn(\"Cannot polyfill `Path2D`, rendering may be broken.\");\n }\n }\n if (!globalThis.navigator?.language) {\n globalThis.navigator = {\n language: \"en-US\",\n platform: \"\",\n userAgent: \"\"\n };\n }\n}\nasync function node_utils_fetchData(url) {\n const fs = process.getBuiltinModule(\"fs\");\n const data = await fs.promises.readFile(url);\n return new Uint8Array(data);\n}\nclass NodeFilterFactory extends BaseFilterFactory {\n}\nclass NodeCanvasFactory extends BaseCanvasFactory {\n _createCanvas(width, height) {\n const require2 = process.getBuiltinModule(\"module\").createRequire(import.meta.url);\n const canvas = require2(\"@napi-rs/canvas\");\n return canvas.createCanvas(width, height);\n }\n}\nclass NodeCMapReaderFactory extends BaseCMapReaderFactory {\n async _fetch(url) {\n return node_utils_fetchData(url);\n }\n}\nclass NodeStandardFontDataFactory extends BaseStandardFontDataFactory {\n async _fetch(url) {\n return node_utils_fetchData(url);\n }\n}\nclass NodeWasmFactory extends BaseWasmFactory {\n async _fetch(url) {\n return node_utils_fetchData(url);\n }\n}\n__webpack_require__(7588);\nconst FORCED_DEPENDENCY_LABEL = \"__forcedDependency\";\nconst {\n floor,\n ceil\n} = Math;\nfunction expandBBox(array, index, minX, minY, maxX, maxY) {\n array[index * 4 + 0] = Math.min(array[index * 4 + 0], minX);\n array[index * 4 + 1] = Math.min(array[index * 4 + 1], minY);\n array[index * 4 + 2] = Math.max(array[index * 4 + 2], maxX);\n array[index * 4 + 3] = Math.max(array[index * 4 + 3], maxY);\n}\nconst EMPTY_BBOX = new Uint32Array(new Uint8Array([255, 255, 0, 0]).buffer)[0];\nclass BBoxReader {\n #bboxes;\n #coords;\n constructor(bboxes, coords) {\n this.#bboxes = bboxes;\n this.#coords = coords;\n }\n get length() {\n return this.#bboxes.length;\n }\n isEmpty(i) {\n return this.#bboxes[i] === EMPTY_BBOX;\n }\n minX(i) {\n return this.#coords[i * 4 + 0] / 256;\n }\n minY(i) {\n return this.#coords[i * 4 + 1] / 256;\n }\n maxX(i) {\n return (this.#coords[i * 4 + 2] + 1) / 256;\n }\n maxY(i) {\n return (this.#coords[i * 4 + 3] + 1) / 256;\n }\n}\nconst ensureDebugMetadata = (map, key) => {\n if (!map) {\n return void 0;\n }\n let value = map.get(key);\n if (!value) {\n value = {\n dependencies: /* @__PURE__ */ new Set(),\n isRenderingOperation: false\n };\n map.set(key, value);\n }\n return value;\n};\nclass CanvasDependencyTracker {\n #simple = {\n __proto__: null\n };\n #incremental = {\n __proto__: null,\n transform: [],\n moveText: [],\n sameLineText: [],\n [FORCED_DEPENDENCY_LABEL]: []\n };\n #namedDependencies = /* @__PURE__ */ new Map();\n #savesStack = [];\n #markedContentStack = [];\n #baseTransformStack = [[1, 0, 0, 1, 0, 0]];\n #clipBox = [-Infinity, -Infinity, Infinity, Infinity];\n #pendingBBox = new Float64Array([Infinity, Infinity, -Infinity, -Infinity]);\n #pendingBBoxIdx = -1;\n #pendingDependencies = /* @__PURE__ */ new Set();\n #operations = /* @__PURE__ */ new Map();\n #fontBBoxTrustworthy = /* @__PURE__ */ new Map();\n #canvasWidth;\n #canvasHeight;\n #bboxesCoords;\n #bboxes;\n #debugMetadata;\n constructor(canvas, operationsCount, recordDebugMetadata = false) {\n this.#canvasWidth = canvas.width;\n this.#canvasHeight = canvas.height;\n this.#initializeBBoxes(operationsCount);\n if (recordDebugMetadata) {\n this.#debugMetadata = /* @__PURE__ */ new Map();\n }\n }\n growOperationsCount(operationsCount) {\n if (operationsCount >= this.#bboxes.length) {\n this.#initializeBBoxes(operationsCount, this.#bboxes);\n }\n }\n #initializeBBoxes(operationsCount, oldBBoxes) {\n const buffer = new ArrayBuffer(operationsCount * 4);\n this.#bboxesCoords = new Uint8ClampedArray(buffer);\n this.#bboxes = new Uint32Array(buffer);\n if (oldBBoxes && oldBBoxes.length > 0) {\n this.#bboxes.set(oldBBoxes);\n this.#bboxes.fill(EMPTY_BBOX, oldBBoxes.length);\n } else {\n this.#bboxes.fill(EMPTY_BBOX);\n }\n }\n save(opIdx) {\n this.#simple = {\n __proto__: this.#simple\n };\n this.#incremental = {\n __proto__: this.#incremental,\n transform: {\n __proto__: this.#incremental.transform\n },\n moveText: {\n __proto__: this.#incremental.moveText\n },\n sameLineText: {\n __proto__: this.#incremental.sameLineText\n },\n [FORCED_DEPENDENCY_LABEL]: {\n __proto__: this.#incremental[FORCED_DEPENDENCY_LABEL]\n }\n };\n this.#clipBox = {\n __proto__: this.#clipBox\n };\n this.#savesStack.push(opIdx);\n return this;\n }\n restore(opIdx) {\n const previous = Object.getPrototypeOf(this.#simple);\n if (previous === null) {\n return this;\n }\n this.#simple = previous;\n this.#incremental = Object.getPrototypeOf(this.#incremental);\n this.#clipBox = Object.getPrototypeOf(this.#clipBox);\n const lastSave = this.#savesStack.pop();\n if (lastSave !== void 0) {\n ensureDebugMetadata(this.#debugMetadata, opIdx)?.dependencies.add(lastSave);\n this.#bboxes[opIdx] = this.#bboxes[lastSave];\n }\n return this;\n }\n recordOpenMarker(idx) {\n this.#savesStack.push(idx);\n return this;\n }\n getOpenMarker() {\n if (this.#savesStack.length === 0) {\n return null;\n }\n return this.#savesStack.at(-1);\n }\n recordCloseMarker(opIdx) {\n const lastSave = this.#savesStack.pop();\n if (lastSave !== void 0) {\n ensureDebugMetadata(this.#debugMetadata, opIdx)?.dependencies.add(lastSave);\n this.#bboxes[opIdx] = this.#bboxes[lastSave];\n }\n return this;\n }\n beginMarkedContent(opIdx) {\n this.#markedContentStack.push(opIdx);\n return this;\n }\n endMarkedContent(opIdx) {\n const lastSave = this.#markedContentStack.pop();\n if (lastSave !== void 0) {\n ensureDebugMetadata(this.#debugMetadata, opIdx)?.dependencies.add(lastSave);\n this.#bboxes[opIdx] = this.#bboxes[lastSave];\n }\n return this;\n }\n pushBaseTransform(ctx) {\n this.#baseTransformStack.push(Util.multiplyByDOMMatrix(this.#baseTransformStack.at(-1), ctx.getTransform()));\n return this;\n }\n popBaseTransform() {\n if (this.#baseTransformStack.length > 1) {\n this.#baseTransformStack.pop();\n }\n return this;\n }\n recordSimpleData(name, idx) {\n this.#simple[name] = idx;\n return this;\n }\n recordIncrementalData(name, idx) {\n this.#incremental[name].push(idx);\n return this;\n }\n resetIncrementalData(name, idx) {\n this.#incremental[name].length = 0;\n return this;\n }\n recordNamedData(name, idx) {\n this.#namedDependencies.set(name, idx);\n return this;\n }\n recordSimpleDataFromNamed(name, depName, fallbackIdx) {\n this.#simple[name] = this.#namedDependencies.get(depName) ?? fallbackIdx;\n }\n recordFutureForcedDependency(name, idx) {\n this.recordIncrementalData(FORCED_DEPENDENCY_LABEL, idx);\n return this;\n }\n inheritSimpleDataAsFutureForcedDependencies(names) {\n for (const name of names) {\n if (name in this.#simple) {\n this.recordFutureForcedDependency(name, this.#simple[name]);\n }\n }\n return this;\n }\n inheritPendingDependenciesAsFutureForcedDependencies() {\n for (const dep of this.#pendingDependencies) {\n this.recordFutureForcedDependency(FORCED_DEPENDENCY_LABEL, dep);\n }\n return this;\n }\n resetBBox(idx) {\n if (this.#pendingBBoxIdx !== idx) {\n this.#pendingBBoxIdx = idx;\n this.#pendingBBox[0] = Infinity;\n this.#pendingBBox[1] = Infinity;\n this.#pendingBBox[2] = -Infinity;\n this.#pendingBBox[3] = -Infinity;\n }\n return this;\n }\n recordClipBox(idx, ctx, minX, maxX, minY, maxY) {\n const transform = Util.multiplyByDOMMatrix(this.#baseTransformStack.at(-1), ctx.getTransform());\n const clipBox = [Infinity, Infinity, -Infinity, -Infinity];\n Util.axialAlignedBoundingBox([minX, minY, maxX, maxY], transform, clipBox);\n const intersection = Util.intersect(this.#clipBox, clipBox);\n if (intersection) {\n this.#clipBox[0] = intersection[0];\n this.#clipBox[1] = intersection[1];\n this.#clipBox[2] = intersection[2];\n this.#clipBox[3] = intersection[3];\n } else {\n this.#clipBox[0] = this.#clipBox[1] = Infinity;\n this.#clipBox[2] = this.#clipBox[3] = -Infinity;\n }\n return this;\n }\n recordBBox(idx, ctx, minX, maxX, minY, maxY) {\n const clipBox = this.#clipBox;\n if (clipBox[0] === Infinity) {\n return this;\n }\n const transform = Util.multiplyByDOMMatrix(this.#baseTransformStack.at(-1), ctx.getTransform());\n if (clipBox[0] === -Infinity) {\n Util.axialAlignedBoundingBox([minX, minY, maxX, maxY], transform, this.#pendingBBox);\n return this;\n }\n const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n Util.axialAlignedBoundingBox([minX, minY, maxX, maxY], transform, bbox);\n this.#pendingBBox[0] = Math.min(this.#pendingBBox[0], Math.max(bbox[0], clipBox[0]));\n this.#pendingBBox[1] = Math.min(this.#pendingBBox[1], Math.max(bbox[1], clipBox[1]));\n this.#pendingBBox[2] = Math.max(this.#pendingBBox[2], Math.min(bbox[2], clipBox[2]));\n this.#pendingBBox[3] = Math.max(this.#pendingBBox[3], Math.min(bbox[3], clipBox[3]));\n return this;\n }\n recordCharacterBBox(idx, ctx, font, scale = 1, x = 0, y = 0, getMeasure) {\n const fontBBox = font.bbox;\n let isBBoxTrustworthy;\n let computedBBox;\n if (fontBBox) {\n isBBoxTrustworthy = fontBBox[2] !== fontBBox[0] && fontBBox[3] !== fontBBox[1] && this.#fontBBoxTrustworthy.get(font);\n if (isBBoxTrustworthy !== false) {\n computedBBox = [0, 0, 0, 0];\n Util.axialAlignedBoundingBox(fontBBox, font.fontMatrix, computedBBox);\n if (scale !== 1 || x !== 0 || y !== 0) {\n Util.scaleMinMax([scale, 0, 0, -scale, x, y], computedBBox);\n }\n if (isBBoxTrustworthy) {\n return this.recordBBox(idx, ctx, computedBBox[0], computedBBox[2], computedBBox[1], computedBBox[3]);\n }\n }\n }\n if (!getMeasure) {\n return this.recordFullPageBBox(idx);\n }\n const measure = getMeasure();\n if (fontBBox && computedBBox && isBBoxTrustworthy === void 0) {\n isBBoxTrustworthy = computedBBox[0] <= x - measure.actualBoundingBoxLeft && computedBBox[2] >= x + measure.actualBoundingBoxRight && computedBBox[1] <= y - measure.actualBoundingBoxAscent && computedBBox[3] >= y + measure.actualBoundingBoxDescent;\n this.#fontBBoxTrustworthy.set(font, isBBoxTrustworthy);\n if (isBBoxTrustworthy) {\n return this.recordBBox(idx, ctx, computedBBox[0], computedBBox[2], computedBBox[1], computedBBox[3]);\n }\n }\n return this.recordBBox(idx, ctx, x - measure.actualBoundingBoxLeft, x + measure.actualBoundingBoxRight, y - measure.actualBoundingBoxAscent, y + measure.actualBoundingBoxDescent);\n }\n recordFullPageBBox(idx) {\n this.#pendingBBox[0] = Math.max(0, this.#clipBox[0]);\n this.#pendingBBox[1] = Math.max(0, this.#clipBox[1]);\n this.#pendingBBox[2] = Math.min(this.#canvasWidth, this.#clipBox[2]);\n this.#pendingBBox[3] = Math.min(this.#canvasHeight, this.#clipBox[3]);\n return this;\n }\n getSimpleIndex(dependencyName) {\n return this.#simple[dependencyName];\n }\n recordDependencies(idx, dependencyNames) {\n const pendingDependencies = this.#pendingDependencies;\n const simple = this.#simple;\n const incremental = this.#incremental;\n for (const name of dependencyNames) {\n if (name in this.#simple) {\n pendingDependencies.add(simple[name]);\n } else if (name in incremental) {\n incremental[name].forEach(pendingDependencies.add, pendingDependencies);\n }\n }\n return this;\n }\n recordNamedDependency(idx, name) {\n if (this.#namedDependencies.has(name)) {\n this.#pendingDependencies.add(this.#namedDependencies.get(name));\n }\n return this;\n }\n recordOperation(idx, preserve = false) {\n this.recordDependencies(idx, [FORCED_DEPENDENCY_LABEL]);\n if (this.#debugMetadata) {\n const metadata = ensureDebugMetadata(this.#debugMetadata, idx);\n const {\n dependencies\n } = metadata;\n this.#pendingDependencies.forEach(dependencies.add, dependencies);\n this.#savesStack.forEach(dependencies.add, dependencies);\n this.#markedContentStack.forEach(dependencies.add, dependencies);\n dependencies.delete(idx);\n metadata.isRenderingOperation = true;\n }\n if (this.#pendingBBoxIdx === idx) {\n const minX = floor(this.#pendingBBox[0] * 256 / this.#canvasWidth);\n const minY = floor(this.#pendingBBox[1] * 256 / this.#canvasHeight);\n const maxX = ceil(this.#pendingBBox[2] * 256 / this.#canvasWidth);\n const maxY = ceil(this.#pendingBBox[3] * 256 / this.#canvasHeight);\n expandBBox(this.#bboxesCoords, idx, minX, minY, maxX, maxY);\n for (const depIdx of this.#pendingDependencies) {\n if (depIdx !== idx) {\n expandBBox(this.#bboxesCoords, depIdx, minX, minY, maxX, maxY);\n }\n }\n for (const saveIdx of this.#savesStack) {\n if (saveIdx !== idx) {\n expandBBox(this.#bboxesCoords, saveIdx, minX, minY, maxX, maxY);\n }\n }\n for (const saveIdx of this.#markedContentStack) {\n if (saveIdx !== idx) {\n expandBBox(this.#bboxesCoords, saveIdx, minX, minY, maxX, maxY);\n }\n }\n if (!preserve) {\n this.#pendingDependencies.clear();\n this.#pendingBBoxIdx = -1;\n }\n }\n return this;\n }\n recordShowTextOperation(idx, preserve = false) {\n const deps = Array.from(this.#pendingDependencies);\n this.recordOperation(idx, preserve);\n this.recordIncrementalData(\"sameLineText\", idx);\n for (const dep of deps) {\n this.recordIncrementalData(\"sameLineText\", dep);\n }\n return this;\n }\n bboxToClipBoxDropOperation(idx, preserve = false) {\n if (this.#pendingBBoxIdx === idx) {\n this.#pendingBBoxIdx = -1;\n this.#clipBox[0] = Math.max(this.#clipBox[0], this.#pendingBBox[0]);\n this.#clipBox[1] = Math.max(this.#clipBox[1], this.#pendingBBox[1]);\n this.#clipBox[2] = Math.min(this.#clipBox[2], this.#pendingBBox[2]);\n this.#clipBox[3] = Math.min(this.#clipBox[3], this.#pendingBBox[3]);\n if (!preserve) {\n this.#pendingDependencies.clear();\n }\n }\n return this;\n }\n _takePendingDependencies() {\n const pendingDependencies = this.#pendingDependencies;\n this.#pendingDependencies = /* @__PURE__ */ new Set();\n return pendingDependencies;\n }\n _extractOperation(idx) {\n const operation = this.#operations.get(idx);\n this.#operations.delete(idx);\n return operation;\n }\n _pushPendingDependencies(dependencies) {\n for (const dep of dependencies) {\n this.#pendingDependencies.add(dep);\n }\n }\n take() {\n this.#fontBBoxTrustworthy.clear();\n return new BBoxReader(this.#bboxes, this.#bboxesCoords);\n }\n takeDebugMetadata() {\n return this.#debugMetadata;\n }\n}\nclass CanvasNestedDependencyTracker {\n #dependencyTracker;\n #opIdx;\n #ignoreBBoxes;\n #nestingLevel = 0;\n #savesLevel = 0;\n constructor(dependencyTracker, opIdx, ignoreBBoxes) {\n if (dependencyTracker instanceof CanvasNestedDependencyTracker && dependencyTracker.#ignoreBBoxes === !!ignoreBBoxes) {\n return dependencyTracker;\n }\n this.#dependencyTracker = dependencyTracker;\n this.#opIdx = opIdx;\n this.#ignoreBBoxes = !!ignoreBBoxes;\n }\n growOperationsCount() {\n throw new Error(\"Unreachable\");\n }\n save(opIdx) {\n this.#savesLevel++;\n this.#dependencyTracker.save(this.#opIdx);\n return this;\n }\n restore(opIdx) {\n if (this.#savesLevel > 0) {\n this.#dependencyTracker.restore(this.#opIdx);\n this.#savesLevel--;\n }\n return this;\n }\n recordOpenMarker(idx) {\n this.#nestingLevel++;\n return this;\n }\n getOpenMarker() {\n return this.#nestingLevel > 0 ? this.#opIdx : this.#dependencyTracker.getOpenMarker();\n }\n recordCloseMarker(idx) {\n this.#nestingLevel--;\n return this;\n }\n beginMarkedContent(opIdx) {\n return this;\n }\n endMarkedContent(opIdx) {\n return this;\n }\n pushBaseTransform(ctx) {\n this.#dependencyTracker.pushBaseTransform(ctx);\n return this;\n }\n popBaseTransform() {\n this.#dependencyTracker.popBaseTransform();\n return this;\n }\n recordSimpleData(name, idx) {\n this.#dependencyTracker.recordSimpleData(name, this.#opIdx);\n return this;\n }\n recordIncrementalData(name, idx) {\n this.#dependencyTracker.recordIncrementalData(name, this.#opIdx);\n return this;\n }\n resetIncrementalData(name, idx) {\n this.#dependencyTracker.resetIncrementalData(name, this.#opIdx);\n return this;\n }\n recordNamedData(name, idx) {\n return this;\n }\n recordSimpleDataFromNamed(name, depName, fallbackIdx) {\n this.#dependencyTracker.recordSimpleDataFromNamed(name, depName, this.#opIdx);\n return this;\n }\n recordFutureForcedDependency(name, idx) {\n this.#dependencyTracker.recordFutureForcedDependency(name, this.#opIdx);\n return this;\n }\n inheritSimpleDataAsFutureForcedDependencies(names) {\n this.#dependencyTracker.inheritSimpleDataAsFutureForcedDependencies(names);\n return this;\n }\n inheritPendingDependenciesAsFutureForcedDependencies() {\n this.#dependencyTracker.inheritPendingDependenciesAsFutureForcedDependencies();\n return this;\n }\n resetBBox(idx) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.resetBBox(this.#opIdx);\n }\n return this;\n }\n recordClipBox(idx, ctx, minX, maxX, minY, maxY) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.recordClipBox(this.#opIdx, ctx, minX, maxX, minY, maxY);\n }\n return this;\n }\n recordBBox(idx, ctx, minX, maxX, minY, maxY) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.recordBBox(this.#opIdx, ctx, minX, maxX, minY, maxY);\n }\n return this;\n }\n recordCharacterBBox(idx, ctx, font, scale, x, y, getMeasure) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.recordCharacterBBox(this.#opIdx, ctx, font, scale, x, y, getMeasure);\n }\n return this;\n }\n recordFullPageBBox(idx) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.recordFullPageBBox(this.#opIdx);\n }\n return this;\n }\n getSimpleIndex(dependencyName) {\n return this.#dependencyTracker.getSimpleIndex(dependencyName);\n }\n recordDependencies(idx, dependencyNames) {\n this.#dependencyTracker.recordDependencies(this.#opIdx, dependencyNames);\n return this;\n }\n recordNamedDependency(idx, name) {\n this.#dependencyTracker.recordNamedDependency(this.#opIdx, name);\n return this;\n }\n recordOperation(idx) {\n this.#dependencyTracker.recordOperation(this.#opIdx, true);\n return this;\n }\n recordShowTextOperation(idx) {\n this.#dependencyTracker.recordShowTextOperation(this.#opIdx, true);\n return this;\n }\n bboxToClipBoxDropOperation(idx) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.bboxToClipBoxDropOperation(this.#opIdx, true);\n }\n return this;\n }\n take() {\n throw new Error(\"Unreachable\");\n }\n takeDebugMetadata() {\n throw new Error(\"Unreachable\");\n }\n}\nconst Dependencies = {\n stroke: [\"path\", \"transform\", \"filter\", \"strokeColor\", \"strokeAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"dash\"],\n fill: [\"path\", \"transform\", \"filter\", \"fillColor\", \"fillAlpha\", \"globalCompositeOperation\", \"SMask\"],\n imageXObject: [\"transform\", \"SMask\", \"filter\", \"fillAlpha\", \"strokeAlpha\", \"globalCompositeOperation\"],\n rawFillPath: [\"filter\", \"fillColor\", \"fillAlpha\"],\n showText: [\"transform\", \"leading\", \"charSpacing\", \"wordSpacing\", \"hScale\", \"textRise\", \"moveText\", \"textMatrix\", \"font\", \"fontObj\", \"filter\", \"fillColor\", \"textRenderingMode\", \"SMask\", \"fillAlpha\", \"strokeAlpha\", \"globalCompositeOperation\", \"sameLineText\"],\n transform: [\"transform\"],\n transformAndFill: [\"transform\", \"fillColor\"]\n};\nconst PathType = {\n FILL: \"Fill\",\n STROKE: \"Stroke\",\n SHADING: \"Shading\"\n};\nfunction applyBoundingBox(ctx, bbox) {\n if (!bbox) {\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}\nclass BaseShadingPattern {\n isModifyingCurrentTransform() {\n return false;\n }\n getPattern() {\n unreachable(\"Abstract method `getPattern` called.\");\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 _createGradient(ctx) {\n let grad;\n if (this._type === \"axial\") {\n grad = ctx.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]);\n } else if (this._type === \"radial\") {\n grad = ctx.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], this._r1);\n }\n for (const colorStop of this._colorStops) {\n grad.addColorStop(colorStop[0], colorStop[1]);\n }\n return grad;\n }\n getPattern(ctx, owner, inverse, pathType) {\n let pattern;\n if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n const ownerBBox = owner.current.getClippedPathBoundingBox(pathType, getCurrentTransform(ctx)) || [0, 0, 0, 0];\n const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", width, height);\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 tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n inverse = Util.transform(inverse, [1, 0, 0, 1, ownerBBox[0], ownerBBox[1]]);\n tmpCtx.transform(...owner.baseTransform);\n if (this.matrix) {\n tmpCtx.transform(...this.matrix);\n }\n applyBoundingBox(tmpCtx, this._bbox);\n tmpCtx.fillStyle = this._createGradient(tmpCtx);\n tmpCtx.fill();\n pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n const domMatrix = new DOMMatrix(inverse);\n pattern.setTransform(domMatrix);\n } else {\n applyBoundingBox(ctx, this._bbox);\n pattern = this._createGradient(ctx);\n }\n return pattern;\n }\n}\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n const coords = context.coords, colors = context.colors;\n const bytes = data.data, 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], c1g = colors[c1 + 1], c1b = colors[c1 + 2];\n const c2r = colors[c2], c2g = colors[c2 + 1], c2b = colors[c2 + 2];\n const c3r = colors[c3], c3g = colors[c3 + 1], c3b = colors[c3 + 2];\n const minY = Math.round(y1), 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 const k2 = y < y1 ? 0 : (y1 - y) / (y1 - y2);\n xa = x1 - (x1 - x2) * k2;\n car = c1r - (c1r - c2r) * k2;\n cag = c1g - (c1g - c2g) * k2;\n cab = c1b - (c1b - c2b) * k2;\n } else {\n let k2;\n if (y > y3) {\n k2 = 1;\n } else if (y2 === y3) {\n k2 = 0;\n } else {\n k2 = (y2 - y) / (y2 - y3);\n }\n xa = x2 - (x2 - x3) * k2;\n car = c2r - (c2r - c3r) * k2;\n cag = c2g - (c2g - c3g) * k2;\n cab = c2b - (c2b - c3b) * k2;\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}\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(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]);\n drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);\n }\n }\n break;\n case \"triangles\":\n for (i = 0, ii = ps.length; i < ii; i += 3) {\n drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]);\n }\n break;\n default:\n throw new Error(\"illegal figure\");\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[6];\n this._background = IR[7];\n this.matrix = null;\n }\n _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n const EXPECTED_SCALE = 1.1;\n const MAX_PATTERN_SIZE = 3e3;\n const BORDER_SIZE = 2;\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 const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n const scaleX = boundsWidth / width;\n const scaleY = boundsHeight / height;\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 const paddedWidth = width + BORDER_SIZE * 2;\n const paddedHeight = height + BORDER_SIZE * 2;\n const tmpCanvas = cachedCanvases.getCanvas(\"mesh\", paddedWidth, paddedHeight);\n const tmpCtx = tmpCanvas.context;\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 return {\n canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX,\n scaleY\n };\n }\n isModifyingCurrentTransform() {\n return true;\n }\n getPattern(ctx, owner, inverse, pathType) {\n applyBoundingBox(ctx, this._bbox);\n const scale = new Float32Array(2);\n if (pathType === PathType.SHADING) {\n Util.singularValueDecompose2dScale(getCurrentTransform(ctx), scale);\n } else if (this.matrix) {\n Util.singularValueDecompose2dScale(this.matrix, scale);\n const [matrixScaleX, matrixScaleY] = scale;\n Util.singularValueDecompose2dScale(owner.baseTransform, scale);\n scale[0] *= matrixScaleX;\n scale[1] *= matrixScaleY;\n } else {\n Util.singularValueDecompose2dScale(owner.baseTransform, scale);\n }\n const temporaryPatternCanvas = this._createMeshCanvas(scale, pathType === PathType.SHADING ? null : this._background, owner.cachedCanvases);\n if (pathType !== PathType.SHADING) {\n ctx.setTransform(...owner.baseTransform);\n if (this.matrix) {\n ctx.transform(...this.matrix);\n }\n }\n ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n }\n}\nclass DummyShadingPattern extends BaseShadingPattern {\n getPattern() {\n return \"hotpink\";\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}\nconst PaintType = {\n COLORED: 1,\n UNCOLORED: 2\n};\nclass TilingPattern {\n static MAX_PATTERN_SIZE = 3e3;\n constructor(IR, ctx, canvasGraphicsFactory, baseTransform) {\n this.color = IR[1];\n this.operatorList = IR[2];\n this.matrix = IR[3];\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.ctx = ctx;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n }\n createPatternCanvas(owner, opIdx) {\n const {\n bbox,\n operatorList,\n paintType,\n tilingType,\n color,\n canvasGraphicsFactory\n } = this;\n let {\n xstep,\n ystep\n } = this;\n xstep = Math.abs(xstep);\n ystep = Math.abs(ystep);\n info(\"TilingType: \" + tilingType);\n const x0 = bbox[0], y0 = bbox[1], x1 = bbox[2], y1 = bbox[3];\n const width = x1 - x0;\n const height = y1 - y0;\n const scale = new Float32Array(2);\n Util.singularValueDecompose2dScale(this.matrix, scale);\n const [matrixScaleX, matrixScaleY] = scale;\n Util.singularValueDecompose2dScale(this.baseTransform, scale);\n const combinedScaleX = matrixScaleX * scale[0];\n const combinedScaleY = matrixScaleY * scale[1];\n let canvasWidth = width, canvasHeight = height, redrawHorizontally = false, redrawVertically = false;\n const xScaledStep = Math.ceil(xstep * combinedScaleX);\n const yScaledStep = Math.ceil(ystep * combinedScaleY);\n const xScaledWidth = Math.ceil(width * combinedScaleX);\n const yScaledHeight = Math.ceil(height * combinedScaleY);\n if (xScaledStep >= xScaledWidth) {\n canvasWidth = xstep;\n } else {\n redrawHorizontally = true;\n }\n if (yScaledStep >= yScaledHeight) {\n canvasHeight = ystep;\n } else {\n redrawVertically = true;\n }\n const dimx = this.getSizeAndScale(canvasWidth, this.ctx.canvas.width, combinedScaleX);\n const dimy = this.getSizeAndScale(canvasHeight, this.ctx.canvas.height, combinedScaleY);\n const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", dimx.size, dimy.size);\n const tmpCtx = tmpCanvas.context;\n const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx, opIdx);\n graphics.groupLevel = owner.groupLevel;\n this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n tmpCtx.translate(-dimx.scale * x0, -dimy.scale * y0);\n graphics.transform(0, dimx.scale, 0, 0, dimy.scale, 0, 0);\n tmpCtx.save();\n graphics.dependencyTracker?.save();\n this.clipBbox(graphics, x0, y0, x1, y1);\n graphics.baseTransform = getCurrentTransform(graphics.ctx);\n graphics.executeOperatorList(operatorList);\n graphics.endDrawing();\n graphics.dependencyTracker?.restore();\n tmpCtx.restore();\n if (redrawHorizontally || redrawVertically) {\n const image = tmpCanvas.canvas;\n if (redrawHorizontally) {\n canvasWidth = xstep;\n }\n if (redrawVertically) {\n canvasHeight = ystep;\n }\n const dimx2 = this.getSizeAndScale(canvasWidth, this.ctx.canvas.width, combinedScaleX);\n const dimy2 = this.getSizeAndScale(canvasHeight, this.ctx.canvas.height, combinedScaleY);\n const xSize = dimx2.size;\n const ySize = dimy2.size;\n const tmpCanvas2 = owner.cachedCanvases.getCanvas(\"pattern-workaround\", xSize, ySize);\n const tmpCtx2 = tmpCanvas2.context;\n const ii = redrawHorizontally ? Math.floor(width / xstep) : 0;\n const jj = redrawVertically ? Math.floor(height / ystep) : 0;\n for (let i = 0; i <= ii; i++) {\n for (let j = 0; j <= jj; j++) {\n tmpCtx2.drawImage(image, xSize * i, ySize * j, xSize, ySize, 0, 0, xSize, ySize);\n }\n }\n return {\n canvas: tmpCanvas2.canvas,\n scaleX: dimx2.scale,\n scaleY: dimy2.scale,\n offsetX: x0,\n offsetY: y0\n };\n }\n return {\n canvas: tmpCanvas.canvas,\n scaleX: dimx.scale,\n scaleY: dimy.scale,\n offsetX: x0,\n offsetY: y0\n };\n }\n getSizeAndScale(step, realOutputSize, scale) {\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 {\n scale,\n 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 Util.axialAlignedBoundingBox([x0, y0, x1, y1], getCurrentTransform(graphics.ctx), graphics.current.minMax);\n graphics.clip();\n graphics.endPath();\n }\n setFillAndStrokeStyleToContext(graphics, paintType, color) {\n const context = graphics.ctx, current = graphics.current;\n switch (paintType) {\n case PaintType.COLORED:\n const {\n fillStyle,\n strokeStyle\n } = this.ctx;\n context.fillStyle = current.fillColor = fillStyle;\n context.strokeStyle = current.strokeColor = strokeStyle;\n break;\n case PaintType.UNCOLORED:\n context.fillStyle = context.strokeStyle = color;\n current.fillColor = current.strokeColor = color;\n break;\n default:\n throw new FormatError$1(`Unsupported paint type: ${paintType}`);\n }\n }\n isModifyingCurrentTransform() {\n return false;\n }\n getPattern(ctx, owner, inverse, pathType, opIdx) {\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 const temporaryPatternCanvas = this.createPatternCanvas(owner, opIdx);\n let domMatrix = new DOMMatrix(matrix);\n domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY);\n const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n pattern.setTransform(domMatrix);\n return pattern;\n }\n}\nfunction convertBlackAndWhiteToRGBA({\n src,\n srcPos = 0,\n dest,\n width,\n height,\n nonBlackColor = 4294967295,\n inverseDecode = false\n}) {\n const black = util_FeatureTest.isLittleEndian ? 4278190080 : 255;\n const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor];\n const widthInSource = width >> 3;\n const widthRemainder = width & 7;\n const srcLength = src.length;\n dest = new Uint32Array(dest.buffer);\n let destPos = 0;\n for (let i = 0; i < height; i++) {\n for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {\n const elem2 = srcPos < srcLength ? src[srcPos] : 255;\n dest[destPos++] = elem2 & 128 ? oneMapping : zeroMapping;\n dest[destPos++] = elem2 & 64 ? oneMapping : zeroMapping;\n dest[destPos++] = elem2 & 32 ? oneMapping : zeroMapping;\n dest[destPos++] = elem2 & 16 ? oneMapping : zeroMapping;\n dest[destPos++] = elem2 & 8 ? oneMapping : zeroMapping;\n dest[destPos++] = elem2 & 4 ? oneMapping : zeroMapping;\n dest[destPos++] = elem2 & 2 ? oneMapping : zeroMapping;\n dest[destPos++] = elem2 & 1 ? 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 return {\n srcPos,\n destPos\n };\n}\nconst MIN_FONT_SIZE = 16;\nconst MAX_FONT_SIZE = 100;\nconst EXECUTION_TIME = 15;\nconst EXECUTION_STEPS = 10;\nconst FULL_CHUNK_HEIGHT = 16;\nconst SCALE_MATRIX = new DOMMatrix();\nconst XY = new Float32Array(2);\nconst MIN_MAX_INIT = new Float32Array([Infinity, Infinity, -Infinity, -Infinity]);\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 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 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 ctx.save = function() {\n destCtx.save();\n this.__originalSave();\n };\n ctx.restore = function() {\n destCtx.restore();\n this.__originalRestore();\n };\n ctx.translate = function(x, y) {\n destCtx.translate(x, y);\n this.__originalTranslate(x, y);\n };\n ctx.scale = function(x, y) {\n destCtx.scale(x, y);\n this.__originalScale(x, y);\n };\n ctx.transform = function(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 ctx.setTransform = function(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 ctx.resetTransform = function() {\n destCtx.resetTransform();\n this.__originalResetTransform();\n };\n ctx.rotate = function(angle) {\n destCtx.rotate(angle);\n this.__originalRotate(angle);\n };\n ctx.clip = function(rule) {\n destCtx.clip(rule);\n this.__originalClip(rule);\n };\n ctx.moveTo = function(x, y) {\n destCtx.moveTo(x, y);\n this.__originalMoveTo(x, y);\n };\n ctx.lineTo = function(x, y) {\n destCtx.lineTo(x, y);\n this.__originalLineTo(x, y);\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 ctx.rect = function(x, y, width, height) {\n destCtx.rect(x, y, width, height);\n this.__originalRect(x, y, width, height);\n };\n ctx.closePath = function() {\n destCtx.closePath();\n this.__originalClosePath();\n };\n ctx.beginPath = function() {\n destCtx.beginPath();\n this.__originalBeginPath();\n };\n}\nclass CachedCanvases {\n constructor(canvasFactory) {\n this.canvasFactory = canvasFactory;\n this.cache = /* @__PURE__ */ Object.create(null);\n }\n getCanvas(id, width, height) {\n let canvasEntry;\n if (this.cache[id] !== void 0) {\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 delete(id) {\n delete this.cache[id];\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}\nfunction drawImageAtIntegerCoords(ctx, srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH) {\n const [a, b, c, d, tx, ty] = getCurrentTransform(ctx);\n if (b === 0 && c === 0) {\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 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 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 return [rWidth, rHeight];\n }\n if (a === 0 && d === 0) {\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 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 return [rHeight, rWidth];\n }\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);\n const scaleX = Math.hypot(a, b);\n const scaleY = Math.hypot(c, d);\n return [scaleX * destW, scaleY * destH];\n}\nclass CanvasExtraState {\n alphaIsShape = false;\n fontSize = 0;\n fontSizeScale = 1;\n textMatrix = null;\n textMatrixScale = 1;\n fontMatrix = FONT_IDENTITY_MATRIX;\n leading = 0;\n x = 0;\n y = 0;\n lineX = 0;\n lineY = 0;\n charSpacing = 0;\n wordSpacing = 0;\n textHScale = 1;\n textRenderingMode = TextRenderingMode.FILL;\n textRise = 0;\n fillColor = \"#000000\";\n strokeColor = \"#000000\";\n patternFill = false;\n patternStroke = false;\n fillAlpha = 1;\n strokeAlpha = 1;\n lineWidth = 1;\n activeSMask = null;\n transferMaps = \"none\";\n constructor(width, height, preInit) {\n preInit?.(this);\n this.clipBox = new Float32Array([0, 0, width, height]);\n this.minMax = MIN_MAX_INIT.slice();\n }\n clone() {\n const clone = Object.create(this);\n clone.clipBox = this.clipBox.slice();\n clone.minMax = this.minMax.slice();\n return clone;\n }\n getPathBoundingBox(pathType = PathType.FILL, transform = null) {\n const box = this.minMax.slice();\n if (pathType === PathType.STROKE) {\n if (!transform) {\n unreachable(\"Stroke bounding box must include transform.\");\n }\n Util.singularValueDecompose2dScale(transform, XY);\n const xStrokePad = XY[0] * this.lineWidth / 2;\n const yStrokePad = XY[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 updateClipFromPath() {\n const intersect = Util.intersect(this.clipBox, this.getPathBoundingBox());\n this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n }\n isEmptyClip() {\n return this.minMax[0] === Infinity;\n }\n startNewPathAndClipBox(box) {\n this.clipBox.set(box, 0);\n this.minMax.set(MIN_MAX_INIT, 0);\n }\n getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\n return Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform));\n }\n}\nfunction putBinaryImageData(ctx, imgData) {\n if (imgData instanceof ImageData) {\n ctx.putImageData(imgData, 0, 0);\n return;\n }\n const height = imgData.height, 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 const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0, destPos;\n const src = imgData.data;\n const dest = chunkImgData.data;\n let i, j, thisChunkHeight, elemsInThisChunk;\n if (imgData.kind === util_ImageKind.GRAYSCALE_1BPP) {\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 const white = 4294967295;\n const black = util_FeatureTest.isLittleEndian ? 4278190080 : 255;\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 & -8;\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 dest32[destPos++] = srcByte & mask ? white : black;\n mask >>= 1;\n }\n }\n while (destPos < dest32DataLength) {\n dest32[destPos++] = 0;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (imgData.kind === util_ImageKind.RGBA_32BPP) {\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 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 ctx.putImageData(chunkImgData, 0, j);\n }\n } else if (imgData.kind === util_ImageKind.RGB_24BPP) {\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 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 ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(`bad image kind: ${imgData.kind}`);\n }\n}\nfunction putBinaryImageMask(ctx, imgData) {\n if (imgData.bitmap) {\n ctx.drawImage(imgData.bitmap, 0, 0);\n return;\n }\n const height = imgData.height, 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 const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0;\n const src = imgData.data;\n const dest = chunkImgData.data;\n for (let i = 0; i < totalChunks; i++) {\n const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n ({\n srcPos\n } = convertBlackAndWhiteToRGBA({\n src,\n srcPos,\n dest,\n width,\n height: thisChunkHeight,\n nonBlackColor: 0\n }));\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n}\nfunction copyCtxState(sourceCtx, destCtx) {\n const properties = [\"strokeStyle\", \"fillStyle\", \"fillRule\", \"globalAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"globalCompositeOperation\", \"font\", \"filter\"];\n for (const property of properties) {\n if (sourceCtx[property] !== void 0) {\n destCtx[property] = sourceCtx[property];\n }\n }\n if (sourceCtx.setLineDash !== void 0) {\n destCtx.setLineDash(sourceCtx.getLineDash());\n destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n }\n}\nfunction resetCtxToDefault(ctx) {\n ctx.strokeStyle = ctx.fillStyle = \"#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 !== void 0) {\n ctx.setLineDash([]);\n ctx.lineDashOffset = 0;\n }\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n}\nfunction getImageSmoothingEnabled(transform, interpolate) {\n if (interpolate) {\n return true;\n }\n Util.singularValueDecompose2dScale(transform, XY);\n const actualScale = Math.fround(OutputScale.pixelRatio * PixelsPerInch.PDF_TO_CSS_UNITS);\n return XY[0] <= actualScale && XY[1] <= actualScale;\n}\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\nclass CanvasGraphics {\n constructor(canvasCtx, commonObjs, objs, canvasFactory, filterFactory, {\n optionalContentConfig,\n markedContentStack = null\n }, annotationCanvasMap, pageColors, dependencyTracker) {\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\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.filterFactory = filterFactory;\n this.groupStack = [];\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 = markedContentStack || [];\n this.optionalContentConfig = optionalContentConfig;\n this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n this.cachedPatterns = /* @__PURE__ */ new Map();\n this.annotationCanvasMap = annotationCanvasMap;\n this.viewportScale = 1;\n this.outputScaleX = 1;\n this.outputScaleY = 1;\n this.pageColors = pageColors;\n this._cachedScaleForStroking = [-1, 0];\n this._cachedGetSinglePixelWidth = null;\n this._cachedBitmapsMap = /* @__PURE__ */ new Map();\n this.dependencyTracker = dependencyTracker ?? null;\n }\n getObject(opIdx, data, fallback = null) {\n if (typeof data === \"string\") {\n this.dependencyTracker?.recordNamedDependency(opIdx, data);\n return data.startsWith(\"g_\") ? this.commonObjs.get(data) : this.objs.get(data);\n }\n return fallback;\n }\n beginDrawing({\n transform,\n viewport,\n transparency = false,\n background = null\n }) {\n const width = this.ctx.canvas.width;\n const height = this.ctx.canvas.height;\n const savedFillStyle = this.ctx.fillStyle;\n this.ctx.fillStyle = background || \"#ffffff\";\n this.ctx.fillRect(0, 0, width, height);\n this.ctx.fillStyle = savedFillStyle;\n if (transparency) {\n const transparentCanvas = this.cachedCanvases.getCanvas(\"transparent\", width, height);\n this.compositeCtx = this.ctx;\n this.transparentCanvas = transparentCanvas.canvas;\n this.ctx = transparentCanvas.context;\n this.ctx.save();\n this.ctx.transform(...getCurrentTransform(this.compositeCtx));\n }\n this.ctx.save();\n resetCtxToDefault(this.ctx);\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 this.baseTransform = getCurrentTransform(this.ctx);\n }\n executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper, operationsFilter) {\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n let i = executionStartIdx || 0;\n const argsArrayLen = argsArray.length;\n if (argsArrayLen === i) {\n return i;\n }\n const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === \"function\";\n const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n let steps = 0;\n const commonObjs = this.commonObjs;\n const objs = this.objs;\n let fnId, fnArgs;\n while (true) {\n if (stepper !== void 0 && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n if (!operationsFilter || operationsFilter(i)) {\n fnId = fnArray[i];\n fnArgs = argsArray[i] ?? null;\n if (fnId !== OPS.dependency) {\n if (fnArgs === null) {\n this[fnId](i);\n } else {\n this[fnId](i, ...fnArgs);\n }\n } else {\n for (const depObjId of fnArgs) {\n this.dependencyTracker?.recordNamedData(depObjId, i);\n const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n if (!objsPool.has(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n }\n }\n i++;\n if (i === argsArrayLen) {\n return i;\n }\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n steps = 0;\n }\n }\n }\n #restoreInitialState() {\n while (this.stateStack.length || this.inSMaskMode) {\n this.restore();\n }\n this.current.activeSMask = null;\n this.ctx.restore();\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n }\n endDrawing() {\n this.#restoreInitialState();\n this.cachedCanvases.clear();\n this.cachedPatterns.clear();\n for (const cache of this._cachedBitmapsMap.values()) {\n for (const canvas of cache.values()) {\n if (typeof HTMLCanvasElement !== \"undefined\" && canvas instanceof HTMLCanvasElement) {\n canvas.width = canvas.height = 0;\n }\n }\n cache.clear();\n }\n this._cachedBitmapsMap.clear();\n this.#drawFilter();\n }\n #drawFilter() {\n if (this.pageColors) {\n const hcmFilterId = this.filterFactory.addHCMFilter(this.pageColors.foreground, this.pageColors.background);\n if (hcmFilterId !== \"none\") {\n const savedFilter = this.ctx.filter;\n this.ctx.filter = hcmFilterId;\n this.ctx.drawImage(this.ctx.canvas, 0, 0);\n this.ctx.filter = savedFilter;\n }\n }\n }\n _scaleImage(img, inverseTransform) {\n const width = img.width ?? img.displayWidth;\n const height = img.height ?? img.displayHeight;\n let widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1);\n let heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1);\n let paintWidth = width, paintHeight = height;\n let tmpCanvasId = \"prescale1\";\n let tmpCanvas, tmpCtx;\n while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {\n let newWidth = paintWidth, newHeight = paintHeight;\n if (widthScale > 2 && paintWidth > 1) {\n newWidth = paintWidth >= 16384 ? Math.floor(paintWidth / 2) - 1 || 1 : Math.ceil(paintWidth / 2);\n widthScale /= paintWidth / newWidth;\n }\n if (heightScale > 2 && paintHeight > 1) {\n newHeight = paintHeight >= 16384 ? Math.floor(paintHeight / 2) - 1 || 1 : Math.ceil(paintHeight) / 2;\n heightScale /= paintHeight / newHeight;\n }\n tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);\n tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, newWidth, newHeight);\n tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);\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 _createMaskCanvas(opIdx, img) {\n const ctx = this.ctx;\n const {\n width,\n height\n } = img;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n const currentTransform = getCurrentTransform(ctx);\n let cache, cacheKey, scaled, maskCanvas;\n if ((img.bitmap || img.data) && img.count > 1) {\n const mainKey = img.bitmap || img.data.buffer;\n cacheKey = JSON.stringify(isPatternFill ? currentTransform : [currentTransform.slice(0, 4), fillColor]);\n cache = this._cachedBitmapsMap.get(mainKey);\n if (!cache) {\n cache = /* @__PURE__ */ new Map();\n this._cachedBitmapsMap.set(mainKey, cache);\n }\n const cachedImage = cache.get(cacheKey);\n if (cachedImage && !isPatternFill) {\n const offsetX2 = Math.round(Math.min(currentTransform[0], currentTransform[2]) + currentTransform[4]);\n const offsetY2 = Math.round(Math.min(currentTransform[1], currentTransform[3]) + currentTransform[5]);\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.transformAndFill);\n return {\n canvas: cachedImage,\n offsetX: offsetX2,\n offsetY: offsetY2\n };\n }\n scaled = cachedImage;\n }\n if (!scaled) {\n maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n putBinaryImageMask(maskCanvas.context, img);\n }\n let maskToCanvas = Util.transform(currentTransform, [1 / width, 0, 0, -1 / height, 0, 0]);\n maskToCanvas = Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n const minMax = MIN_MAX_INIT.slice();\n Util.axialAlignedBoundingBox([0, 0, width, height], maskToCanvas, minMax);\n const [minX, minY, maxX, maxY] = minMax;\n const drawnWidth = Math.round(maxX - minX) || 1;\n const drawnHeight = Math.round(maxY - minY) || 1;\n const fillCanvas = this.cachedCanvases.getCanvas(\"fillCanvas\", drawnWidth, drawnHeight);\n const fillCtx = fillCanvas.context;\n const offsetX = minX;\n const offsetY = minY;\n fillCtx.translate(-offsetX, -offsetY);\n fillCtx.transform(...maskToCanvas);\n if (!scaled) {\n scaled = this._scaleImage(maskCanvas.canvas, getCurrentTransformInverse(fillCtx));\n scaled = scaled.img;\n if (cache && isPatternFill) {\n cache.set(cacheKey, scaled);\n }\n }\n fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(fillCtx), img.interpolate);\n drawImageAtIntegerCoords(fillCtx, scaled, 0, 0, scaled.width, scaled.height, 0, 0, width, height);\n fillCtx.globalCompositeOperation = \"source-in\";\n const inverse = Util.transform(getCurrentTransformInverse(fillCtx), [1, 0, 0, 1, -offsetX, -offsetY]);\n fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, PathType.FILL, opIdx) : fillColor;\n fillCtx.fillRect(0, 0, width, height);\n if (cache && !isPatternFill) {\n this.cachedCanvases.delete(\"fillCanvas\");\n cache.set(cacheKey, fillCanvas.canvas);\n }\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.transformAndFill);\n return {\n canvas: fillCanvas.canvas,\n offsetX: Math.round(offsetX),\n offsetY: Math.round(offsetY)\n };\n }\n setLineWidth(opIdx, width) {\n this.dependencyTracker?.recordSimpleData(\"lineWidth\", opIdx);\n if (width !== this.current.lineWidth) {\n this._cachedScaleForStroking[0] = -1;\n }\n this.current.lineWidth = width;\n this.ctx.lineWidth = width;\n }\n setLineCap(opIdx, style) {\n this.dependencyTracker?.recordSimpleData(\"lineCap\", opIdx);\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n }\n setLineJoin(opIdx, style) {\n this.dependencyTracker?.recordSimpleData(\"lineJoin\", opIdx);\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n }\n setMiterLimit(opIdx, limit) {\n this.dependencyTracker?.recordSimpleData(\"miterLimit\", opIdx);\n this.ctx.miterLimit = limit;\n }\n setDash(opIdx, dashArray, dashPhase) {\n this.dependencyTracker?.recordSimpleData(\"dash\", opIdx);\n const ctx = this.ctx;\n if (ctx.setLineDash !== void 0) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n }\n setRenderingIntent(opIdx, intent) {\n }\n setFlatness(opIdx, flatness) {\n }\n setGState(opIdx, states) {\n for (const [key, value] of states) {\n switch (key) {\n case \"LW\":\n this.setLineWidth(opIdx, value);\n break;\n case \"LC\":\n this.setLineCap(opIdx, value);\n break;\n case \"LJ\":\n this.setLineJoin(opIdx, value);\n break;\n case \"ML\":\n this.setMiterLimit(opIdx, value);\n break;\n case \"D\":\n this.setDash(opIdx, value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(opIdx, value);\n break;\n case \"FL\":\n this.setFlatness(opIdx, value);\n break;\n case \"Font\":\n this.setFont(opIdx, value[0], value[1]);\n break;\n case \"CA\":\n this.dependencyTracker?.recordSimpleData(\"strokeAlpha\", opIdx);\n this.current.strokeAlpha = value;\n break;\n case \"ca\":\n this.dependencyTracker?.recordSimpleData(\"fillAlpha\", opIdx);\n this.ctx.globalAlpha = this.current.fillAlpha = value;\n break;\n case \"BM\":\n this.dependencyTracker?.recordSimpleData(\"globalCompositeOperation\", opIdx);\n this.ctx.globalCompositeOperation = value;\n break;\n case \"SMask\":\n this.dependencyTracker?.recordSimpleData(\"SMask\", opIdx);\n this.current.activeSMask = value ? this.tempSMask : null;\n this.tempSMask = null;\n this.checkSMaskState();\n break;\n case \"TR\":\n this.dependencyTracker?.recordSimpleData(\"filter\", opIdx);\n this.ctx.filter = this.current.transferMaps = this.filterFactory.addFilter(value);\n break;\n }\n }\n }\n get inSMaskMode() {\n return !!this.suspendedCtx;\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 }\n beginSMaskMode(opIdx) {\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(cacheId, drawnWidth, drawnHeight);\n this.suspendedCtx = this.ctx;\n const ctx = this.ctx = scratchCanvas.context;\n ctx.setTransform(this.suspendedCtx.getTransform());\n copyCtxState(this.suspendedCtx, ctx);\n mirrorContextOperations(ctx, this.suspendedCtx);\n this.setGState(opIdx, [[\"BM\", \"source-over\"]]);\n }\n endSMaskMode() {\n if (!this.inSMaskMode) {\n throw new Error(\"endSMaskMode called while not in smask mode\");\n }\n this.ctx._removeMirroring();\n copyCtxState(this.ctx, this.suspendedCtx);\n this.ctx = this.suspendedCtx;\n this.suspendedCtx = null;\n }\n compose(dirtyBox) {\n if (!this.current.activeSMask) {\n return;\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 this.composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\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 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 this.genericComposeSMask(smask.context, layerCtx, layerWidth, layerHeight, smask.subtype, smask.backdrop, smask.transferMap, layerOffsetX, layerOffsetY, smask.offsetX, smask.offsetY);\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 genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap, layerOffsetX, layerOffsetY, maskOffsetX, maskOffsetY) {\n let maskCanvas = maskCtx.canvas;\n let maskX = layerOffsetX - maskOffsetX;\n let maskY = layerOffsetY - maskOffsetY;\n if (backdrop) {\n if (maskX < 0 || maskY < 0 || maskX + width > maskCanvas.width || maskY + height > maskCanvas.height) {\n const canvas = this.cachedCanvases.getCanvas(\"maskExtension\", width, height);\n const ctx = canvas.context;\n ctx.drawImage(maskCanvas, -maskX, -maskY);\n ctx.globalCompositeOperation = \"destination-atop\";\n ctx.fillStyle = backdrop;\n ctx.fillRect(0, 0, width, height);\n ctx.globalCompositeOperation = \"source-over\";\n maskCanvas = canvas.canvas;\n maskX = maskY = 0;\n } else {\n maskCtx.save();\n maskCtx.globalAlpha = 1;\n maskCtx.setTransform(1, 0, 0, 1, 0, 0);\n const clip2 = new Path2D();\n clip2.rect(maskX, maskY, width, height);\n maskCtx.clip(clip2);\n maskCtx.globalCompositeOperation = \"destination-atop\";\n maskCtx.fillStyle = backdrop;\n maskCtx.fillRect(maskX, maskY, width, height);\n maskCtx.restore();\n }\n }\n layerCtx.save();\n layerCtx.globalAlpha = 1;\n layerCtx.setTransform(1, 0, 0, 1, 0, 0);\n if (subtype === \"Alpha\" && transferMap) {\n layerCtx.filter = this.filterFactory.addAlphaFilter(transferMap);\n } else if (subtype === \"Luminosity\") {\n layerCtx.filter = this.filterFactory.addLuminosityFilter(transferMap);\n }\n const clip = new Path2D();\n clip.rect(layerOffsetX, layerOffsetY, width, height);\n layerCtx.clip(clip);\n layerCtx.globalCompositeOperation = \"destination-in\";\n layerCtx.drawImage(maskCanvas, maskX, maskY, width, height, layerOffsetX, layerOffsetY, width, height);\n layerCtx.restore();\n }\n save(opIdx) {\n if (this.inSMaskMode) {\n copyCtxState(this.ctx, this.suspendedCtx);\n }\n this.ctx.save();\n const old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n this.dependencyTracker?.save(opIdx);\n }\n restore(opIdx) {\n this.dependencyTracker?.restore(opIdx);\n if (this.stateStack.length === 0) {\n if (this.inSMaskMode) {\n this.endSMaskMode();\n }\n return;\n }\n this.current = this.stateStack.pop();\n this.ctx.restore();\n if (this.inSMaskMode) {\n copyCtxState(this.suspendedCtx, this.ctx);\n }\n this.checkSMaskState();\n this.pendingClip = null;\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n transform(opIdx, a, b, c, d, e, f) {\n this.dependencyTracker?.recordIncrementalData(\"transform\", opIdx);\n this.ctx.transform(a, b, c, d, e, f);\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n constructPath(opIdx, op, data, minMax) {\n let [path] = data;\n if (!minMax) {\n path ||= data[0] = new Path2D();\n this[op](opIdx, path);\n return;\n }\n if (this.dependencyTracker !== null) {\n const outerExtraSize = op === OPS.stroke ? this.current.lineWidth / 2 : 0;\n this.dependencyTracker.resetBBox(opIdx).recordBBox(opIdx, this.ctx, minMax[0] - outerExtraSize, minMax[2] + outerExtraSize, minMax[1] - outerExtraSize, minMax[3] + outerExtraSize).recordDependencies(opIdx, [\"transform\"]);\n }\n if (!(path instanceof Path2D)) {\n const path2d = data[0] = new Path2D();\n for (let i = 0, ii = path.length; i < ii; ) {\n switch (path[i++]) {\n case DrawOPS.moveTo:\n path2d.moveTo(path[i++], path[i++]);\n break;\n case DrawOPS.lineTo:\n path2d.lineTo(path[i++], path[i++]);\n break;\n case DrawOPS.curveTo:\n path2d.bezierCurveTo(path[i++], path[i++], path[i++], path[i++], path[i++], path[i++]);\n break;\n case DrawOPS.closePath:\n path2d.closePath();\n break;\n default:\n warn(`Unrecognized drawing path operator: ${path[i - 1]}`);\n break;\n }\n }\n path = path2d;\n }\n Util.axialAlignedBoundingBox(minMax, getCurrentTransform(this.ctx), this.current.minMax);\n this[op](opIdx, path);\n this._pathStartIdx = opIdx;\n }\n closePath(opIdx) {\n this.ctx.closePath();\n }\n stroke(opIdx, path, consumePath = true) {\n const ctx = this.ctx;\n const strokeColor = this.current.strokeColor;\n ctx.globalAlpha = this.current.strokeAlpha;\n if (this.contentVisible) {\n if (typeof strokeColor === \"object\" && strokeColor?.getPattern) {\n const baseTransform = strokeColor.isModifyingCurrentTransform() ? ctx.getTransform() : null;\n ctx.save();\n ctx.strokeStyle = strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE, opIdx);\n if (baseTransform) {\n const newPath = new Path2D();\n newPath.addPath(path, ctx.getTransform().invertSelf().multiplySelf(baseTransform));\n path = newPath;\n }\n this.rescaleAndStroke(path, false);\n ctx.restore();\n } else {\n this.rescaleAndStroke(path, true);\n }\n }\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.stroke);\n if (consumePath) {\n this.consumePath(opIdx, path, this.current.getClippedPathBoundingBox(PathType.STROKE, getCurrentTransform(this.ctx)));\n }\n ctx.globalAlpha = this.current.fillAlpha;\n }\n closeStroke(opIdx, path) {\n this.stroke(opIdx, path);\n }\n fill(opIdx, path, consumePath = true) {\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n let needRestore = false;\n if (isPatternFill) {\n const baseTransform = fillColor.isModifyingCurrentTransform() ? ctx.getTransform() : null;\n this.dependencyTracker?.save(opIdx);\n ctx.save();\n ctx.fillStyle = fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL, opIdx);\n if (baseTransform) {\n const newPath = new Path2D();\n newPath.addPath(path, ctx.getTransform().invertSelf().multiplySelf(baseTransform));\n path = newPath;\n }\n needRestore = true;\n }\n const intersect = this.current.getClippedPathBoundingBox();\n if (this.contentVisible && intersect !== null) {\n if (this.pendingEOFill) {\n ctx.fill(path, \"evenodd\");\n this.pendingEOFill = false;\n } else {\n ctx.fill(path);\n }\n }\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.fill);\n if (needRestore) {\n ctx.restore();\n this.dependencyTracker?.restore(opIdx);\n }\n if (consumePath) {\n this.consumePath(opIdx, path, intersect);\n }\n }\n eoFill(opIdx, path) {\n this.pendingEOFill = true;\n this.fill(opIdx, path);\n }\n fillStroke(opIdx, path) {\n this.fill(opIdx, path, false);\n this.stroke(opIdx, path, false);\n this.consumePath(opIdx, path);\n }\n eoFillStroke(opIdx, path) {\n this.pendingEOFill = true;\n this.fillStroke(opIdx, path);\n }\n closeFillStroke(opIdx, path) {\n this.fillStroke(opIdx, path);\n }\n closeEOFillStroke(opIdx, path) {\n this.pendingEOFill = true;\n this.fillStroke(opIdx, path);\n }\n endPath(opIdx, path) {\n this.consumePath(opIdx, path);\n }\n rawFillPath(opIdx, path) {\n this.ctx.fill(path);\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.rawFillPath).recordOperation(opIdx);\n }\n clip(opIdx) {\n this.dependencyTracker?.recordFutureForcedDependency(\"clipMode\", opIdx);\n this.pendingClip = NORMAL_CLIP;\n }\n eoClip(opIdx) {\n this.dependencyTracker?.recordFutureForcedDependency(\"clipMode\", opIdx);\n this.pendingClip = EO_CLIP;\n }\n beginText(opIdx) {\n this.current.textMatrix = null;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n this.dependencyTracker?.recordOpenMarker(opIdx).resetIncrementalData(\"sameLineText\").resetIncrementalData(\"moveText\", opIdx);\n }\n endText(opIdx) {\n const paths = this.pendingTextPaths;\n const ctx = this.ctx;\n if (this.dependencyTracker) {\n const {\n dependencyTracker\n } = this;\n if (paths !== void 0) {\n dependencyTracker.recordFutureForcedDependency(\"textClip\", dependencyTracker.getOpenMarker()).recordFutureForcedDependency(\"textClip\", opIdx);\n }\n dependencyTracker.recordCloseMarker(opIdx);\n }\n if (paths !== void 0) {\n const newPath = new Path2D();\n const invTransf = ctx.getTransform().invertSelf();\n for (const {\n transform,\n x,\n y,\n fontSize,\n path\n } of paths) {\n if (!path) {\n continue;\n }\n newPath.addPath(path, new DOMMatrix(transform).preMultiplySelf(invTransf).translate(x, y).scale(fontSize, -fontSize));\n }\n ctx.clip(newPath);\n }\n delete this.pendingTextPaths;\n }\n setCharSpacing(opIdx, spacing) {\n this.dependencyTracker?.recordSimpleData(\"charSpacing\", opIdx);\n this.current.charSpacing = spacing;\n }\n setWordSpacing(opIdx, spacing) {\n this.dependencyTracker?.recordSimpleData(\"wordSpacing\", opIdx);\n this.current.wordSpacing = spacing;\n }\n setHScale(opIdx, scale) {\n this.dependencyTracker?.recordSimpleData(\"hScale\", opIdx);\n this.current.textHScale = scale / 100;\n }\n setLeading(opIdx, leading) {\n this.dependencyTracker?.recordSimpleData(\"leading\", opIdx);\n this.current.leading = -leading;\n }\n setFont(opIdx, fontRefName, size) {\n this.dependencyTracker?.recordSimpleData(\"font\", opIdx).recordSimpleDataFromNamed(\"fontObj\", fontRefName, opIdx);\n const fontObj = this.commonObjs.get(fontRefName);\n const current = this.current;\n if (!fontObj) {\n throw new Error(`Can't find font for ${fontRefName}`);\n }\n current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n warn(\"Invalid font matrix for font \" + fontRefName);\n }\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n this.current.font = fontObj;\n this.current.fontSize = size;\n if (fontObj.isType3Font) {\n return;\n }\n const name = fontObj.loadedName || \"sans-serif\";\n const typeface = fontObj.systemFontInfo?.css || `\"${name}\", ${fontObj.fallbackName}`;\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 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 this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n }\n setTextRenderingMode(opIdx, mode) {\n this.dependencyTracker?.recordSimpleData(\"textRenderingMode\", opIdx);\n this.current.textRenderingMode = mode;\n }\n setTextRise(opIdx, rise) {\n this.dependencyTracker?.recordSimpleData(\"textRise\", opIdx);\n this.current.textRise = rise;\n }\n moveText(opIdx, x, y) {\n this.dependencyTracker?.resetIncrementalData(\"sameLineText\").recordIncrementalData(\"moveText\", opIdx);\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n }\n setLeadingMoveText(opIdx, x, y) {\n this.setLeading(opIdx, -y);\n this.moveText(opIdx, x, y);\n }\n setTextMatrix(opIdx, matrix) {\n this.dependencyTracker?.recordSimpleData(\"textMatrix\", opIdx);\n const {\n current\n } = this;\n current.textMatrix = matrix;\n current.textMatrixScale = Math.hypot(matrix[0], matrix[1]);\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n }\n nextLine(opIdx) {\n this.moveText(opIdx, 0, this.current.leading);\n this.dependencyTracker?.recordIncrementalData(\"moveText\", this.dependencyTracker.getSimpleIndex(\"leading\") ?? opIdx);\n }\n #getScaledPath(path, currentTransform, transform) {\n const newPath = new Path2D();\n newPath.addPath(path, new DOMMatrix(transform).invertSelf().multiplySelf(currentTransform));\n return newPath;\n }\n paintChar(opIdx, character, x, y, patternFillTransform, patternStrokeTransform) {\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 = textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n const isAddToPathSet = !!(textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG);\n const patternFill = current.patternFill && !font.missingFile;\n const patternStroke = current.patternStroke && !font.missingFile;\n let path;\n if ((font.disableFontFace || isAddToPathSet || patternFill || patternStroke) && !font.missingFile) {\n path = font.getPathGenerator(this.commonObjs, character);\n }\n if (path && (font.disableFontFace || patternFill || patternStroke)) {\n ctx.save();\n ctx.translate(x, y);\n ctx.scale(fontSize, -fontSize);\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font);\n let currentTransform;\n if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (patternFillTransform) {\n currentTransform = ctx.getTransform();\n ctx.setTransform(...patternFillTransform);\n const scaledPath = this.#getScaledPath(path, currentTransform, patternFillTransform);\n ctx.fill(scaledPath);\n } else {\n ctx.fill(path);\n }\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (patternStrokeTransform) {\n currentTransform ||= ctx.getTransform();\n ctx.setTransform(...patternStrokeTransform);\n const {\n a,\n b,\n c,\n d\n } = currentTransform;\n const invPatternTransform = Util.inverseTransform(patternStrokeTransform);\n const transf = Util.transform([a, b, c, d, 0, 0], invPatternTransform);\n Util.singularValueDecompose2dScale(transf, XY);\n ctx.lineWidth *= Math.max(XY[0], XY[1]) / fontSize;\n ctx.stroke(this.#getScaledPath(path, currentTransform, patternStrokeTransform));\n } else {\n ctx.lineWidth /= fontSize;\n ctx.stroke(path);\n }\n }\n ctx.restore();\n } else {\n if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.fillText(character, x, y);\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font, fontSize, x, y, () => ctx.measureText(character));\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (this.dependencyTracker) {\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font, fontSize, x, y, () => ctx.measureText(character)).recordDependencies(opIdx, Dependencies.stroke);\n }\n ctx.strokeText(character, x, y);\n }\n }\n if (isAddToPathSet) {\n const paths = this.pendingTextPaths ||= [];\n paths.push({\n transform: getCurrentTransform(ctx),\n x,\n y,\n fontSize,\n path\n });\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font, fontSize, x, y);\n }\n }\n get isFontSubpixelAAEnabled() {\n const {\n context: ctx\n } = this.cachedCanvases.getCanvas(\"isFontSubpixelAAEnabled\", 10, 10);\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 showText(opIdx, glyphs) {\n if (this.dependencyTracker) {\n this.dependencyTracker.recordDependencies(opIdx, Dependencies.showText).resetBBox(opIdx);\n if (this.current.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG) {\n this.dependencyTracker.recordFutureForcedDependency(\"textClip\", opIdx).inheritPendingDependenciesAsFutureForcedDependencies();\n }\n }\n const current = this.current;\n const font = current.font;\n if (font.isType3Font) {\n this.showType3Text(opIdx, glyphs);\n this.dependencyTracker?.recordShowTextOperation(opIdx);\n return void 0;\n }\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n this.dependencyTracker?.recordOperation(opIdx);\n return void 0;\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 const simpleFillText = current.textRenderingMode === TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;\n ctx.save();\n if (current.textMatrix) {\n ctx.transform(...current.textMatrix);\n }\n ctx.translate(current.x, current.y + current.textRise);\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n let patternFillTransform, patternStrokeTransform;\n if (current.patternFill) {\n ctx.save();\n const pattern = current.fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL, opIdx);\n patternFillTransform = getCurrentTransform(ctx);\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n if (current.patternStroke) {\n ctx.save();\n const pattern = current.strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE, opIdx);\n patternStrokeTransform = getCurrentTransform(ctx);\n ctx.restore();\n ctx.strokeStyle = pattern;\n }\n let lineWidth = current.lineWidth;\n const scale = current.textMatrixScale;\n if (scale === 0 || lineWidth === 0) {\n const fillStrokeMode = current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n lineWidth = this.getSinglePixelWidth();\n }\n } else {\n lineWidth /= scale;\n }\n if (fontSizeScale !== 1) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n ctx.lineWidth = lineWidth;\n if (font.isInvalidPDFjsFont) {\n const chars = [];\n let width = 0;\n for (const glyph of glyphs) {\n chars.push(glyph.unicode);\n width += glyph.width;\n }\n const joinedChars = chars.join(\"\");\n ctx.fillText(joinedChars, 0, 0);\n if (this.dependencyTracker !== null) {\n const measure = ctx.measureText(joinedChars);\n this.dependencyTracker.recordBBox(opIdx, this.ctx, -measure.actualBoundingBoxLeft, measure.actualBoundingBoxRight, -measure.actualBoundingBoxAscent, measure.actualBoundingBoxDescent).recordShowTextOperation(opIdx);\n }\n current.x += width * widthAdvanceScale * textHScale;\n ctx.restore();\n this.compose();\n return void 0;\n }\n let x = 0, i;\n for (i = 0; i < glyphsLength; ++i) {\n const glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n x += spacingDir * glyph * fontSize / 1e3;\n continue;\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 = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\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 let measure;\n if (font.remeasure && width > 0) {\n measure = ctx.measureText(character);\n const measuredWidth = measure.width * 1e3 / fontSize * 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 += (width - measuredWidth) / 2e3 * fontSize / fontSizeScale;\n }\n }\n if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n if (simpleFillText && !accent) {\n ctx.fillText(character, scaledX, scaledY);\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, measure ? {\n bbox: null\n } : font, fontSize / fontSizeScale, scaledX, scaledY, () => measure ?? ctx.measureText(character));\n } else {\n this.paintChar(opIdx, character, scaledX, scaledY, patternFillTransform, patternStrokeTransform);\n if (accent) {\n const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale;\n const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale;\n this.paintChar(opIdx, accent.fontChar, scaledAccentX, scaledAccentY, patternFillTransform, patternStrokeTransform);\n }\n }\n }\n const charWidth = vertical ? width * widthAdvanceScale - spacing * fontDirection : width * widthAdvanceScale + spacing * fontDirection;\n x += charWidth;\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 this.dependencyTracker?.recordShowTextOperation(opIdx);\n return void 0;\n }\n showType3Text(opIdx, glyphs) {\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 = current.textRenderingMode === TextRenderingMode.INVISIBLE;\n let i, glyph, width, spacingLength;\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n ctx.save();\n if (current.textMatrix) {\n ctx.transform(...current.textMatrix);\n }\n ctx.translate(current.x, current.y + current.textRise);\n ctx.scale(textHScale, fontDirection);\n const dependencyTracker = this.dependencyTracker;\n this.dependencyTracker = dependencyTracker ? new CanvasNestedDependencyTracker(dependencyTracker, opIdx) : null;\n for (i = 0; i < glyphsLength; ++i) {\n glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n spacingLength = spacingDir * glyph * fontSize / 1e3;\n this.ctx.translate(spacingLength, 0);\n current.x += spacingLength * textHScale;\n continue;\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 } else if (this.contentVisible) {\n this.save();\n ctx.scale(fontSize, fontSize);\n ctx.transform(...fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n }\n const p = [glyph.width, 0];\n Util.applyTransform(p, fontMatrix);\n width = p[0] * fontSize + spacing;\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n ctx.restore();\n if (dependencyTracker) {\n this.dependencyTracker = dependencyTracker;\n }\n }\n setCharWidth(opIdx, xWidth, yWidth) {\n }\n setCharWidthAndBounds(opIdx, xWidth, yWidth, llx, lly, urx, ury) {\n const clip = new Path2D();\n clip.rect(llx, lly, urx - llx, ury - lly);\n this.ctx.clip(clip);\n this.dependencyTracker?.recordBBox(opIdx, this.ctx, llx, urx, lly, ury).recordClipBox(opIdx, this.ctx, llx, urx, lly, ury);\n this.endPath(opIdx);\n }\n getColorN_Pattern(opIdx, IR) {\n let pattern;\n if (IR[0] === \"TilingPattern\") {\n const baseTransform = this.baseTransform || getCurrentTransform(this.ctx);\n const canvasGraphicsFactory = {\n createCanvasGraphics: (ctx, renderingOpIdx) => new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig: this.optionalContentConfig,\n markedContentStack: this.markedContentStack\n }, void 0, void 0, this.dependencyTracker ? new CanvasNestedDependencyTracker(this.dependencyTracker, renderingOpIdx, true) : null)\n };\n pattern = new TilingPattern(IR, this.ctx, canvasGraphicsFactory, baseTransform);\n } else {\n pattern = this._getPattern(opIdx, IR[1], IR[2]);\n }\n return pattern;\n }\n setStrokeColorN(opIdx, ...args) {\n this.dependencyTracker?.recordSimpleData(\"strokeColor\", opIdx);\n this.current.strokeColor = this.getColorN_Pattern(opIdx, args);\n this.current.patternStroke = true;\n }\n setFillColorN(opIdx, ...args) {\n this.dependencyTracker?.recordSimpleData(\"fillColor\", opIdx);\n this.current.fillColor = this.getColorN_Pattern(opIdx, args);\n this.current.patternFill = true;\n }\n setStrokeRGBColor(opIdx, color) {\n this.dependencyTracker?.recordSimpleData(\"strokeColor\", opIdx);\n this.ctx.strokeStyle = this.current.strokeColor = color;\n this.current.patternStroke = false;\n }\n setStrokeTransparent(opIdx) {\n this.dependencyTracker?.recordSimpleData(\"strokeColor\", opIdx);\n this.ctx.strokeStyle = this.current.strokeColor = \"transparent\";\n this.current.patternStroke = false;\n }\n setFillRGBColor(opIdx, color) {\n this.dependencyTracker?.recordSimpleData(\"fillColor\", opIdx);\n this.ctx.fillStyle = this.current.fillColor = color;\n this.current.patternFill = false;\n }\n setFillTransparent(opIdx) {\n this.dependencyTracker?.recordSimpleData(\"fillColor\", opIdx);\n this.ctx.fillStyle = this.current.fillColor = \"transparent\";\n this.current.patternFill = false;\n }\n _getPattern(opIdx, objId, matrix = null) {\n let pattern;\n if (this.cachedPatterns.has(objId)) {\n pattern = this.cachedPatterns.get(objId);\n } else {\n pattern = getShadingPattern(this.getObject(opIdx, objId));\n this.cachedPatterns.set(objId, pattern);\n }\n if (matrix) {\n pattern.matrix = matrix;\n }\n return pattern;\n }\n shadingFill(opIdx, objId) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n this.save(opIdx);\n const pattern = this._getPattern(opIdx, objId);\n ctx.fillStyle = pattern.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.SHADING, opIdx);\n const inv = getCurrentTransformInverse(ctx);\n if (inv) {\n const {\n width,\n height\n } = ctx.canvas;\n const minMax = MIN_MAX_INIT.slice();\n Util.axialAlignedBoundingBox([0, 0, width, height], inv, minMax);\n const [x0, y0, x1, y1] = minMax;\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n this.dependencyTracker?.resetBBox(opIdx).recordFullPageBBox(opIdx).recordDependencies(opIdx, Dependencies.transform).recordDependencies(opIdx, Dependencies.fill).recordOperation(opIdx);\n this.compose(this.current.getClippedPathBoundingBox());\n this.restore(opIdx);\n }\n beginInlineImage() {\n unreachable(\"Should not call beginInlineImage\");\n }\n beginImageData() {\n unreachable(\"Should not call beginImageData\");\n }\n paintFormXObjectBegin(opIdx, matrix, bbox) {\n if (!this.contentVisible) {\n return;\n }\n this.save(opIdx);\n this.baseTransformStack.push(this.baseTransform);\n if (matrix) {\n this.transform(opIdx, ...matrix);\n }\n this.baseTransform = getCurrentTransform(this.ctx);\n if (bbox) {\n Util.axialAlignedBoundingBox(bbox, this.baseTransform, this.current.minMax);\n const [x0, y0, x1, y1] = bbox;\n const clip = new Path2D();\n clip.rect(x0, y0, x1 - x0, y1 - y0);\n this.ctx.clip(clip);\n this.dependencyTracker?.recordClipBox(opIdx, this.ctx, x0, x1, y0, y1);\n this.endPath(opIdx);\n }\n }\n paintFormXObjectEnd(opIdx) {\n if (!this.contentVisible) {\n return;\n }\n this.restore(opIdx);\n this.baseTransform = this.baseTransformStack.pop();\n }\n beginGroup(opIdx, group) {\n if (!this.contentVisible) {\n return;\n }\n this.save(opIdx);\n if (this.inSMaskMode) {\n this.endSMaskMode();\n this.current.activeSMask = null;\n }\n const currentCtx = this.ctx;\n if (!group.isolated) {\n info(\"TODO: Support non-isolated groups.\");\n }\n if (group.knockout) {\n warn(\"Knockout groups not supported.\");\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 let bounds = MIN_MAX_INIT.slice();\n Util.axialAlignedBoundingBox(group.bbox, getCurrentTransform(currentCtx), bounds);\n const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];\n bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n const offsetX = Math.floor(bounds[0]);\n const offsetY = Math.floor(bounds[1]);\n const drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n const drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n let cacheId = \"groupAt\" + this.groupLevel;\n if (group.smask) {\n cacheId += \"_smask_\" + this.smaskCounter++ % 2;\n }\n const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n const groupCtx = scratchCanvas.context;\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform(...currentTransform);\n let clip = new Path2D();\n const [x0, y0, x1, y1] = group.bbox;\n clip.rect(x0, y0, x1 - x0, y1 - y0);\n if (group.matrix) {\n const path = new Path2D();\n path.addPath(clip, new DOMMatrix(group.matrix));\n clip = path;\n }\n groupCtx.clip(clip);\n if (group.smask) {\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX,\n offsetY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null,\n startTransformInverse: null\n });\n }\n if (!group.smask || this.dependencyTracker) {\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.save();\n }\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.dependencyTracker?.inheritSimpleDataAsFutureForcedDependencies([\"fillAlpha\", \"strokeAlpha\", \"globalCompositeOperation\"]).pushBaseTransform(currentCtx);\n this.setGState(opIdx, [[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n }\n endGroup(opIdx, 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 this.ctx.imageSmoothingEnabled = false;\n this.dependencyTracker?.popBaseTransform();\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n this.restore(opIdx);\n if (this.dependencyTracker) {\n this.ctx.restore();\n }\n } else {\n this.ctx.restore();\n const currentMtx = getCurrentTransform(this.ctx);\n this.restore(opIdx);\n this.ctx.save();\n this.ctx.setTransform(...currentMtx);\n const dirtyBox = MIN_MAX_INIT.slice();\n Util.axialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx, dirtyBox);\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n this.ctx.restore();\n this.compose(dirtyBox);\n }\n }\n beginAnnotation(opIdx, id, rect, transform, matrix, hasOwnCanvas) {\n this.#restoreInitialState();\n resetCtxToDefault(this.ctx);\n this.ctx.save();\n this.save(opIdx);\n if (this.baseTransform) {\n this.ctx.setTransform(...this.baseTransform);\n }\n if (rect) {\n const width = rect[2] - rect[0];\n const height = rect[3] - rect[1];\n if (hasOwnCanvas && this.annotationCanvasMap) {\n transform = transform.slice();\n transform[4] -= rect[0];\n transform[5] -= rect[1];\n rect = rect.slice();\n rect[0] = rect[1] = 0;\n rect[2] = width;\n rect[3] = height;\n Util.singularValueDecompose2dScale(getCurrentTransform(this.ctx), XY);\n const {\n viewportScale\n } = this;\n const canvasWidth = Math.ceil(width * this.outputScaleX * viewportScale);\n const canvasHeight = Math.ceil(height * this.outputScaleY * viewportScale);\n this.annotationCanvas = this.canvasFactory.create(canvasWidth, canvasHeight);\n const {\n canvas,\n context\n } = this.annotationCanvas;\n this.annotationCanvasMap.set(id, canvas);\n this.annotationCanvas.savedCtx = this.ctx;\n this.ctx = context;\n this.ctx.save();\n this.ctx.setTransform(XY[0], 0, 0, -XY[1], 0, height * XY[1]);\n resetCtxToDefault(this.ctx);\n } else {\n resetCtxToDefault(this.ctx);\n this.endPath(opIdx);\n const clip = new Path2D();\n clip.rect(rect[0], rect[1], width, height);\n this.ctx.clip(clip);\n }\n }\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.transform(opIdx, ...transform);\n this.transform(opIdx, ...matrix);\n }\n endAnnotation(opIdx) {\n if (this.annotationCanvas) {\n this.ctx.restore();\n this.#drawFilter();\n this.ctx = this.annotationCanvas.savedCtx;\n delete this.annotationCanvas.savedCtx;\n delete this.annotationCanvas;\n }\n }\n paintImageMaskXObject(opIdx, img) {\n if (!this.contentVisible) {\n return;\n }\n const count = img.count;\n img = this.getObject(opIdx, img.data, img);\n img.count = count;\n const ctx = this.ctx;\n const mask = this._createMaskCanvas(opIdx, img);\n const maskCanvas = mask.canvas;\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\n this.dependencyTracker?.resetBBox(opIdx).recordBBox(opIdx, this.ctx, mask.offsetX, mask.offsetX + maskCanvas.width, mask.offsetY, mask.offsetY + maskCanvas.height).recordOperation(opIdx);\n ctx.restore();\n this.compose();\n }\n paintImageMaskXObjectRepeat(opIdx, img, scaleX, skewX = 0, skewY = 0, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n img = this.getObject(opIdx, img.data, img);\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(opIdx, img);\n ctx.setTransform(1, 0, 0, 1, mask.offsetX - currentTransform[4], mask.offsetY - currentTransform[5]);\n this.dependencyTracker?.resetBBox(opIdx);\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n const trans = Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]]);\n ctx.drawImage(mask.canvas, trans[4], trans[5]);\n this.dependencyTracker?.recordBBox(opIdx, this.ctx, trans[4], trans[4] + mask.canvas.width, trans[5], trans[5] + mask.canvas.height);\n }\n ctx.restore();\n this.compose();\n this.dependencyTracker?.recordOperation(opIdx);\n }\n paintImageMaskXObjectGroup(opIdx, images) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n this.dependencyTracker?.resetBBox(opIdx).recordDependencies(opIdx, Dependencies.transformAndFill);\n for (const image of images) {\n const {\n data,\n width,\n height,\n transform\n } = image;\n const maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n const maskCtx = maskCanvas.context;\n maskCtx.save();\n const img = this.getObject(opIdx, data, image);\n putBinaryImageMask(maskCtx, img);\n maskCtx.globalCompositeOperation = \"source-in\";\n maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, getCurrentTransformInverse(ctx), PathType.FILL, opIdx) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n maskCtx.restore();\n ctx.save();\n ctx.transform(...transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n this.dependencyTracker?.recordBBox(opIdx, ctx, 0, width, 0, height);\n ctx.restore();\n }\n this.compose();\n this.dependencyTracker?.recordOperation(opIdx);\n }\n paintImageXObject(opIdx, objId) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(opIdx, objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n this.paintInlineImageXObject(opIdx, imgData);\n }\n paintImageXObjectRepeat(opIdx, objId, scaleX, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(opIdx, objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\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(opIdx, imgData, map);\n }\n applyTransferMapsToCanvas(ctx) {\n if (this.current.transferMaps !== \"none\") {\n ctx.filter = this.current.transferMaps;\n ctx.drawImage(ctx.canvas, 0, 0);\n ctx.filter = \"none\";\n }\n return ctx.canvas;\n }\n applyTransferMapsToBitmap(imgData) {\n if (this.current.transferMaps === \"none\") {\n return imgData.bitmap;\n }\n const {\n bitmap,\n width,\n height\n } = imgData;\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.filter = this.current.transferMaps;\n tmpCtx.drawImage(bitmap, 0, 0);\n tmpCtx.filter = \"none\";\n return tmpCanvas.canvas;\n }\n paintInlineImageXObject(opIdx, imgData) {\n if (!this.contentVisible) {\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const ctx = this.ctx;\n this.save(opIdx);\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n ctx.scale(1 / width, -1 / height);\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = this.applyTransferMapsToBitmap(imgData);\n } else if (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement || !imgData.data) {\n imgToPaint = imgData;\n } else {\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n const scaled = this._scaleImage(imgToPaint, getCurrentTransformInverse(ctx));\n ctx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(ctx), imgData.interpolate);\n this.dependencyTracker?.resetBBox(opIdx).recordBBox(opIdx, ctx, 0, width, -height, 0).recordDependencies(opIdx, Dependencies.imageXObject).recordOperation(opIdx);\n drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height);\n this.compose();\n this.restore(opIdx);\n }\n paintInlineImageXObjectGroup(opIdx, imgData, map) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = imgData.bitmap;\n } else {\n const w = imgData.width;\n const h = imgData.height;\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", w, h);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n this.dependencyTracker?.resetBBox(opIdx);\n for (const entry of map) {\n ctx.save();\n ctx.transform(...entry.transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, imgToPaint, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);\n this.dependencyTracker?.recordBBox(opIdx, ctx, 0, 1, -1, 0);\n ctx.restore();\n }\n this.dependencyTracker?.recordOperation(opIdx);\n this.compose();\n }\n paintSolidColorImageMask(opIdx) {\n if (!this.contentVisible) {\n return;\n }\n this.dependencyTracker?.resetBBox(opIdx).recordBBox(opIdx, this.ctx, 0, 1, 0, 1).recordDependencies(opIdx, Dependencies.fill).recordOperation(opIdx);\n this.ctx.fillRect(0, 0, 1, 1);\n this.compose();\n }\n markPoint(opIdx, tag) {\n }\n markPointProps(opIdx, tag, properties) {\n }\n beginMarkedContent(opIdx, tag) {\n this.dependencyTracker?.beginMarkedContent(opIdx);\n this.markedContentStack.push({\n visible: true\n });\n }\n beginMarkedContentProps(opIdx, tag, properties) {\n this.dependencyTracker?.beginMarkedContent(opIdx);\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 endMarkedContent(opIdx) {\n this.dependencyTracker?.endMarkedContent(opIdx);\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n }\n beginCompat(opIdx) {\n }\n endCompat(opIdx) {\n }\n consumePath(opIdx, path, 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(path, \"evenodd\");\n } else {\n ctx.clip(path);\n }\n }\n this.pendingClip = null;\n this.dependencyTracker?.bboxToClipBoxDropOperation(opIdx).recordFutureForcedDependency(\"clipPath\", opIdx);\n } else {\n this.dependencyTracker?.recordOperation(opIdx);\n }\n this.current.startNewPathAndClipBox(this.current.clipBox);\n }\n getSinglePixelWidth() {\n if (!this._cachedGetSinglePixelWidth) {\n const m = getCurrentTransform(this.ctx);\n if (m[1] === 0 && m[2] === 0) {\n this._cachedGetSinglePixelWidth = 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 getScaleForStroking() {\n if (this._cachedScaleForStroking[0] === -1) {\n const {\n lineWidth\n } = this.current;\n const {\n a,\n b,\n c,\n d\n } = this.ctx.getTransform();\n let scaleX, scaleY;\n if (b === 0 && c === 0) {\n const normX = Math.abs(a);\n const normY = Math.abs(d);\n if (normX === normY) {\n if (lineWidth === 0) {\n scaleX = scaleY = 1 / normX;\n } else {\n const scaledLineWidth = normX * lineWidth;\n scaleX = scaleY = scaledLineWidth < 1 ? 1 / scaledLineWidth : 1;\n }\n } else 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 const absDet = Math.abs(a * d - b * c);\n const normX = Math.hypot(a, b);\n const normY = Math.hypot(c, d);\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[0] = scaleX;\n this._cachedScaleForStroking[1] = scaleY;\n }\n return this._cachedScaleForStroking;\n }\n rescaleAndStroke(path, saveRestore) {\n const {\n ctx,\n current: {\n lineWidth\n }\n } = this;\n const [scaleX, scaleY] = this.getScaleForStroking();\n if (scaleX === scaleY) {\n ctx.lineWidth = (lineWidth || 1) * scaleX;\n ctx.stroke(path);\n return;\n }\n const dashes = ctx.getLineDash();\n if (saveRestore) {\n ctx.save();\n }\n ctx.scale(scaleX, scaleY);\n SCALE_MATRIX.a = 1 / scaleX;\n SCALE_MATRIX.d = 1 / scaleY;\n const newPath = new Path2D();\n newPath.addPath(path, SCALE_MATRIX);\n if (dashes.length > 0) {\n const scale = Math.max(scaleX, scaleY);\n ctx.setLineDash(dashes.map((x) => x / scale));\n ctx.lineDashOffset /= scale;\n }\n ctx.lineWidth = lineWidth || 1;\n ctx.stroke(newPath);\n if (saveRestore) {\n ctx.restore();\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}\nfor (const op in OPS) {\n if (CanvasGraphics.prototype[op] !== void 0) {\n CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n }\n}\nclass CssFontInfo {\n #buffer;\n #view;\n #decoder;\n static strings = [\"fontFamily\", \"fontWeight\", \"italicAngle\"];\n static write(info2) {\n const encoder = new TextEncoder();\n const encodedStrings = {};\n let stringsLength = 0;\n for (const prop of CssFontInfo.strings) {\n const encoded = encoder.encode(info2[prop]);\n encodedStrings[prop] = encoded;\n stringsLength += 4 + encoded.length;\n }\n const buffer = new ArrayBuffer(stringsLength);\n const data = new Uint8Array(buffer);\n const view = new DataView(buffer);\n let offset = 0;\n for (const prop of CssFontInfo.strings) {\n const encoded = encodedStrings[prop];\n const length = encoded.length;\n view.setUint32(offset, length);\n data.set(encoded, offset + 4);\n offset += 4 + length;\n }\n assert(offset === buffer.byteLength, \"CssFontInfo.write: Buffer overflow\");\n return buffer;\n }\n constructor(buffer) {\n this.#buffer = buffer;\n this.#view = new DataView(this.#buffer);\n this.#decoder = new TextDecoder();\n }\n #readString(index) {\n assert(index < CssFontInfo.strings.length, \"Invalid string index\");\n let offset = 0;\n for (let i = 0; i < index; i++) {\n offset += this.#view.getUint32(offset) + 4;\n }\n const length = this.#view.getUint32(offset);\n return this.#decoder.decode(new Uint8Array(this.#buffer, offset + 4, length));\n }\n get fontFamily() {\n return this.#readString(0);\n }\n get fontWeight() {\n return this.#readString(1);\n }\n get italicAngle() {\n return this.#readString(2);\n }\n}\nclass SystemFontInfo {\n #buffer;\n #view;\n #decoder;\n static strings = [\"css\", \"loadedName\", \"baseFontName\", \"src\"];\n static write(info2) {\n const encoder = new TextEncoder();\n const encodedStrings = {};\n let stringsLength = 0;\n for (const prop of SystemFontInfo.strings) {\n const encoded = encoder.encode(info2[prop]);\n encodedStrings[prop] = encoded;\n stringsLength += 4 + encoded.length;\n }\n stringsLength += 4;\n let encodedStyleStyle, encodedStyleWeight, lengthEstimate = 1 + stringsLength;\n if (info2.style) {\n encodedStyleStyle = encoder.encode(info2.style.style);\n encodedStyleWeight = encoder.encode(info2.style.weight);\n lengthEstimate += 4 + encodedStyleStyle.length + 4 + encodedStyleWeight.length;\n }\n const buffer = new ArrayBuffer(lengthEstimate);\n const data = new Uint8Array(buffer);\n const view = new DataView(buffer);\n let offset = 0;\n view.setUint8(offset++, info2.guessFallback ? 1 : 0);\n view.setUint32(offset, 0);\n offset += 4;\n stringsLength = 0;\n for (const prop of SystemFontInfo.strings) {\n const encoded = encodedStrings[prop];\n const length = encoded.length;\n stringsLength += 4 + length;\n view.setUint32(offset, length);\n data.set(encoded, offset + 4);\n offset += 4 + length;\n }\n view.setUint32(offset - stringsLength - 4, stringsLength);\n if (info2.style) {\n view.setUint32(offset, encodedStyleStyle.length);\n data.set(encodedStyleStyle, offset + 4);\n offset += 4 + encodedStyleStyle.length;\n view.setUint32(offset, encodedStyleWeight.length);\n data.set(encodedStyleWeight, offset + 4);\n offset += 4 + encodedStyleWeight.length;\n }\n assert(offset <= buffer.byteLength, \"SubstitionInfo.write: Buffer overflow\");\n return buffer.transferToFixedLength(offset);\n }\n constructor(buffer) {\n this.#buffer = buffer;\n this.#view = new DataView(this.#buffer);\n this.#decoder = new TextDecoder();\n }\n get guessFallback() {\n return this.#view.getUint8(0) !== 0;\n }\n #readString(index) {\n assert(index < SystemFontInfo.strings.length, \"Invalid string index\");\n let offset = 5;\n for (let i = 0; i < index; i++) {\n offset += this.#view.getUint32(offset) + 4;\n }\n const length = this.#view.getUint32(offset);\n return this.#decoder.decode(new Uint8Array(this.#buffer, offset + 4, length));\n }\n get css() {\n return this.#readString(0);\n }\n get loadedName() {\n return this.#readString(1);\n }\n get baseFontName() {\n return this.#readString(2);\n }\n get src() {\n return this.#readString(3);\n }\n get style() {\n let offset = 1;\n offset += 4 + this.#view.getUint32(offset);\n const styleLength = this.#view.getUint32(offset);\n const style = this.#decoder.decode(new Uint8Array(this.#buffer, offset + 4, styleLength));\n offset += 4 + styleLength;\n const weightLength = this.#view.getUint32(offset);\n const weight = this.#decoder.decode(new Uint8Array(this.#buffer, offset + 4, weightLength));\n return {\n style,\n weight\n };\n }\n}\nclass FontInfo {\n static bools = [\"black\", \"bold\", \"disableFontFace\", \"fontExtraProperties\", \"isInvalidPDFjsFont\", \"isType3Font\", \"italic\", \"missingFile\", \"remeasure\", \"vertical\"];\n static numbers = [\"ascent\", \"defaultWidth\", \"descent\"];\n static strings = [\"fallbackName\", \"loadedName\", \"mimetype\", \"name\"];\n static #OFFSET_NUMBERS = Math.ceil(this.bools.length * 2 / 8);\n static #OFFSET_BBOX = this.#OFFSET_NUMBERS + this.numbers.length * 8;\n static #OFFSET_FONT_MATRIX = this.#OFFSET_BBOX + 1 + 2 * 4;\n static #OFFSET_DEFAULT_VMETRICS = this.#OFFSET_FONT_MATRIX + 1 + 8 * 6;\n static #OFFSET_STRINGS = this.#OFFSET_DEFAULT_VMETRICS + 1 + 2 * 3;\n #buffer;\n #decoder;\n #view;\n constructor({\n data,\n extra\n }) {\n this.#buffer = data;\n this.#decoder = new TextDecoder();\n this.#view = new DataView(this.#buffer);\n if (extra) {\n Object.assign(this, extra);\n }\n }\n #readBoolean(index) {\n assert(index < FontInfo.bools.length, \"Invalid boolean index\");\n const byteOffset = Math.floor(index / 4);\n const bitOffset = index * 2 % 8;\n const value = this.#view.getUint8(byteOffset) >> bitOffset & 3;\n return value === 0 ? void 0 : value === 2;\n }\n get black() {\n return this.#readBoolean(0);\n }\n get bold() {\n return this.#readBoolean(1);\n }\n get disableFontFace() {\n return this.#readBoolean(2);\n }\n get fontExtraProperties() {\n return this.#readBoolean(3);\n }\n get isInvalidPDFjsFont() {\n return this.#readBoolean(4);\n }\n get isType3Font() {\n return this.#readBoolean(5);\n }\n get italic() {\n return this.#readBoolean(6);\n }\n get missingFile() {\n return this.#readBoolean(7);\n }\n get remeasure() {\n return this.#readBoolean(8);\n }\n get vertical() {\n return this.#readBoolean(9);\n }\n #readNumber(index) {\n assert(index < FontInfo.numbers.length, \"Invalid number index\");\n return this.#view.getFloat64(FontInfo.#OFFSET_NUMBERS + index * 8);\n }\n get ascent() {\n return this.#readNumber(0);\n }\n get defaultWidth() {\n return this.#readNumber(1);\n }\n get descent() {\n return this.#readNumber(2);\n }\n get bbox() {\n let offset = FontInfo.#OFFSET_BBOX;\n const numCoords = this.#view.getUint8(offset);\n if (numCoords === 0) {\n return void 0;\n }\n offset += 1;\n const bbox = [];\n for (let i = 0; i < 4; i++) {\n bbox.push(this.#view.getInt16(offset, true));\n offset += 2;\n }\n return bbox;\n }\n get fontMatrix() {\n let offset = FontInfo.#OFFSET_FONT_MATRIX;\n const numPoints = this.#view.getUint8(offset);\n if (numPoints === 0) {\n return void 0;\n }\n offset += 1;\n const fontMatrix = [];\n for (let i = 0; i < 6; i++) {\n fontMatrix.push(this.#view.getFloat64(offset, true));\n offset += 8;\n }\n return fontMatrix;\n }\n get defaultVMetrics() {\n let offset = FontInfo.#OFFSET_DEFAULT_VMETRICS;\n const numMetrics = this.#view.getUint8(offset);\n if (numMetrics === 0) {\n return void 0;\n }\n offset += 1;\n const defaultVMetrics = [];\n for (let i = 0; i < 3; i++) {\n defaultVMetrics.push(this.#view.getInt16(offset, true));\n offset += 2;\n }\n return defaultVMetrics;\n }\n #readString(index) {\n assert(index < FontInfo.strings.length, \"Invalid string index\");\n let offset = FontInfo.#OFFSET_STRINGS + 4;\n for (let i = 0; i < index; i++) {\n offset += this.#view.getUint32(offset) + 4;\n }\n const length = this.#view.getUint32(offset);\n const stringData = new Uint8Array(length);\n stringData.set(new Uint8Array(this.#buffer, offset + 4, length));\n return this.#decoder.decode(stringData);\n }\n get fallbackName() {\n return this.#readString(0);\n }\n get loadedName() {\n return this.#readString(1);\n }\n get mimetype() {\n return this.#readString(2);\n }\n get name() {\n return this.#readString(3);\n }\n get data() {\n let offset = FontInfo.#OFFSET_STRINGS;\n const stringsLength = this.#view.getUint32(offset);\n offset += 4 + stringsLength;\n const systemFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + systemFontInfoLength;\n const cssFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + cssFontInfoLength;\n const length = this.#view.getUint32(offset);\n if (length === 0) {\n return void 0;\n }\n return new Uint8Array(this.#buffer, offset + 4, length);\n }\n clearData() {\n let offset = FontInfo.#OFFSET_STRINGS;\n const stringsLength = this.#view.getUint32(offset);\n offset += 4 + stringsLength;\n const systemFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + systemFontInfoLength;\n const cssFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + cssFontInfoLength;\n const length = this.#view.getUint32(offset);\n const data = new Uint8Array(this.#buffer, offset + 4, length);\n data.fill(0);\n this.#view.setUint32(offset, 0);\n }\n get cssFontInfo() {\n let offset = FontInfo.#OFFSET_STRINGS;\n const stringsLength = this.#view.getUint32(offset);\n offset += 4 + stringsLength;\n const systemFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + systemFontInfoLength;\n const cssFontInfoLength = this.#view.getUint32(offset);\n if (cssFontInfoLength === 0) {\n return null;\n }\n const cssFontInfoData = new Uint8Array(cssFontInfoLength);\n cssFontInfoData.set(new Uint8Array(this.#buffer, offset + 4, cssFontInfoLength));\n return new CssFontInfo(cssFontInfoData.buffer);\n }\n get systemFontInfo() {\n let offset = FontInfo.#OFFSET_STRINGS;\n const stringsLength = this.#view.getUint32(offset);\n offset += 4 + stringsLength;\n const systemFontInfoLength = this.#view.getUint32(offset);\n if (systemFontInfoLength === 0) {\n return null;\n }\n const systemFontInfoData = new Uint8Array(systemFontInfoLength);\n systemFontInfoData.set(new Uint8Array(this.#buffer, offset + 4, systemFontInfoLength));\n return new SystemFontInfo(systemFontInfoData.buffer);\n }\n static write(font) {\n const systemFontInfoBuffer = font.systemFontInfo ? SystemFontInfo.write(font.systemFontInfo) : null;\n const cssFontInfoBuffer = font.cssFontInfo ? CssFontInfo.write(font.cssFontInfo) : null;\n const encoder = new TextEncoder();\n const encodedStrings = {};\n let stringsLength = 0;\n for (const prop of FontInfo.strings) {\n encodedStrings[prop] = encoder.encode(font[prop]);\n stringsLength += 4 + encodedStrings[prop].length;\n }\n const lengthEstimate = FontInfo.#OFFSET_STRINGS + 4 + stringsLength + 4 + (systemFontInfoBuffer ? systemFontInfoBuffer.byteLength : 0) + 4 + (cssFontInfoBuffer ? cssFontInfoBuffer.byteLength : 0) + 4 + (font.data ? font.data.length : 0);\n const buffer = new ArrayBuffer(lengthEstimate);\n const data = new Uint8Array(buffer);\n const view = new DataView(buffer);\n let offset = 0;\n const numBools = FontInfo.bools.length;\n let boolByte = 0, boolBit = 0;\n for (let i = 0; i < numBools; i++) {\n const value = font[FontInfo.bools[i]];\n const bits = value === void 0 ? 0 : value ? 2 : 1;\n boolByte |= bits << boolBit;\n boolBit += 2;\n if (boolBit === 8 || i === numBools - 1) {\n view.setUint8(offset++, boolByte);\n boolByte = 0;\n boolBit = 0;\n }\n }\n assert(offset === FontInfo.#OFFSET_NUMBERS, \"FontInfo.write: Boolean properties offset mismatch\");\n for (const prop of FontInfo.numbers) {\n view.setFloat64(offset, font[prop]);\n offset += 8;\n }\n assert(offset === FontInfo.#OFFSET_BBOX, \"FontInfo.write: Number properties offset mismatch\");\n if (font.bbox) {\n view.setUint8(offset++, 4);\n for (const coord of font.bbox) {\n view.setInt16(offset, coord, true);\n offset += 2;\n }\n } else {\n view.setUint8(offset++, 0);\n offset += 2 * 4;\n }\n assert(offset === FontInfo.#OFFSET_FONT_MATRIX, \"FontInfo.write: BBox properties offset mismatch\");\n if (font.fontMatrix) {\n view.setUint8(offset++, 6);\n for (const point of font.fontMatrix) {\n view.setFloat64(offset, point, true);\n offset += 8;\n }\n } else {\n view.setUint8(offset++, 0);\n offset += 8 * 6;\n }\n assert(offset === FontInfo.#OFFSET_DEFAULT_VMETRICS, \"FontInfo.write: FontMatrix properties offset mismatch\");\n if (font.defaultVMetrics) {\n view.setUint8(offset++, 1);\n for (const metric of font.defaultVMetrics) {\n view.setInt16(offset, metric, true);\n offset += 2;\n }\n } else {\n view.setUint8(offset++, 0);\n offset += 3 * 2;\n }\n assert(offset === FontInfo.#OFFSET_STRINGS, \"FontInfo.write: DefaultVMetrics properties offset mismatch\");\n view.setUint32(FontInfo.#OFFSET_STRINGS, 0);\n offset += 4;\n for (const prop of FontInfo.strings) {\n const encoded = encodedStrings[prop];\n const length = encoded.length;\n view.setUint32(offset, length);\n data.set(encoded, offset + 4);\n offset += 4 + length;\n }\n view.setUint32(FontInfo.#OFFSET_STRINGS, offset - FontInfo.#OFFSET_STRINGS - 4);\n if (!systemFontInfoBuffer) {\n view.setUint32(offset, 0);\n offset += 4;\n } else {\n const length = systemFontInfoBuffer.byteLength;\n view.setUint32(offset, length);\n assert(offset + 4 + length <= buffer.byteLength, \"FontInfo.write: Buffer overflow at systemFontInfo\");\n data.set(new Uint8Array(systemFontInfoBuffer), offset + 4);\n offset += 4 + length;\n }\n if (!cssFontInfoBuffer) {\n view.setUint32(offset, 0);\n offset += 4;\n } else {\n const length = cssFontInfoBuffer.byteLength;\n view.setUint32(offset, length);\n assert(offset + 4 + length <= buffer.byteLength, \"FontInfo.write: Buffer overflow at cssFontInfo\");\n data.set(new Uint8Array(cssFontInfoBuffer), offset + 4);\n offset += 4 + length;\n }\n if (font.data === void 0) {\n view.setUint32(offset, 0);\n offset += 4;\n } else {\n view.setUint32(offset, font.data.length);\n data.set(font.data, offset + 4);\n offset += 4 + font.data.length;\n }\n assert(offset <= buffer.byteLength, \"FontInfo.write: Buffer overflow\");\n return buffer.transferToFixedLength(offset);\n }\n}\nclass GlobalWorkerOptions {\n static #port = null;\n static #src = \"\";\n static get workerPort() {\n return this.#port;\n }\n static set workerPort(val) {\n if (!(typeof Worker !== \"undefined\" && val instanceof Worker) && val !== null) {\n throw new Error(\"Invalid `workerPort` type.\");\n }\n this.#port = val;\n }\n static get workerSrc() {\n return this.#src;\n }\n static set workerSrc(val) {\n if (typeof val !== \"string\") {\n throw new Error(\"Invalid `workerSrc` type.\");\n }\n this.#src = val;\n }\n}\nclass Metadata {\n #map;\n #data;\n constructor({\n parsedData,\n rawData\n }) {\n this.#map = parsedData;\n this.#data = rawData;\n }\n getRaw() {\n return this.#data;\n }\n get(name) {\n return this.#map.get(name) ?? null;\n }\n [Symbol.iterator]() {\n return this.#map.entries();\n }\n}\nconst INTERNAL = Symbol(\"INTERNAL\");\nclass OptionalContentGroup {\n #isDisplay = false;\n #isPrint = false;\n #userSet = false;\n #visible = true;\n constructor(renderingIntent, {\n name,\n intent,\n usage,\n rbGroups\n }) {\n this.#isDisplay = !!(renderingIntent & RenderingIntentFlag.DISPLAY);\n this.#isPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n this.name = name;\n this.intent = intent;\n this.usage = usage;\n this.rbGroups = rbGroups;\n }\n get visible() {\n if (this.#userSet) {\n return this.#visible;\n }\n if (!this.#visible) {\n return false;\n }\n const {\n print,\n view\n } = this.usage;\n if (this.#isDisplay) {\n return view?.viewState !== \"OFF\";\n } else if (this.#isPrint) {\n return print?.printState !== \"OFF\";\n }\n return true;\n }\n _setVisible(internal, visible, userSet = false) {\n if (internal !== INTERNAL) {\n unreachable(\"Internal method `_setVisible` called.\");\n }\n this.#userSet = userSet;\n this.#visible = visible;\n }\n}\nclass OptionalContentConfig {\n #cachedGetHash = null;\n #groups = /* @__PURE__ */ new Map();\n #initialHash = null;\n #order = null;\n constructor(data, renderingIntent = RenderingIntentFlag.DISPLAY) {\n this.renderingIntent = renderingIntent;\n this.name = null;\n this.creator = null;\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(group.id, new OptionalContentGroup(renderingIntent, group));\n }\n if (data.baseState === \"OFF\") {\n for (const group of this.#groups.values()) {\n group._setVisible(INTERNAL, false);\n }\n }\n for (const on of data.on) {\n this.#groups.get(on)._setVisible(INTERNAL, true);\n }\n for (const off of data.off) {\n this.#groups.get(off)._setVisible(INTERNAL, false);\n }\n this.#initialHash = this.getHash();\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 isVisible(group) {\n if (this.#groups.size === 0) {\n return true;\n }\n if (!group) {\n info(\"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 if (group.expression) {\n return this.#evaluateVisibilityExpression(group.expression);\n }\n if (!group.policy || group.policy === \"AnyOn\") {\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 setVisibility(id, visible = true, preserveRB = true) {\n const group = this.#groups.get(id);\n if (!group) {\n warn(`Optional content group not found: ${id}`);\n return;\n }\n if (preserveRB && visible && group.rbGroups.length) {\n for (const rbGroup of group.rbGroups) {\n for (const otherId of rbGroup) {\n if (otherId !== id) {\n this.#groups.get(otherId)?._setVisible(INTERNAL, false, true);\n }\n }\n }\n }\n group._setVisible(INTERNAL, !!visible, true);\n this.#cachedGetHash = null;\n }\n setOCGState({\n state,\n preserveRB\n }) {\n let operator;\n for (const elem of state) {\n switch (elem) {\n case \"ON\":\n case \"OFF\":\n case \"Toggle\":\n operator = elem;\n continue;\n }\n const group = this.#groups.get(elem);\n if (!group) {\n continue;\n }\n switch (operator) {\n case \"ON\":\n this.setVisibility(elem, true, preserveRB);\n break;\n case \"OFF\":\n this.setVisibility(elem, false, preserveRB);\n break;\n case \"Toggle\":\n this.setVisibility(elem, !group.visible, preserveRB);\n break;\n }\n }\n this.#cachedGetHash = null;\n }\n get hasInitialVisibility() {\n return this.#initialHash === null || this.getHash() === this.#initialHash;\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 getGroup(id) {\n return this.#groups.get(id) || null;\n }\n getHash() {\n if (this.#cachedGetHash !== null) {\n return this.#cachedGetHash;\n }\n const hash = new MurmurHash3_64();\n for (const [id, group] of this.#groups) {\n hash.update(`${id}:${group.visible}`);\n }\n return this.#cachedGetHash = hash.hexdigest();\n }\n [Symbol.iterator]() {\n return this.#groups.entries();\n }\n}\nclass PDFDataTransportStream {\n constructor(pdfDataRangeTransport, {\n disableRange = false,\n disableStream = false\n }) {\n assert(pdfDataRangeTransport, 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.');\n const {\n length,\n initialData,\n progressiveDone,\n contentDispositionFilename\n } = pdfDataRangeTransport;\n this._queuedChunks = [];\n this._progressiveDone = progressiveDone;\n this._contentDispositionFilename = contentDispositionFilename;\n if (initialData?.length > 0) {\n const buffer = initialData instanceof Uint8Array && initialData.byteLength === initialData.buffer.byteLength ? initialData.buffer : new Uint8Array(initialData).buffer;\n this._queuedChunks.push(buffer);\n }\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isStreamingSupported = !disableStream;\n this._isRangeSupported = !disableRange;\n this._contentLength = length;\n this._fullRequestReader = null;\n this._rangeReaders = [];\n pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n this._onReceiveData({\n begin,\n chunk\n });\n });\n pdfDataRangeTransport.addProgressListener((loaded, total) => {\n this._onProgress({\n loaded,\n total\n });\n });\n pdfDataRangeTransport.addProgressiveReadListener((chunk) => {\n this._onReceiveData({\n chunk\n });\n });\n pdfDataRangeTransport.addProgressiveDoneListener(() => {\n this._onProgressiveDone();\n });\n pdfDataRangeTransport.transportReady();\n }\n _onReceiveData({\n begin,\n chunk\n }) {\n const buffer = chunk instanceof Uint8Array && chunk.byteLength === chunk.buffer.byteLength ? chunk.buffer : new Uint8Array(chunk).buffer;\n if (begin === void 0) {\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 !== begin) {\n return false;\n }\n rangeReader._enqueue(buffer);\n return true;\n });\n assert(found, \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\");\n }\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n _onProgress(evt) {\n if (evt.total === void 0) {\n this._rangeReaders[0]?.onProgress?.({\n loaded: evt.loaded\n });\n } else {\n this._fullRequestReader?.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n }\n }\n _onProgressiveDone() {\n this._fullRequestReader?.progressiveDone();\n this._progressiveDone = true;\n }\n _removeRangeReader(reader) {\n const i = this._rangeReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFDataTransportStream.getFullReader can only be called once.\");\n const queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone, this._contentDispositionFilename);\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 cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeReaders.slice(0)) {\n reader.cancel(reason);\n }\n this._pdfDataRangeTransport.abort();\n }\n}\nclass PDFDataTransportStreamReader {\n constructor(stream, queuedChunks, progressiveDone = false, contentDispositionFilename = null) {\n this._stream = stream;\n this._done = progressiveDone || false;\n this._filename = isPdfFile(contentDispositionFilename) ? contentDispositionFilename : 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 this.onProgress = null;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunks.push(chunk);\n }\n this._loaded += chunk.byteLength;\n }\n get headersReady() {\n return this._headersReady;\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n }\n get contentLength() {\n return this._stream._contentLength;\n }\n async read() {\n if (this._queuedChunks.length > 0) {\n const chunk = this._queuedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: void 0,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: void 0,\n done: true\n });\n }\n this._requests.length = 0;\n }\n progressiveDone() {\n if (this._done) {\n return;\n }\n this._done = true;\n }\n}\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 this.onProgress = null;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n const requestsCapability = this._requests.shift();\n requestsCapability.resolve({\n value: chunk,\n done: false\n });\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: void 0,\n done: true\n });\n }\n this._requests.length = 0;\n }\n this._done = true;\n this._stream._removeRangeReader(this);\n }\n get isStreamingSupported() {\n return false;\n }\n async read() {\n if (this._queuedChunk) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: void 0,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: void 0,\n done: true\n });\n }\n this._requests.length = 0;\n this._stream._removeRangeReader(this);\n }\n}\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n let needsEncodingFixup = true;\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 tmp = rfc2231getparam(contentDisposition);\n if (tmp) {\n const filename = rfc2047decode(tmp);\n return fixupEncoding(filename);\n }\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 function toParamRegExp(attributePattern, flags) {\n return new RegExp(\"(?:^|;)\\\\s*\" + attributePattern + '\\\\s*=\\\\s*([^\";\\\\s][^;\\\\s]*|\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?)', flags);\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, {\n fatal: true\n });\n const buffer = stringToBytes(value);\n value = decoder.decode(buffer);\n needsEncodingFixup = false;\n } catch {\n }\n }\n return value;\n }\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n value = textdecode(\"utf-8\", value);\n if (needsEncodingFixup) {\n value = textdecode(\"iso-8859-1\", value);\n }\n }\n return value;\n }\n function rfc2231getparam(contentDispositionStr) {\n const matches = [];\n let match;\n const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n while ((match = iter.exec(contentDispositionStr)) !== null) {\n let [, n, quot, part] = match;\n n = parseInt(n, 10);\n if (n in matches) {\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 break;\n }\n let [quot, part] = matches[n];\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 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;\n }\n parts[i] = parts[i].replaceAll(/\\\\(.)/g, \"$1\");\n }\n value = parts.join('\"');\n }\n return value;\n }\n function rfc5987decode(extvalue) {\n const encodingend = extvalue.indexOf(\"'\");\n if (encodingend === -1) {\n return extvalue;\n }\n const encoding = extvalue.slice(0, encodingend);\n const langvalue = extvalue.slice(encodingend + 1);\n const value = langvalue.replace(/^[^']*'/, \"\");\n return textdecode(encoding, value);\n }\n function rfc2047decode(value) {\n if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n return value.replaceAll(/=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g, function(matches, charset, encoding, text) {\n if (encoding === \"q\" || encoding === \"Q\") {\n text = text.replaceAll(\"_\", \" \");\n text = text.replaceAll(/=([0-9a-fA-F]{2})/g, function(match, hex) {\n return String.fromCharCode(parseInt(hex, 16));\n });\n return textdecode(charset, text);\n }\n try {\n text = atob(text);\n } catch {\n }\n return textdecode(charset, text);\n });\n }\n return \"\";\n}\nfunction createHeaders(isHttp, httpHeaders) {\n const headers = new Headers();\n if (!isHttp || !httpHeaders || typeof httpHeaders !== \"object\") {\n return headers;\n }\n for (const key in httpHeaders) {\n const val = httpHeaders[key];\n if (val !== void 0) {\n headers.append(key, val);\n }\n }\n return headers;\n}\nfunction getResponseOrigin(url) {\n return URL.parse(url)?.origin ?? null;\n}\nfunction validateRangeRequestCapabilities({\n responseHeaders,\n isHttp,\n rangeChunkSize,\n disableRange\n}) {\n const returnValues = {\n allowRangeRequests: false,\n suggestedLength: void 0\n };\n const length = parseInt(responseHeaders.get(\"Content-Length\"), 10);\n if (!Number.isInteger(length)) {\n return returnValues;\n }\n returnValues.suggestedLength = length;\n if (length <= 2 * rangeChunkSize) {\n return returnValues;\n }\n if (disableRange || !isHttp) {\n return returnValues;\n }\n if (responseHeaders.get(\"Accept-Ranges\") !== \"bytes\") {\n return returnValues;\n }\n const contentEncoding = responseHeaders.get(\"Content-Encoding\") || \"identity\";\n if (contentEncoding !== \"identity\") {\n return returnValues;\n }\n returnValues.allowRangeRequests = true;\n return returnValues;\n}\nfunction extractFilenameFromHeader(responseHeaders) {\n const contentDisposition = responseHeaders.get(\"Content-Disposition\");\n if (contentDisposition) {\n let filename = getFilenameFromContentDispositionHeader(contentDisposition);\n if (filename.includes(\"%\")) {\n try {\n filename = decodeURIComponent(filename);\n } catch {\n }\n }\n if (isPdfFile(filename)) {\n return filename;\n }\n }\n return null;\n}\nfunction createResponseError(status, url) {\n return new ResponseException$1(`Unexpected server response (${status}) while retrieving PDF \"${url}\".`, status, status === 404 || status === 0 && url.startsWith(\"file:\"));\n}\nfunction validateResponseStatus(status) {\n return status === 200 || status === 206;\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}\nfunction getArrayBuffer(val) {\n if (val instanceof Uint8Array) {\n return val.buffer;\n }\n if (val instanceof ArrayBuffer) {\n return val;\n }\n warn(`getArrayBuffer - unexpected data format: ${val}`);\n return new Uint8Array(val).buffer;\n}\nclass PDFFetchStream {\n _responseOrigin = null;\n constructor(source) {\n this.source = source;\n this.isHttp = /^https?:/i.test(source.url);\n this.headers = createHeaders(this.isHttp, source.httpHeaders);\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFFetchStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\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 cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\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 = Promise.withResolvers();\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._abortController = new AbortController();\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n const headers = new Headers(stream.headers);\n const url = source.url;\n fetch(url, createFetchOptions(headers, this._withCredentials, this._abortController)).then((response) => {\n stream._responseOrigin = getResponseOrigin(response.url);\n if (!validateResponseStatus(response.status)) {\n throw createResponseError(response.status, url);\n }\n this._reader = response.body.getReader();\n this._headersCapability.resolve();\n const responseHeaders = response.headers;\n const {\n allowRangeRequests,\n suggestedLength\n } = validateRangeRequestCapabilities({\n responseHeaders,\n isHttp: stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = allowRangeRequests;\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = extractFilenameFromHeader(responseHeaders);\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new AbortException$1(\"Streaming is disabled.\"));\n }\n }).catch(this._headersCapability.reject);\n this.onProgress = null;\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._headersCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\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 = Promise.withResolvers();\n this._isStreamingSupported = !source.disableStream;\n this._abortController = new AbortController();\n const headers = new Headers(stream.headers);\n headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n const url = source.url;\n fetch(url, createFetchOptions(headers, this._withCredentials, this._abortController)).then((response) => {\n const responseOrigin = getResponseOrigin(response.url);\n if (responseOrigin !== stream._responseOrigin) {\n throw new Error(`Expected range response-origin \"${responseOrigin}\" to match \"${stream._responseOrigin}\".`);\n }\n if (!validateResponseStatus(response.status)) {\n throw createResponseError(response.status, url);\n }\n this._readCapability.resolve();\n this._reader = response.body.getReader();\n }).catch(this._readCapability.reject);\n this.onProgress = null;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded\n });\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\nfunction network_getArrayBuffer(xhr) {\n const data = xhr.response;\n if (typeof data !== \"string\") {\n return data;\n }\n return stringToBytes(data).buffer;\n}\nclass NetworkManager {\n _responseOrigin = null;\n constructor({\n url,\n httpHeaders,\n withCredentials\n }) {\n this.url = url;\n this.isHttp = /^https?:/i.test(url);\n this.headers = createHeaders(this.isHttp, httpHeaders);\n this.withCredentials = withCredentials || false;\n this.currXhrId = 0;\n this.pendingRequests = /* @__PURE__ */ Object.create(null);\n }\n request(args) {\n const xhr = new XMLHttpRequest();\n const xhrId = this.currXhrId++;\n const pendingRequest = this.pendingRequests[xhrId] = {\n xhr\n };\n xhr.open(\"GET\", this.url);\n xhr.withCredentials = this.withCredentials;\n for (const [key, val] of this.headers) {\n xhr.setRequestHeader(key, val);\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 assert(args.onError, \"Expected `onError` callback to be provided.\");\n xhr.onerror = () => {\n args.onError(xhr.status);\n };\n xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n xhr.onprogress = this.onProgress.bind(this, xhrId);\n pendingRequest.onHeadersReceived = args.onHeadersReceived;\n pendingRequest.onDone = args.onDone;\n pendingRequest.onError = args.onError;\n pendingRequest.onProgress = args.onProgress;\n xhr.send(null);\n return xhrId;\n }\n onProgress(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return;\n }\n pendingRequest.onProgress?.(evt);\n }\n onStateChange(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return;\n }\n const xhr = pendingRequest.xhr;\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n if (xhr.readyState !== 4) {\n return;\n }\n if (!(xhrId in this.pendingRequests)) {\n return;\n }\n delete this.pendingRequests[xhrId];\n if (xhr.status === 0 && this.isHttp) {\n pendingRequest.onError(xhr.status);\n return;\n }\n const xhrStatus = xhr.status || OK_RESPONSE;\n const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {\n pendingRequest.onError(xhr.status);\n return;\n }\n const chunk = network_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 if (matches) {\n pendingRequest.onDone({\n begin: parseInt(matches[1], 10),\n chunk\n });\n } else {\n warn(`Missing or invalid \"Content-Range\" header.`);\n pendingRequest.onError(0);\n }\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk\n });\n } else {\n pendingRequest.onError(xhr.status);\n }\n }\n getRequestXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n }\n isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n }\n abortRequest(xhrId) {\n const xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n }\n}\nclass PDFNetworkStream {\n constructor(source) {\n this._source = source;\n this._manager = new NetworkManager(source);\n this._rangeChunkSize = source.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n _onRangeRequestReaderClosed(reader) {\n const i = this._rangeRequestReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFNetworkStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);\n return this._fullRequestReader;\n }\n getRangeReader(begin, end) {\n const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end);\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFNetworkStreamFullRequestReader {\n constructor(manager, source) {\n this._manager = manager;\n this._url = source.url;\n this._fullRequestId = manager.request({\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._headersCapability = Promise.withResolvers();\n this._disableRange = source.disableRange || false;\n this._contentLength = source.length;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._isStreamingSupported = false;\n this._isRangeSupported = false;\n this._cachedChunks = [];\n this._requests = [];\n this._done = false;\n this._storedError = void 0;\n this._filename = null;\n this.onProgress = null;\n }\n _onHeadersReceived() {\n const fullRequestXhrId = this._fullRequestId;\n const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n this._manager._responseOrigin = getResponseOrigin(fullRequestXhr.responseURL);\n const rawResponseHeaders = fullRequestXhr.getAllResponseHeaders();\n const responseHeaders = new Headers(rawResponseHeaders ? rawResponseHeaders.trimStart().replace(/[^\\S ]+$/, \"\").split(/[\\r\\n]+/).map((x) => {\n const [key, ...val] = x.split(\": \");\n return [key, val.join(\": \")];\n }) : []);\n const {\n allowRangeRequests,\n suggestedLength\n } = validateRangeRequestCapabilities({\n responseHeaders,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n if (allowRangeRequests) {\n this._isRangeSupported = true;\n }\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = extractFilenameFromHeader(responseHeaders);\n if (this._isRangeSupported) {\n this._manager.abortRequest(fullRequestXhrId);\n }\n this._headersCapability.resolve();\n }\n _onDone(data) {\n if (data) {\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: data.chunk,\n done: false\n });\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({\n value: void 0,\n done: true\n });\n }\n this._requests.length = 0;\n }\n _onError(status) {\n this._storedError = createResponseError(status, this._url);\n this._headersCapability.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 _onProgress(evt) {\n this.onProgress?.({\n loaded: evt.loaded,\n total: evt.lengthComputable ? evt.total : this._contentLength\n });\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n get contentLength() {\n return this._contentLength;\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n async read() {\n await this._headersCapability.promise;\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._cachedChunks.length > 0) {\n const chunk = this._cachedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: void 0,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n this._headersCapability.reject(reason);\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: void 0,\n done: true\n });\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}\nclass PDFNetworkStreamRangeRequestReader {\n constructor(manager, begin, end) {\n this._manager = manager;\n this._url = manager.url;\n this._requestId = manager.request({\n begin,\n end,\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._requests = [];\n this._queuedChunk = null;\n this._done = false;\n this._storedError = void 0;\n this.onProgress = null;\n this.onClosed = null;\n }\n _onHeadersReceived() {\n const responseOrigin = getResponseOrigin(this._manager.getRequestXhr(this._requestId)?.responseURL);\n if (responseOrigin !== this._manager._responseOrigin) {\n this._storedError = new Error(`Expected range response-origin \"${responseOrigin}\" to match \"${this._manager._responseOrigin}\".`);\n this._onError(0);\n }\n }\n _close() {\n this.onClosed?.(this);\n }\n _onDone(data) {\n const chunk = data.chunk;\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunk = chunk;\n }\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: void 0,\n done: true\n });\n }\n this._requests.length = 0;\n this._close();\n }\n _onError(status) {\n this._storedError ??= createResponseError(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 _onProgress(evt) {\n if (!this.isStreamingSupported) {\n this.onProgress?.({\n loaded: evt.loaded\n });\n }\n }\n get isStreamingSupported() {\n return false;\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 {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: void 0,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: void 0,\n done: true\n });\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}\nconst urlRegex = /^[a-z][a-z0-9\\-+.]+:/i;\nfunction parseUrlOrPath(sourceUrl) {\n if (urlRegex.test(sourceUrl)) {\n return new URL(sourceUrl);\n }\n const url = process.getBuiltinModule(\"url\");\n return new URL(url.pathToFileURL(sourceUrl));\n}\nclass PDFNodeStream {\n constructor(source) {\n this.source = source;\n this.url = parseUrlOrPath(source.url);\n assert(this.url.protocol === \"file:\", \"PDFNodeStream only supports file:// URLs.\");\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFNodeStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFNodeStreamFsFullReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(start, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const rangeReader = new PDFNodeStreamFsRangeReader(this, start, end);\n this._rangeRequestReaders.push(rangeReader);\n return rangeReader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFNodeStreamFsFullReader {\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;\n this._loaded = 0;\n this._filename = null;\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n this._readableStream = null;\n this._readCapability = Promise.withResolvers();\n this._headersCapability = Promise.withResolvers();\n const fs = process.getBuiltinModule(\"fs\");\n fs.promises.lstat(this._url).then((stat) => {\n this._contentLength = stat.size;\n this._setReadableStream(fs.createReadStream(this._url));\n this._headersCapability.resolve();\n }, (error) => {\n if (error.code === \"ENOENT\") {\n error = createResponseError(0, this._url.href);\n }\n this._storedError = error;\n this._headersCapability.reject(error);\n });\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return {\n value: void 0,\n done: true\n };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = Promise.withResolvers();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", (reason) => {\n this._error(reason);\n });\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this._error(new AbortException$1(\"streaming is disabled\"));\n }\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\nclass PDFNodeStreamFsRangeReader {\n constructor(stream, start, end) {\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 = Promise.withResolvers();\n const source = stream.source;\n this._isStreamingSupported = !source.disableStream;\n const fs = process.getBuiltinModule(\"fs\");\n this._setReadableStream(fs.createReadStream(this._url, {\n start,\n end: end - 1\n }));\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return {\n value: void 0,\n done: true\n };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = Promise.withResolvers();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded\n });\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", (reason) => {\n this._error(reason);\n });\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\nconst INITIAL_DATA = Symbol(\"INITIAL_DATA\");\nclass PDFObjects {\n #objs = /* @__PURE__ */ Object.create(null);\n #ensureObj(objId) {\n return this.#objs[objId] ||= {\n ...Promise.withResolvers(),\n data: INITIAL_DATA\n };\n }\n get(objId, callback = null) {\n if (callback) {\n const obj2 = this.#ensureObj(objId);\n obj2.promise.then(() => callback(obj2.data));\n return null;\n }\n const obj = this.#objs[objId];\n if (!obj || obj.data === INITIAL_DATA) {\n throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n }\n return obj.data;\n }\n has(objId) {\n const obj = this.#objs[objId];\n return !!obj && obj.data !== INITIAL_DATA;\n }\n delete(objId) {\n const obj = this.#objs[objId];\n if (!obj || obj.data === INITIAL_DATA) {\n return false;\n }\n delete this.#objs[objId];\n return true;\n }\n resolve(objId, data = null) {\n const obj = this.#ensureObj(objId);\n obj.data = data;\n obj.resolve();\n }\n clear() {\n for (const objId in this.#objs) {\n const {\n data\n } = this.#objs[objId];\n data?.bitmap?.close();\n }\n this.#objs = /* @__PURE__ */ Object.create(null);\n }\n *[Symbol.iterator]() {\n for (const objId in this.#objs) {\n const {\n data\n } = this.#objs[objId];\n if (data === INITIAL_DATA) {\n continue;\n }\n yield [objId, data];\n }\n }\n}\nconst MAX_TEXT_DIVS_TO_RENDER = 1e5;\nconst DEFAULT_FONT_SIZE = 30;\nclass TextLayer {\n #capability = Promise.withResolvers();\n #container = null;\n #disableProcessItems = false;\n #fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n #lang = null;\n #layoutTextParams = null;\n #pageHeight = 0;\n #pageWidth = 0;\n #reader = null;\n #rootContainer = null;\n #rotation = 0;\n #scale = 0;\n #styleCache = /* @__PURE__ */ Object.create(null);\n #textContentItemsStr = [];\n #textContentSource = null;\n #textDivs = [];\n #textDivProperties = /* @__PURE__ */ new WeakMap();\n #transform = null;\n static #ascentCache = /* @__PURE__ */ new Map();\n static #canvasContexts = /* @__PURE__ */ new Map();\n static #canvasCtxFonts = /* @__PURE__ */ new WeakMap();\n static #minFontSize = null;\n static #pendingTextLayers = /* @__PURE__ */ new Set();\n constructor({\n textContentSource,\n container,\n viewport\n }) {\n if (textContentSource instanceof ReadableStream) {\n this.#textContentSource = textContentSource;\n } else if (typeof textContentSource === \"object\") {\n this.#textContentSource = new ReadableStream({\n start(controller) {\n controller.enqueue(textContentSource);\n controller.close();\n }\n });\n } else {\n throw new Error('No \"textContentSource\" parameter specified.');\n }\n this.#container = this.#rootContainer = container;\n this.#scale = viewport.scale * OutputScale.pixelRatio;\n this.#rotation = viewport.rotation;\n this.#layoutTextParams = {\n div: null,\n properties: null,\n ctx: null\n };\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n this.#transform = [1, 0, 0, -1, -pageX, pageY + pageHeight];\n this.#pageWidth = pageWidth;\n this.#pageHeight = pageHeight;\n TextLayer.#ensureMinFontSizeComputed();\n setLayerDimensions(container, viewport);\n this.#capability.promise.finally(() => {\n TextLayer.#pendingTextLayers.delete(this);\n this.#layoutTextParams = null;\n this.#styleCache = null;\n }).catch(() => {\n });\n }\n static get fontFamilyMap() {\n const {\n isWindows,\n isFirefox\n } = util_FeatureTest.platform;\n return shadow(this, \"fontFamilyMap\", /* @__PURE__ */ new Map([[\"sans-serif\", `${isWindows && isFirefox ? \"Calibri, \" : \"\"}sans-serif`], [\"monospace\", `${isWindows && isFirefox ? \"Lucida Console, \" : \"\"}monospace`]]));\n }\n render() {\n const pump = () => {\n this.#reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n this.#capability.resolve();\n return;\n }\n this.#lang ??= value.lang;\n Object.assign(this.#styleCache, value.styles);\n this.#processItems(value.items);\n pump();\n }, this.#capability.reject);\n };\n this.#reader = this.#textContentSource.getReader();\n TextLayer.#pendingTextLayers.add(this);\n pump();\n return this.#capability.promise;\n }\n update({\n viewport,\n onBefore = null\n }) {\n const scale = viewport.scale * OutputScale.pixelRatio;\n const rotation = viewport.rotation;\n if (rotation !== this.#rotation) {\n onBefore?.();\n this.#rotation = rotation;\n setLayerDimensions(this.#rootContainer, {\n rotation\n });\n }\n if (scale !== this.#scale) {\n onBefore?.();\n this.#scale = scale;\n const params = {\n div: null,\n properties: null,\n ctx: TextLayer.#getCtx(this.#lang)\n };\n for (const div of this.#textDivs) {\n params.properties = this.#textDivProperties.get(div);\n params.div = div;\n this.#layout(params);\n }\n }\n }\n cancel() {\n const abortEx = new AbortException$1(\"TextLayer task cancelled.\");\n this.#reader?.cancel(abortEx).catch(() => {\n });\n this.#reader = null;\n this.#capability.reject(abortEx);\n }\n get textDivs() {\n return this.#textDivs;\n }\n get textContentItemsStr() {\n return this.#textContentItemsStr;\n }\n #processItems(items) {\n if (this.#disableProcessItems) {\n return;\n }\n this.#layoutTextParams.ctx ??= TextLayer.#getCtx(this.#lang);\n const textDivs = this.#textDivs, textContentItemsStr = this.#textContentItemsStr;\n for (const item of items) {\n if (textDivs.length > MAX_TEXT_DIVS_TO_RENDER) {\n warn(\"Ignoring additional textDivs for performance reasons.\");\n this.#disableProcessItems = true;\n return;\n }\n if (item.str === void 0) {\n if (item.type === \"beginMarkedContentProps\" || item.type === \"beginMarkedContent\") {\n const parent = this.#container;\n this.#container = document.createElement(\"span\");\n this.#container.classList.add(\"markedContent\");\n if (item.id) {\n this.#container.setAttribute(\"id\", `${item.id}`);\n }\n parent.append(this.#container);\n } else if (item.type === \"endMarkedContent\") {\n this.#container = this.#container.parentNode;\n }\n continue;\n }\n textContentItemsStr.push(item.str);\n this.#appendText(item);\n }\n }\n #appendText(geom) {\n const textDiv = document.createElement(\"span\");\n const textDivProperties = {\n angle: 0,\n canvasWidth: 0,\n hasText: geom.str !== \"\",\n hasEOL: geom.hasEOL,\n fontSize: 0\n };\n this.#textDivs.push(textDiv);\n const tx = Util.transform(this.#transform, geom.transform);\n let angle = Math.atan2(tx[1], tx[0]);\n const style = this.#styleCache[geom.fontName];\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n let fontFamily = this.#fontInspectorEnabled && style.fontSubstitution || style.fontFamily;\n fontFamily = TextLayer.fontFamilyMap.get(fontFamily) || fontFamily;\n const fontHeight = Math.hypot(tx[2], tx[3]);\n const fontAscent = fontHeight * TextLayer.#getAscent(fontFamily, style, this.#lang);\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 const scaleFactorStr = \"calc(var(--total-scale-factor) *\";\n const divStyle = textDiv.style;\n if (this.#container === this.#rootContainer) {\n divStyle.left = `${(100 * left / this.#pageWidth).toFixed(2)}%`;\n divStyle.top = `${(100 * top / this.#pageHeight).toFixed(2)}%`;\n } else {\n divStyle.left = `${scaleFactorStr}${left.toFixed(2)}px)`;\n divStyle.top = `${scaleFactorStr}${top.toFixed(2)}px)`;\n }\n divStyle.fontSize = `${scaleFactorStr}${(TextLayer.#minFontSize * fontHeight).toFixed(2)}px)`;\n divStyle.fontFamily = fontFamily;\n textDivProperties.fontSize = fontHeight;\n textDiv.setAttribute(\"role\", \"presentation\");\n textDiv.textContent = geom.str;\n textDiv.dir = geom.dir;\n if (this.#fontInspectorEnabled) {\n textDiv.dataset.fontName = style.fontSubstitutionLoadedName || geom.fontName;\n }\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n let shouldScaleText = false;\n if (geom.str.length > 1) {\n shouldScaleText = true;\n } else if (geom.str !== \" \" && geom.transform[0] !== geom.transform[3]) {\n const absScaleX = Math.abs(geom.transform[0]), absScaleY = Math.abs(geom.transform[3]);\n if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) {\n shouldScaleText = true;\n }\n }\n if (shouldScaleText) {\n textDivProperties.canvasWidth = style.vertical ? geom.height : geom.width;\n }\n this.#textDivProperties.set(textDiv, textDivProperties);\n this.#layoutTextParams.div = textDiv;\n this.#layoutTextParams.properties = textDivProperties;\n this.#layout(this.#layoutTextParams);\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 #layout(params) {\n const {\n div,\n properties,\n ctx\n } = params;\n const {\n style\n } = div;\n let transform = \"\";\n if (TextLayer.#minFontSize > 1) {\n transform = `scale(${1 / TextLayer.#minFontSize})`;\n }\n if (properties.canvasWidth !== 0 && properties.hasText) {\n const {\n fontFamily\n } = style;\n const {\n canvasWidth,\n fontSize\n } = properties;\n TextLayer.#ensureCtxFont(ctx, fontSize * this.#scale, fontFamily);\n const {\n width\n } = ctx.measureText(div.textContent);\n if (width > 0) {\n transform = `scaleX(${canvasWidth * this.#scale / width}) ${transform}`;\n }\n }\n if (properties.angle !== 0) {\n transform = `rotate(${properties.angle}deg) ${transform}`;\n }\n if (transform.length > 0) {\n style.transform = transform;\n }\n }\n static cleanup() {\n if (this.#pendingTextLayers.size > 0) {\n return;\n }\n this.#ascentCache.clear();\n for (const {\n canvas\n } of this.#canvasContexts.values()) {\n canvas.remove();\n }\n this.#canvasContexts.clear();\n }\n static #getCtx(lang = null) {\n let ctx = this.#canvasContexts.get(lang ||= \"\");\n if (!ctx) {\n const canvas = document.createElement(\"canvas\");\n canvas.className = \"hiddenCanvasElement\";\n canvas.lang = lang;\n document.body.append(canvas);\n ctx = canvas.getContext(\"2d\", {\n alpha: false,\n willReadFrequently: true\n });\n this.#canvasContexts.set(lang, ctx);\n this.#canvasCtxFonts.set(ctx, {\n size: 0,\n family: \"\"\n });\n }\n return ctx;\n }\n static #ensureCtxFont(ctx, size, family) {\n const cached = this.#canvasCtxFonts.get(ctx);\n if (size === cached.size && family === cached.family) {\n return;\n }\n ctx.font = `${size}px ${family}`;\n cached.size = size;\n cached.family = family;\n }\n static #ensureMinFontSizeComputed() {\n if (this.#minFontSize !== null) {\n return;\n }\n const div = document.createElement(\"div\");\n div.style.opacity = 0;\n div.style.lineHeight = 1;\n div.style.fontSize = \"1px\";\n div.style.position = \"absolute\";\n div.textContent = \"X\";\n document.body.append(div);\n this.#minFontSize = div.getBoundingClientRect().height;\n div.remove();\n }\n static #getAscent(fontFamily, style, lang) {\n const cachedAscent = this.#ascentCache.get(fontFamily);\n if (cachedAscent) {\n return cachedAscent;\n }\n const ctx = this.#getCtx(lang);\n ctx.canvas.width = ctx.canvas.height = DEFAULT_FONT_SIZE;\n this.#ensureCtxFont(ctx, DEFAULT_FONT_SIZE, fontFamily);\n const metrics = ctx.measureText(\"\");\n const ascent = metrics.fontBoundingBoxAscent;\n const descent = Math.abs(metrics.fontBoundingBoxDescent);\n ctx.canvas.width = ctx.canvas.height = 0;\n let ratio = 0.8;\n if (ascent) {\n ratio = ascent / (ascent + descent);\n } else {\n if (util_FeatureTest.platform.isFirefox) {\n warn(\"Enable the `dom.textMetrics.fontBoundingBox.enabled` preference in `about:config` to improve TextLayer rendering.\");\n }\n if (style.ascent) {\n ratio = style.ascent;\n } else if (style.descent) {\n ratio = 1 + style.descent;\n }\n }\n this.#ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n}\nconst RENDERING_CANCELLED_TIMEOUT = 100;\nfunction getDocument(src = {}) {\n if (typeof src === \"string\" || src instanceof URL) {\n src = {\n url: src\n };\n } else if (src instanceof ArrayBuffer || ArrayBuffer.isView(src)) {\n src = {\n data: src\n };\n }\n const task = new PDFDocumentLoadingTask();\n const {\n docId\n } = task;\n const url = src.url ? getUrlProp(src.url) : null;\n const data = src.data ? getDataProp(src.data) : null;\n const httpHeaders = src.httpHeaders || null;\n const withCredentials = src.withCredentials === true;\n const password = src.password ?? null;\n const rangeTransport = src.range instanceof PDFDataRangeTransport ? src.range : null;\n const rangeChunkSize = Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0 ? src.rangeChunkSize : 2 ** 16;\n let worker = src.worker instanceof PDFWorker ? src.worker : null;\n const verbosity2 = src.verbosity;\n const docBaseUrl = typeof src.docBaseUrl === \"string\" && !isDataScheme(src.docBaseUrl) ? src.docBaseUrl : null;\n const cMapUrl = getFactoryUrlProp(src.cMapUrl);\n const cMapPacked = src.cMapPacked !== false;\n const CMapReaderFactory = src.CMapReaderFactory || (isNodeJS ? NodeCMapReaderFactory : DOMCMapReaderFactory);\n const iccUrl = getFactoryUrlProp(src.iccUrl);\n const standardFontDataUrl = getFactoryUrlProp(src.standardFontDataUrl);\n const StandardFontDataFactory = src.StandardFontDataFactory || (isNodeJS ? NodeStandardFontDataFactory : DOMStandardFontDataFactory);\n const wasmUrl = getFactoryUrlProp(src.wasmUrl);\n const WasmFactory = src.WasmFactory || (isNodeJS ? NodeWasmFactory : DOMWasmFactory);\n const ignoreErrors = src.stopAtErrors !== true;\n const maxImageSize = Number.isInteger(src.maxImageSize) && src.maxImageSize > -1 ? src.maxImageSize : -1;\n const isEvalSupported2 = src.isEvalSupported !== false;\n const isOffscreenCanvasSupported = typeof src.isOffscreenCanvasSupported === \"boolean\" ? src.isOffscreenCanvasSupported : !isNodeJS;\n const isImageDecoderSupported = typeof src.isImageDecoderSupported === \"boolean\" ? src.isImageDecoderSupported : !isNodeJS && (util_FeatureTest.platform.isFirefox || !globalThis.chrome);\n const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes) ? src.canvasMaxAreaInBytes : -1;\n const disableFontFace = typeof src.disableFontFace === \"boolean\" ? src.disableFontFace : isNodeJS;\n const fontExtraProperties = src.fontExtraProperties === true;\n const enableXfa = src.enableXfa === true;\n const ownerDocument = src.ownerDocument || globalThis.document;\n const disableRange = src.disableRange === true;\n const disableStream = src.disableStream === true;\n const disableAutoFetch = src.disableAutoFetch === true;\n const pdfBug = src.pdfBug === true;\n const CanvasFactory = src.CanvasFactory || (isNodeJS ? NodeCanvasFactory : DOMCanvasFactory);\n const FilterFactory = src.FilterFactory || (isNodeJS ? NodeFilterFactory : DOMFilterFactory);\n const enableHWA = src.enableHWA === true;\n const useWasm = src.useWasm !== false;\n const length = rangeTransport ? rangeTransport.length : src.length ?? NaN;\n const useSystemFonts = typeof src.useSystemFonts === \"boolean\" ? src.useSystemFonts : !isNodeJS && !disableFontFace;\n const useWorkerFetch = typeof src.useWorkerFetch === \"boolean\" ? src.useWorkerFetch : !!(CMapReaderFactory === DOMCMapReaderFactory && StandardFontDataFactory === DOMStandardFontDataFactory && WasmFactory === DOMWasmFactory && cMapUrl && standardFontDataUrl && wasmUrl && isValidFetchUrl(cMapUrl, document.baseURI) && isValidFetchUrl(standardFontDataUrl, document.baseURI) && isValidFetchUrl(wasmUrl, document.baseURI));\n const styleElement = null;\n setVerbosityLevel(verbosity2);\n const transportFactory = {\n canvasFactory: new CanvasFactory({\n ownerDocument,\n enableHWA\n }),\n filterFactory: new FilterFactory({\n docId,\n ownerDocument\n }),\n cMapReaderFactory: useWorkerFetch ? null : new CMapReaderFactory({\n baseUrl: cMapUrl,\n isCompressed: cMapPacked\n }),\n standardFontDataFactory: useWorkerFetch ? null : new StandardFontDataFactory({\n baseUrl: standardFontDataUrl\n }),\n wasmFactory: useWorkerFetch ? null : new WasmFactory({\n baseUrl: wasmUrl\n })\n };\n if (!worker) {\n worker = PDFWorker.create({\n verbosity: verbosity2,\n port: GlobalWorkerOptions.workerPort\n });\n task._worker = worker;\n }\n const docParams = {\n docId,\n apiVersion: \"5.4.296\",\n data,\n password,\n disableAutoFetch,\n rangeChunkSize,\n length,\n docBaseUrl,\n enableXfa,\n evaluatorOptions: {\n maxImageSize,\n disableFontFace,\n ignoreErrors,\n isEvalSupported: isEvalSupported2,\n isOffscreenCanvasSupported,\n isImageDecoderSupported,\n canvasMaxAreaInBytes,\n fontExtraProperties,\n useSystemFonts,\n useWasm,\n useWorkerFetch,\n cMapUrl,\n iccUrl,\n standardFontDataUrl,\n wasmUrl\n }\n };\n const transportParams = {\n ownerDocument,\n pdfBug,\n styleElement,\n loadingParams: {\n disableAutoFetch,\n enableXfa\n }\n };\n worker.promise.then(function() {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const workerIdPromise = worker.messageHandler.sendWithPromise(\"GetDocRequest\", docParams, data ? [data.buffer] : null);\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(rangeTransport, {\n disableRange,\n disableStream\n });\n } else if (!data) {\n if (!url) {\n throw new Error(\"getDocument - no `url` parameter provided.\");\n }\n const NetworkStream = isValidFetchUrl(url) ? PDFFetchStream : isNodeJS ? PDFNodeStream : PDFNetworkStream;\n networkStream = new NetworkStream({\n url,\n length,\n httpHeaders,\n withCredentials,\n rangeChunkSize,\n disableRange,\n disableStream\n });\n }\n return workerIdPromise.then((workerId) => {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const messageHandler = new MessageHandler(docId, workerId, worker.port);\n const transport = new WorkerTransport(messageHandler, task, networkStream, transportParams, transportFactory, enableHWA);\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n });\n }).catch(task._capability.reject);\n return task;\n}\nclass PDFDocumentLoadingTask {\n static #docId = 0;\n _capability = Promise.withResolvers();\n _transport = null;\n _worker = null;\n docId = `d${PDFDocumentLoadingTask.#docId++}`;\n destroyed = false;\n onPassword = null;\n onProgress = null;\n get promise() {\n return this._capability.promise;\n }\n async destroy() {\n this.destroyed = true;\n try {\n if (this._worker?.port) {\n this._worker._pendingDestroy = true;\n }\n await this._transport?.destroy();\n } catch (ex) {\n if (this._worker?.port) {\n delete this._worker._pendingDestroy;\n }\n throw ex;\n }\n this._transport = null;\n this._worker?.destroy();\n this._worker = null;\n }\n async getData() {\n return this._transport.getData();\n }\n}\nclass PDFDataRangeTransport {\n #capability = Promise.withResolvers();\n #progressiveDoneListeners = [];\n #progressiveReadListeners = [];\n #progressListeners = [];\n #rangeListeners = [];\n constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n }\n addRangeListener(listener) {\n this.#rangeListeners.push(listener);\n }\n addProgressListener(listener) {\n this.#progressListeners.push(listener);\n }\n addProgressiveReadListener(listener) {\n this.#progressiveReadListeners.push(listener);\n }\n addProgressiveDoneListener(listener) {\n this.#progressiveDoneListeners.push(listener);\n }\n onDataRange(begin, chunk) {\n for (const listener of this.#rangeListeners) {\n listener(begin, chunk);\n }\n }\n onDataProgress(loaded, total) {\n this.#capability.promise.then(() => {\n for (const listener of this.#progressListeners) {\n listener(loaded, total);\n }\n });\n }\n onDataProgressiveRead(chunk) {\n this.#capability.promise.then(() => {\n for (const listener of this.#progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n onDataProgressiveDone() {\n this.#capability.promise.then(() => {\n for (const listener of this.#progressiveDoneListeners) {\n listener();\n }\n });\n }\n transportReady() {\n this.#capability.resolve();\n }\n requestDataRange(begin, end) {\n unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n abort() {\n }\n}\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n }\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n get canvasFactory() {\n return this._transport.canvasFactory;\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get numPages() {\n return this._pdfInfo.numPages;\n }\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n getDestinations() {\n return this._transport.getDestinations();\n }\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n getPageMode() {\n return this._transport.getPageMode();\n }\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n getAttachments() {\n return this._transport.getAttachments();\n }\n getAnnotationsByType(types, pageIndexesToSkip) {\n return this._transport.getAnnotationsByType(types, pageIndexesToSkip);\n }\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n getOutline() {\n return this._transport.getOutline();\n }\n getOptionalContentConfig({\n intent = \"display\"\n } = {}) {\n const {\n renderingIntent\n } = this._transport.getRenderingIntent(intent);\n return this._transport.getOptionalContentConfig(renderingIntent);\n }\n getPermissions() {\n return this._transport.getPermissions();\n }\n getMetadata() {\n return this._transport.getMetadata();\n }\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n getData() {\n return this._transport.getData();\n }\n saveDocument() {\n return this._transport.saveDocument();\n }\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n destroy() {\n return this.loadingTask.destroy();\n }\n cachedPageNumber(ref) {\n return this._transport.cachedPageNumber(ref);\n }\n get loadingParams() {\n return this._transport.loadingParams;\n }\n get loadingTask() {\n return this._transport.loadingTask;\n }\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n}\nclass PDFPageProxy {\n #pendingCleanup = false;\n constructor(pageIndex, pageInfo, transport, pdfBug = false) {\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._transport = transport;\n this._stats = pdfBug ? new StatTimer() : null;\n this._pdfBug = pdfBug;\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n this._intentStates = /* @__PURE__ */ new Map();\n this.destroyed = false;\n this.recordedBBoxes = null;\n }\n get pageNumber() {\n return this._pageIndex + 1;\n }\n get rotate() {\n return this._pageInfo.rotate;\n }\n get ref() {\n return this._pageInfo.ref;\n }\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n get view() {\n return this._pageInfo.view;\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 userUnit: this.userUnit,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n getAnnotations({\n intent = \"display\"\n } = {}) {\n const {\n renderingIntent\n } = this._transport.getRenderingIntent(intent);\n return this._transport.getAnnotations(this._pageIndex, renderingIntent);\n }\n getJSActions() {\n return this._transport.getPageJSActions(this._pageIndex);\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n render({\n canvasContext,\n canvas = canvasContext.canvas,\n viewport,\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n transform = null,\n background = null,\n optionalContentConfigPromise = null,\n annotationCanvasMap = null,\n pageColors = null,\n printAnnotationStorage = null,\n isEditing = false,\n recordOperations = false,\n operationsFilter = null\n }) {\n this._stats?.time(\"Overall\");\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing);\n const {\n renderingIntent,\n cacheKey\n } = intentArgs;\n this.#pendingCleanup = false;\n optionalContentConfigPromise ||= this._transport.getOptionalContentConfig(renderingIntent);\n let intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n intentState = /* @__PURE__ */ Object.create(null);\n this._intentStates.set(cacheKey, intentState);\n }\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n const intentPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = Promise.withResolvers();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n const recordForDebugger = Boolean(this._pdfBug && globalThis.StepperManager?.enabled);\n const shouldRecordOperations = !this.recordedBBoxes && (recordOperations || recordForDebugger);\n const complete = (error) => {\n intentState.renderTasks.delete(internalRenderTask);\n if (shouldRecordOperations) {\n const recordedBBoxes = internalRenderTask.gfx?.dependencyTracker.take();\n if (recordedBBoxes) {\n if (internalRenderTask.stepper) {\n internalRenderTask.stepper.setOperatorBBoxes(recordedBBoxes, internalRenderTask.gfx.dependencyTracker.takeDebugMetadata());\n }\n if (recordOperations) {\n this.recordedBBoxes = recordedBBoxes;\n }\n }\n }\n if (intentPrint) {\n this.#pendingCleanup = true;\n }\n this.#tryCleanup();\n if (error) {\n internalRenderTask.capability.reject(error);\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 if (globalThis.Stats?.enabled) {\n globalThis.Stats.add(this.pageNumber, this._stats);\n }\n }\n };\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n params: {\n canvas,\n canvasContext,\n dependencyTracker: shouldRecordOperations ? new CanvasDependencyTracker(canvas, intentState.operatorList.length, recordForDebugger) : null,\n viewport,\n transform,\n background\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n annotationCanvasMap,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: this._transport.canvasFactory,\n filterFactory: this._transport.filterFactory,\n useRequestAnimationFrame: !intentPrint,\n pdfBug: this._pdfBug,\n pageColors,\n enableHWA: this._transport.enableHWA,\n operationsFilter\n });\n (intentState.renderTasks ||= /* @__PURE__ */ new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => {\n if (this.destroyed) {\n complete();\n return;\n }\n this._stats?.time(\"Rendering\");\n if (!(optionalContentConfig.renderingIntent & renderingIntent)) {\n throw new Error(\"Must use the same `intent`-argument when calling the `PDFPageProxy.render` and `PDFDocumentProxy.getOptionalContentConfig` methods.\");\n }\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig\n });\n internalRenderTask.operatorListChanged();\n }).catch(complete);\n return renderTask;\n }\n getOperatorList({\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n printAnnotationStorage = null,\n isEditing = false\n } = {}) {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n intentState.renderTasks.delete(opListTask);\n }\n }\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing, true);\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = /* @__PURE__ */ Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n let opListTask;\n if (!intentState.opListReadCapability) {\n opListTask = /* @__PURE__ */ Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = Promise.withResolvers();\n (intentState.renderTasks ||= /* @__PURE__ */ new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n return intentState.opListReadCapability.promise;\n }\n streamTextContent({\n includeMarkedContent = false,\n disableNormalization = false\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n return this._transport.messageHandler.sendWithStream(\"GetTextContent\", {\n pageIndex: this._pageIndex,\n includeMarkedContent: includeMarkedContent === true,\n disableNormalization: disableNormalization === true\n }, {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n }\n });\n }\n getTextContent(params = {}) {\n if (this._transport._htmlForXfa) {\n return this.getXfa().then((xfa) => XfaText.textContent(xfa));\n }\n const readableStream = this.streamTextContent(params);\n return new Promise(function(resolve, reject) {\n function pump() {\n reader.read().then(function({\n value,\n done\n }) {\n if (done) {\n resolve(textContent);\n return;\n }\n textContent.lang ??= value.lang;\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: /* @__PURE__ */ Object.create(null),\n lang: null\n };\n pump();\n });\n }\n getStructTree() {\n return this._transport.getStructTree(this._pageIndex);\n }\n _destroy() {\n this.destroyed = true;\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 if (intentState.opListReadCapability) {\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 this.#pendingCleanup = false;\n return Promise.all(waitOn);\n }\n cleanup(resetStats = false) {\n this.#pendingCleanup = true;\n const success = this.#tryCleanup();\n if (resetStats && success) {\n this._stats &&= new StatTimer();\n }\n return success;\n }\n #tryCleanup() {\n if (!this.#pendingCleanup || this.destroyed) {\n return false;\n }\n for (const {\n renderTasks,\n operatorList\n } of this._intentStates.values()) {\n if (renderTasks.size > 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n this._intentStates.clear();\n this.objs.clear();\n this.#pendingCleanup = false;\n return true;\n }\n _startRenderPage(transparency, cacheKey) {\n const intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n return;\n }\n this._stats?.timeEnd(\"Page Request\");\n intentState.displayReadyCapability?.resolve(transparency);\n }\n _renderPageChunk(operatorListChunk, intentState) {\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 for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n if (operatorListChunk.lastChunk) {\n this.#tryCleanup();\n }\n }\n _pumpOperatorList({\n renderingIntent,\n cacheKey,\n annotationStorageSerializable,\n modifiedIds\n }) {\n const {\n map,\n transfer\n } = annotationStorageSerializable;\n const readableStream = this._transport.messageHandler.sendWithStream(\"GetOperatorList\", {\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage: map,\n modifiedIds\n }, transfer);\n const reader = readableStream.getReader();\n const intentState = this._intentStates.get(cacheKey);\n intentState.streamReader = reader;\n const pump = () => {\n reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return;\n }\n this._renderPageChunk(value, intentState);\n pump();\n }, (reason) => {\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n if (intentState.operatorList) {\n intentState.operatorList.lastChunk = true;\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n this.#tryCleanup();\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 pump();\n }\n _abortOperatorList({\n intentState,\n reason,\n force = false\n }) {\n if (!intentState.streamReader) {\n return;\n }\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n if (!force) {\n if (intentState.renderTasks.size > 0) {\n return;\n }\n if (reason instanceof RenderingCancelledException) {\n let delay = RENDERING_CANCELLED_TIMEOUT;\n if (reason.extraDelay > 0 && reason.extraDelay < 1e3) {\n delay += reason.extraDelay;\n }\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n intentState.streamReaderCancelTimeout = null;\n this._abortOperatorList({\n intentState,\n reason,\n force: true\n });\n }, delay);\n return;\n }\n }\n intentState.streamReader.cancel(new AbortException$1(reason.message)).catch(() => {\n });\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n for (const [curCacheKey, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(curCacheKey);\n break;\n }\n }\n this.cleanup();\n }\n get stats() {\n return this._stats;\n }\n}\nconst _PDFWorker = class _PDFWorker {\n constructor({\n name = null,\n port = null,\n verbosity: verbosity2 = getVerbosityLevel()\n } = {}) {\n __privateAdd(this, _PDFWorker_instances);\n __privateAdd(this, _capability, Promise.withResolvers());\n __privateAdd(this, _messageHandler, null);\n __privateAdd(this, _port, null);\n __privateAdd(this, _webWorker, null);\n this.name = name;\n this.destroyed = false;\n this.verbosity = verbosity2;\n if (port) {\n if (__privateGet(_PDFWorker, _workerPorts).has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n __privateGet(_PDFWorker, _workerPorts).set(port, this);\n __privateMethod(this, _PDFWorker_instances, initializeFromPort_fn).call(this, port);\n } else {\n __privateMethod(this, _PDFWorker_instances, initialize_fn).call(this);\n }\n }\n get promise() {\n return __privateGet(this, _capability).promise;\n }\n get port() {\n return __privateGet(this, _port);\n }\n get messageHandler() {\n return __privateGet(this, _messageHandler);\n }\n destroy() {\n this.destroyed = true;\n __privateGet(this, _webWorker)?.terminate();\n __privateSet(this, _webWorker, null);\n __privateGet(_PDFWorker, _workerPorts).delete(__privateGet(this, _port));\n __privateSet(this, _port, null);\n __privateGet(this, _messageHandler)?.destroy();\n __privateSet(this, _messageHandler, null);\n }\n static create(params) {\n const cachedPort = __privateGet(this, _workerPorts).get(params?.port);\n if (cachedPort) {\n if (cachedPort._pendingDestroy) {\n throw new Error(\"PDFWorker.create - the worker is being destroyed.\\nPlease remember to await `PDFDocumentLoadingTask.destroy()`-calls.\");\n }\n return cachedPort;\n }\n return new _PDFWorker(params);\n }\n static get workerSrc() {\n if (GlobalWorkerOptions.workerSrc) {\n return GlobalWorkerOptions.workerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n if (__privateGet(this, _PDFWorker_static, mainThreadWorkerMessageHandler_get)) {\n return __privateGet(this, _PDFWorker_static, mainThreadWorkerMessageHandler_get);\n }\n const worker = await import(\n /*webpackIgnore: true*/\n /*@vite-ignore*/\n this.workerSrc\n );\n return worker.WorkerMessageHandler;\n };\n return shadow(this, \"_setupFakeWorkerGlobal\", loader());\n }\n};\n_capability = new WeakMap();\n_messageHandler = new WeakMap();\n_port = new WeakMap();\n_webWorker = new WeakMap();\n_fakeWorkerId = new WeakMap();\n_isWorkerDisabled = new WeakMap();\n_workerPorts = new WeakMap();\n_PDFWorker_instances = new WeakSet();\nresolve_fn = function() {\n __privateGet(this, _capability).resolve();\n __privateGet(this, _messageHandler).send(\"configure\", {\n verbosity: this.verbosity\n });\n};\ninitializeFromPort_fn = function(port) {\n __privateSet(this, _port, port);\n __privateSet(this, _messageHandler, new MessageHandler(\"main\", \"worker\", port));\n __privateGet(this, _messageHandler).on(\"ready\", () => {\n });\n __privateMethod(this, _PDFWorker_instances, resolve_fn).call(this);\n};\ninitialize_fn = function() {\n if (__privateGet(_PDFWorker, _isWorkerDisabled) || __privateGet(_PDFWorker, _PDFWorker_static, mainThreadWorkerMessageHandler_get)) {\n __privateMethod(this, _PDFWorker_instances, setupFakeWorker_fn).call(this);\n return;\n }\n let {\n workerSrc\n } = _PDFWorker;\n try {\n if (!_PDFWorker._isSameOrigin(window.location, workerSrc)) {\n workerSrc = _PDFWorker._createCDNWrapper(new URL(workerSrc, window.location).href);\n }\n const worker = new Worker(workerSrc, {\n type: \"module\"\n });\n const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n const terminateEarly = () => {\n ac.abort();\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n __privateGet(this, _capability).reject(new Error(\"Worker was destroyed\"));\n } else {\n __privateMethod(this, _PDFWorker_instances, setupFakeWorker_fn).call(this);\n }\n };\n const ac = new AbortController();\n worker.addEventListener(\"error\", () => {\n if (!__privateGet(this, _webWorker)) {\n terminateEarly();\n }\n }, {\n signal: ac.signal\n });\n messageHandler.on(\"test\", (data) => {\n ac.abort();\n if (this.destroyed || !data) {\n terminateEarly();\n return;\n }\n __privateSet(this, _messageHandler, messageHandler);\n __privateSet(this, _port, worker);\n __privateSet(this, _webWorker, worker);\n __privateMethod(this, _PDFWorker_instances, resolve_fn).call(this);\n });\n messageHandler.on(\"ready\", (data) => {\n ac.abort();\n if (this.destroyed) {\n terminateEarly();\n return;\n }\n try {\n sendTest();\n } catch {\n __privateMethod(this, _PDFWorker_instances, setupFakeWorker_fn).call(this);\n }\n });\n const sendTest = () => {\n const testObj = new Uint8Array();\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n };\n sendTest();\n return;\n } catch {\n info(\"The worker has been disabled.\");\n }\n __privateMethod(this, _PDFWorker_instances, setupFakeWorker_fn).call(this);\n};\nsetupFakeWorker_fn = function() {\n if (!__privateGet(_PDFWorker, _isWorkerDisabled)) {\n warn(\"Setting up fake worker.\");\n __privateSet(_PDFWorker, _isWorkerDisabled, true);\n }\n _PDFWorker._setupFakeWorkerGlobal.then((WorkerMessageHandler) => {\n if (this.destroyed) {\n __privateGet(this, _capability).reject(new Error(\"Worker was destroyed\"));\n return;\n }\n const port = new LoopbackPort();\n __privateSet(this, _port, port);\n const id = `fake${__privateWrapper(_PDFWorker, _fakeWorkerId)._++}`;\n const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n __privateSet(this, _messageHandler, new MessageHandler(id, id + \"_worker\", port));\n __privateMethod(this, _PDFWorker_instances, resolve_fn).call(this);\n }).catch((reason) => {\n __privateGet(this, _capability).reject(new Error(`Setting up fake worker failed: \"${reason.message}\".`));\n });\n};\n_PDFWorker_static = new WeakSet();\nmainThreadWorkerMessageHandler_get = function() {\n try {\n return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n } catch {\n return null;\n }\n};\n__privateAdd(_PDFWorker, _PDFWorker_static);\n__privateAdd(_PDFWorker, _fakeWorkerId, 0);\n__privateAdd(_PDFWorker, _isWorkerDisabled, false);\n__privateAdd(_PDFWorker, _workerPorts, /* @__PURE__ */ new WeakMap());\n(() => {\n if (isNodeJS) {\n __privateSet(_PDFWorker, _isWorkerDisabled, true);\n GlobalWorkerOptions.workerSrc ||= \"./pdf.worker.mjs\";\n }\n _PDFWorker._isSameOrigin = (baseUrl, otherUrl) => {\n const base = URL.parse(baseUrl);\n if (!base?.origin || base.origin === \"null\") {\n return false;\n }\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n };\n _PDFWorker._createCDNWrapper = (url) => {\n const wrapper = `await import(\"${url}\");`;\n return URL.createObjectURL(new Blob([wrapper], {\n type: \"text/javascript\"\n }));\n };\n _PDFWorker.fromPort = (params) => {\n deprecated(\"`PDFWorker.fromPort` - please use `PDFWorker.create` instead.\");\n if (!params?.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n return _PDFWorker.create(params);\n };\n})();\nlet PDFWorker = _PDFWorker;\nclass WorkerTransport {\n #methodPromises = /* @__PURE__ */ new Map();\n #pageCache = /* @__PURE__ */ new Map();\n #pagePromises = /* @__PURE__ */ new Map();\n #pageRefCache = /* @__PURE__ */ new Map();\n #passwordCapability = null;\n constructor(messageHandler, loadingTask, networkStream, params, factory, enableHWA) {\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new FontLoader({\n ownerDocument: params.ownerDocument,\n styleElement: params.styleElement\n });\n this.loadingParams = params.loadingParams;\n this._params = params;\n this.canvasFactory = factory.canvasFactory;\n this.filterFactory = factory.filterFactory;\n this.cMapReaderFactory = factory.cMapReaderFactory;\n this.standardFontDataFactory = factory.standardFontDataFactory;\n this.wasmFactory = factory.wasmFactory;\n this.destroyed = false;\n this.destroyCapability = null;\n this._networkStream = networkStream;\n this._fullReader = null;\n this._lastProgress = null;\n this.downloadInfoCapability = Promise.withResolvers();\n this.enableHWA = enableHWA;\n this.setupMessageHandler();\n }\n #cacheSimpleMethod(name, data = null) {\n const cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(name, data);\n this.#methodPromises.set(name, promise);\n return promise;\n }\n get annotationStorage() {\n return shadow(this, \"annotationStorage\", new AnnotationStorage());\n }\n getRenderingIntent(intent, annotationMode = AnnotationMode.ENABLE, printAnnotationStorage = null, isEditing = false, isOpList = false) {\n let renderingIntent = RenderingIntentFlag.DISPLAY;\n let annotationStorageSerializable = SerializableEmpty;\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 const annotationStorage = renderingIntent & RenderingIntentFlag.PRINT && printAnnotationStorage instanceof PrintAnnotationStorage ? printAnnotationStorage : this.annotationStorage;\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 annotationStorageSerializable = annotationStorage.serializable;\n break;\n default:\n warn(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n }\n if (isEditing) {\n renderingIntent += RenderingIntentFlag.IS_EDITING;\n }\n if (isOpList) {\n renderingIntent += RenderingIntentFlag.OPLIST;\n }\n const {\n ids: modifiedIds,\n hash: modifiedIdsHash\n } = annotationStorage.modifiedIds;\n const cacheKeyBuf = [renderingIntent, annotationStorageSerializable.hash, modifiedIdsHash];\n return {\n renderingIntent,\n cacheKey: cacheKeyBuf.join(\"_\"),\n annotationStorageSerializable,\n modifiedIds\n };\n }\n destroy() {\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n this.destroyed = true;\n this.destroyCapability = Promise.withResolvers();\n this.#passwordCapability?.reject(new Error(\"Worker was destroyed during onPassword callback\"));\n const waitOn = [];\n for (const page of this.#pageCache.values()) {\n waitOn.push(page._destroy());\n }\n this.#pageCache.clear();\n this.#pagePromises.clear();\n this.#pageRefCache.clear();\n if (this.hasOwnProperty(\"annotationStorage\")) {\n this.annotationStorage.resetModified();\n }\n const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n waitOn.push(terminated);\n Promise.all(waitOn).then(() => {\n this.commonObjs.clear();\n this.fontLoader.clear();\n this.#methodPromises.clear();\n this.filterFactory.destroy();\n TextLayer.cleanup();\n this._networkStream?.cancelAllRequests(new AbortException$1(\"Worker was terminated.\"));\n this.messageHandler?.destroy();\n this.messageHandler = null;\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n setupMessageHandler() {\n const {\n messageHandler,\n loadingTask\n } = this;\n messageHandler.on(\"GetReader\", (data, sink) => {\n assert(this._networkStream, \"GetReader - no `IPDFStream` instance available.\");\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.read().then(function({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n assert(value instanceof ArrayBuffer, \"GetReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch((reason) => {\n sink.error(reason);\n });\n };\n sink.onCancel = (reason) => {\n this._fullReader.cancel(reason);\n sink.ready.catch((readyReason) => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"ReaderHeadersReady\", async (data) => {\n await this._fullReader.headersReady;\n const {\n isStreamingSupported,\n isRangeSupported,\n contentLength\n } = this._fullReader;\n if (!isStreamingSupported || !isRangeSupported) {\n if (this._lastProgress) {\n loadingTask.onProgress?.(this._lastProgress);\n }\n this._fullReader.onProgress = (evt) => {\n loadingTask.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n };\n }\n return {\n isStreamingSupported,\n isRangeSupported,\n contentLength\n };\n });\n messageHandler.on(\"GetRangeReader\", (data, sink) => {\n assert(this._networkStream, \"GetRangeReader - no `IPDFStream` instance available.\");\n const rangeReader = this._networkStream.getRangeReader(data.begin, data.end);\n if (!rangeReader) {\n sink.close();\n return;\n }\n sink.onPull = () => {\n rangeReader.read().then(function({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n assert(value instanceof ArrayBuffer, \"GetRangeReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch((reason) => {\n sink.error(reason);\n });\n };\n sink.onCancel = (reason) => {\n rangeReader.cancel(reason);\n sink.ready.catch((readyReason) => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"GetDoc\", ({\n pdfInfo\n }) => {\n this._numPages = pdfInfo.numPages;\n this._htmlForXfa = pdfInfo.htmlForXfa;\n delete pdfInfo.htmlForXfa;\n loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n });\n messageHandler.on(\"DocException\", (ex) => {\n loadingTask._capability.reject(wrapReason(ex));\n });\n messageHandler.on(\"PasswordRequest\", (ex) => {\n this.#passwordCapability = Promise.withResolvers();\n try {\n if (!loadingTask.onPassword) {\n throw wrapReason(ex);\n }\n const updatePassword = (password) => {\n if (password instanceof Error) {\n this.#passwordCapability.reject(password);\n } else {\n this.#passwordCapability.resolve({\n password\n });\n }\n };\n loadingTask.onPassword(updatePassword, ex.code);\n } catch (err) {\n this.#passwordCapability.reject(err);\n }\n return this.#passwordCapability.promise;\n });\n messageHandler.on(\"DataLoaded\", (data) => {\n loadingTask.onProgress?.({\n loaded: data.length,\n total: data.length\n });\n this.downloadInfoCapability.resolve(data);\n });\n messageHandler.on(\"StartRenderPage\", (data) => {\n if (this.destroyed) {\n return;\n }\n const page = this.#pageCache.get(data.pageIndex);\n page._startRenderPage(data.transparency, data.cacheKey);\n });\n messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n if (this.destroyed) {\n return null;\n }\n if (this.commonObjs.has(id)) {\n return null;\n }\n switch (type) {\n case \"Font\":\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 const fontData = new FontInfo(exportedData);\n const inspectFont = this._params.pdfBug && globalThis.FontInspector?.enabled ? (font2, url) => globalThis.FontInspector.fontAdded(font2, url) : null;\n const font = new FontFaceObject(fontData, inspectFont, exportedData.extra, exportedData.charProcOperatorList);\n this.fontLoader.bind(font).catch(() => messageHandler.sendWithPromise(\"FontFallback\", {\n id\n })).finally(() => {\n if (!font.fontExtraProperties && font.data) {\n font.clearData();\n }\n this.commonObjs.resolve(id, font);\n });\n break;\n case \"CopyLocalImage\":\n const {\n imageRef\n } = exportedData;\n assert(imageRef, \"The imageRef must be defined.\");\n for (const pageProxy of this.#pageCache.values()) {\n for (const [, data] of pageProxy.objs) {\n if (data?.ref !== imageRef) {\n continue;\n }\n if (!data.dataLen) {\n return null;\n }\n this.commonObjs.resolve(id, structuredClone(data));\n return data.dataLen;\n }\n }\n break;\n case \"FontPath\":\n case \"Image\":\n case \"Pattern\":\n this.commonObjs.resolve(id, exportedData);\n break;\n default:\n throw new Error(`Got unknown common object type ${type}`);\n }\n return null;\n });\n messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n if (this.destroyed) {\n return;\n }\n const pageProxy = this.#pageCache.get(pageIndex);\n if (pageProxy.objs.has(id)) {\n return;\n }\n if (pageProxy._intentStates.size === 0) {\n imageData?.bitmap?.close();\n return;\n }\n switch (type) {\n case \"Image\":\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 messageHandler.on(\"DocProgress\", (data) => {\n if (this.destroyed) {\n return;\n }\n loadingTask.onProgress?.({\n loaded: data.loaded,\n total: data.total\n });\n });\n messageHandler.on(\"FetchBinaryData\", async (data) => {\n if (this.destroyed) {\n throw new Error(\"Worker was destroyed.\");\n }\n const factory = this[data.type];\n if (!factory) {\n throw new Error(`${data.type} not initialized, see the \\`useWorkerFetch\\` parameter.`);\n }\n return factory.fetch(data);\n });\n }\n getData() {\n return this.messageHandler.sendWithPromise(\"GetData\", null);\n }\n saveDocument() {\n if (this.annotationStorage.size <= 0) {\n warn(\"saveDocument called while `annotationStorage` is empty, please use the getData-method instead.\");\n }\n const {\n map,\n transfer\n } = this.annotationStorage.serializable;\n return this.messageHandler.sendWithPromise(\"SaveDocument\", {\n isPureXfa: !!this._htmlForXfa,\n numPages: this._numPages,\n annotationStorage: map,\n filename: this._fullReader?.filename ?? null\n }, transfer).finally(() => {\n this.annotationStorage.resetModified();\n });\n }\n getPage(pageNumber) {\n if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) {\n return Promise.reject(new Error(\"Invalid page request.\"));\n }\n const pageIndex = pageNumber - 1, cachedPromise = this.#pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(\"GetPage\", {\n pageIndex\n }).then((pageInfo) => {\n if (this.destroyed) {\n throw new Error(\"Transport destroyed\");\n }\n if (pageInfo.refStr) {\n this.#pageRefCache.set(pageInfo.refStr, pageNumber);\n }\n const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.pdfBug);\n this.#pageCache.set(pageIndex, page);\n return page;\n });\n this.#pagePromises.set(pageIndex, promise);\n return promise;\n }\n getPageIndex(ref) {\n if (!isRefProxy(ref)) {\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 getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex,\n intent\n });\n }\n getFieldObjects() {\n return this.#cacheSimpleMethod(\"GetFieldObjects\");\n }\n hasJSActions() {\n return this.#cacheSimpleMethod(\"HasJSActions\");\n }\n getCalculationOrderIds() {\n return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n }\n getDestinations() {\n return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\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 getPageLabels() {\n return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n }\n getPageLayout() {\n return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n }\n getPageMode() {\n return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n }\n getViewerPreferences() {\n return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n }\n getOpenAction() {\n return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n }\n getAttachments() {\n return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n }\n getAnnotationsByType(types, pageIndexesToSkip) {\n return this.messageHandler.sendWithPromise(\"GetAnnotationsByType\", {\n types,\n pageIndexesToSkip\n });\n }\n getDocJSActions() {\n return this.#cacheSimpleMethod(\"GetDocJSActions\");\n }\n getPageJSActions(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n pageIndex\n });\n }\n getStructTree(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n pageIndex\n });\n }\n getOutline() {\n return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n }\n getOptionalContentConfig(renderingIntent) {\n return this.#cacheSimpleMethod(\"GetOptionalContentConfig\").then((data) => new OptionalContentConfig(data, renderingIntent));\n }\n getPermissions() {\n return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n }\n getMetadata() {\n const name = \"GetMetadata\", cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(name, null).then((results) => ({\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 this.#methodPromises.set(name, promise);\n return promise;\n }\n getMarkInfo() {\n return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n }\n async startCleanup(keepLoadedFonts = false) {\n if (this.destroyed) {\n return;\n }\n await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n for (const page of this.#pageCache.values()) {\n const cleanupSuccessful = page.cleanup();\n if (!cleanupSuccessful) {\n throw new Error(`startCleanup: Page ${page.pageNumber} is currently rendering.`);\n }\n }\n this.commonObjs.clear();\n if (!keepLoadedFonts) {\n this.fontLoader.clear();\n }\n this.#methodPromises.clear();\n this.filterFactory.destroy(true);\n TextLayer.cleanup();\n }\n cachedPageNumber(ref) {\n if (!isRefProxy(ref)) {\n return null;\n }\n const refStr = ref.gen === 0 ? `${ref.num}R` : `${ref.num}R${ref.gen}`;\n return this.#pageRefCache.get(refStr) ?? null;\n }\n}\nclass RenderTask {\n #internalRenderTask = null;\n onContinue = null;\n onError = null;\n constructor(internalRenderTask) {\n this.#internalRenderTask = internalRenderTask;\n }\n get promise() {\n return this.#internalRenderTask.capability.promise;\n }\n cancel(extraDelay = 0) {\n this.#internalRenderTask.cancel(null, extraDelay);\n }\n get separateAnnots() {\n const {\n separateAnnots\n } = this.#internalRenderTask.operatorList;\n if (!separateAnnots) {\n return false;\n }\n const {\n annotationCanvasMap\n } = this.#internalRenderTask;\n return separateAnnots.form || separateAnnots.canvas && annotationCanvasMap?.size > 0;\n }\n}\nclass InternalRenderTask {\n #rAF = null;\n static #canvasInUse = /* @__PURE__ */ new WeakSet();\n constructor({\n callback,\n params,\n objs,\n commonObjs,\n annotationCanvasMap,\n operatorList,\n pageIndex,\n canvasFactory,\n filterFactory,\n useRequestAnimationFrame = false,\n pdfBug = false,\n pageColors = null,\n enableHWA = false,\n operationsFilter = 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.filterFactory = filterFactory;\n this._pdfBug = pdfBug;\n this.pageColors = pageColors;\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== \"undefined\";\n this.cancelled = false;\n this.capability = Promise.withResolvers();\n this.task = new RenderTask(this);\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.canvas;\n this._canvasContext = params.canvas ? null : params.canvasContext;\n this._enableHWA = enableHWA;\n this._dependencyTracker = params.dependencyTracker;\n this._operationsFilter = operationsFilter;\n }\n get completed() {\n return this.capability.promise.catch(function() {\n });\n }\n initializeGraphics({\n transparency = false,\n optionalContentConfig\n }) {\n if (this.cancelled) {\n return;\n }\n if (this._canvas) {\n if (InternalRenderTask.#canvasInUse.has(this._canvas)) {\n throw new Error(\"Cannot use the same canvas during multiple render() operations. Use different canvas or ensure previous operations were cancelled or completed.\");\n }\n InternalRenderTask.#canvasInUse.add(this._canvas);\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 {\n viewport,\n transform,\n background,\n dependencyTracker\n } = this.params;\n const canvasContext = this._canvasContext || this._canvas.getContext(\"2d\", {\n alpha: false,\n willReadFrequently: !this._enableHWA\n });\n this.gfx = new CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig\n }, this.annotationCanvasMap, this.pageColors, dependencyTracker);\n this.gfx.beginDrawing({\n transform,\n viewport,\n transparency,\n background\n });\n this.operatorListIdx = 0;\n this.graphicsReady = true;\n this.graphicsReadyCallback?.();\n }\n cancel(error = null, extraDelay = 0) {\n this.running = false;\n this.cancelled = true;\n this.gfx?.endDrawing();\n if (this.#rAF) {\n window.cancelAnimationFrame(this.#rAF);\n this.#rAF = null;\n }\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n error ||= new RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, extraDelay);\n this.callback(error);\n this.task.onError?.(error);\n }\n operatorListChanged() {\n if (!this.graphicsReady) {\n this.graphicsReadyCallback ||= this._continueBound;\n return;\n }\n this.gfx.dependencyTracker?.growOperationsCount(this.operatorList.fnArray.length);\n this.stepper?.updateOperatorList(this.operatorList);\n if (this.running) {\n return;\n }\n this._continue();\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 _scheduleNext() {\n if (this._useRequestAnimationFrame) {\n this.#rAF = window.requestAnimationFrame(() => {\n this.#rAF = null;\n this._nextBound().catch(this._cancelBound);\n });\n } else {\n Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n }\n }\n async _next() {\n if (this.cancelled) {\n return;\n }\n this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper, this._operationsFilter);\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = false;\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing();\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n this.callback();\n }\n }\n }\n}\nconst version = \"5.4.296\";\nconst build = \"f56dc8601\";\nclass ColorPicker {\n #button = null;\n #buttonSwatch = null;\n #defaultColor;\n #dropdown = null;\n #dropdownWasFromKeyboard = false;\n #isMainColorPicker = false;\n #editor = null;\n #eventBus;\n #openDropdownAC = null;\n #uiManager = null;\n static #l10nColor = null;\n static get _keyboardManager() {\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"Escape\", \"mac+Escape\"], ColorPicker.prototype._hideDropdownFromKeyboard], [[\" \", \"mac+ \"], ColorPicker.prototype._colorSelectFromKeyboard], [[\"ArrowDown\", \"ArrowRight\", \"mac+ArrowDown\", \"mac+ArrowRight\"], ColorPicker.prototype._moveToNext], [[\"ArrowUp\", \"ArrowLeft\", \"mac+ArrowUp\", \"mac+ArrowLeft\"], ColorPicker.prototype._moveToPrevious], [[\"Home\", \"mac+Home\"], ColorPicker.prototype._moveToBeginning], [[\"End\", \"mac+End\"], ColorPicker.prototype._moveToEnd]]));\n }\n constructor({\n editor = null,\n uiManager = null\n }) {\n if (editor) {\n this.#isMainColorPicker = false;\n this.#editor = editor;\n } else {\n this.#isMainColorPicker = true;\n }\n this.#uiManager = editor?._uiManager || uiManager;\n this.#eventBus = this.#uiManager._eventBus;\n this.#defaultColor = editor?.color?.toUpperCase() || this.#uiManager?.highlightColors.values().next().value || \"#FFFF98\";\n ColorPicker.#l10nColor ||= Object.freeze({\n blue: \"pdfjs-editor-colorpicker-blue\",\n green: \"pdfjs-editor-colorpicker-green\",\n pink: \"pdfjs-editor-colorpicker-pink\",\n red: \"pdfjs-editor-colorpicker-red\",\n yellow: \"pdfjs-editor-colorpicker-yellow\"\n });\n }\n renderButton() {\n const button = this.#button = document.createElement(\"button\");\n button.className = \"colorPicker\";\n button.tabIndex = \"0\";\n button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-button\");\n button.ariaHasPopup = \"true\";\n if (this.#editor) {\n button.ariaControls = `${this.#editor.id}_colorpicker_dropdown`;\n }\n const signal = this.#uiManager._signal;\n button.addEventListener(\"click\", this.#openDropdown.bind(this), {\n signal\n });\n button.addEventListener(\"keydown\", this.#keyDown.bind(this), {\n signal\n });\n const swatch = this.#buttonSwatch = document.createElement(\"span\");\n swatch.className = \"swatch\";\n swatch.ariaHidden = \"true\";\n swatch.style.backgroundColor = this.#defaultColor;\n button.append(swatch);\n return button;\n }\n renderMainDropdown() {\n const dropdown = this.#dropdown = this.#getDropdownRoot();\n dropdown.ariaOrientation = \"horizontal\";\n dropdown.ariaLabelledBy = \"highlightColorPickerLabel\";\n return dropdown;\n }\n #getDropdownRoot() {\n const div = document.createElement(\"div\");\n const signal = this.#uiManager._signal;\n div.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n div.className = \"dropdown\";\n div.role = \"listbox\";\n div.ariaMultiSelectable = \"false\";\n div.ariaOrientation = \"vertical\";\n div.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-dropdown\");\n if (this.#editor) {\n div.id = `${this.#editor.id}_colorpicker_dropdown`;\n }\n for (const [name, color] of this.#uiManager.highlightColors) {\n const button = document.createElement(\"button\");\n button.tabIndex = \"0\";\n button.role = \"option\";\n button.setAttribute(\"data-color\", color);\n button.title = name;\n button.setAttribute(\"data-l10n-id\", ColorPicker.#l10nColor[name]);\n const swatch = document.createElement(\"span\");\n button.append(swatch);\n swatch.className = \"swatch\";\n swatch.style.backgroundColor = color;\n button.ariaSelected = color === this.#defaultColor;\n button.addEventListener(\"click\", this.#colorSelect.bind(this, color), {\n signal\n });\n div.append(button);\n }\n div.addEventListener(\"keydown\", this.#keyDown.bind(this), {\n signal\n });\n return div;\n }\n #colorSelect(color, event) {\n event.stopPropagation();\n this.#eventBus.dispatch(\"switchannotationeditorparams\", {\n source: this,\n type: AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n value: color\n });\n this.updateColor(color);\n }\n _colorSelectFromKeyboard(event) {\n if (event.target === this.#button) {\n this.#openDropdown(event);\n return;\n }\n const color = event.target.getAttribute(\"data-color\");\n if (!color) {\n return;\n }\n this.#colorSelect(color, event);\n }\n _moveToNext(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n if (event.target === this.#button) {\n this.#dropdown.firstChild?.focus();\n return;\n }\n event.target.nextSibling?.focus();\n }\n _moveToPrevious(event) {\n if (event.target === this.#dropdown?.firstChild || event.target === this.#button) {\n if (this.#isDropdownVisible) {\n this._hideDropdownFromKeyboard();\n }\n return;\n }\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n }\n event.target.previousSibling?.focus();\n }\n _moveToBeginning(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.firstChild?.focus();\n }\n _moveToEnd(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.lastChild?.focus();\n }\n #keyDown(event) {\n ColorPicker._keyboardManager.exec(this, event);\n }\n #openDropdown(event) {\n if (this.#isDropdownVisible) {\n this.hideDropdown();\n return;\n }\n this.#dropdownWasFromKeyboard = event.detail === 0;\n if (!this.#openDropdownAC) {\n this.#openDropdownAC = new AbortController();\n window.addEventListener(\"pointerdown\", this.#pointerDown.bind(this), {\n signal: this.#uiManager.combinedSignal(this.#openDropdownAC)\n });\n }\n this.#button.ariaExpanded = \"true\";\n if (this.#dropdown) {\n this.#dropdown.classList.remove(\"hidden\");\n return;\n }\n const root = this.#dropdown = this.#getDropdownRoot();\n this.#button.append(root);\n }\n #pointerDown(event) {\n if (this.#dropdown?.contains(event.target)) {\n return;\n }\n this.hideDropdown();\n }\n hideDropdown() {\n this.#dropdown?.classList.add(\"hidden\");\n this.#button.ariaExpanded = \"false\";\n this.#openDropdownAC?.abort();\n this.#openDropdownAC = null;\n }\n get #isDropdownVisible() {\n return this.#dropdown && !this.#dropdown.classList.contains(\"hidden\");\n }\n _hideDropdownFromKeyboard() {\n if (this.#isMainColorPicker) {\n return;\n }\n if (!this.#isDropdownVisible) {\n this.#editor?.unselect();\n return;\n }\n this.hideDropdown();\n this.#button.focus({\n preventScroll: true,\n focusVisible: this.#dropdownWasFromKeyboard\n });\n }\n updateColor(color) {\n if (this.#buttonSwatch) {\n this.#buttonSwatch.style.backgroundColor = color;\n }\n if (!this.#dropdown) {\n return;\n }\n const i = this.#uiManager.highlightColors.values();\n for (const child of this.#dropdown.children) {\n child.ariaSelected = i.next().value === color.toUpperCase();\n }\n }\n destroy() {\n this.#button?.remove();\n this.#button = null;\n this.#buttonSwatch = null;\n this.#dropdown?.remove();\n this.#dropdown = null;\n }\n}\nclass BasicColorPicker {\n #input = null;\n #editor = null;\n #uiManager = null;\n static #l10nColor = null;\n constructor(editor) {\n this.#editor = editor;\n this.#uiManager = editor._uiManager;\n BasicColorPicker.#l10nColor ||= Object.freeze({\n freetext: \"pdfjs-editor-color-picker-free-text-input\",\n ink: \"pdfjs-editor-color-picker-ink-input\"\n });\n }\n renderButton() {\n if (this.#input) {\n return this.#input;\n }\n const {\n editorType,\n colorType,\n colorValue\n } = this.#editor;\n const input = this.#input = document.createElement(\"input\");\n input.type = \"color\";\n input.value = colorValue || \"#000000\";\n input.className = \"basicColorPicker\";\n input.tabIndex = 0;\n input.setAttribute(\"data-l10n-id\", BasicColorPicker.#l10nColor[editorType]);\n input.addEventListener(\"input\", () => {\n this.#uiManager.updateParams(colorType, input.value);\n }, {\n signal: this.#uiManager._signal\n });\n return input;\n }\n update(value) {\n if (!this.#input) {\n return;\n }\n this.#input.value = value;\n }\n destroy() {\n this.#input?.remove();\n this.#input = null;\n }\n hideDropdown() {\n }\n}\n__webpack_require__(116);\n__webpack_require__(531);\nfunction makeColorComp(n) {\n return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, \"0\");\n}\nfunction scaleAndClamp(x) {\n return Math.max(0, Math.min(255, 255 * x));\n}\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 static G_CMYK([g]) {\n return [\"CMYK\", 0, 0, 0, 1 - g];\n }\n static G_RGB([g]) {\n return [\"RGB\", g, g, g];\n }\n static G_rgb([g]) {\n g = scaleAndClamp(g);\n return [g, g, g];\n }\n static G_HTML([g]) {\n const G = makeColorComp(g);\n return `#${G}${G}${G}`;\n }\n static RGB_G([r, g, b]) {\n return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n static RGB_rgb(color) {\n return color.map(scaleAndClamp);\n }\n static RGB_HTML(color) {\n return `#${color.map(makeColorComp).join(\"\")}`;\n }\n static T_HTML() {\n return \"#00000000\";\n }\n static T_rgb() {\n return [null];\n }\n static CMYK_RGB([c, y, m, k]) {\n return [\"RGB\", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];\n }\n static CMYK_rgb([c, y, m, k]) {\n return [scaleAndClamp(1 - Math.min(1, c + k)), scaleAndClamp(1 - Math.min(1, m + k)), scaleAndClamp(1 - Math.min(1, y + k))];\n }\n static CMYK_HTML(components) {\n const rgb = this.CMYK_RGB(components).slice(1);\n return this.RGB_HTML(rgb);\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}\nclass BaseSVGFactory {\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 if (!skipDimensions) {\n svg.setAttribute(\"width\", `${width}px`);\n svg.setAttribute(\"height\", `${height}px`);\n }\n svg.setAttribute(\"preserveAspectRatio\", \"none\");\n svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n return svg;\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 _createSVG(type) {\n unreachable(\"Abstract method `_createSVG` called.\");\n }\n}\nclass DOMSVGFactory extends BaseSVGFactory {\n _createSVG(type) {\n return document.createElementNS(SVG_NS, type);\n }\n}\nconst annotation_layer_DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = /* @__PURE__ */ new WeakSet();\nconst TIMEZONE_OFFSET = (/* @__PURE__ */ new Date()).getTimezoneOffset() * 60 * 1e3;\nclass AnnotationElementFactory {\n static create(parameters) {\n const subtype = parameters.data.annotationType;\n switch (subtype) {\n case AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n case AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n case AnnotationType.WIDGET:\n const fieldType = parameters.data.fieldType;\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 case \"Sig\":\n return new SignatureWidgetAnnotationElement(parameters);\n }\n return new WidgetAnnotationElement(parameters);\n case AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n case AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n case AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n case AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n case AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n case AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n case AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n case AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n case AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n case AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n case AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n case AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n case AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n case AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n case AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n default:\n return new AnnotationElement(parameters);\n }\n }\n}\nclass AnnotationElement {\n #updates = null;\n #hasBorder = false;\n #popupElement = null;\n constructor(parameters, {\n isRenderable = false,\n ignoreBorder = false,\n createQuadrilaterals = false\n } = {}) {\n this.isRenderable = isRenderable;\n this.data = parameters.data;\n this.layer = parameters.layer;\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.enableComment = parameters.enableComment;\n this.enableScripting = parameters.enableScripting;\n this.hasJSActions = parameters.hasJSActions;\n this._fieldObjects = parameters.fieldObjects;\n this.parent = parameters.parent;\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n if (createQuadrilaterals) {\n this._createQuadrilaterals();\n }\n }\n static _hasPopupData({\n contentsObj,\n richText\n }) {\n return !!(contentsObj?.str || richText?.str);\n }\n get _isEditable() {\n return this.data.isEditable;\n }\n get hasPopupData() {\n return AnnotationElement._hasPopupData(this.data) || this.enableComment && !!this.commentText;\n }\n get commentData() {\n const {\n data\n } = this;\n const editor = this.annotationStorage?.getEditor(data.id);\n if (editor) {\n return editor.getData();\n }\n return data;\n }\n get hasCommentButton() {\n return this.enableComment && this.hasPopupElement;\n }\n get commentButtonPosition() {\n const editor = this.annotationStorage?.getEditor(this.data.id);\n if (editor) {\n return editor.commentButtonPositionInPage;\n }\n const {\n quadPoints,\n inkLists,\n rect\n } = this.data;\n let maxX = -Infinity;\n let maxY = -Infinity;\n if (quadPoints?.length >= 8) {\n for (let i = 0; i < quadPoints.length; i += 8) {\n if (quadPoints[i + 1] > maxY) {\n maxY = quadPoints[i + 1];\n maxX = quadPoints[i + 2];\n } else if (quadPoints[i + 1] === maxY) {\n maxX = Math.max(maxX, quadPoints[i + 2]);\n }\n }\n return [maxX, maxY];\n }\n if (inkLists?.length >= 1) {\n for (const inkList of inkLists) {\n for (let i = 0, ii = inkList.length; i < ii; i += 2) {\n if (inkList[i + 1] > maxY) {\n maxY = inkList[i + 1];\n maxX = inkList[i];\n } else if (inkList[i + 1] === maxY) {\n maxX = Math.max(maxX, inkList[i]);\n }\n }\n }\n if (maxX !== Infinity) {\n return [maxX, maxY];\n }\n }\n if (rect) {\n return [rect[2], rect[3]];\n }\n return null;\n }\n _normalizePoint(point) {\n const {\n page: {\n view\n },\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n } = this.parent;\n point[1] = view[3] - point[1] + view[1];\n point[0] = 100 * (point[0] - pageX) / pageWidth;\n point[1] = 100 * (point[1] - pageY) / pageHeight;\n return point;\n }\n get commentText() {\n const {\n data\n } = this;\n return this.annotationStorage.getRawValue(`${AnnotationEditorPrefix}${data.id}`)?.popup?.contents || data.contentsObj?.str || \"\";\n }\n set commentText(text) {\n const {\n data\n } = this;\n const popup = {\n deleted: !text,\n contents: text || \"\"\n };\n if (!this.annotationStorage.updateEditor(data.id, {\n popup\n })) {\n this.annotationStorage.setValue(`${AnnotationEditorPrefix}${data.id}`, {\n id: data.id,\n annotationType: data.annotationType,\n pageIndex: this.parent.page._pageIndex,\n popup,\n popupRef: data.popupRef,\n modificationDate: /* @__PURE__ */ new Date()\n });\n }\n if (!text) {\n this.removePopup();\n }\n }\n removePopup() {\n (this.#popupElement?.popup || this.popup)?.remove();\n this.#popupElement = this.popup = null;\n }\n updateEdited(params) {\n if (!this.container) {\n return;\n }\n if (params.rect) {\n this.#updates ||= {\n rect: this.data.rect.slice(0)\n };\n }\n const {\n rect,\n popup: newPopup\n } = params;\n if (rect) {\n this.#setRectEdited(rect);\n }\n let popup = this.#popupElement?.popup || this.popup;\n if (!popup && newPopup?.text) {\n this._createPopup(newPopup);\n popup = this.#popupElement.popup;\n }\n if (!popup) {\n return;\n }\n popup.updateEdited(params);\n if (newPopup?.deleted) {\n popup.remove();\n this.#popupElement = null;\n this.popup = null;\n }\n }\n resetEdited() {\n if (!this.#updates) {\n return;\n }\n this.#setRectEdited(this.#updates.rect);\n this.#popupElement?.popup.resetEdited();\n this.#updates = null;\n }\n #setRectEdited(rect) {\n const {\n container: {\n style\n },\n data: {\n rect: currentRect,\n rotation\n },\n parent: {\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n }\n } = this;\n currentRect?.splice(0, 4, ...rect);\n style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n style.top = `${100 * (pageHeight - rect[3] + pageY) / pageHeight}%`;\n if (rotation === 0) {\n style.width = `${100 * (rect[2] - rect[0]) / pageWidth}%`;\n style.height = `${100 * (rect[3] - rect[1]) / pageHeight}%`;\n } else {\n this.setRotation(rotation);\n }\n }\n _createContainer(ignoreBorder) {\n const {\n data,\n parent: {\n page,\n viewport\n }\n } = this;\n const container = document.createElement(\"section\");\n container.setAttribute(\"data-annotation-id\", data.id);\n if (!(this instanceof WidgetAnnotationElement) && !(this instanceof LinkAnnotationElement)) {\n container.tabIndex = 0;\n }\n const {\n style\n } = container;\n style.zIndex = this.parent.zIndex;\n this.parent.zIndex += 2;\n if (data.alternativeText) {\n container.title = data.alternativeText;\n }\n if (data.noRotate) {\n container.classList.add(\"norotate\");\n }\n if (!data.rect || this instanceof PopupAnnotationElement) {\n const {\n rotation: rotation2\n } = data;\n if (!data.hasOwnCanvas && rotation2 !== 0) {\n this.setRotation(rotation2, container);\n }\n return container;\n }\n const {\n width,\n height\n } = this;\n if (!ignoreBorder && data.borderStyle.width > 0) {\n style.borderWidth = `${data.borderStyle.width}px`;\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(--total-scale-factor)) / calc(${verticalRadius}px * var(--total-scale-factor))`;\n style.borderRadius = radius;\n } else if (this instanceof RadioButtonWidgetAnnotationElement) {\n const radius = `calc(${width}px * var(--total-scale-factor)) / calc(${height}px * var(--total-scale-factor))`;\n style.borderRadius = radius;\n }\n switch (data.borderStyle.style) {\n case AnnotationBorderStyleType.SOLID:\n style.borderStyle = \"solid\";\n break;\n case AnnotationBorderStyleType.DASHED:\n style.borderStyle = \"dashed\";\n break;\n case AnnotationBorderStyleType.BEVELED:\n warn(\"Unimplemented border style: beveled\");\n break;\n case AnnotationBorderStyleType.INSET:\n warn(\"Unimplemented border style: inset\");\n break;\n case AnnotationBorderStyleType.UNDERLINE:\n style.borderBottomStyle = \"solid\";\n break;\n }\n const borderColor = data.borderColor || null;\n if (borderColor) {\n this.#hasBorder = true;\n style.borderColor = Util.makeHexColor(borderColor[0] | 0, borderColor[1] | 0, borderColor[2] | 0);\n } else {\n style.borderWidth = 0;\n }\n }\n const rect = Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n style.top = `${100 * (rect[1] - pageY) / pageHeight}%`;\n const {\n rotation\n } = data;\n if (data.hasOwnCanvas || rotation === 0) {\n style.width = `${100 * width / pageWidth}%`;\n style.height = `${100 * height / pageHeight}%`;\n } else {\n this.setRotation(rotation, container);\n }\n return container;\n }\n setRotation(angle, container = this.container) {\n if (!this.data.rect) {\n return;\n }\n const {\n pageWidth,\n pageHeight\n } = this.parent.viewport.rawDims;\n let {\n width,\n height\n } = this;\n if (angle % 180 !== 0) {\n [width, height] = [height, width];\n }\n container.style.width = `${100 * width / pageWidth}%`;\n container.style.height = `${100 * height / pageHeight}%`;\n container.setAttribute(\"data-main-rotation\", (360 - angle) % 360);\n }\n get _commonActions() {\n const setColor = (jsName, styleName, event) => {\n const color = event.detail[jsName];\n const colorType = color[0];\n const colorArray = color.slice(1);\n event.target.style[styleName] = ColorConverters[`${colorType}_HTML`](colorArray);\n this.annotationStorage.setValue(this.data.id, {\n [styleName]: ColorConverters[`${colorType}_rgb`](colorArray)\n });\n };\n return shadow(this, \"_commonActions\", {\n display: (event) => {\n const {\n display\n } = event.detail;\n const hidden = display % 2 === 1;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noView: hidden,\n noPrint: display === 1 || display === 2\n });\n },\n print: (event) => {\n this.annotationStorage.setValue(this.data.id, {\n noPrint: !event.detail.print\n });\n },\n hidden: (event) => {\n const {\n hidden\n } = event.detail;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noPrint: hidden,\n noView: hidden\n });\n },\n focus: (event) => {\n setTimeout(() => event.target.focus({\n preventScroll: false\n }), 0);\n },\n userName: (event) => {\n event.target.title = event.detail.userName;\n },\n readonly: (event) => {\n event.target.disabled = event.detail.readonly;\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 _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 action?.(jsEvent);\n }\n }\n _setDefaultPropertiesFromJS(element) {\n if (!this.enableScripting) {\n return;\n }\n const storedData = this.annotationStorage.getRawValue(this.data.id);\n if (!storedData) {\n return;\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 delete storedData[actionName];\n }\n }\n }\n _createQuadrilaterals() {\n if (!this.container) {\n return;\n }\n const {\n quadPoints\n } = this.data;\n if (!quadPoints) {\n return;\n }\n const [rectBlX, rectBlY, rectTrX, rectTrY] = this.data.rect.map((x) => Math.fround(x));\n if (quadPoints.length === 8) {\n const [trX, trY, blX, blY] = quadPoints.subarray(2, 6);\n if (rectTrX === trX && rectTrY === trY && rectBlX === blX && rectBlY === blY) {\n return;\n }\n }\n const {\n style\n } = this.container;\n let svgBuffer;\n if (this.#hasBorder) {\n const {\n borderColor,\n borderWidth\n } = style;\n style.borderWidth = 0;\n svgBuffer = [\"url('data:image/svg+xml;utf8,\", `<svg xmlns=\"http://www.w3.org/2000/svg\"`, ` preserveAspectRatio=\"none\" viewBox=\"0 0 1 1\">`, `<g fill=\"transparent\" stroke=\"${borderColor}\" stroke-width=\"${borderWidth}\">`];\n this.container.classList.add(\"hasBorder\");\n }\n const width = rectTrX - rectBlX;\n const height = rectTrY - rectBlY;\n const {\n svgFactory\n } = this;\n const svg = svgFactory.createElement(\"svg\");\n svg.classList.add(\"quadrilateralsContainer\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n svg.role = \"none\";\n const defs = svgFactory.createElement(\"defs\");\n svg.append(defs);\n const clipPath = svgFactory.createElement(\"clipPath\");\n const id = `clippath_${this.data.id}`;\n clipPath.setAttribute(\"id\", id);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n defs.append(clipPath);\n for (let i = 2, ii = quadPoints.length; i < ii; i += 8) {\n const trX = quadPoints[i];\n const trY = quadPoints[i + 1];\n const blX = quadPoints[i + 2];\n const blY = quadPoints[i + 3];\n const rect = svgFactory.createElement(\"rect\");\n const x = (blX - rectBlX) / width;\n const y = (rectTrY - trY) / height;\n const rectWidth = (trX - blX) / width;\n const rectHeight = (trY - blY) / height;\n rect.setAttribute(\"x\", x);\n rect.setAttribute(\"y\", y);\n rect.setAttribute(\"width\", rectWidth);\n rect.setAttribute(\"height\", rectHeight);\n clipPath.append(rect);\n svgBuffer?.push(`<rect vector-effect=\"non-scaling-stroke\" x=\"${x}\" y=\"${y}\" width=\"${rectWidth}\" height=\"${rectHeight}\"/>`);\n }\n if (this.#hasBorder) {\n svgBuffer.push(`</g></svg>')`);\n style.backgroundImage = svgBuffer.join(\"\");\n }\n this.container.append(svg);\n this.container.style.clipPath = `url(#${id})`;\n }\n _createPopup(popupData = null) {\n const {\n data\n } = this;\n let contentsObj, modificationDate;\n if (popupData) {\n contentsObj = {\n str: popupData.text\n };\n modificationDate = popupData.date;\n } else {\n contentsObj = data.contentsObj;\n modificationDate = data.modificationDate;\n }\n const popup = this.#popupElement = new PopupAnnotationElement({\n data: {\n color: data.color,\n titleObj: data.titleObj,\n modificationDate,\n contentsObj,\n richText: data.richText,\n parentRect: data.rect,\n borderStyle: 0,\n id: `popup_${data.id}`,\n rotation: data.rotation,\n noRotate: true\n },\n linkService: this.linkService,\n parent: this.parent,\n elements: [this]\n });\n if (!this.parent._commentManager) {\n this.parent.div.append(popup.render());\n }\n }\n get hasPopupElement() {\n return !!(this.#popupElement || this.popup || this.data.popupRef);\n }\n get extraPopupElement() {\n return this.#popupElement;\n }\n render() {\n unreachable(\"Abstract method `AnnotationElement.render` called\");\n }\n _getElementsByName(name, skipId = null) {\n const fields = [];\n if (this._fieldObjects) {\n const fieldObj = this._fieldObjects[name];\n if (fieldObj) {\n for (const {\n page,\n id,\n exportValues\n } of fieldObj) {\n if (page === -1) {\n continue;\n }\n if (id === skipId) {\n continue;\n }\n const exportValue = typeof exportValues === \"string\" ? exportValues : null;\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (domElement && !GetElementsByNameSet.has(domElement)) {\n warn(`_getElementsByName - element not allowed: ${id}`);\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n }\n return fields;\n }\n for (const domElement of document.getElementsByName(name)) {\n const {\n exportValue\n } = domElement;\n const id = domElement.getAttribute(\"data-element-id\");\n if (id === skipId) {\n continue;\n }\n if (!GetElementsByNameSet.has(domElement)) {\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n return fields;\n }\n show() {\n if (this.container) {\n this.container.hidden = false;\n }\n this.popup?.maybeShow();\n }\n hide() {\n if (this.container) {\n this.container.hidden = true;\n }\n this.popup?.forceHide();\n }\n getElementsToTriggerPopup() {\n return this.container;\n }\n addHighlightArea() {\n const triggers = this.getElementsToTriggerPopup();\n if (Array.isArray(triggers)) {\n for (const element of triggers) {\n element.classList.add(\"highlightArea\");\n }\n } else {\n triggers.classList.add(\"highlightArea\");\n }\n }\n _editOnDoubleClick() {\n if (!this._isEditable) {\n return;\n }\n const {\n annotationEditorType: mode,\n data: {\n id: editId\n }\n } = this;\n this.container.addEventListener(\"dblclick\", () => {\n this.linkService.eventBus?.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode,\n editId,\n mustEnterInEditMode: true\n });\n });\n }\n get width() {\n return this.data.rect[2] - this.data.rect[0];\n }\n get height() {\n return this.data.rect[3] - this.data.rect[1];\n }\n}\nclass EditorAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.editor = parameters.editor;\n }\n render() {\n this.container.className = \"editorAnnotation\";\n return this.container;\n }\n createOrUpdatePopup() {\n const {\n editor\n } = this;\n if (!editor.hasComment) {\n return;\n }\n this._createPopup(editor.comment);\n this.extraPopupElement.popup.renderCommentButton();\n }\n get hasCommentButton() {\n return this.enableComment && this.editor.hasComment;\n }\n get commentButtonPosition() {\n return this.editor.commentButtonPositionInPage;\n }\n get commentText() {\n return this.editor.comment.text;\n }\n set commentText(text) {\n this.editor.comment = text;\n if (!text) {\n this.removePopup();\n }\n }\n get commentData() {\n return this.editor.getData();\n }\n remove() {\n this.container.remove();\n this.container = null;\n this.removePopup();\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 render() {\n const {\n data,\n linkService\n } = this;\n const link = document.createElement(\"a\");\n link.setAttribute(\"data-element-id\", data.id);\n let isBound = false;\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, data.overlaidText);\n isBound = true;\n } else if (data.attachment) {\n this.#bindAttachment(link, data.attachment, data.overlaidText, data.attachmentDest);\n isBound = true;\n } else if (data.setOCGState) {\n this.#bindSetOCGState(link, data.setOCGState, data.overlaidText);\n isBound = true;\n } else if (data.dest) {\n this._bindLink(link, data.dest, data.overlaidText);\n isBound = true;\n } else {\n if (data.actions && (data.actions.Action || data.actions[\"Mouse Up\"] || data.actions[\"Mouse Down\"]) && this.enableScripting && this.hasJSActions) {\n this._bindJSAction(link, data);\n isBound = true;\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 this.container.classList.add(\"linkAnnotation\");\n if (isBound) {\n this.container.append(link);\n }\n return this.container;\n }\n #setInternalLink() {\n this.container.setAttribute(\"data-internal-link\", \"\");\n }\n _bindLink(link, destination, overlaidText = \"\") {\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 === \"\") {\n this.#setInternalLink();\n }\n if (overlaidText) {\n link.title = overlaidText;\n }\n }\n _bindNamedAction(link, action, overlaidText = \"\") {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n if (overlaidText) {\n link.title = overlaidText;\n }\n this.#setInternalLink();\n }\n #bindAttachment(link, attachment, overlaidText = \"\", dest = null) {\n link.href = this.linkService.getAnchorUrl(\"\");\n if (attachment.description) {\n link.title = attachment.description;\n } else if (overlaidText) {\n link.title = overlaidText;\n }\n link.onclick = () => {\n this.downloadManager?.openOrDownloadData(attachment.content, attachment.filename, dest);\n return false;\n };\n this.#setInternalLink();\n }\n #bindSetOCGState(link, action, overlaidText = \"\") {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeSetOCGState(action);\n return false;\n };\n if (overlaidText) {\n link.title = overlaidText;\n }\n this.#setInternalLink();\n }\n _bindJSAction(link, data) {\n link.href = this.linkService.getAnchorUrl(\"\");\n const map = /* @__PURE__ */ new Map([[\"Action\", \"onclick\"], [\"Mouse Up\", \"onmouseup\"], [\"Mouse Down\", \"onmousedown\"]]);\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 if (data.overlaidText) {\n link.title = data.overlaidText;\n }\n if (!link.onclick) {\n link.onclick = () => false;\n }\n this.#setInternalLink();\n }\n _bindResetFormAction(link, resetForm) {\n const otherClickAction = link.onclick;\n if (!otherClickAction) {\n link.href = this.linkService.getAnchorUrl(\"\");\n }\n this.#setInternalLink();\n if (!this._fieldObjects) {\n warn(`_bindResetFormAction - \"resetForm\" action not supported, ensure that the \\`fieldObjects\\` parameter is provided.`);\n if (!otherClickAction) {\n link.onclick = () => false;\n }\n return;\n }\n link.onclick = () => {\n otherClickAction?.();\n const {\n fields: resetFormFields,\n refs: resetFormRefs,\n include\n } = resetForm;\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 {\n id\n } 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 const storage = this.annotationStorage;\n const allIds = [];\n for (const field of allFields) {\n const {\n id\n } = field;\n allIds.push(id);\n switch (field.type) {\n case \"text\": {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"checkbox\":\n case \"radiobutton\": {\n const value = field.defaultValue === field.exportValues;\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"combobox\":\n case \"listbox\": {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n default:\n continue;\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 if (this.enableScripting) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: \"app\",\n ids: allIds,\n name: \"ResetForm\"\n }\n });\n }\n return false;\n };\n }\n}\nclass TextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n }\n render() {\n this.container.classList.add(\"textAnnotation\");\n const image = document.createElement(\"img\");\n image.src = this.imageResourcesPath + \"annotation-\" + this.data.name.toLowerCase() + \".svg\";\n image.setAttribute(\"data-l10n-id\", \"pdfjs-text-annotation-type\");\n image.setAttribute(\"data-l10n-args\", JSON.stringify({\n type: this.data.name\n }));\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.append(image);\n return this.container;\n }\n}\nclass WidgetAnnotationElement extends AnnotationElement {\n render() {\n return this.container;\n }\n showElementAndHideCanvas(element) {\n if (this.data.hasOwnCanvas) {\n if (element.previousSibling?.nodeName === \"CANVAS\") {\n element.previousSibling.hidden = true;\n }\n element.hidden = false;\n }\n }\n _getKeyModifier(event) {\n return util_FeatureTest.platform.isMac ? event.metaKey : event.ctrlKey;\n }\n _setEventListener(element, elementData, baseName, eventName, valueGetter) {\n if (baseName.includes(\"mouse\")) {\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 element.addEventListener(baseName, (event) => {\n if (baseName === \"blur\") {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n elementData.focused = false;\n } else if (baseName === \"focus\") {\n if (elementData.focused) {\n return;\n }\n elementData.focused = true;\n }\n if (!valueGetter) {\n return;\n }\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 _setEventListeners(element, elementData, names, getter) {\n for (const [baseName, eventName] of names) {\n if (eventName === \"Action\" || this.data.actions?.[eventName]) {\n if (eventName === \"Focus\" || eventName === \"Blur\") {\n elementData ||= {\n focused: false\n };\n }\n this._setEventListener(element, elementData, baseName, eventName, getter);\n if (eventName === \"Focus\" && !this.data.actions?.Blur) {\n this._setEventListener(element, elementData, \"blur\", \"Blur\", null);\n } else if (eventName === \"Blur\" && !this.data.actions?.Focus) {\n this._setEventListener(element, elementData, \"focus\", \"Focus\", null);\n }\n }\n }\n }\n _setBackgroundColor(element) {\n const color = this.data.backgroundColor || null;\n element.style.backgroundColor = color === null ? \"transparent\" : Util.makeHexColor(color[0], color[1], color[2]);\n }\n _setTextStyle(element) {\n const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n const {\n fontColor\n } = this.data.defaultAppearanceData;\n const fontSize = this.data.defaultAppearanceData.fontSize || annotation_layer_DEFAULT_FONT_SIZE;\n const style = element.style;\n let computedFontSize;\n const BORDER_SIZE = 2;\n const roundToOneDecimal = (x) => Math.round(10 * x) / 10;\n if (this.data.multiLine) {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n const numberOfLines = Math.round(height / (LINE_FACTOR * fontSize)) || 1;\n const lineHeight = height / numberOfLines;\n computedFontSize = Math.min(fontSize, roundToOneDecimal(lineHeight / LINE_FACTOR));\n } else {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n computedFontSize = Math.min(fontSize, roundToOneDecimal(height / LINE_FACTOR));\n }\n style.fontSize = `calc(${computedFontSize}px * var(--total-scale-factor))`;\n style.color = Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n if (this.data.textAlignment !== null) {\n style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\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}\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n const isRenderable = parameters.renderForms || parameters.data.hasOwnCanvas || !parameters.data.hasAppearance && !!parameters.data.fieldValue;\n super(parameters, {\n isRenderable\n });\n }\n setPropertyOnSiblings(base, key, value, keyInStorage) {\n const storage = this.annotationStorage;\n for (const element of this._getElementsByName(base.name, base.id)) {\n if (element.domElement) {\n element.domElement[key] = value;\n }\n storage.setValue(element.id, {\n [keyInStorage]: value\n });\n }\n }\n render() {\n const storage = this.annotationStorage;\n const id = this.data.id;\n this.container.classList.add(\"textWidgetAnnotation\");\n let element = null;\n if (this.renderForms) {\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n let textContent = 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 let fieldFormattedValues = storedData.formattedValue || this.data.textContent?.join(\"\\n\") || null;\n if (fieldFormattedValues && this.data.comb) {\n fieldFormattedValues = fieldFormattedValues.replaceAll(/\\s+/g, \"\");\n }\n const elementData = {\n userValue: textContent,\n formattedValue: fieldFormattedValues,\n lastCommittedValue: null,\n commitKey: 1,\n focused: false\n };\n if (this.data.multiLine) {\n element = document.createElement(\"textarea\");\n element.textContent = fieldFormattedValues ?? textContent;\n if (this.data.doNotScroll) {\n element.style.overflowY = \"hidden\";\n }\n } else {\n element = document.createElement(\"input\");\n element.type = this.data.password ? \"password\" : \"text\";\n element.setAttribute(\"value\", fieldFormattedValues ?? textContent);\n if (this.data.doNotScroll) {\n element.style.overflowX = \"hidden\";\n }\n }\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = this.data.readOnly;\n element.name = this.data.fieldName;\n element.tabIndex = 0;\n const {\n datetimeFormat,\n datetimeType,\n timeStep\n } = this.data;\n const hasDateOrTime = !!datetimeType && this.enableScripting;\n if (datetimeFormat) {\n element.title = datetimeFormat;\n }\n this._setRequired(element, this.data.required);\n if (maxLen) {\n element.maxLength = maxLen;\n }\n element.addEventListener(\"input\", (event) => {\n storage.setValue(id, {\n value: event.target.value\n });\n this.setPropertyOnSiblings(element, \"value\", event.target.value, \"value\");\n elementData.formattedValue = null;\n });\n element.addEventListener(\"resetform\", (event) => {\n const defaultValue = this.data.defaultFieldValue ?? \"\";\n element.value = elementData.userValue = defaultValue;\n elementData.formattedValue = null;\n });\n let blurListener = (event) => {\n const {\n formattedValue\n } = elementData;\n if (formattedValue !== null && formattedValue !== void 0) {\n event.target.value = formattedValue;\n }\n event.target.scrollLeft = 0;\n };\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"focus\", (event) => {\n if (elementData.focused) {\n return;\n }\n const {\n target\n } = event;\n if (hasDateOrTime) {\n target.type = datetimeType;\n if (timeStep) {\n target.step = timeStep;\n }\n }\n if (elementData.userValue) {\n const value = elementData.userValue;\n if (hasDateOrTime) {\n if (datetimeType === \"time\") {\n const date = new Date(value);\n const parts = [date.getHours(), date.getMinutes(), date.getSeconds()];\n target.value = parts.map((v) => v.toString().padStart(2, \"0\")).join(\":\");\n } else {\n target.value = new Date(value - TIMEZONE_OFFSET).toISOString().split(datetimeType === \"date\" ? \"T\" : \".\", 1)[0];\n }\n } else {\n target.value = value;\n }\n }\n elementData.lastCommittedValue = target.value;\n elementData.commitKey = 1;\n if (!this.data.actions?.Focus) {\n elementData.focused = true;\n }\n });\n element.addEventListener(\"updatefromsandbox\", (jsEvent) => {\n this.showElementAndHideCanvas(jsEvent.target);\n const actions = {\n value(event) {\n elementData.userValue = event.detail.value ?? \"\";\n if (!hasDateOrTime) {\n storage.setValue(id, {\n value: elementData.userValue.toString()\n });\n }\n event.target.value = elementData.userValue;\n },\n formattedValue(event) {\n const {\n formattedValue\n } = event.detail;\n elementData.formattedValue = formattedValue;\n if (formattedValue !== null && formattedValue !== void 0 && event.target !== document.activeElement) {\n event.target.value = formattedValue;\n }\n const data = {\n formattedValue\n };\n if (hasDateOrTime) {\n data.value = formattedValue;\n }\n storage.setValue(id, data);\n },\n selRange(event) {\n event.target.setSelectionRange(...event.detail.selRange);\n },\n charLimit: (event) => {\n const {\n charLimit\n } = event.detail;\n const {\n target\n } = event;\n if (charLimit === 0) {\n target.removeAttribute(\"maxLength\");\n return;\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, {\n 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 element.addEventListener(\"keydown\", (event) => {\n elementData.commitKey = 1;\n let commitKey = -1;\n if (event.key === \"Escape\") {\n commitKey = 0;\n } else if (event.key === \"Enter\" && !this.data.multiLine) {\n commitKey = 2;\n } else if (event.key === \"Tab\") {\n elementData.commitKey = 3;\n }\n if (commitKey === -1) {\n return;\n }\n const {\n value\n } = event.target;\n if (elementData.lastCommittedValue === value) {\n return;\n }\n elementData.lastCommittedValue = 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 if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n if (!this.data.actions?.Blur) {\n elementData.focused = false;\n }\n const {\n target\n } = event;\n let {\n value\n } = target;\n if (hasDateOrTime) {\n if (value && datetimeType === \"time\") {\n const parts = value.split(\":\").map((v) => parseInt(v, 10));\n value = new Date(2e3, 0, 1, parts[0], parts[1], parts[2] || 0).valueOf();\n target.step = \"\";\n } else {\n if (!value.includes(\"T\")) {\n value = `${value}T00:00`;\n }\n value = new Date(value).valueOf();\n }\n target.type = \"text\";\n }\n elementData.userValue = value;\n if (elementData.lastCommittedValue !== value) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: elementData.commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n }\n _blurListener(event);\n });\n if (this.data.actions?.Keystroke) {\n element.addEventListener(\"beforeinput\", (event) => {\n elementData.lastCommittedValue = null;\n const {\n data,\n target\n } = event;\n const {\n value,\n selectionStart,\n selectionEnd\n } = target;\n let selStart = selectionStart, selEnd = selectionEnd;\n switch (event.inputType) {\n case \"deleteWordBackward\": {\n const match = value.substring(0, selectionStart).match(/\\w*[^\\w]*$/);\n if (match) {\n selStart -= match[0].length;\n }\n break;\n }\n case \"deleteWordForward\": {\n const match = value.substring(selectionStart).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 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 this._setEventListeners(element, elementData, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], (event) => event.target.value);\n }\n if (blurListener) {\n element.addEventListener(\"blur\", blurListener);\n }\n if (this.data.comb) {\n const fieldWidth = this.data.rect[2] - this.data.rect[0];\n const combWidth = fieldWidth / maxLen;\n element.classList.add(\"comb\");\n element.style.letterSpacing = `calc(${combWidth}px * var(--total-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 if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n }\n this._setTextStyle(element);\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass SignatureWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: !!parameters.data.hasOwnCanvas\n });\n }\n}\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n 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 value = value !== \"Off\";\n storage.setValue(id, {\n value\n });\n }\n this.container.classList.add(\"buttonWidgetAnnotation\", \"checkBox\");\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\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 = 0;\n element.addEventListener(\"change\", (event) => {\n const {\n name,\n checked\n } = event.target;\n for (const checkbox of this._getElementsByName(name, id)) {\n const curChecked = checked && checkbox.exportValue === data.exportValue;\n if (checkbox.domElement) {\n checkbox.domElement.checked = curChecked;\n }\n storage.setValue(checkbox.id, {\n value: curChecked\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", (event) => {\n const defaultValue = data.defaultFieldValue || \"Off\";\n event.target.checked = defaultValue === data.exportValue;\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, {\n value: event.target.checked\n });\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], (event) => event.target.checked);\n }\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"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 value = value !== data.buttonValue;\n storage.setValue(id, {\n value\n });\n }\n if (value) {\n for (const radio of this._getElementsByName(data.fieldName, id)) {\n storage.setValue(radio.id, {\n value: false\n });\n }\n }\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\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 = 0;\n element.addEventListener(\"change\", (event) => {\n const {\n name,\n checked\n } = event.target;\n for (const radio of this._getElementsByName(name, id)) {\n storage.setValue(radio.id, {\n value: false\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", (event) => {\n const defaultValue = data.defaultFieldValue;\n event.target.checked = defaultValue !== null && defaultValue !== void 0 && defaultValue === data.buttonValue;\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, {\n value: curChecked\n });\n }\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], (event) => event.target.checked);\n }\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n ignoreBorder: parameters.data.hasAppearance\n });\n }\n render() {\n const container = super.render();\n container.classList.add(\"buttonWidgetAnnotation\", \"pushButton\");\n const linkElement = container.lastChild;\n if (this.enableScripting && this.hasJSActions && linkElement) {\n this._setDefaultPropertiesFromJS(linkElement);\n linkElement.addEventListener(\"updatefromsandbox\", (jsEvent) => {\n this._dispatchEventFromSandbox({}, jsEvent);\n });\n }\n return container;\n }\n}\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"choiceWidgetAnnotation\");\n const storage = this.annotationStorage;\n const id = this.data.id;\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n const selectElement = document.createElement(\"select\");\n GetElementsByNameSet.add(selectElement);\n selectElement.setAttribute(\"data-element-id\", id);\n selectElement.disabled = this.data.readOnly;\n this._setRequired(selectElement, this.data.required);\n selectElement.name = this.data.fieldName;\n selectElement.tabIndex = 0;\n let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\n if (!this.data.combo) {\n selectElement.size = this.data.options.length;\n if (this.data.multiSelect) {\n selectElement.multiple = true;\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 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 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 removeEmptyEntry = () => {\n noneOptionElement.remove();\n selectElement.removeEventListener(\"input\", removeEmptyEntry);\n removeEmptyEntry = null;\n };\n selectElement.addEventListener(\"input\", removeEmptyEntry);\n }\n const getValue = (isExport) => {\n const name = isExport ? \"value\" : \"textContent\";\n const {\n options,\n multiple\n } = selectElement;\n if (!multiple) {\n return options.selectedIndex === -1 ? null : options[options.selectedIndex][name];\n }\n return Array.prototype.filter.call(options, (option) => option.selected).map((option) => option[name]);\n };\n let selectedValues = getValue(false);\n const getItems = (event) => {\n const options = event.target.options;\n return Array.prototype.map.call(options, (option) => ({\n displayValue: option.textContent,\n exportValue: option.value\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(true)\n });\n selectedValues = getValue(false);\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(options, (option) => option.selected);\n if (i === -1) {\n options[0].selected = true;\n }\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n clear(event) {\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n storage.setValue(id, {\n value: null,\n items: []\n });\n selectedValues = getValue(false);\n },\n insert(event) {\n const {\n index,\n displayValue,\n exportValue\n } = event.detail.insert;\n const selectChild = selectElement.children[index];\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n if (selectChild) {\n selectChild.before(optionElement);\n } else {\n selectElement.append(optionElement);\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n items(event) {\n const {\n items\n } = event.detail;\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n for (const item of items) {\n const {\n displayValue,\n exportValue\n } = 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(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\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(true)\n });\n selectedValues = getValue(false);\n },\n editable(event) {\n event.target.disabled = !event.detail.editable;\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n selectElement.addEventListener(\"input\", (event) => {\n const exportValue = getValue(true);\n const change = getValue(false);\n storage.setValue(id, {\n value: exportValue\n });\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value: selectedValues,\n change,\n changeEx: exportValue,\n willCommit: false,\n commitKey: 1,\n keyDown: false\n }\n });\n });\n this._setEventListeners(selectElement, null, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"], [\"input\", \"Action\"], [\"input\", \"Validate\"]], (event) => event.target.value);\n } else {\n selectElement.addEventListener(\"input\", function(event) {\n storage.setValue(id, {\n value: getValue(true)\n });\n });\n }\n if (this.data.combo) {\n this._setTextStyle(selectElement);\n }\n this._setBackgroundColor(selectElement);\n this._setDefaultPropertiesFromJS(selectElement);\n this.container.append(selectElement);\n return this.container;\n }\n}\nclass PopupAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const {\n data,\n elements,\n parent\n } = parameters;\n const hasCommentManager = !!parent._commentManager;\n super(parameters, {\n isRenderable: !hasCommentManager && AnnotationElement._hasPopupData(data)\n });\n this.elements = elements;\n if (hasCommentManager && AnnotationElement._hasPopupData(data)) {\n const popup = this.popup = this.#createPopup();\n for (const element of elements) {\n element.popup = popup;\n }\n } else {\n this.popup = null;\n }\n }\n #createPopup() {\n return new PopupElement({\n container: this.container,\n color: this.data.color,\n titleObj: this.data.titleObj,\n modificationDate: this.data.modificationDate || this.data.creationDate,\n contentsObj: this.data.contentsObj,\n richText: this.data.richText,\n rect: this.data.rect,\n parentRect: this.data.parentRect || null,\n parent: this.parent,\n elements: this.elements,\n open: this.data.open,\n commentManager: this.parent._commentManager\n });\n }\n render() {\n const {\n container\n } = this;\n container.classList.add(\"popupAnnotation\");\n container.role = \"comment\";\n const popup = this.popup = this.#createPopup();\n const elementIds = [];\n for (const element of this.elements) {\n element.popup = popup;\n element.container.ariaHasPopup = \"dialog\";\n elementIds.push(element.data.id);\n element.addHighlightArea();\n }\n this.container.setAttribute(\"aria-controls\", elementIds.map((id) => `${AnnotationPrefix}${id}`).join(\",\"));\n return this.container;\n }\n}\nclass PopupElement {\n #commentManager = null;\n #boundKeyDown = this.#keyDown.bind(this);\n #boundHide = this.#hide.bind(this);\n #boundShow = this.#show.bind(this);\n #boundToggle = this.#toggle.bind(this);\n #color = null;\n #container = null;\n #contentsObj = null;\n #dateObj = null;\n #elements = null;\n #parent = null;\n #parentRect = null;\n #pinned = false;\n #popup = null;\n #popupAbortController = null;\n #position = null;\n #commentButton = null;\n #commentButtonPosition = null;\n #popupPosition = null;\n #rect = null;\n #richText = null;\n #titleObj = null;\n #updates = null;\n #wasVisible = false;\n #firstElement = null;\n #commentText = null;\n constructor({\n container,\n color,\n elements,\n titleObj,\n modificationDate,\n contentsObj,\n richText,\n parent,\n rect,\n parentRect,\n open,\n commentManager = null\n }) {\n this.#container = container;\n this.#titleObj = titleObj;\n this.#contentsObj = contentsObj;\n this.#richText = richText;\n this.#parent = parent;\n this.#color = color;\n this.#rect = rect;\n this.#parentRect = parentRect;\n this.#elements = elements;\n this.#commentManager = commentManager;\n this.#firstElement = elements[0];\n this.#dateObj = PDFDateString.toDateObject(modificationDate);\n this.trigger = elements.flatMap((e) => e.getElementsToTriggerPopup());\n if (commentManager) {\n this.renderCommentButton();\n } else {\n this.#addEventListeners();\n this.#container.hidden = true;\n if (open) {\n this.#toggle();\n }\n }\n }\n #addEventListeners() {\n if (this.#popupAbortController) {\n return;\n }\n this.#popupAbortController = new AbortController();\n const {\n signal\n } = this.#popupAbortController;\n for (const element of this.trigger) {\n element.addEventListener(\"click\", this.#boundToggle, {\n signal\n });\n element.addEventListener(\"pointerenter\", this.#boundShow, {\n signal\n });\n element.addEventListener(\"pointerleave\", this.#boundHide, {\n signal\n });\n element.classList.add(\"popupTriggerArea\");\n }\n for (const element of this.#elements) {\n element.container?.addEventListener(\"keydown\", this.#boundKeyDown, {\n signal\n });\n }\n }\n #setCommentButtonPosition() {\n const element = this.#elements.find((e) => e.hasCommentButton);\n if (!element) {\n return;\n }\n this.#commentButtonPosition = element._normalizePoint(element.commentButtonPosition);\n }\n renderCommentButton() {\n if (this.#commentButton) {\n return;\n }\n if (!this.#commentButtonPosition) {\n this.#setCommentButtonPosition();\n }\n if (!this.#commentButtonPosition) {\n return;\n }\n const {\n signal\n } = this.#popupAbortController = new AbortController();\n const hasOwnButton = !!this.#firstElement.extraPopupElement;\n const togglePopup = () => {\n this.#commentManager.toggleCommentPopup(this, true, void 0, !hasOwnButton);\n };\n const showPopup = () => {\n this.#commentManager.toggleCommentPopup(this, false, true, !hasOwnButton);\n };\n const hidePopup = () => {\n this.#commentManager.toggleCommentPopup(this, false, false);\n };\n if (!hasOwnButton) {\n const button = this.#commentButton = document.createElement(\"button\");\n button.className = \"annotationCommentButton\";\n const parentContainer = this.#firstElement.container;\n button.style.zIndex = parentContainer.style.zIndex + 1;\n button.tabIndex = 0;\n button.ariaHasPopup = \"dialog\";\n button.ariaControls = \"commentPopup\";\n button.setAttribute(\"data-l10n-id\", \"pdfjs-show-comment-button\");\n this.#updateColor();\n this.#updateCommentButtonPosition();\n button.addEventListener(\"keydown\", this.#boundKeyDown, {\n signal\n });\n button.addEventListener(\"click\", togglePopup, {\n signal\n });\n button.addEventListener(\"pointerenter\", showPopup, {\n signal\n });\n button.addEventListener(\"pointerleave\", hidePopup, {\n signal\n });\n parentContainer.after(button);\n } else {\n this.#commentButton = this.#firstElement.container;\n for (const element of this.trigger) {\n element.ariaHasPopup = \"dialog\";\n element.ariaControls = \"commentPopup\";\n element.addEventListener(\"keydown\", this.#boundKeyDown, {\n signal\n });\n element.addEventListener(\"click\", togglePopup, {\n signal\n });\n element.addEventListener(\"pointerenter\", showPopup, {\n signal\n });\n element.addEventListener(\"pointerleave\", hidePopup, {\n signal\n });\n element.classList.add(\"popupTriggerArea\");\n }\n }\n }\n #updateCommentButtonPosition() {\n if (this.#firstElement.extraPopupElement && !this.#firstElement.editor) {\n return;\n }\n this.renderCommentButton();\n const [x, y] = this.#commentButtonPosition;\n const {\n style\n } = this.#commentButton;\n style.left = `calc(${x}%)`;\n style.top = `calc(${y}% - var(--comment-button-dim))`;\n }\n #updateColor() {\n if (this.#firstElement.extraPopupElement) {\n return;\n }\n this.renderCommentButton();\n this.#commentButton.style.backgroundColor = this.commentButtonColor || \"\";\n }\n get commentButtonColor() {\n const {\n color,\n opacity\n } = this.#firstElement.commentData;\n if (!color) {\n return null;\n }\n return this.#parent._commentManager.makeCommentColor(color, opacity);\n }\n focusCommentButton() {\n setTimeout(() => {\n this.#commentButton?.focus();\n }, 0);\n }\n getData() {\n const {\n richText,\n color,\n opacity,\n creationDate,\n modificationDate\n } = this.#firstElement.commentData;\n return {\n contentsObj: {\n str: this.comment\n },\n richText,\n color,\n opacity,\n creationDate,\n modificationDate\n };\n }\n get elementBeforePopup() {\n return this.#commentButton;\n }\n get comment() {\n this.#commentText ||= this.#firstElement.commentText;\n return this.#commentText;\n }\n set comment(text) {\n if (text === this.comment) {\n return;\n }\n this.#firstElement.commentText = this.#commentText = text;\n }\n get parentBoundingClientRect() {\n return this.#firstElement.layer.getBoundingClientRect();\n }\n setCommentButtonStates({\n selected,\n hasPopup\n }) {\n if (!this.#commentButton) {\n return;\n }\n this.#commentButton.classList.toggle(\"selected\", selected);\n this.#commentButton.ariaExpanded = hasPopup;\n }\n setSelectedCommentButton(selected) {\n this.#commentButton.classList.toggle(\"selected\", selected);\n }\n get commentPopupPosition() {\n if (this.#popupPosition) {\n return this.#popupPosition;\n }\n const {\n x,\n y,\n height\n } = this.#commentButton.getBoundingClientRect();\n const {\n x: parentX,\n y: parentY,\n width: parentWidth,\n height: parentHeight\n } = this.#firstElement.layer.getBoundingClientRect();\n return [(x - parentX) / parentWidth, (y + height - parentY) / parentHeight];\n }\n set commentPopupPosition(pos) {\n this.#popupPosition = pos;\n }\n hasDefaultPopupPosition() {\n return this.#popupPosition === null;\n }\n get commentButtonPosition() {\n return this.#commentButtonPosition;\n }\n get commentButtonWidth() {\n return this.#commentButton.getBoundingClientRect().width / this.parentBoundingClientRect.width;\n }\n editComment(options) {\n const [posX, posY] = this.#popupPosition || this.commentButtonPosition.map((x) => x / 100);\n const parentDimensions = this.parentBoundingClientRect;\n const {\n x: parentX,\n y: parentY,\n width: parentWidth,\n height: parentHeight\n } = parentDimensions;\n this.#commentManager.showDialog(null, this, parentX + posX * parentWidth, parentY + posY * parentHeight, {\n ...options,\n parentDimensions\n });\n }\n render() {\n if (this.#popup) {\n return;\n }\n const popup = this.#popup = document.createElement(\"div\");\n popup.className = \"popup\";\n if (this.#color) {\n const baseColor = popup.style.outlineColor = Util.makeHexColor(...this.#color);\n popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\n }\n const header = document.createElement(\"span\");\n header.className = \"header\";\n if (this.#titleObj?.str) {\n const title = document.createElement(\"span\");\n title.className = \"title\";\n header.append(title);\n ({\n dir: title.dir,\n str: title.textContent\n } = this.#titleObj);\n }\n popup.append(header);\n if (this.#dateObj) {\n const modificationDate = document.createElement(\"time\");\n modificationDate.className = \"popupDate\";\n modificationDate.setAttribute(\"data-l10n-id\", \"pdfjs-annotation-date-time-string\");\n modificationDate.setAttribute(\"data-l10n-args\", JSON.stringify({\n dateObj: this.#dateObj.valueOf()\n }));\n modificationDate.dateTime = this.#dateObj.toISOString();\n header.append(modificationDate);\n }\n renderRichText({\n html: this.#html || this.#contentsObj.str,\n dir: this.#contentsObj?.dir,\n className: \"popupContent\"\n }, popup);\n this.#container.append(popup);\n }\n get #html() {\n const richText = this.#richText;\n const contentsObj = this.#contentsObj;\n if (richText?.str && (!contentsObj?.str || contentsObj.str === richText.str)) {\n return this.#richText.html || null;\n }\n return null;\n }\n get #fontSize() {\n return this.#html?.attributes?.style?.fontSize || 0;\n }\n get #fontColor() {\n return this.#html?.attributes?.style?.color || null;\n }\n #makePopupContent(text) {\n const popupLines = [];\n const popupContent = {\n str: text,\n html: {\n name: \"div\",\n attributes: {\n dir: \"auto\"\n },\n children: [{\n name: \"p\",\n children: popupLines\n }]\n }\n };\n const lineAttributes = {\n style: {\n color: this.#fontColor,\n fontSize: this.#fontSize ? `calc(${this.#fontSize}px * var(--total-scale-factor))` : \"\"\n }\n };\n for (const line of text.split(\"\\n\")) {\n popupLines.push({\n name: \"span\",\n value: line,\n attributes: lineAttributes\n });\n }\n return popupContent;\n }\n #keyDown(event) {\n if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {\n return;\n }\n if (event.key === \"Enter\" || event.key === \"Escape\" && this.#pinned) {\n this.#toggle();\n }\n }\n updateEdited({\n rect,\n popup,\n deleted\n }) {\n if (this.#commentManager) {\n if (deleted) {\n this.remove();\n this.#commentText = null;\n } else if (popup) {\n if (popup.deleted) {\n this.remove();\n } else {\n this.#updateColor();\n this.#commentText = popup.text;\n }\n }\n if (rect) {\n this.#commentButtonPosition = null;\n this.#setCommentButtonPosition();\n this.#updateCommentButtonPosition();\n }\n return;\n }\n if (deleted || popup?.deleted) {\n this.remove();\n return;\n }\n this.#addEventListeners();\n this.#updates ||= {\n contentsObj: this.#contentsObj,\n richText: this.#richText\n };\n if (rect) {\n this.#position = null;\n }\n if (popup && popup.text) {\n this.#richText = this.#makePopupContent(popup.text);\n this.#dateObj = PDFDateString.toDateObject(popup.date);\n this.#contentsObj = null;\n }\n this.#popup?.remove();\n this.#popup = null;\n }\n resetEdited() {\n if (!this.#updates) {\n return;\n }\n ({\n contentsObj: this.#contentsObj,\n richText: this.#richText\n } = this.#updates);\n this.#updates = null;\n this.#popup?.remove();\n this.#popup = null;\n this.#position = null;\n }\n remove() {\n this.#popupAbortController?.abort();\n this.#popupAbortController = null;\n this.#popup?.remove();\n this.#popup = null;\n this.#wasVisible = false;\n this.#pinned = false;\n this.#commentButton?.remove();\n this.#commentButton = null;\n if (this.trigger) {\n for (const element of this.trigger) {\n element.classList.remove(\"popupTriggerArea\");\n }\n }\n }\n #setPosition() {\n if (this.#position !== null) {\n return;\n }\n const {\n page: {\n view\n },\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n } = this.#parent;\n let useParentRect = !!this.#parentRect;\n let rect = useParentRect ? this.#parentRect : this.#rect;\n for (const element of this.#elements) {\n if (!rect || Util.intersect(element.data.rect, rect) !== null) {\n rect = element.data.rect;\n useParentRect = true;\n break;\n }\n }\n const normalizedRect = Util.normalizeRect([rect[0], view[3] - rect[1] + view[1], rect[2], view[3] - rect[3] + view[1]]);\n const HORIZONTAL_SPACE_AFTER_ANNOTATION = 5;\n const parentWidth = useParentRect ? rect[2] - rect[0] + HORIZONTAL_SPACE_AFTER_ANNOTATION : 0;\n const popupLeft = normalizedRect[0] + parentWidth;\n const popupTop = normalizedRect[1];\n this.#position = [100 * (popupLeft - pageX) / pageWidth, 100 * (popupTop - pageY) / pageHeight];\n const {\n style\n } = this.#container;\n style.left = `${this.#position[0]}%`;\n style.top = `${this.#position[1]}%`;\n }\n #toggle() {\n if (this.#commentManager) {\n this.#commentManager.toggleCommentPopup(this, false);\n return;\n }\n this.#pinned = !this.#pinned;\n if (this.#pinned) {\n this.#show();\n this.#container.addEventListener(\"click\", this.#boundToggle);\n this.#container.addEventListener(\"keydown\", this.#boundKeyDown);\n } else {\n this.#hide();\n this.#container.removeEventListener(\"click\", this.#boundToggle);\n this.#container.removeEventListener(\"keydown\", this.#boundKeyDown);\n }\n }\n #show() {\n if (!this.#popup) {\n this.render();\n }\n if (!this.isVisible) {\n this.#setPosition();\n this.#container.hidden = false;\n this.#container.style.zIndex = parseInt(this.#container.style.zIndex) + 1e3;\n } else if (this.#pinned) {\n this.#container.classList.add(\"focused\");\n }\n }\n #hide() {\n this.#container.classList.remove(\"focused\");\n if (this.#pinned || !this.isVisible) {\n return;\n }\n this.#container.hidden = true;\n this.#container.style.zIndex = parseInt(this.#container.style.zIndex) - 1e3;\n }\n forceHide() {\n this.#wasVisible = this.isVisible;\n if (!this.#wasVisible) {\n return;\n }\n this.#container.hidden = true;\n }\n maybeShow() {\n if (this.#commentManager) {\n return;\n }\n this.#addEventListeners();\n if (!this.#wasVisible) {\n return;\n }\n if (!this.#popup) {\n this.#show();\n }\n this.#wasVisible = false;\n this.#container.hidden = false;\n }\n get isVisible() {\n if (this.#commentManager) {\n return false;\n }\n return this.#container.hidden === false;\n }\n}\nclass FreeTextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.textContent = parameters.data.textContent;\n this.textPosition = parameters.data.textPosition;\n this.annotationEditorType = AnnotationEditorType.FREETEXT;\n }\n render() {\n this.container.classList.add(\"freeTextAnnotation\");\n if (this.textContent) {\n const content = document.createElement(\"div\");\n content.classList.add(\"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 if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this._editOnDoubleClick();\n return this.container;\n }\n}\nclass LineAnnotationElement extends AnnotationElement {\n #line = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"lineAnnotation\");\n const {\n data,\n width,\n height\n } = this;\n const svg = this.svgFactory.create(width, height, true);\n const line = this.#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 line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n line.setAttribute(\"stroke\", \"transparent\");\n line.setAttribute(\"fill\", \"transparent\");\n svg.append(line);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#line;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass SquareAnnotationElement extends AnnotationElement {\n #square = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"squareAnnotation\");\n const {\n data,\n width,\n height\n } = this;\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const square = this.#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 square.setAttribute(\"stroke-width\", borderWidth || 1);\n square.setAttribute(\"stroke\", \"transparent\");\n square.setAttribute(\"fill\", \"transparent\");\n svg.append(square);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#square;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass CircleAnnotationElement extends AnnotationElement {\n #circle = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"circleAnnotation\");\n const {\n data,\n width,\n height\n } = this;\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const circle = this.#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 circle.setAttribute(\"stroke-width\", borderWidth || 1);\n circle.setAttribute(\"stroke\", \"transparent\");\n circle.setAttribute(\"fill\", \"transparent\");\n svg.append(circle);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#circle;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass PolylineAnnotationElement extends AnnotationElement {\n #polyline = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const {\n data: {\n rect,\n vertices,\n borderStyle,\n popupRef\n },\n width,\n height\n } = this;\n if (!vertices) {\n return this.container;\n }\n const svg = this.svgFactory.create(width, height, true);\n let points = [];\n for (let i = 0, ii = vertices.length; i < ii; i += 2) {\n const x = vertices[i] - rect[0];\n const y = rect[3] - vertices[i + 1];\n points.push(`${x},${y}`);\n }\n points = points.join(\" \");\n const polyline = this.#polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n svg.append(polyline);\n this.container.append(svg);\n if (!popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#polyline;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n super(parameters);\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n}\nclass CaretAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"caretAnnotation\");\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n}\nclass InkAnnotationElement extends AnnotationElement {\n #polylinesGroupElement = null;\n #polylines = [];\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.containerClassName = \"inkAnnotation\";\n this.svgElementName = \"svg:polyline\";\n this.annotationEditorType = this.data.it === \"InkHighlight\" ? AnnotationEditorType.HIGHLIGHT : AnnotationEditorType.INK;\n }\n #getTransform(rotation, rect) {\n switch (rotation) {\n case 90:\n return {\n transform: `rotate(90) translate(${-rect[0]},${rect[1]}) scale(1,-1)`,\n width: rect[3] - rect[1],\n height: rect[2] - rect[0]\n };\n case 180:\n return {\n transform: `rotate(180) translate(${-rect[2]},${rect[1]}) scale(1,-1)`,\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n case 270:\n return {\n transform: `rotate(270) translate(${-rect[2]},${rect[3]}) scale(1,-1)`,\n width: rect[3] - rect[1],\n height: rect[2] - rect[0]\n };\n default:\n return {\n transform: `translate(${-rect[0]},${rect[3]}) scale(1,-1)`,\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n }\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const {\n data: {\n rect,\n rotation,\n inkLists,\n borderStyle,\n popupRef\n }\n } = this;\n const {\n transform,\n width,\n height\n } = this.#getTransform(rotation, rect);\n const svg = this.svgFactory.create(width, height, true);\n const g = this.#polylinesGroupElement = this.svgFactory.createElement(\"svg:g\");\n svg.append(g);\n g.setAttribute(\"stroke-width\", borderStyle.width || 1);\n g.setAttribute(\"stroke-linecap\", \"round\");\n g.setAttribute(\"stroke-linejoin\", \"round\");\n g.setAttribute(\"stroke-miterlimit\", 10);\n g.setAttribute(\"stroke\", \"transparent\");\n g.setAttribute(\"fill\", \"transparent\");\n g.setAttribute(\"transform\", transform);\n for (let i = 0, ii = inkLists.length; i < ii; i++) {\n const polyline = this.svgFactory.createElement(this.svgElementName);\n this.#polylines.push(polyline);\n polyline.setAttribute(\"points\", inkLists[i].join(\",\"));\n g.append(polyline);\n }\n if (!popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.append(svg);\n this._editOnDoubleClick();\n return this.container;\n }\n updateEdited(params) {\n super.updateEdited(params);\n const {\n thickness,\n points,\n rect\n } = params;\n const g = this.#polylinesGroupElement;\n if (thickness >= 0) {\n g.setAttribute(\"stroke-width\", thickness || 1);\n }\n if (points) {\n for (let i = 0, ii = this.#polylines.length; i < ii; i++) {\n this.#polylines[i].setAttribute(\"points\", points[i].join(\",\"));\n }\n }\n if (rect) {\n const {\n transform,\n width,\n height\n } = this.#getTransform(this.data.rotation, rect);\n const root = g.parentElement;\n root.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n g.setAttribute(\"transform\", transform);\n }\n }\n getElementsToTriggerPopup() {\n return this.#polylines;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n this.annotationEditorType = AnnotationEditorType.HIGHLIGHT;\n }\n render() {\n const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"highlightAnnotation\");\n this._editOnDoubleClick();\n if (overlaidText) {\n const mark = document.createElement(\"mark\");\n mark.classList.add(\"overlaidText\");\n mark.textContent = overlaidText;\n this.container.append(mark);\n }\n return this.container;\n }\n}\nclass UnderlineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"underlineAnnotation\");\n if (overlaidText) {\n const underline = document.createElement(\"u\");\n underline.classList.add(\"overlaidText\");\n underline.textContent = overlaidText;\n this.container.append(underline);\n }\n return this.container;\n }\n}\nclass SquigglyAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"squigglyAnnotation\");\n if (overlaidText) {\n const underline = document.createElement(\"u\");\n underline.classList.add(\"overlaidText\");\n underline.textContent = overlaidText;\n this.container.append(underline);\n }\n return this.container;\n }\n}\nclass StrikeOutAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"strikeoutAnnotation\");\n if (overlaidText) {\n const strikeout = document.createElement(\"s\");\n strikeout.classList.add(\"overlaidText\");\n strikeout.textContent = overlaidText;\n this.container.append(strikeout);\n }\n return this.container;\n }\n}\nclass StampAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.annotationEditorType = AnnotationEditorType.STAMP;\n }\n render() {\n this.container.classList.add(\"stampAnnotation\");\n this.container.setAttribute(\"role\", \"img\");\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this._editOnDoubleClick();\n return this.container;\n }\n}\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n #trigger = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n const {\n file\n } = this.data;\n this.filename = file.filename;\n this.content = file.content;\n this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n source: this,\n ...file\n });\n }\n render() {\n this.container.classList.add(\"fileAttachmentAnnotation\");\n const {\n container,\n data\n } = this;\n let trigger;\n if (data.hasAppearance || data.fillAlpha === 0) {\n trigger = document.createElement(\"div\");\n } else {\n trigger = document.createElement(\"img\");\n trigger.src = `${this.imageResourcesPath}annotation-${/paperclip/i.test(data.name) ? \"paperclip\" : \"pushpin\"}.svg`;\n if (data.fillAlpha && data.fillAlpha < 1) {\n trigger.style = `filter: opacity(${Math.round(data.fillAlpha * 100)}%);`;\n }\n }\n trigger.addEventListener(\"dblclick\", this.#download.bind(this));\n this.#trigger = trigger;\n const {\n isMac\n } = util_FeatureTest.platform;\n container.addEventListener(\"keydown\", (evt) => {\n if (evt.key === \"Enter\" && (isMac ? evt.metaKey : evt.ctrlKey)) {\n this.#download();\n }\n });\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n } else {\n trigger.classList.add(\"popupTriggerArea\");\n }\n container.append(trigger);\n return container;\n }\n getElementsToTriggerPopup() {\n return this.#trigger;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n #download() {\n this.downloadManager?.openOrDownloadData(this.content, this.filename);\n }\n}\nclass AnnotationLayer {\n #accessibilityManager = null;\n #annotationCanvasMap = null;\n #annotationStorage = null;\n #editableAnnotations = /* @__PURE__ */ new Map();\n #structTreeLayer = null;\n #linkService = null;\n constructor({\n div,\n accessibilityManager,\n annotationCanvasMap,\n annotationEditorUIManager,\n page,\n viewport,\n structTreeLayer,\n commentManager,\n linkService,\n annotationStorage\n }) {\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationCanvasMap = annotationCanvasMap;\n this.#structTreeLayer = structTreeLayer || null;\n this.#linkService = linkService || null;\n this.#annotationStorage = annotationStorage || new AnnotationStorage();\n this.page = page;\n this.viewport = viewport;\n this.zIndex = 0;\n this._annotationEditorUIManager = annotationEditorUIManager;\n this._commentManager = commentManager || null;\n }\n hasEditableAnnotations() {\n return this.#editableAnnotations.size > 0;\n }\n async #appendElement(element, id, popupElements) {\n const contentElement = element.firstChild || element;\n const annotationId = contentElement.id = `${AnnotationPrefix}${id}`;\n const ariaAttributes = await this.#structTreeLayer?.getAriaAttributes(annotationId);\n if (ariaAttributes) {\n for (const [key, value] of ariaAttributes) {\n contentElement.setAttribute(key, value);\n }\n }\n if (popupElements) {\n popupElements.at(-1).container.after(element);\n } else {\n this.div.append(element);\n this.#accessibilityManager?.moveElementInDOM(this.div, element, contentElement, false);\n }\n }\n async render(params) {\n const {\n annotations\n } = params;\n const layer = this.div;\n setLayerDimensions(layer, this.viewport);\n const popupToElements = /* @__PURE__ */ new Map();\n const elementParams = {\n data: null,\n layer,\n linkService: this.#linkService,\n downloadManager: params.downloadManager,\n imageResourcesPath: params.imageResourcesPath || \"\",\n renderForms: params.renderForms !== false,\n svgFactory: new DOMSVGFactory(),\n annotationStorage: this.#annotationStorage,\n enableComment: params.enableComment === true,\n enableScripting: params.enableScripting === true,\n hasJSActions: params.hasJSActions,\n fieldObjects: params.fieldObjects,\n parent: this,\n elements: null\n };\n for (const data of annotations) {\n if (data.noHTML) {\n continue;\n }\n const isPopupAnnotation = data.annotationType === AnnotationType.POPUP;\n if (!isPopupAnnotation) {\n if (data.rect[2] === data.rect[0] || data.rect[3] === data.rect[1]) {\n continue;\n }\n } else {\n const elements = popupToElements.get(data.id);\n if (!elements) {\n continue;\n }\n elementParams.elements = elements;\n }\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n if (!isPopupAnnotation && data.popupRef) {\n const elements = popupToElements.get(data.popupRef);\n if (!elements) {\n popupToElements.set(data.popupRef, [element]);\n } else {\n elements.push(element);\n }\n }\n const rendered = element.render();\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n await this.#appendElement(rendered, data.id, elementParams.elements);\n element.extraPopupElement?.popup?.renderCommentButton();\n if (element._isEditable) {\n this.#editableAnnotations.set(element.data.id, element);\n this._annotationEditorUIManager?.renderAnnotationElement(element);\n }\n }\n this.#setAnnotationCanvasMap();\n }\n async addLinkAnnotations(annotations) {\n const elementParams = {\n data: null,\n layer: this.div,\n linkService: this.#linkService,\n svgFactory: new DOMSVGFactory(),\n parent: this\n };\n for (const data of annotations) {\n data.borderStyle ||= AnnotationLayer._defaultBorderStyle;\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n const rendered = element.render();\n await this.#appendElement(rendered, data.id, null);\n }\n }\n update({\n viewport\n }) {\n const layer = this.div;\n this.viewport = viewport;\n setLayerDimensions(layer, {\n rotation: viewport.rotation\n });\n this.#setAnnotationCanvasMap();\n layer.hidden = false;\n }\n #setAnnotationCanvasMap() {\n if (!this.#annotationCanvasMap) {\n return;\n }\n const layer = this.div;\n for (const [id, canvas] of this.#annotationCanvasMap) {\n const element = layer.querySelector(`[data-annotation-id=\"${id}\"]`);\n if (!element) {\n continue;\n }\n canvas.className = \"annotationContent\";\n const {\n firstChild\n } = element;\n if (!firstChild) {\n element.append(canvas);\n } else if (firstChild.nodeName === \"CANVAS\") {\n firstChild.replaceWith(canvas);\n } else if (!firstChild.classList.contains(\"annotationContent\")) {\n firstChild.before(canvas);\n } else {\n firstChild.after(canvas);\n }\n const editableAnnotation = this.#editableAnnotations.get(id);\n if (!editableAnnotation) {\n continue;\n }\n if (editableAnnotation._hasNoCanvas) {\n this._annotationEditorUIManager?.setMissingCanvas(id, element.id, canvas);\n editableAnnotation._hasNoCanvas = false;\n } else {\n editableAnnotation.canvas = canvas;\n }\n }\n this.#annotationCanvasMap.clear();\n }\n getEditableAnnotations() {\n return Array.from(this.#editableAnnotations.values());\n }\n getEditableAnnotation(id) {\n return this.#editableAnnotations.get(id);\n }\n addFakeAnnotation(editor) {\n const {\n div\n } = this;\n const {\n id,\n rotation\n } = editor;\n const element = new EditorAnnotationElement({\n data: {\n id,\n rect: editor.getPDFRect(),\n rotation\n },\n editor,\n layer: div,\n parent: this,\n enableComment: !!this._commentManager,\n linkService: this.#linkService,\n annotationStorage: this.#annotationStorage\n });\n const htmlElement = element.render();\n div.append(htmlElement);\n this.#accessibilityManager?.moveElementInDOM(div, htmlElement, htmlElement, false);\n element.createOrUpdatePopup();\n return element;\n }\n static get _defaultBorderStyle() {\n return shadow(this, \"_defaultBorderStyle\", Object.freeze({\n width: 1,\n rawWidth: 1,\n style: AnnotationBorderStyleType.SOLID,\n dashArray: [3],\n horizontalCornerRadius: 0,\n verticalCornerRadius: 0\n }));\n }\n}\nconst EOL_PATTERN = /\\r\\n?|\\n/g;\nclass FreeTextEditor extends AnnotationEditor {\n #content = \"\";\n #editorDivId = `${this.id}-editor`;\n #editModeAC = null;\n #fontSize;\n _colorPicker = null;\n static _freeTextDefaultContent = \"\";\n static _internalPadding = 0;\n static _defaultColor = null;\n static _defaultFontSize = 10;\n static get _keyboardManager() {\n const proto = FreeTextEditor.prototype;\n const arrowChecker = (self2) => self2.isEmpty();\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+s\", \"mac+meta+s\", \"ctrl+p\", \"mac+meta+p\"], proto.commitOrRemove, {\n bubbles: true\n }], [[\"ctrl+Enter\", \"mac+meta+Enter\", \"Escape\", \"mac+Escape\"], proto.commitOrRemove], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._translateEmpty, {\n args: [-small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto._translateEmpty, {\n args: [-big, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._translateEmpty, {\n args: [small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto._translateEmpty, {\n args: [big, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._translateEmpty, {\n args: [0, -small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto._translateEmpty, {\n args: [0, -big],\n checker: arrowChecker\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._translateEmpty, {\n args: [0, small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto._translateEmpty, {\n args: [0, big],\n checker: arrowChecker\n }]]));\n }\n static _type = \"freetext\";\n static _editorType = AnnotationEditorType.FREETEXT;\n constructor(params) {\n super({\n ...params,\n name: \"freeTextEditor\"\n });\n this.color = params.color || FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor;\n this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;\n if (!this.annotationElementId) {\n this._uiManager.a11yAlert(\"pdfjs-editor-freetext-added-alert\");\n }\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n const style = getComputedStyle(document.documentElement);\n this._internalPadding = parseFloat(style.getPropertyValue(\"--freetext-padding\"));\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 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 static get defaultPropertiesToUpdate() {\n return [[AnnotationEditorParamsType.FREETEXT_SIZE, FreeTextEditor._defaultFontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor]];\n }\n get propertiesToUpdate() {\n return [[AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, this.color]];\n }\n get toolbarButtons() {\n this._colorPicker ||= new BasicColorPicker(this);\n return [[\"colorPicker\", this._colorPicker]];\n }\n get colorType() {\n return AnnotationEditorParamsType.FREETEXT_COLOR;\n }\n #updateFontSize(fontSize) {\n const setFontsize = (size) => {\n this.editorDiv.style.fontSize = `calc(${size}px * var(--total-scale-factor))`;\n this.translate(0, -(size - this.#fontSize) * this.parentScale);\n this.#fontSize = size;\n this.#setEditorDimensions();\n };\n const savedFontsize = this.#fontSize;\n this.addCommands({\n cmd: setFontsize.bind(this, fontSize),\n undo: setFontsize.bind(this, savedFontsize),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_SIZE,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n onUpdatedColor() {\n this.editorDiv.style.color = this.color;\n this._colorPicker?.update(this.color);\n super.onUpdatedColor();\n }\n #updateColor(color) {\n const setColor = (col) => {\n this.color = col;\n this.onUpdatedColor();\n };\n const savedColor = this.color;\n this.addCommands({\n cmd: setColor.bind(this, color),\n undo: setColor.bind(this, savedColor),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n _translateEmpty(x, y) {\n this._uiManager.translateSelectedEditors(x, y, true);\n }\n getInitialTranslation() {\n const scale = this.parentScale;\n return [-FreeTextEditor._internalPadding * scale, -(FreeTextEditor._internalPadding + this.#fontSize) * scale];\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n enableEditMode() {\n if (!super.enableEditMode()) {\n return false;\n }\n this.overlayDiv.classList.remove(\"enabled\");\n this.editorDiv.contentEditable = true;\n this._isDraggable = false;\n this.div.removeAttribute(\"aria-activedescendant\");\n this.#editModeAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#editModeAC);\n this.editorDiv.addEventListener(\"keydown\", this.editorDivKeydown.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"focus\", this.editorDivFocus.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"blur\", this.editorDivBlur.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"input\", this.editorDivInput.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"paste\", this.editorDivPaste.bind(this), {\n signal\n });\n return true;\n }\n disableEditMode() {\n if (!super.disableEditMode()) {\n return false;\n }\n this.overlayDiv.classList.add(\"enabled\");\n this.editorDiv.contentEditable = false;\n this.div.setAttribute(\"aria-activedescendant\", this.#editorDivId);\n this._isDraggable = true;\n this.#editModeAC?.abort();\n this.#editModeAC = null;\n this.div.focus({\n preventScroll: true\n });\n this.isEditing = false;\n this.parent.div.classList.add(\"freetextEditing\");\n return true;\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n super.focusin(event);\n if (event.target !== this.editorDiv) {\n this.editorDiv.focus();\n }\n }\n onceAdded(focus) {\n if (this.width) {\n return;\n }\n this.enableEditMode();\n if (focus) {\n this.editorDiv.focus();\n }\n if (this._initialOptions?.isCentered) {\n this.center();\n }\n this._initialOptions = null;\n }\n isEmpty() {\n return !this.editorDiv || this.editorDiv.innerText.trim() === \"\";\n }\n remove() {\n this.isEditing = false;\n if (this.parent) {\n this.parent.setEditingState(true);\n this.parent.div.classList.add(\"freetextEditing\");\n }\n super.remove();\n }\n #extractText() {\n const buffer = [];\n this.editorDiv.normalize();\n let prevChild = null;\n for (const child of this.editorDiv.childNodes) {\n if (prevChild?.nodeType === Node.TEXT_NODE && child.nodeName === \"BR\") {\n continue;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n prevChild = child;\n }\n return buffer.join(\"\\n\");\n }\n #setEditorDimensions() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n let rect;\n if (this.isAttachedToDOM) {\n rect = this.div.getBoundingClientRect();\n } else {\n const {\n currentLayer,\n div\n } = this;\n const savedDisplay = div.style.display;\n const savedVisibility = div.classList.contains(\"hidden\");\n div.classList.remove(\"hidden\");\n div.style.display = \"hidden\";\n currentLayer.div.append(this.div);\n rect = div.getBoundingClientRect();\n div.remove();\n div.style.display = savedDisplay;\n div.classList.toggle(\"hidden\", savedVisibility);\n }\n if (this.rotation % 180 === this.parentRotation % 180) {\n this.width = rect.width / parentWidth;\n this.height = rect.height / parentHeight;\n } else {\n this.width = rect.height / parentWidth;\n this.height = rect.width / parentHeight;\n }\n this.fixAndSetPosition();\n }\n commit() {\n if (!this.isInEditMode()) {\n return;\n }\n super.commit();\n this.disableEditMode();\n const savedText = this.#content;\n const newText = this.#content = this.#extractText().trimEnd();\n if (savedText === newText) {\n return;\n }\n const setText = (text) => {\n this.#content = text;\n if (!text) {\n this.remove();\n return;\n }\n this.#setContent();\n this._uiManager.rebuild(this);\n this.#setEditorDimensions();\n };\n this.addCommands({\n cmd: () => {\n setText(newText);\n },\n undo: () => {\n setText(savedText);\n },\n mustExec: false\n });\n this.#setEditorDimensions();\n }\n shouldGetKeyboardEvents() {\n return this.isInEditMode();\n }\n enterInEditMode() {\n this.enableEditMode();\n this.editorDiv.focus();\n }\n keydown(event) {\n if (event.target === this.div && event.key === \"Enter\") {\n this.enterInEditMode();\n event.preventDefault();\n }\n }\n editorDivKeydown(event) {\n FreeTextEditor._keyboardManager.exec(this, event);\n }\n editorDivFocus(event) {\n this.isEditing = true;\n }\n editorDivBlur(event) {\n this.isEditing = false;\n }\n editorDivInput(event) {\n this.parent.div.classList.toggle(\"freetextEditing\", this.isEmpty());\n }\n disableEditing() {\n this.editorDiv.setAttribute(\"role\", \"comment\");\n this.editorDiv.removeAttribute(\"aria-multiline\");\n }\n enableEditing() {\n this.editorDiv.setAttribute(\"role\", \"textbox\");\n this.editorDiv.setAttribute(\"aria-multiline\", true);\n }\n get canChangeContent() {\n return true;\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this._isCopy || this.annotationElementId) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.editorDiv = document.createElement(\"div\");\n this.editorDiv.className = \"internal\";\n this.editorDiv.setAttribute(\"id\", this.#editorDivId);\n this.editorDiv.setAttribute(\"data-l10n-id\", \"pdfjs-free-text2\");\n this.editorDiv.setAttribute(\"data-l10n-attrs\", \"default-content\");\n this.enableEditing();\n this.editorDiv.contentEditable = true;\n const {\n style\n } = this.editorDiv;\n style.fontSize = `calc(${this.#fontSize}px * var(--total-scale-factor))`;\n style.color = this.color;\n this.div.append(this.editorDiv);\n this.overlayDiv = document.createElement(\"div\");\n this.overlayDiv.classList.add(\"overlay\", \"enabled\");\n this.div.append(this.overlayDiv);\n if (this._isCopy || this.annotationElementId) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.annotationElementId) {\n const {\n position\n } = this._initialData;\n let [tx, ty] = this.getInitialTranslation();\n [tx, ty] = this.pageTranslationToScreen(tx, ty);\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n let posX, posY;\n switch (this.rotation) {\n case 0:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY + this.height - (position[1] - pageY) / pageHeight;\n break;\n case 90:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [ty, -tx];\n break;\n case 180:\n posX = baseX - this.width + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [-tx, -ty];\n break;\n case 270:\n posX = baseX + (position[0] - pageX - this.height * pageHeight) / pageWidth;\n posY = baseY + (position[1] - pageY - this.width * pageWidth) / pageHeight;\n [tx, ty] = [-ty, tx];\n break;\n }\n this.setAt(posX * parentWidth, posY * parentHeight, tx, ty);\n } else {\n this._moveAfterPaste(baseX, baseY);\n }\n this.#setContent();\n this._isDraggable = true;\n this.editorDiv.contentEditable = false;\n } else {\n this._isDraggable = false;\n this.editorDiv.contentEditable = true;\n }\n return this.div;\n }\n static #getNodeContent(node) {\n return (node.nodeType === Node.TEXT_NODE ? node.nodeValue : node.innerText).replaceAll(EOL_PATTERN, \"\");\n }\n editorDivPaste(event) {\n const clipboardData = event.clipboardData || window.clipboardData;\n const {\n types\n } = clipboardData;\n if (types.length === 1 && types[0] === \"text/plain\") {\n return;\n }\n event.preventDefault();\n const paste = FreeTextEditor.#deserializeContent(clipboardData.getData(\"text\") || \"\").replaceAll(EOL_PATTERN, \"\\n\");\n if (!paste) {\n return;\n }\n const selection = window.getSelection();\n if (!selection.rangeCount) {\n return;\n }\n this.editorDiv.normalize();\n selection.deleteFromDocument();\n const range = selection.getRangeAt(0);\n if (!paste.includes(\"\\n\")) {\n range.insertNode(document.createTextNode(paste));\n this.editorDiv.normalize();\n selection.collapseToStart();\n return;\n }\n const {\n startContainer,\n startOffset\n } = range;\n const bufferBefore = [];\n const bufferAfter = [];\n if (startContainer.nodeType === Node.TEXT_NODE) {\n const parent = startContainer.parentElement;\n bufferAfter.push(startContainer.nodeValue.slice(startOffset).replaceAll(EOL_PATTERN, \"\"));\n if (parent !== this.editorDiv) {\n let buffer = bufferBefore;\n for (const child of this.editorDiv.childNodes) {\n if (child === parent) {\n buffer = bufferAfter;\n continue;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n }\n bufferBefore.push(startContainer.nodeValue.slice(0, startOffset).replaceAll(EOL_PATTERN, \"\"));\n } else if (startContainer === this.editorDiv) {\n let buffer = bufferBefore;\n let i = 0;\n for (const child of this.editorDiv.childNodes) {\n if (i++ === startOffset) {\n buffer = bufferAfter;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n }\n this.#content = `${bufferBefore.join(\"\\n\")}${paste}${bufferAfter.join(\"\\n\")}`;\n this.#setContent();\n const newRange = new Range();\n let beforeLength = Math.sumPrecise(bufferBefore.map((line) => line.length));\n for (const {\n firstChild\n } of this.editorDiv.childNodes) {\n if (firstChild.nodeType === Node.TEXT_NODE) {\n const length = firstChild.nodeValue.length;\n if (beforeLength <= length) {\n newRange.setStart(firstChild, beforeLength);\n newRange.setEnd(firstChild, beforeLength);\n break;\n }\n beforeLength -= length;\n }\n }\n selection.removeAllRanges();\n selection.addRange(newRange);\n }\n #setContent() {\n this.editorDiv.replaceChildren();\n if (!this.#content) {\n return;\n }\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n this.editorDiv.append(div);\n }\n }\n #serializeContent() {\n return this.#content.replaceAll(\" \", \" \");\n }\n static #deserializeContent(content) {\n return content.replaceAll(\" \", \" \");\n }\n get contentDiv() {\n return this.editorDiv;\n }\n getPDFRect() {\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n return this.getRect(padding, padding);\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof FreeTextAnnotationElement) {\n const {\n data: {\n defaultAppearanceData: {\n fontSize,\n fontColor\n },\n rect,\n rotation,\n id,\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n textContent,\n textPosition,\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n if (!textContent || textContent.length === 0) {\n return null;\n }\n initialData = data = {\n annotationType: AnnotationEditorType.FREETEXT,\n color: Array.from(fontColor),\n fontSize,\n value: textContent.join(\"\\n\"),\n position: textPosition,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n popupRef,\n comment: contentsObj?.str || null,\n richText,\n creationDate,\n modificationDate\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n editor.#fontSize = data.fontSize;\n editor.color = Util.makeHexColor(...data.color);\n editor.#content = FreeTextEditor.#deserializeContent(data.value);\n editor._initialData = initialData;\n if (data.comment) {\n editor.setCommentData(data);\n }\n return editor;\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const color = AnnotationEditor._colorManager.convert(this.isAttachedToDOM ? getComputedStyle(this.editorDiv).color : this.color);\n const serialized = Object.assign(super.serialize(isForCopying), {\n color,\n fontSize: this.#fontSize,\n value: this.#serializeContent()\n });\n this.addComment(serialized);\n if (isForCopying) {\n serialized.isCopy = true;\n return serialized;\n }\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n value,\n fontSize,\n color,\n pageIndex\n } = this._initialData;\n return this.hasEditedComment || this._hasBeenMoved || serialized.value !== value || serialized.fontSize !== fontSize || serialized.color.some((c, i) => c !== color[i]) || serialized.pageIndex !== pageIndex;\n }\n renderAnnotationElement(annotation) {\n const content = super.renderAnnotationElement(annotation);\n if (!content) {\n return null;\n }\n const {\n style\n } = content;\n style.fontSize = `calc(${this.#fontSize}px * var(--total-scale-factor))`;\n style.color = this.color;\n content.replaceChildren();\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n content.append(div);\n }\n annotation.updateEdited({\n rect: this.getPDFRect(),\n popup: this._uiManager.hasCommentManager() || this.hasEditedComment ? this.comment : {\n text: this.#content\n }\n });\n return content;\n }\n resetAnnotationElement(annotation) {\n super.resetAnnotationElement(annotation);\n annotation.resetEdited();\n }\n}\nclass Outline {\n static PRECISION = 1e-4;\n toSVGPath() {\n unreachable(\"Abstract method `toSVGPath` must be implemented.\");\n }\n get box() {\n unreachable(\"Abstract getter `box` must be implemented.\");\n }\n serialize(_bbox, _rotation) {\n unreachable(\"Abstract method `serialize` must be implemented.\");\n }\n static _rescale(src, tx, ty, sx, sy, dest) {\n dest ||= new Float32Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i] * sx;\n dest[i + 1] = ty + src[i + 1] * sy;\n }\n return dest;\n }\n static _rescaleAndSwap(src, tx, ty, sx, sy, dest) {\n dest ||= new Float32Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i + 1] * sx;\n dest[i + 1] = ty + src[i] * sy;\n }\n return dest;\n }\n static _translate(src, tx, ty, dest) {\n dest ||= new Float32Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i];\n dest[i + 1] = ty + src[i + 1];\n }\n return dest;\n }\n static svgRound(x) {\n return Math.round(x * 1e4);\n }\n static _normalizePoint(x, y, parentWidth, parentHeight, rotation) {\n switch (rotation) {\n case 90:\n return [1 - y / parentWidth, x / parentHeight];\n case 180:\n return [1 - x / parentWidth, 1 - y / parentHeight];\n case 270:\n return [y / parentWidth, 1 - x / parentHeight];\n default:\n return [x / parentWidth, y / parentHeight];\n }\n }\n static _normalizePagePoint(x, y, rotation) {\n switch (rotation) {\n case 90:\n return [1 - y, x];\n case 180:\n return [1 - x, 1 - y];\n case 270:\n return [y, 1 - x];\n default:\n return [x, y];\n }\n }\n static createBezierPoints(x1, y1, x2, y2, x3, y3) {\n return [(x1 + 5 * x2) / 6, (y1 + 5 * y2) / 6, (5 * x2 + x3) / 6, (5 * y2 + y3) / 6, (x2 + x3) / 2, (y2 + y3) / 2];\n }\n}\nclass FreeDrawOutliner {\n #box;\n #bottom = [];\n #innerMargin;\n #isLTR;\n #top = [];\n #last = new Float32Array(18);\n #lastX;\n #lastY;\n #min;\n #min_dist;\n #scaleFactor;\n #thickness;\n #points = [];\n static #MIN_DIST = 8;\n static #MIN_DIFF = 2;\n static #MIN = FreeDrawOutliner.#MIN_DIST + FreeDrawOutliner.#MIN_DIFF;\n constructor({\n x,\n y\n }, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n this.#box = box;\n this.#thickness = thickness * scaleFactor;\n this.#isLTR = isLTR;\n this.#last.set([NaN, NaN, NaN, NaN, x, y], 6);\n this.#innerMargin = innerMargin;\n this.#min_dist = FreeDrawOutliner.#MIN_DIST * scaleFactor;\n this.#min = FreeDrawOutliner.#MIN * scaleFactor;\n this.#scaleFactor = scaleFactor;\n this.#points.push(x, y);\n }\n isEmpty() {\n return isNaN(this.#last[8]);\n }\n #getLastCoords() {\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [x, y, width, height] = this.#box;\n return [(this.#lastX + (lastTop[0] - lastBottom[0]) / 2 - x) / width, (this.#lastY + (lastTop[1] - lastBottom[1]) / 2 - y) / height, (this.#lastX + (lastBottom[0] - lastTop[0]) / 2 - x) / width, (this.#lastY + (lastBottom[1] - lastTop[1]) / 2 - y) / height];\n }\n add({\n x,\n y\n }) {\n this.#lastX = x;\n this.#lastY = y;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n let [x1, y1, x2, y2] = this.#last.subarray(8, 12);\n const diffX = x - x2;\n const diffY = y - y2;\n const d = Math.hypot(diffX, diffY);\n if (d < this.#min) {\n return false;\n }\n const diffD = d - this.#min_dist;\n const K = diffD / d;\n const shiftX = K * diffX;\n const shiftY = K * diffY;\n let x0 = x1;\n let y0 = y1;\n x1 = x2;\n y1 = y2;\n x2 += shiftX;\n y2 += shiftY;\n this.#points?.push(x, y);\n const nX = -shiftY / diffD;\n const nY = shiftX / diffD;\n const thX = nX * this.#thickness;\n const thY = nY * this.#thickness;\n this.#last.set(this.#last.subarray(2, 8), 0);\n this.#last.set([x2 + thX, y2 + thY], 4);\n this.#last.set(this.#last.subarray(14, 18), 12);\n this.#last.set([x2 - thX, y2 - thY], 16);\n if (isNaN(this.#last[6])) {\n if (this.#top.length === 0) {\n this.#last.set([x1 + thX, y1 + thY], 2);\n this.#top.push(NaN, NaN, NaN, NaN, (x1 + thX - layerX) / layerWidth, (y1 + thY - layerY) / layerHeight);\n this.#last.set([x1 - thX, y1 - thY], 14);\n this.#bottom.push(NaN, NaN, NaN, NaN, (x1 - thX - layerX) / layerWidth, (y1 - thY - layerY) / layerHeight);\n }\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n return !this.isEmpty();\n }\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n const angle = Math.abs(Math.atan2(y0 - y1, x0 - x1) - Math.atan2(shiftY, shiftX));\n if (angle < Math.PI / 2) {\n [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n this.#top.push(NaN, NaN, NaN, NaN, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x1, y1, x0, y0] = this.#last.subarray(14, 18);\n this.#bottom.push(NaN, NaN, NaN, NaN, ((x0 + x1) / 2 - layerX) / layerWidth, ((y0 + y1) / 2 - layerY) / layerHeight);\n return true;\n }\n [x0, y0, x1, y1, x2, y2] = this.#last.subarray(0, 6);\n this.#top.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x2, y2, x1, y1, x0, y0] = this.#last.subarray(12, 18);\n this.#bottom.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n return true;\n }\n toSVGPath() {\n if (this.isEmpty()) {\n return \"\";\n }\n const top = this.#top;\n const bottom = this.#bottom;\n if (isNaN(this.#last[6]) && !this.isEmpty()) {\n return this.#toSVGPathTwoPoints();\n }\n const buffer = [];\n buffer.push(`M${top[4]} ${top[5]}`);\n for (let i = 6; i < top.length; i += 6) {\n if (isNaN(top[i])) {\n buffer.push(`L${top[i + 4]} ${top[i + 5]}`);\n } else {\n buffer.push(`C${top[i]} ${top[i + 1]} ${top[i + 2]} ${top[i + 3]} ${top[i + 4]} ${top[i + 5]}`);\n }\n }\n this.#toSVGPathEnd(buffer);\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n if (isNaN(bottom[i])) {\n buffer.push(`L${bottom[i + 4]} ${bottom[i + 5]}`);\n } else {\n buffer.push(`C${bottom[i]} ${bottom[i + 1]} ${bottom[i + 2]} ${bottom[i + 3]} ${bottom[i + 4]} ${bottom[i + 5]}`);\n }\n }\n this.#toSVGPathStart(buffer);\n return buffer.join(\" \");\n }\n #toSVGPathTwoPoints() {\n const [x, y, width, height] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n return `M${(this.#last[2] - x) / width} ${(this.#last[3] - y) / height} L${(this.#last[4] - x) / width} ${(this.#last[5] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(this.#last[16] - x) / width} ${(this.#last[17] - y) / height} L${(this.#last[14] - x) / width} ${(this.#last[15] - y) / height} Z`;\n }\n #toSVGPathStart(buffer) {\n const bottom = this.#bottom;\n buffer.push(`L${bottom[4]} ${bottom[5]} Z`);\n }\n #toSVGPathEnd(buffer) {\n const [x, y, width, height] = this.#box;\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n buffer.push(`L${(lastTop[0] - x) / width} ${(lastTop[1] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(lastBottom[0] - x) / width} ${(lastBottom[1] - y) / height}`);\n }\n newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n return new FreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR);\n }\n getOutlines() {\n const top = this.#top;\n const bottom = this.#bottom;\n const last = this.#last;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const points = new Float32Array((this.#points?.length ?? 0) + 2);\n for (let i = 0, ii = points.length - 2; i < ii; i += 2) {\n points[i] = (this.#points[i] - layerX) / layerWidth;\n points[i + 1] = (this.#points[i + 1] - layerY) / layerHeight;\n }\n points[points.length - 2] = (this.#lastX - layerX) / layerWidth;\n points[points.length - 1] = (this.#lastY - layerY) / layerHeight;\n if (isNaN(last[6]) && !this.isEmpty()) {\n return this.#getOutlineTwoPoints(points);\n }\n const outline = new Float32Array(this.#top.length + 24 + this.#bottom.length);\n let N = top.length;\n for (let i = 0; i < N; i += 2) {\n if (isNaN(top[i])) {\n outline[i] = outline[i + 1] = NaN;\n continue;\n }\n outline[i] = top[i];\n outline[i + 1] = top[i + 1];\n }\n N = this.#getOutlineEnd(outline, N);\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n for (let j = 0; j < 6; j += 2) {\n if (isNaN(bottom[i + j])) {\n outline[N] = outline[N + 1] = NaN;\n N += 2;\n continue;\n }\n outline[N] = bottom[i + j];\n outline[N + 1] = bottom[i + j + 1];\n N += 2;\n }\n }\n this.#getOutlineStart(outline, N);\n return this.newFreeDrawOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n }\n #getOutlineTwoPoints(points) {\n const last = this.#last;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n const outline = new Float32Array(36);\n outline.set([NaN, NaN, NaN, NaN, (last[2] - layerX) / layerWidth, (last[3] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[4] - layerX) / layerWidth, (last[5] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (last[16] - layerX) / layerWidth, (last[17] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[14] - layerX) / layerWidth, (last[15] - layerY) / layerHeight], 0);\n return this.newFreeDrawOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n }\n #getOutlineStart(outline, pos) {\n const bottom = this.#bottom;\n outline.set([NaN, NaN, NaN, NaN, bottom[4], bottom[5]], pos);\n return pos += 6;\n }\n #getOutlineEnd(outline, pos) {\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n outline.set([NaN, NaN, NaN, NaN, (lastTop[0] - layerX) / layerWidth, (lastTop[1] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (lastBottom[0] - layerX) / layerWidth, (lastBottom[1] - layerY) / layerHeight], pos);\n return pos += 24;\n }\n}\nclass FreeDrawOutline extends Outline {\n #box;\n #bbox = new Float32Array(4);\n #innerMargin;\n #isLTR;\n #points;\n #scaleFactor;\n #outline;\n constructor(outline, points, box, scaleFactor, innerMargin, isLTR) {\n super();\n this.#outline = outline;\n this.#points = points;\n this.#box = box;\n this.#scaleFactor = scaleFactor;\n this.#innerMargin = innerMargin;\n this.#isLTR = isLTR;\n this.firstPoint = [NaN, NaN];\n this.lastPoint = [NaN, NaN];\n this.#computeMinMax(isLTR);\n const [x, y, width, height] = this.#bbox;\n for (let i = 0, ii = outline.length; i < ii; i += 2) {\n outline[i] = (outline[i] - x) / width;\n outline[i + 1] = (outline[i + 1] - y) / height;\n }\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = (points[i] - x) / width;\n points[i + 1] = (points[i + 1] - y) / height;\n }\n }\n toSVGPath() {\n const buffer = [`M${this.#outline[4]} ${this.#outline[5]}`];\n for (let i = 6, ii = this.#outline.length; i < ii; i += 6) {\n if (isNaN(this.#outline[i])) {\n buffer.push(`L${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n continue;\n }\n buffer.push(`C${this.#outline[i]} ${this.#outline[i + 1]} ${this.#outline[i + 2]} ${this.#outline[i + 3]} ${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n }\n buffer.push(\"Z\");\n return buffer.join(\" \");\n }\n serialize([blX, blY, trX, trY], rotation) {\n const width = trX - blX;\n const height = trY - blY;\n let outline;\n let points;\n switch (rotation) {\n case 0:\n outline = Outline._rescale(this.#outline, blX, trY, width, -height);\n points = Outline._rescale(this.#points, blX, trY, width, -height);\n break;\n case 90:\n outline = Outline._rescaleAndSwap(this.#outline, blX, blY, width, height);\n points = Outline._rescaleAndSwap(this.#points, blX, blY, width, height);\n break;\n case 180:\n outline = Outline._rescale(this.#outline, trX, blY, -width, height);\n points = Outline._rescale(this.#points, trX, blY, -width, height);\n break;\n case 270:\n outline = Outline._rescaleAndSwap(this.#outline, trX, trY, -width, -height);\n points = Outline._rescaleAndSwap(this.#points, trX, trY, -width, -height);\n break;\n }\n return {\n outline: Array.from(outline),\n points: [Array.from(points)]\n };\n }\n #computeMinMax(isLTR) {\n const outline = this.#outline;\n let lastX = outline[4];\n let lastY = outline[5];\n const minMax = [lastX, lastY, lastX, lastY];\n let firstPointX = lastX;\n let firstPointY = lastY;\n let lastPointX = lastX;\n let lastPointY = lastY;\n const ltrCallback = isLTR ? Math.max : Math.min;\n const bezierBbox = new Float32Array(4);\n for (let i = 6, ii = outline.length; i < ii; i += 6) {\n const x = outline[i + 4], y = outline[i + 5];\n if (isNaN(outline[i])) {\n Util.pointBoundingBox(x, y, minMax);\n if (firstPointY > y) {\n firstPointX = x;\n firstPointY = y;\n } else if (firstPointY === y) {\n firstPointX = ltrCallback(firstPointX, x);\n }\n if (lastPointY < y) {\n lastPointX = x;\n lastPointY = y;\n } else if (lastPointY === y) {\n lastPointX = ltrCallback(lastPointX, x);\n }\n } else {\n bezierBbox[0] = bezierBbox[1] = Infinity;\n bezierBbox[2] = bezierBbox[3] = -Infinity;\n Util.bezierBoundingBox(lastX, lastY, ...outline.slice(i, i + 6), bezierBbox);\n Util.rectBoundingBox(bezierBbox[0], bezierBbox[1], bezierBbox[2], bezierBbox[3], minMax);\n if (firstPointY > bezierBbox[1]) {\n firstPointX = bezierBbox[0];\n firstPointY = bezierBbox[1];\n } else if (firstPointY === bezierBbox[1]) {\n firstPointX = ltrCallback(firstPointX, bezierBbox[0]);\n }\n if (lastPointY < bezierBbox[3]) {\n lastPointX = bezierBbox[2];\n lastPointY = bezierBbox[3];\n } else if (lastPointY === bezierBbox[3]) {\n lastPointX = ltrCallback(lastPointX, bezierBbox[2]);\n }\n }\n lastX = x;\n lastY = y;\n }\n const bbox = this.#bbox;\n bbox[0] = minMax[0] - this.#innerMargin;\n bbox[1] = minMax[1] - this.#innerMargin;\n bbox[2] = minMax[2] - minMax[0] + 2 * this.#innerMargin;\n bbox[3] = minMax[3] - minMax[1] + 2 * this.#innerMargin;\n this.firstPoint = [firstPointX, firstPointY];\n this.lastPoint = [lastPointX, lastPointY];\n }\n get box() {\n return this.#bbox;\n }\n newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n return new FreeDrawOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin);\n }\n getNewOutline(thickness, innerMargin) {\n const [x, y, width, height] = this.#bbox;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const sx = width * layerWidth;\n const sy = height * layerHeight;\n const tx = x * layerWidth + layerX;\n const ty = y * layerHeight + layerY;\n const outliner = this.newOutliner({\n x: this.#points[0] * sx + tx,\n y: this.#points[1] * sy + ty\n }, this.#box, this.#scaleFactor, thickness, this.#isLTR, innerMargin ?? this.#innerMargin);\n for (let i = 2; i < this.#points.length; i += 2) {\n outliner.add({\n x: this.#points[i] * sx + tx,\n y: this.#points[i + 1] * sy + ty\n });\n }\n return outliner.getOutlines();\n }\n}\nclass HighlightOutliner {\n #box;\n #firstPoint;\n #lastPoint;\n #verticalEdges = [];\n #intervals = [];\n constructor(boxes, borderWidth = 0, innerMargin = 0, isLTR = true) {\n const minMax = [Infinity, Infinity, -Infinity, -Infinity];\n const EPSILON = 10 ** -4;\n for (const {\n x,\n y,\n width,\n height\n } of boxes) {\n const x1 = Math.floor((x - borderWidth) / EPSILON) * EPSILON;\n const x2 = Math.ceil((x + width + borderWidth) / EPSILON) * EPSILON;\n const y1 = Math.floor((y - borderWidth) / EPSILON) * EPSILON;\n const y2 = Math.ceil((y + height + borderWidth) / EPSILON) * EPSILON;\n const left = [x1, y1, y2, true];\n const right = [x2, y1, y2, false];\n this.#verticalEdges.push(left, right);\n Util.rectBoundingBox(x1, y1, x2, y2, minMax);\n }\n const bboxWidth = minMax[2] - minMax[0] + 2 * innerMargin;\n const bboxHeight = minMax[3] - minMax[1] + 2 * innerMargin;\n const shiftedMinX = minMax[0] - innerMargin;\n const shiftedMinY = minMax[1] - innerMargin;\n let firstPointX = isLTR ? -Infinity : Infinity;\n let firstPointY = Infinity;\n const lastEdge = this.#verticalEdges.at(isLTR ? -1 : -2);\n const lastPoint = [lastEdge[0], lastEdge[2]];\n for (const edge of this.#verticalEdges) {\n const [x, y1, y2, left] = edge;\n if (!left && isLTR) {\n if (y1 < firstPointY) {\n firstPointY = y1;\n firstPointX = x;\n } else if (y1 === firstPointY) {\n firstPointX = Math.max(firstPointX, x);\n }\n } else if (left && !isLTR) {\n if (y1 < firstPointY) {\n firstPointY = y1;\n firstPointX = x;\n } else if (y1 === firstPointY) {\n firstPointX = Math.min(firstPointX, x);\n }\n }\n edge[0] = (x - shiftedMinX) / bboxWidth;\n edge[1] = (y1 - shiftedMinY) / bboxHeight;\n edge[2] = (y2 - shiftedMinY) / bboxHeight;\n }\n this.#box = new Float32Array([shiftedMinX, shiftedMinY, bboxWidth, bboxHeight]);\n this.#firstPoint = [firstPointX, firstPointY];\n this.#lastPoint = lastPoint;\n }\n getOutlines() {\n this.#verticalEdges.sort((a, b) => a[0] - b[0] || a[1] - b[1] || a[2] - b[2]);\n const outlineVerticalEdges = [];\n for (const edge of this.#verticalEdges) {\n if (edge[3]) {\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n this.#insert(edge);\n } else {\n this.#remove(edge);\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n }\n }\n return this.#getOutlines(outlineVerticalEdges);\n }\n #getOutlines(outlineVerticalEdges) {\n const edges = [];\n const allEdges = /* @__PURE__ */ new Set();\n for (const edge of outlineVerticalEdges) {\n const [x, y1, y2] = edge;\n edges.push([x, y1, edge], [x, y2, edge]);\n }\n edges.sort((a, b) => a[1] - b[1] || a[0] - b[0]);\n for (let i = 0, ii = edges.length; i < ii; i += 2) {\n const edge1 = edges[i][2];\n const edge2 = edges[i + 1][2];\n edge1.push(edge2);\n edge2.push(edge1);\n allEdges.add(edge1);\n allEdges.add(edge2);\n }\n const outlines = [];\n let outline;\n while (allEdges.size > 0) {\n const edge = allEdges.values().next().value;\n let [x, y1, y2, edge1, edge2] = edge;\n allEdges.delete(edge);\n let lastPointX = x;\n let lastPointY = y1;\n outline = [x, y2];\n outlines.push(outline);\n while (true) {\n let e;\n if (allEdges.has(edge1)) {\n e = edge1;\n } else if (allEdges.has(edge2)) {\n e = edge2;\n } else {\n break;\n }\n allEdges.delete(e);\n [x, y1, y2, edge1, edge2] = e;\n if (lastPointX !== x) {\n outline.push(lastPointX, lastPointY, x, lastPointY === y1 ? y1 : y2);\n lastPointX = x;\n }\n lastPointY = lastPointY === y1 ? y2 : y1;\n }\n outline.push(lastPointX, lastPointY);\n }\n return new HighlightOutline(outlines, this.#box, this.#firstPoint, this.#lastPoint);\n }\n #binarySearch(y) {\n const array = this.#intervals;\n let start = 0;\n let end = array.length - 1;\n while (start <= end) {\n const middle = start + end >> 1;\n const y1 = array[middle][0];\n if (y1 === y) {\n return middle;\n }\n if (y1 < y) {\n start = middle + 1;\n } else {\n end = middle - 1;\n }\n }\n return end + 1;\n }\n #insert([, y1, y2]) {\n const index = this.#binarySearch(y1);\n this.#intervals.splice(index, 0, [y1, y2]);\n }\n #remove([, y1, y2]) {\n const index = this.#binarySearch(y1);\n for (let i = index; i < this.#intervals.length; i++) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n for (let i = index - 1; i >= 0; i--) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n }\n #breakEdge(edge) {\n const [x, y1, y2] = edge;\n const results = [[x, y1, y2]];\n const index = this.#binarySearch(y2);\n for (let i = 0; i < index; i++) {\n const [start, end] = this.#intervals[i];\n for (let j = 0, jj = results.length; j < jj; j++) {\n const [, y3, y4] = results[j];\n if (end <= y3 || y4 <= start) {\n continue;\n }\n if (y3 >= start) {\n if (y4 > end) {\n results[j][1] = end;\n } else {\n if (jj === 1) {\n return [];\n }\n results.splice(j, 1);\n j--;\n jj--;\n }\n continue;\n }\n results[j][2] = start;\n if (y4 > end) {\n results.push([x, end, y4]);\n }\n }\n }\n return results;\n }\n}\nclass HighlightOutline extends Outline {\n #box;\n #outlines;\n constructor(outlines, box, firstPoint, lastPoint) {\n super();\n this.#outlines = outlines;\n this.#box = box;\n this.firstPoint = firstPoint;\n this.lastPoint = lastPoint;\n }\n toSVGPath() {\n const buffer = [];\n for (const polygon of this.#outlines) {\n let [prevX, prevY] = polygon;\n buffer.push(`M${prevX} ${prevY}`);\n for (let i = 2; i < polygon.length; i += 2) {\n const x = polygon[i];\n const y = polygon[i + 1];\n if (x === prevX) {\n buffer.push(`V${y}`);\n prevY = y;\n } else if (y === prevY) {\n buffer.push(`H${x}`);\n prevX = x;\n }\n }\n buffer.push(\"Z\");\n }\n return buffer.join(\" \");\n }\n serialize([blX, blY, trX, trY], _rotation) {\n const outlines = [];\n const width = trX - blX;\n const height = trY - blY;\n for (const outline of this.#outlines) {\n const points = new Array(outline.length);\n for (let i = 0; i < outline.length; i += 2) {\n points[i] = blX + outline[i] * width;\n points[i + 1] = trY - outline[i + 1] * height;\n }\n outlines.push(points);\n }\n return outlines;\n }\n get box() {\n return this.#box;\n }\n get classNamesForOutlining() {\n return [\"highlightOutline\"];\n }\n}\nclass FreeHighlightOutliner extends FreeDrawOutliner {\n newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n return new FreeHighlightOutline(outline, points, box, scaleFactor, innerMargin, isLTR);\n }\n}\nclass FreeHighlightOutline extends FreeDrawOutline {\n newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n return new FreeHighlightOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin);\n }\n}\nclass HighlightEditor extends AnnotationEditor {\n #anchorNode = null;\n #anchorOffset = 0;\n #boxes;\n #clipPathId = null;\n #colorPicker = null;\n #focusOutlines = null;\n #focusNode = null;\n #focusOffset = 0;\n #highlightDiv = null;\n #highlightOutlines = null;\n #id = null;\n #isFreeHighlight = false;\n #firstPoint = null;\n #lastPoint = null;\n #outlineId = null;\n #text = \"\";\n #thickness;\n #methodOfCreation = \"\";\n static _defaultColor = null;\n static _defaultOpacity = 1;\n static _defaultThickness = 12;\n static _type = \"highlight\";\n static _editorType = AnnotationEditorType.HIGHLIGHT;\n static _freeHighlightId = -1;\n static _freeHighlight = null;\n static _freeHighlightClipId = \"\";\n static get _keyboardManager() {\n const proto = HighlightEditor.prototype;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._moveCaret, {\n args: [0]\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._moveCaret, {\n args: [1]\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._moveCaret, {\n args: [2]\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._moveCaret, {\n args: [3]\n }]]));\n }\n constructor(params) {\n super({\n ...params,\n name: \"highlightEditor\"\n });\n this.color = params.color || HighlightEditor._defaultColor;\n this.#thickness = params.thickness || HighlightEditor._defaultThickness;\n this.opacity = params.opacity || HighlightEditor._defaultOpacity;\n this.#boxes = params.boxes || null;\n this.#methodOfCreation = params.methodOfCreation || \"\";\n this.#text = params.text || \"\";\n this._isDraggable = false;\n this.defaultL10nId = \"pdfjs-editor-highlight-editor\";\n if (params.highlightId > -1) {\n this.#isFreeHighlight = true;\n this.#createFreeOutlines(params);\n this.#addToDrawLayer();\n } else if (this.#boxes) {\n this.#anchorNode = params.anchorNode;\n this.#anchorOffset = params.anchorOffset;\n this.#focusNode = params.focusNode;\n this.#focusOffset = params.focusOffset;\n this.#createOutlines();\n this.#addToDrawLayer();\n this.rotate(this.rotation);\n }\n if (!this.annotationElementId) {\n this._uiManager.a11yAlert(\"pdfjs-editor-highlight-added-alert\");\n }\n }\n get telemetryInitialData() {\n return {\n action: \"added\",\n type: this.#isFreeHighlight ? \"free_highlight\" : \"highlight\",\n color: this._uiManager.getNonHCMColorName(this.color),\n thickness: this.#thickness,\n methodOfCreation: this.#methodOfCreation\n };\n }\n get telemetryFinalData() {\n return {\n type: \"highlight\",\n color: this._uiManager.getNonHCMColorName(this.color)\n };\n }\n static computeTelemetryFinalData(data) {\n return {\n numberOfColors: data.get(\"color\").size\n };\n }\n #createOutlines() {\n const outliner = new HighlightOutliner(this.#boxes, 1e-3);\n this.#highlightOutlines = outliner.getOutlines();\n [this.x, this.y, this.width, this.height] = this.#highlightOutlines.box;\n const outlinerForOutline = new HighlightOutliner(this.#boxes, 25e-4, 1e-3, this._uiManager.direction === \"ltr\");\n this.#focusOutlines = outlinerForOutline.getOutlines();\n const {\n firstPoint\n } = this.#highlightOutlines;\n this.#firstPoint = [(firstPoint[0] - this.x) / this.width, (firstPoint[1] - this.y) / this.height];\n const {\n lastPoint\n } = this.#focusOutlines;\n this.#lastPoint = [(lastPoint[0] - this.x) / this.width, (lastPoint[1] - this.y) / this.height];\n }\n #createFreeOutlines({\n highlightOutlines,\n highlightId,\n clipPathId\n }) {\n this.#highlightOutlines = highlightOutlines;\n const extraThickness = 1.5;\n this.#focusOutlines = highlightOutlines.getNewOutline(this.#thickness / 2 + extraThickness, 25e-4);\n if (highlightId >= 0) {\n this.#id = highlightId;\n this.#clipPathId = clipPathId;\n this.parent.drawLayer.finalizeDraw(highlightId, {\n bbox: highlightOutlines.box,\n path: {\n d: highlightOutlines.toSVGPath()\n }\n });\n this.#outlineId = this.parent.drawLayer.drawOutline({\n rootClass: {\n highlightOutline: true,\n free: true\n },\n bbox: this.#focusOutlines.box,\n path: {\n d: this.#focusOutlines.toSVGPath()\n }\n }, true);\n } else if (this.parent) {\n const angle = this.parent.viewport.rotation;\n this.parent.drawLayer.updateProperties(this.#id, {\n bbox: HighlightEditor.#rotateBbox(this.#highlightOutlines.box, (angle - this.rotation + 360) % 360),\n path: {\n d: highlightOutlines.toSVGPath()\n }\n });\n this.parent.drawLayer.updateProperties(this.#outlineId, {\n bbox: HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle),\n path: {\n d: this.#focusOutlines.toSVGPath()\n }\n });\n }\n const [x, y, width, height] = highlightOutlines.box;\n switch (this.rotation) {\n case 0:\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n break;\n case 90: {\n const [pageWidth, pageHeight] = this.parentDimensions;\n this.x = y;\n this.y = 1 - x;\n this.width = width * pageHeight / pageWidth;\n this.height = height * pageWidth / pageHeight;\n break;\n }\n case 180:\n this.x = 1 - x;\n this.y = 1 - y;\n this.width = width;\n this.height = height;\n break;\n case 270: {\n const [pageWidth, pageHeight] = this.parentDimensions;\n this.x = 1 - y;\n this.y = x;\n this.width = width * pageHeight / pageWidth;\n this.height = height * pageWidth / pageHeight;\n break;\n }\n }\n const {\n firstPoint\n } = highlightOutlines;\n this.#firstPoint = [(firstPoint[0] - x) / width, (firstPoint[1] - y) / height];\n const {\n lastPoint\n } = this.#focusOutlines;\n this.#lastPoint = [(lastPoint[0] - x) / width, (lastPoint[1] - y) / height];\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n HighlightEditor._defaultColor ||= uiManager.highlightColors?.values().next().value || \"#fff066\";\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.HIGHLIGHT_COLOR:\n HighlightEditor._defaultColor = value;\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n HighlightEditor._defaultThickness = value;\n break;\n }\n }\n translateInPage(x, y) {\n }\n get toolbarPosition() {\n return this.#lastPoint;\n }\n get commentButtonPosition() {\n return this.#firstPoint;\n }\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.HIGHLIGHT_COLOR:\n this.#updateColor(value);\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n this.#updateThickness(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[AnnotationEditorParamsType.HIGHLIGHT_COLOR, HighlightEditor._defaultColor], [AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, HighlightEditor._defaultThickness]];\n }\n get propertiesToUpdate() {\n return [[AnnotationEditorParamsType.HIGHLIGHT_COLOR, this.color || HighlightEditor._defaultColor], [AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, this.#thickness || HighlightEditor._defaultThickness], [AnnotationEditorParamsType.HIGHLIGHT_FREE, this.#isFreeHighlight]];\n }\n onUpdatedColor() {\n this.parent?.drawLayer.updateProperties(this.#id, {\n root: {\n fill: this.color,\n \"fill-opacity\": this.opacity\n }\n });\n this.#colorPicker?.updateColor(this.color);\n super.onUpdatedColor();\n }\n #updateColor(color) {\n const setColorAndOpacity = (col, opa) => {\n this.color = col;\n this.opacity = opa;\n this.onUpdatedColor();\n };\n const savedColor = this.color;\n const savedOpacity = this.opacity;\n this.addCommands({\n cmd: setColorAndOpacity.bind(this, color, HighlightEditor._defaultOpacity),\n undo: setColorAndOpacity.bind(this, savedColor, savedOpacity),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n this._reportTelemetry({\n action: \"color_changed\",\n color: this._uiManager.getNonHCMColorName(color)\n }, true);\n }\n #updateThickness(thickness) {\n const savedThickness = this.#thickness;\n const setThickness = (th) => {\n this.#thickness = th;\n this.#changeThickness(th);\n };\n this.addCommands({\n cmd: setThickness.bind(this, thickness),\n undo: setThickness.bind(this, savedThickness),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.INK_THICKNESS,\n overwriteIfSameType: true,\n keepUndo: true\n });\n this._reportTelemetry({\n action: \"thickness_changed\",\n thickness\n }, true);\n }\n get toolbarButtons() {\n if (this._uiManager.highlightColors) {\n const colorPicker = this.#colorPicker = new ColorPicker({\n editor: this\n });\n return [[\"colorPicker\", colorPicker]];\n }\n return super.toolbarButtons;\n }\n disableEditing() {\n super.disableEditing();\n this.div.classList.toggle(\"disabled\", true);\n }\n enableEditing() {\n super.enableEditing();\n this.div.classList.toggle(\"disabled\", false);\n }\n fixAndSetPosition() {\n return super.fixAndSetPosition(this.#getRotation());\n }\n getBaseTranslation() {\n return [0, 0];\n }\n getRect(tx, ty) {\n return super.getRect(tx, ty, this.#getRotation());\n }\n onceAdded(focus) {\n if (!this.annotationElementId) {\n this.parent.addUndoableEditor(this);\n }\n if (focus) {\n this.div.focus();\n }\n }\n remove() {\n this.#cleanDrawLayer();\n this._reportTelemetry({\n action: \"deleted\"\n });\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n this.#addToDrawLayer();\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n setParent(parent) {\n let mustBeSelected = false;\n if (this.parent && !parent) {\n this.#cleanDrawLayer();\n } else if (parent) {\n this.#addToDrawLayer(parent);\n mustBeSelected = !this.parent && this.div?.classList.contains(\"selectedEditor\");\n }\n super.setParent(parent);\n this.show(this._isVisible);\n if (mustBeSelected) {\n this.select();\n }\n }\n #changeThickness(thickness) {\n if (!this.#isFreeHighlight) {\n return;\n }\n this.#createFreeOutlines({\n highlightOutlines: this.#highlightOutlines.getNewOutline(thickness / 2)\n });\n this.fixAndSetPosition();\n this.setDims(this.width, this.height);\n }\n #cleanDrawLayer() {\n if (this.#id === null || !this.parent) {\n return;\n }\n this.parent.drawLayer.remove(this.#id);\n this.#id = null;\n this.parent.drawLayer.remove(this.#outlineId);\n this.#outlineId = null;\n }\n #addToDrawLayer(parent = this.parent) {\n if (this.#id !== null) {\n return;\n }\n ({\n id: this.#id,\n clipPathId: this.#clipPathId\n } = parent.drawLayer.draw({\n bbox: this.#highlightOutlines.box,\n root: {\n viewBox: \"0 0 1 1\",\n fill: this.color,\n \"fill-opacity\": this.opacity\n },\n rootClass: {\n highlight: true,\n free: this.#isFreeHighlight\n },\n path: {\n d: this.#highlightOutlines.toSVGPath()\n }\n }, false, true));\n this.#outlineId = parent.drawLayer.drawOutline({\n rootClass: {\n highlightOutline: true,\n free: this.#isFreeHighlight\n },\n bbox: this.#focusOutlines.box,\n path: {\n d: this.#focusOutlines.toSVGPath()\n }\n }, this.#isFreeHighlight);\n if (this.#highlightDiv) {\n this.#highlightDiv.style.clipPath = this.#clipPathId;\n }\n }\n static #rotateBbox([x, y, width, height], angle) {\n switch (angle) {\n case 90:\n return [1 - y - height, x, height, width];\n case 180:\n return [1 - x - width, 1 - y - height, width, height];\n case 270:\n return [y, 1 - x - width, height, width];\n }\n return [x, y, width, height];\n }\n rotate(angle) {\n const {\n drawLayer\n } = this.parent;\n let box;\n if (this.#isFreeHighlight) {\n angle = (angle - this.rotation + 360) % 360;\n box = HighlightEditor.#rotateBbox(this.#highlightOutlines.box, angle);\n } else {\n box = HighlightEditor.#rotateBbox([this.x, this.y, this.width, this.height], angle);\n }\n drawLayer.updateProperties(this.#id, {\n bbox: box,\n root: {\n \"data-main-rotation\": angle\n }\n });\n drawLayer.updateProperties(this.#outlineId, {\n bbox: HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle),\n root: {\n \"data-main-rotation\": angle\n }\n });\n }\n render() {\n if (this.div) {\n return this.div;\n }\n const div = super.render();\n if (this.#text) {\n div.setAttribute(\"aria-label\", this.#text);\n div.setAttribute(\"role\", \"mark\");\n }\n if (this.#isFreeHighlight) {\n div.classList.add(\"free\");\n } else {\n this.div.addEventListener(\"keydown\", this.#keydown.bind(this), {\n signal: this._uiManager._signal\n });\n }\n const highlightDiv = this.#highlightDiv = document.createElement(\"div\");\n div.append(highlightDiv);\n highlightDiv.setAttribute(\"aria-hidden\", \"true\");\n highlightDiv.className = \"internal\";\n highlightDiv.style.clipPath = this.#clipPathId;\n this.setDims(this.width, this.height);\n bindEvents(this, this.#highlightDiv, [\"pointerover\", \"pointerleave\"]);\n this.enableEditing();\n return div;\n }\n pointerover() {\n if (!this.isSelected) {\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hovered: true\n }\n });\n }\n }\n pointerleave() {\n if (!this.isSelected) {\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hovered: false\n }\n });\n }\n }\n #keydown(event) {\n HighlightEditor._keyboardManager.exec(this, event);\n }\n _moveCaret(direction) {\n this.parent.unselect(this);\n switch (direction) {\n case 0:\n case 2:\n this.#setCaret(true);\n break;\n case 1:\n case 3:\n this.#setCaret(false);\n break;\n }\n }\n #setCaret(start) {\n if (!this.#anchorNode) {\n return;\n }\n const selection = window.getSelection();\n if (start) {\n selection.setPosition(this.#anchorNode, this.#anchorOffset);\n } else {\n selection.setPosition(this.#focusNode, this.#focusOffset);\n }\n }\n select() {\n super.select();\n if (!this.#outlineId) {\n return;\n }\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hovered: false,\n selected: true\n }\n });\n }\n unselect() {\n super.unselect();\n if (!this.#outlineId) {\n return;\n }\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n selected: false\n }\n });\n if (!this.#isFreeHighlight) {\n this.#setCaret(false);\n }\n }\n get _mustFixPosition() {\n return !this.#isFreeHighlight;\n }\n show(visible = this._isVisible) {\n super.show(visible);\n if (this.parent) {\n this.parent.drawLayer.updateProperties(this.#id, {\n rootClass: {\n hidden: !visible\n }\n });\n this.parent.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hidden: !visible\n }\n });\n }\n }\n #getRotation() {\n return this.#isFreeHighlight ? this.rotation : 0;\n }\n #serializeBoxes() {\n if (this.#isFreeHighlight) {\n return null;\n }\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const boxes = this.#boxes;\n const quadPoints = new Float32Array(boxes.length * 8);\n let i = 0;\n for (const {\n x,\n y,\n width,\n height\n } of boxes) {\n const sx = x * pageWidth + pageX;\n const sy = (1 - y) * pageHeight + pageY;\n quadPoints[i] = quadPoints[i + 4] = sx;\n quadPoints[i + 1] = quadPoints[i + 3] = sy;\n quadPoints[i + 2] = quadPoints[i + 6] = sx + width * pageWidth;\n quadPoints[i + 5] = quadPoints[i + 7] = sy - height * pageHeight;\n i += 8;\n }\n return quadPoints;\n }\n #serializeOutlines(rect) {\n return this.#highlightOutlines.serialize(rect, this.#getRotation());\n }\n static startHighlighting(parent, isLTR, {\n target: textLayer,\n x,\n y\n }) {\n const {\n x: layerX,\n y: layerY,\n width: parentWidth,\n height: parentHeight\n } = textLayer.getBoundingClientRect();\n const ac = new AbortController();\n const signal = parent.combinedSignal(ac);\n const pointerUpCallback = (e) => {\n ac.abort();\n this.#endHighlight(parent, e);\n };\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"pointerdown\", stopEvent, {\n capture: true,\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n textLayer.addEventListener(\"pointermove\", this.#highlightMove.bind(this, parent), {\n signal\n });\n this._freeHighlight = new FreeHighlightOutliner({\n x,\n y\n }, [layerX, layerY, parentWidth, parentHeight], parent.scale, this._defaultThickness / 2, isLTR, 1e-3);\n ({\n id: this._freeHighlightId,\n clipPathId: this._freeHighlightClipId\n } = parent.drawLayer.draw({\n bbox: [0, 0, 1, 1],\n root: {\n viewBox: \"0 0 1 1\",\n fill: this._defaultColor,\n \"fill-opacity\": this._defaultOpacity\n },\n rootClass: {\n highlight: true,\n free: true\n },\n path: {\n d: this._freeHighlight.toSVGPath()\n }\n }, true, true));\n }\n static #highlightMove(parent, event) {\n if (this._freeHighlight.add(event)) {\n parent.drawLayer.updateProperties(this._freeHighlightId, {\n path: {\n d: this._freeHighlight.toSVGPath()\n }\n });\n }\n }\n static #endHighlight(parent, event) {\n if (!this._freeHighlight.isEmpty()) {\n parent.createAndAddNewEditor(event, false, {\n highlightId: this._freeHighlightId,\n highlightOutlines: this._freeHighlight.getOutlines(),\n clipPathId: this._freeHighlightClipId,\n methodOfCreation: \"main_toolbar\"\n });\n } else {\n parent.drawLayer.remove(this._freeHighlightId);\n }\n this._freeHighlightId = -1;\n this._freeHighlight = null;\n this._freeHighlightClipId = \"\";\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof HighlightAnnotationElement) {\n const {\n data: {\n quadPoints: quadPoints2,\n rect,\n rotation,\n id,\n color: color2,\n opacity: opacity2,\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color: Array.from(color2),\n opacity: opacity2,\n quadPoints: quadPoints2,\n boxes: null,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n popupRef,\n richText,\n comment: contentsObj?.str || null,\n creationDate,\n modificationDate\n };\n } else if (data instanceof InkAnnotationElement) {\n const {\n data: {\n inkLists: inkLists2,\n rect,\n rotation,\n id,\n color: color2,\n borderStyle: {\n rawWidth: thickness\n },\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color: Array.from(color2),\n thickness,\n inkLists: inkLists2,\n boxes: null,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n popupRef,\n richText,\n comment: contentsObj?.str || null,\n creationDate,\n modificationDate\n };\n }\n const {\n color,\n quadPoints,\n inkLists,\n opacity\n } = data;\n const editor = await super.deserialize(data, parent, uiManager);\n editor.color = Util.makeHexColor(...color);\n editor.opacity = opacity || 1;\n if (inkLists) {\n editor.#thickness = data.thickness;\n }\n editor._initialData = initialData;\n if (data.comment) {\n editor.setCommentData(data);\n }\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [pageX, pageY] = editor.pageTranslation;\n if (quadPoints) {\n const boxes = editor.#boxes = [];\n for (let i = 0; i < quadPoints.length; i += 8) {\n boxes.push({\n x: (quadPoints[i] - pageX) / pageWidth,\n y: 1 - (quadPoints[i + 1] - pageY) / pageHeight,\n width: (quadPoints[i + 2] - quadPoints[i]) / pageWidth,\n height: (quadPoints[i + 1] - quadPoints[i + 5]) / pageHeight\n });\n }\n editor.#createOutlines();\n editor.#addToDrawLayer();\n editor.rotate(editor.rotation);\n } else if (inkLists) {\n editor.#isFreeHighlight = true;\n const points = inkLists[0];\n const point = {\n x: points[0] - pageX,\n y: pageHeight - (points[1] - pageY)\n };\n const outliner = new FreeHighlightOutliner(point, [0, 0, pageWidth, pageHeight], 1, editor.#thickness / 2, true, 1e-3);\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n point.x = points[i] - pageX;\n point.y = pageHeight - (points[i + 1] - pageY);\n outliner.add(point);\n }\n const {\n id,\n clipPathId\n } = parent.drawLayer.draw({\n bbox: [0, 0, 1, 1],\n root: {\n viewBox: \"0 0 1 1\",\n fill: editor.color,\n \"fill-opacity\": editor._defaultOpacity\n },\n rootClass: {\n highlight: true,\n free: true\n },\n path: {\n d: outliner.toSVGPath()\n }\n }, true, true);\n editor.#createFreeOutlines({\n highlightOutlines: outliner.getOutlines(),\n highlightId: id,\n clipPathId\n });\n editor.#addToDrawLayer();\n editor.rotate(editor.parentRotation);\n }\n return editor;\n }\n serialize(isForCopying = false) {\n if (this.isEmpty() || isForCopying) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const color = AnnotationEditor._colorManager.convert(this._uiManager.getNonHCMColor(this.color));\n const serialized = super.serialize(isForCopying);\n Object.assign(serialized, {\n color,\n opacity: this.opacity,\n thickness: this.#thickness,\n quadPoints: this.#serializeBoxes(),\n outlines: this.#serializeOutlines(serialized.rect)\n });\n this.addComment(serialized);\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n color\n } = this._initialData;\n return this.hasEditedComment || serialized.color.some((c, i) => c !== color[i]);\n }\n renderAnnotationElement(annotation) {\n if (this.deleted) {\n annotation.hide();\n return null;\n }\n annotation.updateEdited({\n rect: this.getPDFRect(),\n popup: this.comment\n });\n return null;\n }\n static canCreateNewEmptyEditor() {\n return false;\n }\n}\nclass DrawingOptions {\n #svgProperties = /* @__PURE__ */ Object.create(null);\n updateProperty(name, value) {\n this[name] = value;\n this.updateSVGProperty(name, value);\n }\n updateProperties(properties) {\n if (!properties) {\n return;\n }\n for (const [name, value] of Object.entries(properties)) {\n if (!name.startsWith(\"_\")) {\n this.updateProperty(name, value);\n }\n }\n }\n updateSVGProperty(name, value) {\n this.#svgProperties[name] = value;\n }\n toSVGProperties() {\n const root = this.#svgProperties;\n this.#svgProperties = /* @__PURE__ */ Object.create(null);\n return {\n root\n };\n }\n reset() {\n this.#svgProperties = /* @__PURE__ */ Object.create(null);\n }\n updateAll(options = this) {\n this.updateProperties(options);\n }\n clone() {\n unreachable(\"Not implemented\");\n }\n}\nclass DrawingEditor extends AnnotationEditor {\n #drawOutlines = null;\n #mustBeCommitted;\n _colorPicker = null;\n _drawId = null;\n static _currentDrawId = -1;\n static _currentParent = null;\n static #currentDraw = null;\n static #currentDrawingAC = null;\n static #currentDrawingOptions = null;\n static #currentPointerId = NaN;\n static #currentPointerType = null;\n static #currentPointerIds = null;\n static #currentMoveTimestamp = NaN;\n static _INNER_MARGIN = 3;\n constructor(params) {\n super(params);\n this.#mustBeCommitted = params.mustBeCommitted || false;\n this._addOutlines(params);\n }\n onUpdatedColor() {\n this._colorPicker?.update(this.color);\n super.onUpdatedColor();\n }\n _addOutlines(params) {\n if (params.drawOutlines) {\n this.#createDrawOutlines(params);\n this.#addToDrawLayer();\n }\n }\n #createDrawOutlines({\n drawOutlines,\n drawId,\n drawingOptions\n }) {\n this.#drawOutlines = drawOutlines;\n this._drawingOptions ||= drawingOptions;\n if (!this.annotationElementId) {\n this._uiManager.a11yAlert(`pdfjs-editor-${this.editorType}-added-alert`);\n }\n if (drawId >= 0) {\n this._drawId = drawId;\n this.parent.drawLayer.finalizeDraw(drawId, drawOutlines.defaultProperties);\n } else {\n this._drawId = this.#createDrawing(drawOutlines, this.parent);\n }\n this.#updateBbox(drawOutlines.box);\n }\n #createDrawing(drawOutlines, parent) {\n const {\n id\n } = parent.drawLayer.draw(DrawingEditor._mergeSVGProperties(this._drawingOptions.toSVGProperties(), drawOutlines.defaultSVGProperties), false, false);\n return id;\n }\n static _mergeSVGProperties(p1, p2) {\n const p1Keys = new Set(Object.keys(p1));\n for (const [key, value] of Object.entries(p2)) {\n if (p1Keys.has(key)) {\n Object.assign(p1[key], value);\n } else {\n p1[key] = value;\n }\n }\n return p1;\n }\n static getDefaultDrawingOptions(_options) {\n unreachable(\"Not implemented\");\n }\n static get typesMap() {\n unreachable(\"Not implemented\");\n }\n static get isDrawer() {\n return true;\n }\n static get supportMultipleDrawings() {\n return false;\n }\n static updateDefaultParams(type, value) {\n const propertyName = this.typesMap.get(type);\n if (propertyName) {\n this._defaultDrawingOptions.updateProperty(propertyName, value);\n }\n if (this._currentParent) {\n DrawingEditor.#currentDraw.updateProperty(propertyName, value);\n this._currentParent.drawLayer.updateProperties(this._currentDrawId, this._defaultDrawingOptions.toSVGProperties());\n }\n }\n updateParams(type, value) {\n const propertyName = this.constructor.typesMap.get(type);\n if (propertyName) {\n this._updateProperty(type, propertyName, value);\n }\n }\n static get defaultPropertiesToUpdate() {\n const properties = [];\n const options = this._defaultDrawingOptions;\n for (const [type, name] of this.typesMap) {\n properties.push([type, options[name]]);\n }\n return properties;\n }\n get propertiesToUpdate() {\n const properties = [];\n const {\n _drawingOptions\n } = this;\n for (const [type, name] of this.constructor.typesMap) {\n properties.push([type, _drawingOptions[name]]);\n }\n return properties;\n }\n _updateProperty(type, name, value) {\n const options = this._drawingOptions;\n const savedValue = options[name];\n const setter = (val) => {\n options.updateProperty(name, val);\n const bbox = this.#drawOutlines.updateProperty(name, val);\n if (bbox) {\n this.#updateBbox(bbox);\n }\n this.parent?.drawLayer.updateProperties(this._drawId, options.toSVGProperties());\n if (type === this.colorType) {\n this.onUpdatedColor();\n }\n };\n this.addCommands({\n cmd: setter.bind(this, value),\n undo: setter.bind(this, savedValue),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n _onResizing() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathResizingSVGProperties(this.#convertToDrawSpace()), {\n bbox: this.#rotateBox()\n }));\n }\n _onResized() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathResizedSVGProperties(this.#convertToDrawSpace()), {\n bbox: this.#rotateBox()\n }));\n }\n _onTranslating(_x, _y) {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n bbox: this.#rotateBox()\n });\n }\n _onTranslated() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathTranslatedSVGProperties(this.#convertToDrawSpace(), this.parentDimensions), {\n bbox: this.#rotateBox()\n }));\n }\n _onStartDragging() {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n rootClass: {\n moving: true\n }\n });\n }\n _onStopDragging() {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n rootClass: {\n moving: false\n }\n });\n }\n commit() {\n super.commit();\n this.disableEditMode();\n this.disableEditing();\n }\n disableEditing() {\n super.disableEditing();\n this.div.classList.toggle(\"disabled\", true);\n }\n enableEditing() {\n super.enableEditing();\n this.div.classList.toggle(\"disabled\", false);\n }\n getBaseTranslation() {\n return [0, 0];\n }\n get isResizable() {\n return true;\n }\n onceAdded(focus) {\n if (!this.annotationElementId) {\n this.parent.addUndoableEditor(this);\n }\n this._isDraggable = true;\n if (this.#mustBeCommitted) {\n this.#mustBeCommitted = false;\n this.commit();\n this.parent.setSelected(this);\n if (focus && this.isOnScreen) {\n this.div.focus();\n }\n }\n }\n remove() {\n this.#cleanDrawLayer();\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n this.#addToDrawLayer();\n this.#updateBbox(this.#drawOutlines.box);\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n setParent(parent) {\n let mustBeSelected = false;\n if (this.parent && !parent) {\n this._uiManager.removeShouldRescale(this);\n this.#cleanDrawLayer();\n } else if (parent) {\n this._uiManager.addShouldRescale(this);\n this.#addToDrawLayer(parent);\n mustBeSelected = !this.parent && this.div?.classList.contains(\"selectedEditor\");\n }\n super.setParent(parent);\n if (mustBeSelected) {\n this.select();\n }\n }\n #cleanDrawLayer() {\n if (this._drawId === null || !this.parent) {\n return;\n }\n this.parent.drawLayer.remove(this._drawId);\n this._drawId = null;\n this._drawingOptions.reset();\n }\n #addToDrawLayer(parent = this.parent) {\n if (this._drawId !== null && this.parent === parent) {\n return;\n }\n if (this._drawId !== null) {\n this.parent.drawLayer.updateParent(this._drawId, parent.drawLayer);\n return;\n }\n this._drawingOptions.updateAll();\n this._drawId = this.#createDrawing(this.#drawOutlines, parent);\n }\n #convertToParentSpace([x, y, width, height]) {\n const {\n parentDimensions: [pW, pH],\n rotation\n } = this;\n switch (rotation) {\n case 90:\n return [y, 1 - x, width * (pH / pW), height * (pW / pH)];\n case 180:\n return [1 - x, 1 - y, width, height];\n case 270:\n return [1 - y, x, width * (pH / pW), height * (pW / pH)];\n default:\n return [x, y, width, height];\n }\n }\n #convertToDrawSpace() {\n const {\n x,\n y,\n width,\n height,\n parentDimensions: [pW, pH],\n rotation\n } = this;\n switch (rotation) {\n case 90:\n return [1 - y, x, width * (pW / pH), height * (pH / pW)];\n case 180:\n return [1 - x, 1 - y, width, height];\n case 270:\n return [y, 1 - x, width * (pW / pH), height * (pH / pW)];\n default:\n return [x, y, width, height];\n }\n }\n #updateBbox(bbox) {\n [this.x, this.y, this.width, this.height] = this.#convertToParentSpace(bbox);\n if (this.div) {\n this.fixAndSetPosition();\n this.setDims();\n }\n this._onResized();\n }\n #rotateBox() {\n const {\n x,\n y,\n width,\n height,\n rotation,\n parentRotation,\n parentDimensions: [pW, pH]\n } = this;\n switch ((rotation * 4 + parentRotation) / 90) {\n case 1:\n return [1 - y - height, x, height, width];\n case 2:\n return [1 - x - width, 1 - y - height, width, height];\n case 3:\n return [y, 1 - x - width, height, width];\n case 4:\n return [x, y - width * (pW / pH), height * (pH / pW), width * (pW / pH)];\n case 5:\n return [1 - y, x, width * (pW / pH), height * (pH / pW)];\n case 6:\n return [1 - x - height * (pH / pW), 1 - y, height * (pH / pW), width * (pW / pH)];\n case 7:\n return [y - width * (pW / pH), 1 - x - height * (pH / pW), width * (pW / pH), height * (pH / pW)];\n case 8:\n return [x - width, y - height, width, height];\n case 9:\n return [1 - y, x - width, height, width];\n case 10:\n return [1 - x, 1 - y, width, height];\n case 11:\n return [y - height, 1 - x, height, width];\n case 12:\n return [x - height * (pH / pW), y, height * (pH / pW), width * (pW / pH)];\n case 13:\n return [1 - y - width * (pW / pH), x - height * (pH / pW), width * (pW / pH), height * (pH / pW)];\n case 14:\n return [1 - x, 1 - y - width * (pW / pH), height * (pH / pW), width * (pW / pH)];\n case 15:\n return [y, 1 - x, width * (pW / pH), height * (pH / pW)];\n default:\n return [x, y, width, height];\n }\n }\n rotate() {\n if (!this.parent) {\n return;\n }\n this.parent.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties({\n bbox: this.#rotateBox()\n }, this.#drawOutlines.updateRotation((this.parentRotation - this.rotation + 360) % 360)));\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\n this.#updateBbox(this.#drawOutlines.updateParentDimensions(this.parentDimensions, this.parent.scale));\n }\n static onScaleChangingWhenDrawing() {\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this._isCopy) {\n baseX = this.x;\n baseY = this.y;\n }\n const div = super.render();\n div.classList.add(\"draw\");\n const drawDiv = document.createElement(\"div\");\n div.append(drawDiv);\n drawDiv.setAttribute(\"aria-hidden\", \"true\");\n drawDiv.className = \"internal\";\n this.setDims();\n this._uiManager.addShouldRescale(this);\n this.disableEditing();\n if (this._isCopy) {\n this._moveAfterPaste(baseX, baseY);\n }\n return div;\n }\n static createDrawerInstance(_x, _y, _parentWidth, _parentHeight, _rotation) {\n unreachable(\"Not implemented\");\n }\n static startDrawing(parent, uiManager, _isLTR, event) {\n const {\n target,\n offsetX: x,\n offsetY: y,\n pointerId,\n pointerType\n } = event;\n if (DrawingEditor.#currentPointerType && DrawingEditor.#currentPointerType !== pointerType) {\n return;\n }\n const {\n viewport: {\n rotation\n }\n } = parent;\n const {\n width: parentWidth,\n height: parentHeight\n } = target.getBoundingClientRect();\n const ac = DrawingEditor.#currentDrawingAC = new AbortController();\n const signal = parent.combinedSignal(ac);\n DrawingEditor.#currentPointerId ||= pointerId;\n DrawingEditor.#currentPointerType ??= pointerType;\n window.addEventListener(\"pointerup\", (e) => {\n if (DrawingEditor.#currentPointerId === e.pointerId) {\n this._endDraw(e);\n } else {\n DrawingEditor.#currentPointerIds?.delete(e.pointerId);\n }\n }, {\n signal\n });\n window.addEventListener(\"pointercancel\", (e) => {\n if (DrawingEditor.#currentPointerId === e.pointerId) {\n this._currentParent.endDrawingSession();\n } else {\n DrawingEditor.#currentPointerIds?.delete(e.pointerId);\n }\n }, {\n signal\n });\n window.addEventListener(\"pointerdown\", (e) => {\n if (DrawingEditor.#currentPointerType !== e.pointerType) {\n return;\n }\n (DrawingEditor.#currentPointerIds ||= /* @__PURE__ */ new Set()).add(e.pointerId);\n if (DrawingEditor.#currentDraw.isCancellable()) {\n DrawingEditor.#currentDraw.removeLastElement();\n if (DrawingEditor.#currentDraw.isEmpty()) {\n this._currentParent.endDrawingSession(true);\n } else {\n this._endDraw(null);\n }\n }\n }, {\n capture: true,\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n target.addEventListener(\"pointermove\", this._drawMove.bind(this), {\n signal\n });\n target.addEventListener(\"touchmove\", (e) => {\n if (e.timeStamp === DrawingEditor.#currentMoveTimestamp) {\n stopEvent(e);\n }\n }, {\n signal\n });\n parent.toggleDrawing();\n uiManager._editorUndoBar?.hide();\n if (DrawingEditor.#currentDraw) {\n parent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.startNew(x, y, parentWidth, parentHeight, rotation));\n return;\n }\n uiManager.updateUIForDefaultProperties(this);\n DrawingEditor.#currentDraw = this.createDrawerInstance(x, y, parentWidth, parentHeight, rotation);\n DrawingEditor.#currentDrawingOptions = this.getDefaultDrawingOptions();\n this._currentParent = parent;\n ({\n id: this._currentDrawId\n } = parent.drawLayer.draw(this._mergeSVGProperties(DrawingEditor.#currentDrawingOptions.toSVGProperties(), DrawingEditor.#currentDraw.defaultSVGProperties), true, false));\n }\n static _drawMove(event) {\n DrawingEditor.#currentMoveTimestamp = -1;\n if (!DrawingEditor.#currentDraw) {\n return;\n }\n const {\n offsetX,\n offsetY,\n pointerId\n } = event;\n if (DrawingEditor.#currentPointerId !== pointerId) {\n return;\n }\n if (DrawingEditor.#currentPointerIds?.size >= 1) {\n this._endDraw(event);\n return;\n }\n this._currentParent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.add(offsetX, offsetY));\n DrawingEditor.#currentMoveTimestamp = event.timeStamp;\n stopEvent(event);\n }\n static _cleanup(all) {\n if (all) {\n this._currentDrawId = -1;\n this._currentParent = null;\n DrawingEditor.#currentDraw = null;\n DrawingEditor.#currentDrawingOptions = null;\n DrawingEditor.#currentPointerType = null;\n DrawingEditor.#currentMoveTimestamp = NaN;\n }\n if (DrawingEditor.#currentDrawingAC) {\n DrawingEditor.#currentDrawingAC.abort();\n DrawingEditor.#currentDrawingAC = null;\n DrawingEditor.#currentPointerId = NaN;\n DrawingEditor.#currentPointerIds = null;\n }\n }\n static _endDraw(event) {\n const parent = this._currentParent;\n if (!parent) {\n return;\n }\n parent.toggleDrawing(true);\n this._cleanup(false);\n if (event?.target === parent.div) {\n parent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.end(event.offsetX, event.offsetY));\n }\n if (this.supportMultipleDrawings) {\n const draw = DrawingEditor.#currentDraw;\n const drawId = this._currentDrawId;\n const lastElement = draw.getLastElement();\n parent.addCommands({\n cmd: () => {\n parent.drawLayer.updateProperties(drawId, draw.setLastElement(lastElement));\n },\n undo: () => {\n parent.drawLayer.updateProperties(drawId, draw.removeLastElement());\n },\n mustExec: false,\n type: AnnotationEditorParamsType.DRAW_STEP\n });\n return;\n }\n this.endDrawing(false);\n }\n static endDrawing(isAborted) {\n const parent = this._currentParent;\n if (!parent) {\n return null;\n }\n parent.toggleDrawing(true);\n parent.cleanUndoStack(AnnotationEditorParamsType.DRAW_STEP);\n if (!DrawingEditor.#currentDraw.isEmpty()) {\n const {\n pageDimensions: [pageWidth, pageHeight],\n scale\n } = parent;\n const editor = parent.createAndAddNewEditor({\n offsetX: 0,\n offsetY: 0\n }, false, {\n drawId: this._currentDrawId,\n drawOutlines: DrawingEditor.#currentDraw.getOutlines(pageWidth * scale, pageHeight * scale, scale, this._INNER_MARGIN),\n drawingOptions: DrawingEditor.#currentDrawingOptions,\n mustBeCommitted: !isAborted\n });\n this._cleanup(true);\n return editor;\n }\n parent.drawLayer.remove(this._currentDrawId);\n this._cleanup(true);\n return null;\n }\n createDrawingOptions(_data) {\n }\n static deserializeDraw(_pageX, _pageY, _pageWidth, _pageHeight, _innerWidth, _data) {\n unreachable(\"Not implemented\");\n }\n static async deserialize(data, parent, uiManager) {\n const {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n } = parent.viewport;\n const drawOutlines = this.deserializeDraw(pageX, pageY, pageWidth, pageHeight, this._INNER_MARGIN, data);\n const editor = await super.deserialize(data, parent, uiManager);\n editor.createDrawingOptions(data);\n editor.#createDrawOutlines({\n drawOutlines\n });\n editor.#addToDrawLayer();\n editor.onScaleChanging();\n editor.rotate();\n return editor;\n }\n serializeDraw(isForCopying) {\n const [pageX, pageY] = this.pageTranslation;\n const [pageWidth, pageHeight] = this.pageDimensions;\n return this.#drawOutlines.serialize([pageX, pageY, pageWidth, pageHeight], isForCopying);\n }\n renderAnnotationElement(annotation) {\n annotation.updateEdited({\n rect: this.getPDFRect()\n });\n return null;\n }\n static canCreateNewEmptyEditor() {\n return false;\n }\n}\nclass InkDrawOutliner {\n #last = new Float64Array(6);\n #line;\n #lines;\n #rotation;\n #thickness;\n #points;\n #lastSVGPath = \"\";\n #lastIndex = 0;\n #outlines = new InkDrawOutline();\n #parentWidth;\n #parentHeight;\n constructor(x, y, parentWidth, parentHeight, rotation, thickness) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#rotation = rotation;\n this.#thickness = thickness;\n [x, y] = this.#normalizePoint(x, y);\n const line = this.#line = [NaN, NaN, NaN, NaN, x, y];\n this.#points = [x, y];\n this.#lines = [{\n line,\n points: this.#points\n }];\n this.#last.set(line, 0);\n }\n updateProperty(name, value) {\n if (name === \"stroke-width\") {\n this.#thickness = value;\n }\n }\n #normalizePoint(x, y) {\n return Outline._normalizePoint(x, y, this.#parentWidth, this.#parentHeight, this.#rotation);\n }\n isEmpty() {\n return !this.#lines || this.#lines.length === 0;\n }\n isCancellable() {\n return this.#points.length <= 10;\n }\n add(x, y) {\n [x, y] = this.#normalizePoint(x, y);\n const [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n const diffX = x - x2;\n const diffY = y - y2;\n const d = Math.hypot(this.#parentWidth * diffX, this.#parentHeight * diffY);\n if (d <= 2) {\n return null;\n }\n this.#points.push(x, y);\n if (isNaN(x1)) {\n this.#last.set([x2, y2, x, y], 2);\n this.#line.push(NaN, NaN, NaN, NaN, x, y);\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n if (isNaN(this.#last[0])) {\n this.#line.splice(6, 6);\n }\n this.#last.set([x1, y1, x2, y2, x, y], 0);\n this.#line.push(...Outline.createBezierPoints(x1, y1, x2, y2, x, y));\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n end(x, y) {\n const change = this.add(x, y);\n if (change) {\n return change;\n }\n if (this.#points.length === 2) {\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n return null;\n }\n startNew(x, y, parentWidth, parentHeight, rotation) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#rotation = rotation;\n [x, y] = this.#normalizePoint(x, y);\n const line = this.#line = [NaN, NaN, NaN, NaN, x, y];\n this.#points = [x, y];\n const last = this.#lines.at(-1);\n if (last) {\n last.line = new Float32Array(last.line);\n last.points = new Float32Array(last.points);\n }\n this.#lines.push({\n line,\n points: this.#points\n });\n this.#last.set(line, 0);\n this.#lastIndex = 0;\n this.toSVGPath();\n return null;\n }\n getLastElement() {\n return this.#lines.at(-1);\n }\n setLastElement(element) {\n if (!this.#lines) {\n return this.#outlines.setLastElement(element);\n }\n this.#lines.push(element);\n this.#line = element.line;\n this.#points = element.points;\n this.#lastIndex = 0;\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n removeLastElement() {\n if (!this.#lines) {\n return this.#outlines.removeLastElement();\n }\n this.#lines.pop();\n this.#lastSVGPath = \"\";\n for (let i = 0, ii = this.#lines.length; i < ii; i++) {\n const {\n line,\n points\n } = this.#lines[i];\n this.#line = line;\n this.#points = points;\n this.#lastIndex = 0;\n this.toSVGPath();\n }\n return {\n path: {\n d: this.#lastSVGPath\n }\n };\n }\n toSVGPath() {\n const firstX = Outline.svgRound(this.#line[4]);\n const firstY = Outline.svgRound(this.#line[5]);\n if (this.#points.length === 2) {\n this.#lastSVGPath = `${this.#lastSVGPath} M ${firstX} ${firstY} Z`;\n return this.#lastSVGPath;\n }\n if (this.#points.length <= 6) {\n const i = this.#lastSVGPath.lastIndexOf(\"M\");\n this.#lastSVGPath = `${this.#lastSVGPath.slice(0, i)} M ${firstX} ${firstY}`;\n this.#lastIndex = 6;\n }\n if (this.#points.length === 4) {\n const secondX = Outline.svgRound(this.#line[10]);\n const secondY = Outline.svgRound(this.#line[11]);\n this.#lastSVGPath = `${this.#lastSVGPath} L ${secondX} ${secondY}`;\n this.#lastIndex = 12;\n return this.#lastSVGPath;\n }\n const buffer = [];\n if (this.#lastIndex === 0) {\n buffer.push(`M ${firstX} ${firstY}`);\n this.#lastIndex = 6;\n }\n for (let i = this.#lastIndex, ii = this.#line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = this.#line.slice(i, i + 6).map(Outline.svgRound);\n buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\n }\n this.#lastSVGPath += buffer.join(\" \");\n this.#lastIndex = this.#line.length;\n return this.#lastSVGPath;\n }\n getOutlines(parentWidth, parentHeight, scale, innerMargin) {\n const last = this.#lines.at(-1);\n last.line = new Float32Array(last.line);\n last.points = new Float32Array(last.points);\n this.#outlines.build(this.#lines, parentWidth, parentHeight, scale, this.#rotation, this.#thickness, innerMargin);\n this.#last = null;\n this.#line = null;\n this.#lines = null;\n this.#lastSVGPath = null;\n return this.#outlines;\n }\n get defaultSVGProperties() {\n return {\n root: {\n viewBox: \"0 0 10000 10000\"\n },\n rootClass: {\n draw: true\n },\n bbox: [0, 0, 1, 1]\n };\n }\n}\nclass InkDrawOutline extends Outline {\n #bbox;\n #currentRotation = 0;\n #innerMargin;\n #lines;\n #parentWidth;\n #parentHeight;\n #parentScale;\n #rotation;\n #thickness;\n build(lines, parentWidth, parentHeight, parentScale, rotation, thickness, innerMargin) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#parentScale = parentScale;\n this.#rotation = rotation;\n this.#thickness = thickness;\n this.#innerMargin = innerMargin ?? 0;\n this.#lines = lines;\n this.#computeBbox();\n }\n get thickness() {\n return this.#thickness;\n }\n setLastElement(element) {\n this.#lines.push(element);\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n removeLastElement() {\n this.#lines.pop();\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n toSVGPath() {\n const buffer = [];\n for (const {\n line\n } of this.#lines) {\n buffer.push(`M${Outline.svgRound(line[4])} ${Outline.svgRound(line[5])}`);\n if (line.length === 6) {\n buffer.push(\"Z\");\n continue;\n }\n if (line.length === 12 && isNaN(line[6])) {\n buffer.push(`L${Outline.svgRound(line[10])} ${Outline.svgRound(line[11])}`);\n continue;\n }\n for (let i = 6, ii = line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = line.subarray(i, i + 6).map(Outline.svgRound);\n buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\n }\n }\n return buffer.join(\"\");\n }\n serialize([pageX, pageY, pageWidth, pageHeight], isForCopying) {\n const serializedLines = [];\n const serializedPoints = [];\n const [x, y, width, height] = this.#getBBoxWithNoMargin();\n let tx, ty, sx, sy, x1, y1, x2, y2, rescaleFn;\n switch (this.#rotation) {\n case 0:\n rescaleFn = Outline._rescale;\n tx = pageX;\n ty = pageY + pageHeight;\n sx = pageWidth;\n sy = -pageHeight;\n x1 = pageX + x * pageWidth;\n y1 = pageY + (1 - y - height) * pageHeight;\n x2 = pageX + (x + width) * pageWidth;\n y2 = pageY + (1 - y) * pageHeight;\n break;\n case 90:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageX;\n ty = pageY;\n sx = pageWidth;\n sy = pageHeight;\n x1 = pageX + y * pageWidth;\n y1 = pageY + x * pageHeight;\n x2 = pageX + (y + height) * pageWidth;\n y2 = pageY + (x + width) * pageHeight;\n break;\n case 180:\n rescaleFn = Outline._rescale;\n tx = pageX + pageWidth;\n ty = pageY;\n sx = -pageWidth;\n sy = pageHeight;\n x1 = pageX + (1 - x - width) * pageWidth;\n y1 = pageY + y * pageHeight;\n x2 = pageX + (1 - x) * pageWidth;\n y2 = pageY + (y + height) * pageHeight;\n break;\n case 270:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageX + pageWidth;\n ty = pageY + pageHeight;\n sx = -pageWidth;\n sy = -pageHeight;\n x1 = pageX + (1 - y - height) * pageWidth;\n y1 = pageY + (1 - x - width) * pageHeight;\n x2 = pageX + (1 - y) * pageWidth;\n y2 = pageY + (1 - x) * pageHeight;\n break;\n }\n for (const {\n line,\n points\n } of this.#lines) {\n serializedLines.push(rescaleFn(line, tx, ty, sx, sy, isForCopying ? new Array(line.length) : null));\n serializedPoints.push(rescaleFn(points, tx, ty, sx, sy, isForCopying ? new Array(points.length) : null));\n }\n return {\n lines: serializedLines,\n points: serializedPoints,\n rect: [x1, y1, x2, y2]\n };\n }\n static deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, {\n paths: {\n lines,\n points\n },\n rotation,\n thickness\n }) {\n const newLines = [];\n let tx, ty, sx, sy, rescaleFn;\n switch (rotation) {\n case 0:\n rescaleFn = Outline._rescale;\n tx = -pageX / pageWidth;\n ty = pageY / pageHeight + 1;\n sx = 1 / pageWidth;\n sy = -1 / pageHeight;\n break;\n case 90:\n rescaleFn = Outline._rescaleAndSwap;\n tx = -pageY / pageHeight;\n ty = -pageX / pageWidth;\n sx = 1 / pageHeight;\n sy = 1 / pageWidth;\n break;\n case 180:\n rescaleFn = Outline._rescale;\n tx = pageX / pageWidth + 1;\n ty = -pageY / pageHeight;\n sx = -1 / pageWidth;\n sy = 1 / pageHeight;\n break;\n case 270:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageY / pageHeight + 1;\n ty = pageX / pageWidth + 1;\n sx = -1 / pageHeight;\n sy = -1 / pageWidth;\n break;\n }\n if (!lines) {\n lines = [];\n for (const point of points) {\n const len = point.length;\n if (len === 2) {\n lines.push(new Float32Array([NaN, NaN, NaN, NaN, point[0], point[1]]));\n continue;\n }\n if (len === 4) {\n lines.push(new Float32Array([NaN, NaN, NaN, NaN, point[0], point[1], NaN, NaN, NaN, NaN, point[2], point[3]]));\n continue;\n }\n const line = new Float32Array(3 * (len - 2));\n lines.push(line);\n let [x1, y1, x2, y2] = point.subarray(0, 4);\n line.set([NaN, NaN, NaN, NaN, x1, y1], 0);\n for (let i = 4; i < len; i += 2) {\n const x = point[i];\n const y = point[i + 1];\n line.set(Outline.createBezierPoints(x1, y1, x2, y2, x, y), (i - 2) * 3);\n [x1, y1, x2, y2] = [x2, y2, x, y];\n }\n }\n }\n for (let i = 0, ii = lines.length; i < ii; i++) {\n newLines.push({\n line: rescaleFn(lines[i].map((x) => x ?? NaN), tx, ty, sx, sy),\n points: rescaleFn(points[i].map((x) => x ?? NaN), tx, ty, sx, sy)\n });\n }\n const outlines = new this.prototype.constructor();\n outlines.build(newLines, pageWidth, pageHeight, 1, rotation, thickness, innerMargin);\n return outlines;\n }\n #getMarginComponents(thickness = this.#thickness) {\n const margin = this.#innerMargin + thickness / 2 * this.#parentScale;\n return this.#rotation % 180 === 0 ? [margin / this.#parentWidth, margin / this.#parentHeight] : [margin / this.#parentHeight, margin / this.#parentWidth];\n }\n #getBBoxWithNoMargin() {\n const [x, y, width, height] = this.#bbox;\n const [marginX, marginY] = this.#getMarginComponents(0);\n return [x + marginX, y + marginY, width - 2 * marginX, height - 2 * marginY];\n }\n #computeBbox() {\n const bbox = this.#bbox = new Float32Array([Infinity, Infinity, -Infinity, -Infinity]);\n for (const {\n line\n } of this.#lines) {\n if (line.length <= 12) {\n for (let i = 4, ii = line.length; i < ii; i += 6) {\n Util.pointBoundingBox(line[i], line[i + 1], bbox);\n }\n continue;\n }\n let lastX = line[4], lastY = line[5];\n for (let i = 6, ii = line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = line.subarray(i, i + 6);\n Util.bezierBoundingBox(lastX, lastY, c1x, c1y, c2x, c2y, x, y, bbox);\n lastX = x;\n lastY = y;\n }\n }\n const [marginX, marginY] = this.#getMarginComponents();\n bbox[0] = MathClamp(bbox[0] - marginX, 0, 1);\n bbox[1] = MathClamp(bbox[1] - marginY, 0, 1);\n bbox[2] = MathClamp(bbox[2] + marginX, 0, 1);\n bbox[3] = MathClamp(bbox[3] + marginY, 0, 1);\n bbox[2] -= bbox[0];\n bbox[3] -= bbox[1];\n }\n get box() {\n return this.#bbox;\n }\n updateProperty(name, value) {\n if (name === \"stroke-width\") {\n return this.#updateThickness(value);\n }\n return null;\n }\n #updateThickness(thickness) {\n const [oldMarginX, oldMarginY] = this.#getMarginComponents();\n this.#thickness = thickness;\n const [newMarginX, newMarginY] = this.#getMarginComponents();\n const [diffMarginX, diffMarginY] = [newMarginX - oldMarginX, newMarginY - oldMarginY];\n const bbox = this.#bbox;\n bbox[0] -= diffMarginX;\n bbox[1] -= diffMarginY;\n bbox[2] += 2 * diffMarginX;\n bbox[3] += 2 * diffMarginY;\n return bbox;\n }\n updateParentDimensions([width, height], scale) {\n const [oldMarginX, oldMarginY] = this.#getMarginComponents();\n this.#parentWidth = width;\n this.#parentHeight = height;\n this.#parentScale = scale;\n const [newMarginX, newMarginY] = this.#getMarginComponents();\n const diffMarginX = newMarginX - oldMarginX;\n const diffMarginY = newMarginY - oldMarginY;\n const bbox = this.#bbox;\n bbox[0] -= diffMarginX;\n bbox[1] -= diffMarginY;\n bbox[2] += 2 * diffMarginX;\n bbox[3] += 2 * diffMarginY;\n return bbox;\n }\n updateRotation(rotation) {\n this.#currentRotation = rotation;\n return {\n path: {\n transform: this.rotationTransform\n }\n };\n }\n get viewBox() {\n return this.#bbox.map(Outline.svgRound).join(\" \");\n }\n get defaultProperties() {\n const [x, y] = this.#bbox;\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`\n }\n };\n }\n get rotationTransform() {\n const [, , width, height] = this.#bbox;\n let a = 0, b = 0, c = 0, d = 0, e = 0, f = 0;\n switch (this.#currentRotation) {\n case 90:\n b = height / width;\n c = -width / height;\n e = width;\n break;\n case 180:\n a = -1;\n d = -1;\n e = width;\n f = height;\n break;\n case 270:\n b = -height / width;\n c = width / height;\n f = height;\n break;\n default:\n return \"\";\n }\n return `matrix(${a} ${b} ${c} ${d} ${Outline.svgRound(e)} ${Outline.svgRound(f)})`;\n }\n getPathResizingSVGProperties([newX, newY, newWidth, newHeight]) {\n const [marginX, marginY] = this.#getMarginComponents();\n const [x, y, width, height] = this.#bbox;\n if (Math.abs(width - marginX) <= Outline.PRECISION || Math.abs(height - marginY) <= Outline.PRECISION) {\n const tx = newX + newWidth / 2 - (x + width / 2);\n const ty = newY + newHeight / 2 - (y + height / 2);\n return {\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: `${this.rotationTransform} translate(${tx} ${ty})`\n }\n };\n }\n const s1x = (newWidth - 2 * marginX) / (width - 2 * marginX);\n const s1y = (newHeight - 2 * marginY) / (height - 2 * marginY);\n const s2x = width / newWidth;\n const s2y = height / newHeight;\n return {\n path: {\n \"transform-origin\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`,\n transform: `${this.rotationTransform} scale(${s2x} ${s2y}) translate(${Outline.svgRound(marginX)} ${Outline.svgRound(marginY)}) scale(${s1x} ${s1y}) translate(${Outline.svgRound(-marginX)} ${Outline.svgRound(-marginY)})`\n }\n };\n }\n getPathResizedSVGProperties([newX, newY, newWidth, newHeight]) {\n const [marginX, marginY] = this.#getMarginComponents();\n const bbox = this.#bbox;\n const [x, y, width, height] = bbox;\n bbox[0] = newX;\n bbox[1] = newY;\n bbox[2] = newWidth;\n bbox[3] = newHeight;\n if (Math.abs(width - marginX) <= Outline.PRECISION || Math.abs(height - marginY) <= Outline.PRECISION) {\n const tx2 = newX + newWidth / 2 - (x + width / 2);\n const ty2 = newY + newHeight / 2 - (y + height / 2);\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._translate(line, tx2, ty2, line);\n Outline._translate(points, tx2, ty2, points);\n }\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: this.rotationTransform || null,\n d: this.toSVGPath()\n }\n };\n }\n const s1x = (newWidth - 2 * marginX) / (width - 2 * marginX);\n const s1y = (newHeight - 2 * marginY) / (height - 2 * marginY);\n const tx = -s1x * (x + marginX) + newX + marginX;\n const ty = -s1y * (y + marginY) + newY + marginY;\n if (s1x !== 1 || s1y !== 1 || tx !== 0 || ty !== 0) {\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._rescale(line, tx, ty, s1x, s1y, line);\n Outline._rescale(points, tx, ty, s1x, s1y, points);\n }\n }\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: this.rotationTransform || null,\n d: this.toSVGPath()\n }\n };\n }\n getPathTranslatedSVGProperties([newX, newY], parentDimensions) {\n const [newParentWidth, newParentHeight] = parentDimensions;\n const bbox = this.#bbox;\n const tx = newX - bbox[0];\n const ty = newY - bbox[1];\n if (this.#parentWidth === newParentWidth && this.#parentHeight === newParentHeight) {\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._translate(line, tx, ty, line);\n Outline._translate(points, tx, ty, points);\n }\n } else {\n const sx = this.#parentWidth / newParentWidth;\n const sy = this.#parentHeight / newParentHeight;\n this.#parentWidth = newParentWidth;\n this.#parentHeight = newParentHeight;\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._rescale(line, tx, ty, sx, sy, line);\n Outline._rescale(points, tx, ty, sx, sy, points);\n }\n bbox[2] *= sx;\n bbox[3] *= sy;\n }\n bbox[0] = newX;\n bbox[1] = newY;\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n d: this.toSVGPath(),\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`\n }\n };\n }\n get defaultSVGProperties() {\n const bbox = this.#bbox;\n return {\n root: {\n viewBox: this.viewBox\n },\n rootClass: {\n draw: true\n },\n path: {\n d: this.toSVGPath(),\n \"transform-origin\": `${Outline.svgRound(bbox[0])} ${Outline.svgRound(bbox[1])}`,\n transform: this.rotationTransform || null\n },\n bbox\n };\n }\n}\nclass InkDrawingOptions extends DrawingOptions {\n constructor(viewerParameters) {\n super();\n this._viewParameters = viewerParameters;\n super.updateProperties({\n fill: \"none\",\n stroke: AnnotationEditor._defaultLineColor,\n \"stroke-opacity\": 1,\n \"stroke-width\": 1,\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n \"stroke-miterlimit\": 10\n });\n }\n updateSVGProperty(name, value) {\n if (name === \"stroke-width\") {\n value ??= this[\"stroke-width\"];\n value *= this._viewParameters.realScale;\n }\n super.updateSVGProperty(name, value);\n }\n clone() {\n const clone = new InkDrawingOptions(this._viewParameters);\n clone.updateAll(this);\n return clone;\n }\n}\nclass InkEditor extends DrawingEditor {\n static _type = \"ink\";\n static _editorType = AnnotationEditorType.INK;\n static _defaultDrawingOptions = null;\n constructor(params) {\n super({\n ...params,\n name: \"inkEditor\"\n });\n this._willKeepAspectRatio = true;\n this.defaultL10nId = \"pdfjs-editor-ink-editor\";\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n this._defaultDrawingOptions = new InkDrawingOptions(uiManager.viewParameters);\n }\n static getDefaultDrawingOptions(options) {\n const clone = this._defaultDrawingOptions.clone();\n clone.updateProperties(options);\n return clone;\n }\n static get supportMultipleDrawings() {\n return true;\n }\n static get typesMap() {\n return shadow(this, \"typesMap\", /* @__PURE__ */ new Map([[AnnotationEditorParamsType.INK_THICKNESS, \"stroke-width\"], [AnnotationEditorParamsType.INK_COLOR, \"stroke\"], [AnnotationEditorParamsType.INK_OPACITY, \"stroke-opacity\"]]));\n }\n static createDrawerInstance(x, y, parentWidth, parentHeight, rotation) {\n return new InkDrawOutliner(x, y, parentWidth, parentHeight, rotation, this._defaultDrawingOptions[\"stroke-width\"]);\n }\n static deserializeDraw(pageX, pageY, pageWidth, pageHeight, innerMargin, data) {\n return InkDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof InkAnnotationElement) {\n const {\n data: {\n inkLists,\n rect,\n rotation,\n id,\n color,\n opacity,\n borderStyle: {\n rawWidth: thickness\n },\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.INK,\n color: Array.from(color),\n thickness,\n opacity,\n paths: {\n points: inkLists\n },\n boxes: null,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n popupRef,\n richText,\n comment: contentsObj?.str || null,\n creationDate,\n modificationDate\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n editor._initialData = initialData;\n if (data.comment) {\n editor.setCommentData(data);\n }\n return editor;\n }\n get toolbarButtons() {\n this._colorPicker ||= new BasicColorPicker(this);\n return [[\"colorPicker\", this._colorPicker]];\n }\n get colorType() {\n return AnnotationEditorParamsType.INK_COLOR;\n }\n get color() {\n return this._drawingOptions.stroke;\n }\n get opacity() {\n return this._drawingOptions[\"stroke-opacity\"];\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\n super.onScaleChanging();\n const {\n _drawId,\n _drawingOptions,\n parent\n } = this;\n _drawingOptions.updateSVGProperty(\"stroke-width\");\n parent.drawLayer.updateProperties(_drawId, _drawingOptions.toSVGProperties());\n }\n static onScaleChangingWhenDrawing() {\n const parent = this._currentParent;\n if (!parent) {\n return;\n }\n super.onScaleChangingWhenDrawing();\n this._defaultDrawingOptions.updateSVGProperty(\"stroke-width\");\n parent.drawLayer.updateProperties(this._currentDrawId, this._defaultDrawingOptions.toSVGProperties());\n }\n createDrawingOptions({\n color,\n thickness,\n opacity\n }) {\n this._drawingOptions = InkEditor.getDefaultDrawingOptions({\n stroke: Util.makeHexColor(...color),\n \"stroke-width\": thickness,\n \"stroke-opacity\": opacity\n });\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const {\n lines,\n points\n } = this.serializeDraw(isForCopying);\n const {\n _drawingOptions: {\n stroke,\n \"stroke-opacity\": opacity,\n \"stroke-width\": thickness\n }\n } = this;\n const serialized = Object.assign(super.serialize(isForCopying), {\n color: AnnotationEditor._colorManager.convert(stroke),\n opacity,\n thickness,\n paths: {\n lines,\n points\n }\n });\n this.addComment(serialized);\n if (isForCopying) {\n serialized.isCopy = true;\n return serialized;\n }\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n color,\n thickness,\n opacity,\n pageIndex\n } = this._initialData;\n return this.hasEditedComment || this._hasBeenMoved || this._hasBeenResized || serialized.color.some((c, i) => c !== color[i]) || serialized.thickness !== thickness || serialized.opacity !== opacity || serialized.pageIndex !== pageIndex;\n }\n renderAnnotationElement(annotation) {\n if (this.deleted) {\n annotation.hide();\n return null;\n }\n const {\n points,\n rect\n } = this.serializeDraw(false);\n annotation.updateEdited({\n rect,\n thickness: this._drawingOptions[\"stroke-width\"],\n points,\n popup: this.comment\n });\n return null;\n }\n}\nclass ContourDrawOutline extends InkDrawOutline {\n toSVGPath() {\n let path = super.toSVGPath();\n if (!path.endsWith(\"Z\")) {\n path += \"Z\";\n }\n return path;\n }\n}\nconst BASE_HEADER_LENGTH = 8;\nconst POINTS_PROPERTIES_NUMBER = 3;\nclass SignatureExtractor {\n static #PARAMETERS = {\n maxDim: 512,\n sigmaSFactor: 0.02,\n sigmaR: 25,\n kernelSize: 16\n };\n static #neighborIndexToId(i0, j0, i, j) {\n i -= i0;\n j -= j0;\n if (i === 0) {\n return j > 0 ? 0 : 4;\n }\n if (i === 1) {\n return j + 6;\n }\n return 2 - j;\n }\n static #neighborIdToIndex = new Int32Array([0, 1, -1, 1, -1, 0, -1, -1, 0, -1, 1, -1, 1, 0, 1, 1]);\n static #clockwiseNonZero(buf, width, i0, j0, i, j, offset) {\n const id = this.#neighborIndexToId(i0, j0, i, j);\n for (let k = 0; k < 8; k++) {\n const kk = (-k + id - offset + 16) % 8;\n const shiftI = this.#neighborIdToIndex[2 * kk];\n const shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n if (buf[(i0 + shiftI) * width + (j0 + shiftJ)] !== 0) {\n return kk;\n }\n }\n return -1;\n }\n static #counterClockwiseNonZero(buf, width, i0, j0, i, j, offset) {\n const id = this.#neighborIndexToId(i0, j0, i, j);\n for (let k = 0; k < 8; k++) {\n const kk = (k + id + offset + 16) % 8;\n const shiftI = this.#neighborIdToIndex[2 * kk];\n const shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n if (buf[(i0 + shiftI) * width + (j0 + shiftJ)] !== 0) {\n return kk;\n }\n }\n return -1;\n }\n static #findContours(buf, width, height, threshold) {\n const N = buf.length;\n const types = new Int32Array(N);\n for (let i = 0; i < N; i++) {\n types[i] = buf[i] <= threshold ? 1 : 0;\n }\n for (let i = 1; i < height - 1; i++) {\n types[i * width] = types[i * width + width - 1] = 0;\n }\n for (let i = 0; i < width; i++) {\n types[i] = types[width * height - 1 - i] = 0;\n }\n let nbd = 1;\n let lnbd;\n const contours = [];\n for (let i = 1; i < height - 1; i++) {\n lnbd = 1;\n for (let j = 1; j < width - 1; j++) {\n const ij = i * width + j;\n const pix = types[ij];\n if (pix === 0) {\n continue;\n }\n let i2 = i;\n let j2 = j;\n if (pix === 1 && types[ij - 1] === 0) {\n nbd += 1;\n j2 -= 1;\n } else if (pix >= 1 && types[ij + 1] === 0) {\n nbd += 1;\n j2 += 1;\n if (pix > 1) {\n lnbd = pix;\n }\n } else {\n if (pix !== 1) {\n lnbd = Math.abs(pix);\n }\n continue;\n }\n const points = [j, i];\n const isHole = j2 === j + 1;\n const contour = {\n isHole,\n points,\n id: nbd,\n parent: 0\n };\n contours.push(contour);\n let contour0;\n for (const c of contours) {\n if (c.id === lnbd) {\n contour0 = c;\n break;\n }\n }\n if (!contour0) {\n contour.parent = isHole ? lnbd : 0;\n } else if (contour0.isHole) {\n contour.parent = isHole ? contour0.parent : lnbd;\n } else {\n contour.parent = isHole ? lnbd : contour0.parent;\n }\n const k = this.#clockwiseNonZero(types, width, i, j, i2, j2, 0);\n if (k === -1) {\n types[ij] = -nbd;\n if (types[ij] !== 1) {\n lnbd = Math.abs(types[ij]);\n }\n continue;\n }\n let shiftI = this.#neighborIdToIndex[2 * k];\n let shiftJ = this.#neighborIdToIndex[2 * k + 1];\n const i1 = i + shiftI;\n const j1 = j + shiftJ;\n i2 = i1;\n j2 = j1;\n let i3 = i;\n let j3 = j;\n while (true) {\n const kk = this.#counterClockwiseNonZero(types, width, i3, j3, i2, j2, 1);\n shiftI = this.#neighborIdToIndex[2 * kk];\n shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n const i4 = i3 + shiftI;\n const j4 = j3 + shiftJ;\n points.push(j4, i4);\n const ij3 = i3 * width + j3;\n if (types[ij3 + 1] === 0) {\n types[ij3] = -nbd;\n } else if (types[ij3] === 1) {\n types[ij3] = nbd;\n }\n if (i4 === i && j4 === j && i3 === i1 && j3 === j1) {\n if (types[ij] !== 1) {\n lnbd = Math.abs(types[ij]);\n }\n break;\n } else {\n i2 = i3;\n j2 = j3;\n i3 = i4;\n j3 = j4;\n }\n }\n }\n }\n return contours;\n }\n static #douglasPeuckerHelper(points, start, end, output) {\n if (end - start <= 4) {\n for (let i = start; i < end - 2; i += 2) {\n output.push(points[i], points[i + 1]);\n }\n return;\n }\n const ax = points[start];\n const ay = points[start + 1];\n const abx = points[end - 4] - ax;\n const aby = points[end - 3] - ay;\n const dist = Math.hypot(abx, aby);\n const nabx = abx / dist;\n const naby = aby / dist;\n const aa = nabx * ay - naby * ax;\n const m = aby / abx;\n const invS = 1 / dist;\n const phi = Math.atan(m);\n const cosPhi = Math.cos(phi);\n const sinPhi = Math.sin(phi);\n const tmax = invS * (Math.abs(cosPhi) + Math.abs(sinPhi));\n const poly = invS * (1 - tmax + tmax ** 2);\n const partialPhi = Math.max(Math.atan(Math.abs(sinPhi + cosPhi) * poly), Math.atan(Math.abs(sinPhi - cosPhi) * poly));\n let dmax = 0;\n let index = start;\n for (let i = start + 2; i < end - 2; i += 2) {\n const d = Math.abs(aa - nabx * points[i + 1] + naby * points[i]);\n if (d > dmax) {\n index = i;\n dmax = d;\n }\n }\n if (dmax > (dist * partialPhi) ** 2) {\n this.#douglasPeuckerHelper(points, start, index + 2, output);\n this.#douglasPeuckerHelper(points, index, end, output);\n } else {\n output.push(ax, ay);\n }\n }\n static #douglasPeucker(points) {\n const output = [];\n const len = points.length;\n this.#douglasPeuckerHelper(points, 0, len, output);\n output.push(points[len - 2], points[len - 1]);\n return output.length <= 4 ? null : output;\n }\n static #bilateralFilter(buf, width, height, sigmaS, sigmaR, kernelSize) {\n const kernel = new Float32Array(kernelSize ** 2);\n const sigmaS2 = -2 * sigmaS ** 2;\n const halfSize = kernelSize >> 1;\n for (let i = 0; i < kernelSize; i++) {\n const x = (i - halfSize) ** 2;\n for (let j = 0; j < kernelSize; j++) {\n kernel[i * kernelSize + j] = Math.exp((x + (j - halfSize) ** 2) / sigmaS2);\n }\n }\n const rangeValues = new Float32Array(256);\n const sigmaR2 = -2 * sigmaR ** 2;\n for (let i = 0; i < 256; i++) {\n rangeValues[i] = Math.exp(i ** 2 / sigmaR2);\n }\n const N = buf.length;\n const out = new Uint8Array(N);\n const histogram = new Uint32Array(256);\n for (let i = 0; i < height; i++) {\n for (let j = 0; j < width; j++) {\n const ij = i * width + j;\n const center = buf[ij];\n let sum = 0;\n let norm = 0;\n for (let k = 0; k < kernelSize; k++) {\n const y = i + k - halfSize;\n if (y < 0 || y >= height) {\n continue;\n }\n for (let l = 0; l < kernelSize; l++) {\n const x = j + l - halfSize;\n if (x < 0 || x >= width) {\n continue;\n }\n const neighbour = buf[y * width + x];\n const w = kernel[k * kernelSize + l] * rangeValues[Math.abs(neighbour - center)];\n sum += neighbour * w;\n norm += w;\n }\n }\n const pix = out[ij] = Math.round(sum / norm);\n histogram[pix]++;\n }\n }\n return [out, histogram];\n }\n static #getHistogram(buf) {\n const histogram = new Uint32Array(256);\n for (const g of buf) {\n histogram[g]++;\n }\n return histogram;\n }\n static #toUint8(buf) {\n const N = buf.length;\n const out = new Uint8ClampedArray(N >> 2);\n let max = -Infinity;\n let min = Infinity;\n for (let i = 0, ii = out.length; i < ii; i++) {\n const pix = out[i] = buf[i << 2];\n max = Math.max(max, pix);\n min = Math.min(min, pix);\n }\n const ratio = 255 / (max - min);\n for (let i = 0, ii = out.length; i < ii; i++) {\n out[i] = (out[i] - min) * ratio;\n }\n return out;\n }\n static #guessThreshold(histogram) {\n let i;\n let M = -Infinity;\n let L = -Infinity;\n const min = histogram.findIndex((v) => v !== 0);\n let pos = min;\n let spos = min;\n for (i = min; i < 256; i++) {\n const v = histogram[i];\n if (v > M) {\n if (i - pos > L) {\n L = i - pos;\n spos = i - 1;\n }\n M = v;\n pos = i;\n }\n }\n for (i = spos - 1; i >= 0; i--) {\n if (histogram[i] > histogram[i + 1]) {\n break;\n }\n }\n return i;\n }\n static #getGrayPixels(bitmap) {\n const originalBitmap = bitmap;\n const {\n width,\n height\n } = bitmap;\n const {\n maxDim\n } = this.#PARAMETERS;\n let newWidth = width;\n let newHeight = height;\n if (width > maxDim || height > maxDim) {\n let prevWidth = width;\n let prevHeight = height;\n let steps = Math.log2(Math.max(width, height) / maxDim);\n const isteps = Math.floor(steps);\n steps = steps === isteps ? isteps - 1 : isteps;\n for (let i = 0; i < steps; i++) {\n newWidth = Math.ceil(prevWidth / 2);\n newHeight = Math.ceil(prevHeight / 2);\n const offscreen2 = new OffscreenCanvas(newWidth, newHeight);\n const ctx2 = offscreen2.getContext(\"2d\");\n ctx2.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n prevWidth = newWidth;\n prevHeight = newHeight;\n if (bitmap !== originalBitmap) {\n bitmap.close();\n }\n bitmap = offscreen2.transferToImageBitmap();\n }\n const ratio = Math.min(maxDim / newWidth, maxDim / newHeight);\n newWidth = Math.round(newWidth * ratio);\n newHeight = Math.round(newHeight * ratio);\n }\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\", {\n willReadFrequently: true\n });\n ctx.fillStyle = \"white\";\n ctx.fillRect(0, 0, newWidth, newHeight);\n ctx.filter = \"grayscale(1)\";\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, newWidth, newHeight);\n const grayImage = ctx.getImageData(0, 0, newWidth, newHeight).data;\n const uint8Buf = this.#toUint8(grayImage);\n return [uint8Buf, newWidth, newHeight];\n }\n static extractContoursFromText(text, {\n fontFamily,\n fontStyle,\n fontWeight\n }, pageWidth, pageHeight, rotation, innerMargin) {\n let canvas = new OffscreenCanvas(1, 1);\n let ctx = canvas.getContext(\"2d\", {\n alpha: false\n });\n const fontSize = 200;\n const font = ctx.font = `${fontStyle} ${fontWeight} ${fontSize}px ${fontFamily}`;\n const {\n actualBoundingBoxLeft,\n actualBoundingBoxRight,\n actualBoundingBoxAscent,\n actualBoundingBoxDescent,\n fontBoundingBoxAscent,\n fontBoundingBoxDescent,\n width\n } = ctx.measureText(text);\n const SCALE = 1.5;\n const canvasWidth = Math.ceil(Math.max(Math.abs(actualBoundingBoxLeft) + Math.abs(actualBoundingBoxRight) || 0, width) * SCALE);\n const canvasHeight = Math.ceil(Math.max(Math.abs(actualBoundingBoxAscent) + Math.abs(actualBoundingBoxDescent) || fontSize, Math.abs(fontBoundingBoxAscent) + Math.abs(fontBoundingBoxDescent) || fontSize) * SCALE);\n canvas = new OffscreenCanvas(canvasWidth, canvasHeight);\n ctx = canvas.getContext(\"2d\", {\n alpha: true,\n willReadFrequently: true\n });\n ctx.font = font;\n ctx.filter = \"grayscale(1)\";\n ctx.fillStyle = \"white\";\n ctx.fillRect(0, 0, canvasWidth, canvasHeight);\n ctx.fillStyle = \"black\";\n ctx.fillText(text, canvasWidth * (SCALE - 1) / 2, canvasHeight * (3 - SCALE) / 2);\n const uint8Buf = this.#toUint8(ctx.getImageData(0, 0, canvasWidth, canvasHeight).data);\n const histogram = this.#getHistogram(uint8Buf);\n const threshold = this.#guessThreshold(histogram);\n const contourList = this.#findContours(uint8Buf, canvasWidth, canvasHeight, threshold);\n return this.processDrawnLines({\n lines: {\n curves: contourList,\n width: canvasWidth,\n height: canvasHeight\n },\n pageWidth,\n pageHeight,\n rotation,\n innerMargin,\n mustSmooth: true,\n areContours: true\n });\n }\n static process(bitmap, pageWidth, pageHeight, rotation, innerMargin) {\n const [uint8Buf, width, height] = this.#getGrayPixels(bitmap);\n const [buffer, histogram] = this.#bilateralFilter(uint8Buf, width, height, Math.hypot(width, height) * this.#PARAMETERS.sigmaSFactor, this.#PARAMETERS.sigmaR, this.#PARAMETERS.kernelSize);\n const threshold = this.#guessThreshold(histogram);\n const contourList = this.#findContours(buffer, width, height, threshold);\n return this.processDrawnLines({\n lines: {\n curves: contourList,\n width,\n height\n },\n pageWidth,\n pageHeight,\n rotation,\n innerMargin,\n mustSmooth: true,\n areContours: true\n });\n }\n static processDrawnLines({\n lines,\n pageWidth,\n pageHeight,\n rotation,\n innerMargin,\n mustSmooth,\n areContours\n }) {\n if (rotation % 180 !== 0) {\n [pageWidth, pageHeight] = [pageHeight, pageWidth];\n }\n const {\n curves,\n width,\n height\n } = lines;\n const thickness = lines.thickness ?? 0;\n const linesAndPoints = [];\n const ratio = Math.min(pageWidth / width, pageHeight / height);\n const xScale = ratio / pageWidth;\n const yScale = ratio / pageHeight;\n const newCurves = [];\n for (const {\n points\n } of curves) {\n const reducedPoints = mustSmooth ? this.#douglasPeucker(points) : points;\n if (!reducedPoints) {\n continue;\n }\n newCurves.push(reducedPoints);\n const len = reducedPoints.length;\n const newPoints = new Float32Array(len);\n const line = new Float32Array(3 * (len === 2 ? 2 : len - 2));\n linesAndPoints.push({\n line,\n points: newPoints\n });\n if (len === 2) {\n newPoints[0] = reducedPoints[0] * xScale;\n newPoints[1] = reducedPoints[1] * yScale;\n line.set([NaN, NaN, NaN, NaN, newPoints[0], newPoints[1]], 0);\n continue;\n }\n let [x1, y1, x2, y2] = reducedPoints;\n x1 *= xScale;\n y1 *= yScale;\n x2 *= xScale;\n y2 *= yScale;\n newPoints.set([x1, y1, x2, y2], 0);\n line.set([NaN, NaN, NaN, NaN, x1, y1], 0);\n for (let i = 4; i < len; i += 2) {\n const x = newPoints[i] = reducedPoints[i] * xScale;\n const y = newPoints[i + 1] = reducedPoints[i + 1] * yScale;\n line.set(Outline.createBezierPoints(x1, y1, x2, y2, x, y), (i - 2) * 3);\n [x1, y1, x2, y2] = [x2, y2, x, y];\n }\n }\n if (linesAndPoints.length === 0) {\n return null;\n }\n const outline = areContours ? new ContourDrawOutline() : new InkDrawOutline();\n outline.build(linesAndPoints, pageWidth, pageHeight, 1, rotation, areContours ? 0 : thickness, innerMargin);\n return {\n outline,\n newCurves,\n areContours,\n thickness,\n width,\n height\n };\n }\n static async compressSignature({\n outlines,\n areContours,\n thickness,\n width,\n height\n }) {\n let minDiff = Infinity;\n let maxDiff = -Infinity;\n let outlinesLength = 0;\n for (const points of outlines) {\n outlinesLength += points.length;\n for (let i = 2, ii = points.length; i < ii; i++) {\n const dx = points[i] - points[i - 2];\n minDiff = Math.min(minDiff, dx);\n maxDiff = Math.max(maxDiff, dx);\n }\n }\n let bufferType;\n if (minDiff >= -128 && maxDiff <= 127) {\n bufferType = Int8Array;\n } else if (minDiff >= -32768 && maxDiff <= 32767) {\n bufferType = Int16Array;\n } else {\n bufferType = Int32Array;\n }\n const len = outlines.length;\n const headerLength = BASE_HEADER_LENGTH + POINTS_PROPERTIES_NUMBER * len;\n const header = new Uint32Array(headerLength);\n let offset = 0;\n header[offset++] = headerLength * Uint32Array.BYTES_PER_ELEMENT + (outlinesLength - 2 * len) * bufferType.BYTES_PER_ELEMENT;\n header[offset++] = 0;\n header[offset++] = width;\n header[offset++] = height;\n header[offset++] = areContours ? 0 : 1;\n header[offset++] = Math.max(0, Math.floor(thickness ?? 0));\n header[offset++] = len;\n header[offset++] = bufferType.BYTES_PER_ELEMENT;\n for (const points of outlines) {\n header[offset++] = points.length - 2;\n header[offset++] = points[0];\n header[offset++] = points[1];\n }\n const cs = new CompressionStream(\"deflate-raw\");\n const writer = cs.writable.getWriter();\n await writer.ready;\n writer.write(header);\n const BufferCtor = bufferType.prototype.constructor;\n for (const points of outlines) {\n const diffs = new BufferCtor(points.length - 2);\n for (let i = 2, ii = points.length; i < ii; i++) {\n diffs[i - 2] = points[i] - points[i - 2];\n }\n writer.write(diffs);\n }\n writer.close();\n const buf = await new Response(cs.readable).arrayBuffer();\n const bytes = new Uint8Array(buf);\n return toBase64Util(bytes);\n }\n static async decompressSignature(signatureData) {\n try {\n const bytes = fromBase64Util(signatureData);\n const {\n readable,\n writable\n } = new DecompressionStream(\"deflate-raw\");\n const writer = writable.getWriter();\n await writer.ready;\n writer.write(bytes).then(async () => {\n await writer.ready;\n await writer.close();\n }).catch(() => {\n });\n let data = null;\n let offset = 0;\n for await (const chunk of readable) {\n data ||= new Uint8Array(new Uint32Array(chunk.buffer, 0, 4)[0]);\n data.set(chunk, offset);\n offset += chunk.length;\n }\n const header = new Uint32Array(data.buffer, 0, data.length >> 2);\n const version2 = header[1];\n if (version2 !== 0) {\n throw new Error(`Invalid version: ${version2}`);\n }\n const width = header[2];\n const height = header[3];\n const areContours = header[4] === 0;\n const thickness = header[5];\n const numberOfDrawings = header[6];\n const bufferType = header[7];\n const outlines = [];\n const diffsOffset = (BASE_HEADER_LENGTH + POINTS_PROPERTIES_NUMBER * numberOfDrawings) * Uint32Array.BYTES_PER_ELEMENT;\n let diffs;\n switch (bufferType) {\n case Int8Array.BYTES_PER_ELEMENT:\n diffs = new Int8Array(data.buffer, diffsOffset);\n break;\n case Int16Array.BYTES_PER_ELEMENT:\n diffs = new Int16Array(data.buffer, diffsOffset);\n break;\n case Int32Array.BYTES_PER_ELEMENT:\n diffs = new Int32Array(data.buffer, diffsOffset);\n break;\n }\n offset = 0;\n for (let i = 0; i < numberOfDrawings; i++) {\n const len = header[POINTS_PROPERTIES_NUMBER * i + BASE_HEADER_LENGTH];\n const points = new Float32Array(len + 2);\n outlines.push(points);\n for (let j = 0; j < POINTS_PROPERTIES_NUMBER - 1; j++) {\n points[j] = header[POINTS_PROPERTIES_NUMBER * i + BASE_HEADER_LENGTH + j + 1];\n }\n for (let j = 0; j < len; j++) {\n points[j + 2] = points[j] + diffs[offset++];\n }\n }\n return {\n areContours,\n thickness,\n outlines,\n width,\n height\n };\n } catch (e) {\n warn(`decompressSignature: ${e}`);\n return null;\n }\n }\n}\nclass SignatureOptions extends DrawingOptions {\n constructor() {\n super();\n super.updateProperties({\n fill: AnnotationEditor._defaultLineColor,\n \"stroke-width\": 0\n });\n }\n clone() {\n const clone = new SignatureOptions();\n clone.updateAll(this);\n return clone;\n }\n}\nclass DrawnSignatureOptions extends InkDrawingOptions {\n constructor(viewerParameters) {\n super(viewerParameters);\n super.updateProperties({\n stroke: AnnotationEditor._defaultLineColor,\n \"stroke-width\": 1\n });\n }\n clone() {\n const clone = new DrawnSignatureOptions(this._viewParameters);\n clone.updateAll(this);\n return clone;\n }\n}\nclass SignatureEditor extends DrawingEditor {\n #isExtracted = false;\n #description = null;\n #signatureData = null;\n #signatureUUID = null;\n static _type = \"signature\";\n static _editorType = AnnotationEditorType.SIGNATURE;\n static _defaultDrawingOptions = null;\n constructor(params) {\n super({\n ...params,\n mustBeCommitted: true,\n name: \"signatureEditor\"\n });\n this._willKeepAspectRatio = true;\n this.#signatureData = params.signatureData || null;\n this.#description = null;\n this.defaultL10nId = \"pdfjs-editor-signature-editor1\";\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n this._defaultDrawingOptions = new SignatureOptions();\n this._defaultDrawnSignatureOptions = new DrawnSignatureOptions(uiManager.viewParameters);\n }\n static getDefaultDrawingOptions(options) {\n const clone = this._defaultDrawingOptions.clone();\n clone.updateProperties(options);\n return clone;\n }\n static get supportMultipleDrawings() {\n return false;\n }\n static get typesMap() {\n return shadow(this, \"typesMap\", /* @__PURE__ */ new Map());\n }\n static get isDrawer() {\n return false;\n }\n get telemetryFinalData() {\n return {\n type: \"signature\",\n hasDescription: !!this.#description\n };\n }\n static computeTelemetryFinalData(data) {\n const hasDescriptionStats = data.get(\"hasDescription\");\n return {\n hasAltText: hasDescriptionStats.get(true) ?? 0,\n hasNoAltText: hasDescriptionStats.get(false) ?? 0\n };\n }\n get isResizable() {\n return true;\n }\n onScaleChanging() {\n if (this._drawId === null) {\n return;\n }\n super.onScaleChanging();\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n const {\n _isCopy\n } = this;\n if (_isCopy) {\n this._isCopy = false;\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n if (this._drawId === null) {\n if (this.#signatureData) {\n const {\n lines,\n mustSmooth,\n areContours,\n description,\n uuid,\n heightInPage\n } = this.#signatureData;\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n const outline = SignatureExtractor.processDrawnLines({\n lines,\n pageWidth,\n pageHeight,\n rotation,\n innerMargin: SignatureEditor._INNER_MARGIN,\n mustSmooth,\n areContours\n });\n this.addSignature(outline, heightInPage, description, uuid);\n } else {\n this.div.setAttribute(\"data-l10n-args\", JSON.stringify({\n description: \"\"\n }));\n this.div.hidden = true;\n this._uiManager.getSignature(this);\n }\n } else {\n this.div.setAttribute(\"data-l10n-args\", JSON.stringify({\n description: this.#description || \"\"\n }));\n }\n if (_isCopy) {\n this._isCopy = true;\n this._moveAfterPaste(baseX, baseY);\n }\n return this.div;\n }\n setUuid(uuid) {\n this.#signatureUUID = uuid;\n this.addEditToolbar();\n }\n getUuid() {\n return this.#signatureUUID;\n }\n get description() {\n return this.#description;\n }\n set description(description) {\n this.#description = description;\n if (!this.div) {\n return;\n }\n this.div.setAttribute(\"data-l10n-args\", JSON.stringify({\n description\n }));\n super.addEditToolbar().then((toolbar) => {\n toolbar?.updateEditSignatureButton(description);\n });\n }\n getSignaturePreview() {\n const {\n newCurves,\n areContours,\n thickness,\n width,\n height\n } = this.#signatureData;\n const maxDim = Math.max(width, height);\n const outlineData = SignatureExtractor.processDrawnLines({\n lines: {\n curves: newCurves.map((points) => ({\n points\n })),\n thickness,\n width,\n height\n },\n pageWidth: maxDim,\n pageHeight: maxDim,\n rotation: 0,\n innerMargin: 0,\n mustSmooth: false,\n areContours\n });\n return {\n areContours,\n outline: outlineData.outline\n };\n }\n get toolbarButtons() {\n if (this._uiManager.signatureManager) {\n return [[\"editSignature\", this._uiManager.signatureManager]];\n }\n return super.toolbarButtons;\n }\n addSignature(data, heightInPage, description, uuid) {\n const {\n x: savedX,\n y: savedY\n } = this;\n const {\n outline\n } = this.#signatureData = data;\n this.#isExtracted = outline instanceof ContourDrawOutline;\n this.description = description;\n let drawingOptions;\n if (this.#isExtracted) {\n drawingOptions = SignatureEditor.getDefaultDrawingOptions();\n } else {\n drawingOptions = SignatureEditor._defaultDrawnSignatureOptions.clone();\n drawingOptions.updateProperties({\n \"stroke-width\": outline.thickness\n });\n }\n this._addOutlines({\n drawOutlines: outline,\n drawingOptions\n });\n const [, pageHeight] = this.pageDimensions;\n let newHeight = heightInPage / pageHeight;\n newHeight = newHeight >= 1 ? 0.5 : newHeight;\n this.width *= newHeight / this.height;\n if (this.width >= 1) {\n newHeight *= 0.9 / this.width;\n this.width = 0.9;\n }\n this.height = newHeight;\n this.setDims();\n this.x = savedX;\n this.y = savedY;\n this.center();\n this._onResized();\n this.onScaleChanging();\n this.rotate();\n this._uiManager.addToAnnotationStorage(this);\n this.setUuid(uuid);\n this._reportTelemetry({\n action: \"pdfjs.signature.inserted\",\n data: {\n hasBeenSaved: !!uuid,\n hasDescription: !!description\n }\n });\n this.div.hidden = false;\n }\n getFromImage(bitmap) {\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n return SignatureExtractor.process(bitmap, pageWidth, pageHeight, rotation, SignatureEditor._INNER_MARGIN);\n }\n getFromText(text, fontInfo) {\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n return SignatureExtractor.extractContoursFromText(text, fontInfo, pageWidth, pageHeight, rotation, SignatureEditor._INNER_MARGIN);\n }\n getDrawnSignature(curves) {\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n return SignatureExtractor.processDrawnLines({\n lines: curves,\n pageWidth,\n pageHeight,\n rotation,\n innerMargin: SignatureEditor._INNER_MARGIN,\n mustSmooth: false,\n areContours: false\n });\n }\n createDrawingOptions({\n areContours,\n thickness\n }) {\n if (areContours) {\n this._drawingOptions = SignatureEditor.getDefaultDrawingOptions();\n } else {\n this._drawingOptions = SignatureEditor._defaultDrawnSignatureOptions.clone();\n this._drawingOptions.updateProperties({\n \"stroke-width\": thickness\n });\n }\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n const {\n lines,\n points\n } = this.serializeDraw(isForCopying);\n const {\n _drawingOptions: {\n \"stroke-width\": thickness\n }\n } = this;\n const serialized = Object.assign(super.serialize(isForCopying), {\n isSignature: true,\n areContours: this.#isExtracted,\n color: [0, 0, 0],\n thickness: this.#isExtracted ? 0 : thickness\n });\n this.addComment(serialized);\n if (isForCopying) {\n serialized.paths = {\n lines,\n points\n };\n serialized.uuid = this.#signatureUUID;\n serialized.isCopy = true;\n } else {\n serialized.lines = lines;\n }\n if (this.#description) {\n serialized.accessibilityData = {\n type: \"Figure\",\n alt: this.#description\n };\n }\n return serialized;\n }\n static deserializeDraw(pageX, pageY, pageWidth, pageHeight, innerMargin, data) {\n if (data.areContours) {\n return ContourDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n }\n return InkDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n }\n static async deserialize(data, parent, uiManager) {\n const editor = await super.deserialize(data, parent, uiManager);\n editor.#isExtracted = data.areContours;\n editor.description = data.accessibilityData?.alt || \"\";\n editor.#signatureUUID = data.uuid;\n return editor;\n }\n}\nclass StampEditor extends AnnotationEditor {\n #bitmap = null;\n #bitmapId = null;\n #bitmapPromise = null;\n #bitmapUrl = null;\n #bitmapFile = null;\n #bitmapFileName = \"\";\n #canvas = null;\n #missingCanvas = false;\n #resizeTimeoutId = null;\n #isSvg = false;\n #hasBeenAddedInUndoStack = false;\n static _type = \"stamp\";\n static _editorType = AnnotationEditorType.STAMP;\n constructor(params) {\n super({\n ...params,\n name: \"stampEditor\"\n });\n this.#bitmapUrl = params.bitmapUrl;\n this.#bitmapFile = params.bitmapFile;\n this.defaultL10nId = \"pdfjs-editor-stamp-editor\";\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n }\n static isHandlingMimeForPasting(mime) {\n return SupportedImageMimeTypes.includes(mime);\n }\n static paste(item, parent) {\n parent.pasteEditor({\n mode: AnnotationEditorType.STAMP\n }, {\n bitmapFile: item.getAsFile()\n });\n }\n altTextFinish() {\n if (this._uiManager.useNewAltTextFlow) {\n this.div.hidden = false;\n }\n super.altTextFinish();\n }\n get telemetryFinalData() {\n return {\n type: \"stamp\",\n hasAltText: !!this.altTextData?.altText\n };\n }\n static computeTelemetryFinalData(data) {\n const hasAltTextStats = data.get(\"hasAltText\");\n return {\n hasAltText: hasAltTextStats.get(true) ?? 0,\n hasNoAltText: hasAltTextStats.get(false) ?? 0\n };\n }\n #getBitmapFetched(data, fromId = false) {\n if (!data) {\n this.remove();\n return;\n }\n this.#bitmap = data.bitmap;\n if (!fromId) {\n this.#bitmapId = data.id;\n this.#isSvg = data.isSvg;\n }\n if (data.file) {\n this.#bitmapFileName = data.file.name;\n }\n this.#createCanvas();\n }\n #getBitmapDone() {\n this.#bitmapPromise = null;\n this._uiManager.enableWaiting(false);\n if (!this.#canvas) {\n return;\n }\n if (this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n this.addEditToolbar().then(() => {\n this._editToolbar.hide();\n this._uiManager.editAltText(this, true);\n });\n return;\n }\n if (!this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n this._reportTelemetry({\n action: \"pdfjs.image.image_added\",\n data: {\n alt_text_modal: false,\n alt_text_type: \"empty\"\n }\n });\n try {\n this.mlGuessAltText();\n } catch {\n }\n }\n this.div.focus();\n }\n async mlGuessAltText(imageData = null, updateAltTextData = true) {\n if (this.hasAltTextData()) {\n return null;\n }\n const {\n mlManager\n } = this._uiManager;\n if (!mlManager) {\n throw new Error(\"No ML.\");\n }\n if (!await mlManager.isEnabledFor(\"altText\")) {\n throw new Error(\"ML isn't enabled for alt text.\");\n }\n const {\n data,\n width,\n height\n } = imageData || this.copyCanvas(null, null, true).imageData;\n const response = await mlManager.guess({\n name: \"altText\",\n request: {\n data,\n width,\n height,\n channels: data.length / (width * height)\n }\n });\n if (!response) {\n throw new Error(\"No response from the AI service.\");\n }\n if (response.error) {\n throw new Error(\"Error from the AI service.\");\n }\n if (response.cancel) {\n return null;\n }\n if (!response.output) {\n throw new Error(\"No valid response from the AI service.\");\n }\n const altText = response.output;\n await this.setGuessedAltText(altText);\n if (updateAltTextData && !this.hasAltTextData()) {\n this.altTextData = {\n alt: altText,\n decorative: false\n };\n }\n return altText;\n }\n #getBitmap() {\n if (this.#bitmapId) {\n this._uiManager.enableWaiting(true);\n this._uiManager.imageManager.getFromId(this.#bitmapId).then((data) => this.#getBitmapFetched(data, true)).finally(() => this.#getBitmapDone());\n return;\n }\n if (this.#bitmapUrl) {\n const url = this.#bitmapUrl;\n this.#bitmapUrl = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager.getFromUrl(url).then((data) => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n return;\n }\n if (this.#bitmapFile) {\n const file = this.#bitmapFile;\n this.#bitmapFile = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager.getFromFile(file).then((data) => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n return;\n }\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.accept = SupportedImageMimeTypes.join(\",\");\n const signal = this._uiManager._signal;\n this.#bitmapPromise = new Promise((resolve) => {\n input.addEventListener(\"change\", async () => {\n if (!input.files || input.files.length === 0) {\n this.remove();\n } else {\n this._uiManager.enableWaiting(true);\n const data = await this._uiManager.imageManager.getFromFile(input.files[0]);\n this._reportTelemetry({\n action: \"pdfjs.image.image_selected\",\n data: {\n alt_text_modal: this._uiManager.useNewAltTextFlow\n }\n });\n this.#getBitmapFetched(data);\n }\n resolve();\n }, {\n signal\n });\n input.addEventListener(\"cancel\", () => {\n this.remove();\n resolve();\n }, {\n signal\n });\n }).finally(() => this.#getBitmapDone());\n input.click();\n }\n remove() {\n if (this.#bitmapId) {\n this.#bitmap = null;\n this._uiManager.imageManager.deleteId(this.#bitmapId);\n this.#canvas?.remove();\n this.#canvas = null;\n if (this.#resizeTimeoutId) {\n clearTimeout(this.#resizeTimeoutId);\n this.#resizeTimeoutId = null;\n }\n }\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n if (this.#bitmapId) {\n this.#getBitmap();\n }\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (this.#bitmapId && this.#canvas === null) {\n this.#getBitmap();\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n onceAdded(focus) {\n this._isDraggable = true;\n if (focus) {\n this.div.focus();\n }\n }\n isEmpty() {\n return !(this.#bitmapPromise || this.#bitmap || this.#bitmapUrl || this.#bitmapFile || this.#bitmapId || this.#missingCanvas);\n }\n get toolbarButtons() {\n return [[\"altText\", this.createAltText()]];\n }\n get isResizable() {\n return true;\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this._isCopy) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.div.hidden = true;\n this.createAltText();\n if (!this.#missingCanvas) {\n if (this.#bitmap) {\n this.#createCanvas();\n } else {\n this.#getBitmap();\n }\n }\n if (this._isCopy) {\n this._moveAfterPaste(baseX, baseY);\n }\n this._uiManager.addShouldRescale(this);\n return this.div;\n }\n setCanvas(annotationElementId, canvas) {\n const {\n id: bitmapId,\n bitmap\n } = this._uiManager.imageManager.getFromCanvas(annotationElementId, canvas);\n canvas.remove();\n if (bitmapId && this._uiManager.imageManager.isValidId(bitmapId)) {\n this.#bitmapId = bitmapId;\n if (bitmap) {\n this.#bitmap = bitmap;\n }\n this.#missingCanvas = false;\n this.#createCanvas();\n }\n }\n _onResized() {\n this.onScaleChanging();\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\n if (this.#resizeTimeoutId !== null) {\n clearTimeout(this.#resizeTimeoutId);\n }\n const TIME_TO_WAIT = 200;\n this.#resizeTimeoutId = setTimeout(() => {\n this.#resizeTimeoutId = null;\n this.#drawBitmap();\n }, TIME_TO_WAIT);\n }\n #createCanvas() {\n const {\n div\n } = this;\n let {\n width,\n height\n } = this.#bitmap;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const MAX_RATIO = 0.75;\n if (this.width) {\n width = this.width * pageWidth;\n height = this.height * pageHeight;\n } else if (width > MAX_RATIO * pageWidth || height > MAX_RATIO * pageHeight) {\n const factor = Math.min(MAX_RATIO * pageWidth / width, MAX_RATIO * pageHeight / height);\n width *= factor;\n height *= factor;\n }\n this._uiManager.enableWaiting(false);\n const canvas = this.#canvas = document.createElement(\"canvas\");\n canvas.setAttribute(\"role\", \"img\");\n this.addContainer(canvas);\n this.width = width / pageWidth;\n this.height = height / pageHeight;\n this.setDims();\n if (this._initialOptions?.isCentered) {\n this.center();\n } else {\n this.fixAndSetPosition();\n }\n this._initialOptions = null;\n if (!this._uiManager.useNewAltTextWhenAddingImage || !this._uiManager.useNewAltTextFlow || this.annotationElementId) {\n div.hidden = false;\n }\n this.#drawBitmap();\n if (!this.#hasBeenAddedInUndoStack) {\n this.parent.addUndoableEditor(this);\n this.#hasBeenAddedInUndoStack = true;\n }\n this._reportTelemetry({\n action: \"inserted_image\"\n });\n if (this.#bitmapFileName) {\n this.div.setAttribute(\"aria-description\", this.#bitmapFileName);\n }\n if (!this.annotationElementId) {\n this._uiManager.a11yAlert(\"pdfjs-editor-stamp-added-alert\");\n }\n }\n copyCanvas(maxDataDimension, maxPreviewDimension, createImageData = false) {\n if (!maxDataDimension) {\n maxDataDimension = 224;\n }\n const {\n width: bitmapWidth,\n height: bitmapHeight\n } = this.#bitmap;\n const outputScale = new OutputScale();\n let bitmap = this.#bitmap;\n let width = bitmapWidth, height = bitmapHeight;\n let canvas = null;\n if (maxPreviewDimension) {\n if (bitmapWidth > maxPreviewDimension || bitmapHeight > maxPreviewDimension) {\n const ratio = Math.min(maxPreviewDimension / bitmapWidth, maxPreviewDimension / bitmapHeight);\n width = Math.floor(bitmapWidth * ratio);\n height = Math.floor(bitmapHeight * ratio);\n }\n canvas = document.createElement(\"canvas\");\n const scaledWidth = canvas.width = Math.ceil(width * outputScale.sx);\n const scaledHeight = canvas.height = Math.ceil(height * outputScale.sy);\n if (!this.#isSvg) {\n bitmap = this.#scaleBitmap(scaledWidth, scaledHeight);\n }\n const ctx = canvas.getContext(\"2d\");\n ctx.filter = this._uiManager.hcmFilter;\n let white = \"white\", black = \"#cfcfd8\";\n if (this._uiManager.hcmFilter !== \"none\") {\n black = \"black\";\n } else if (ColorScheme.isDarkMode) {\n white = \"#8f8f9d\";\n black = \"#42414d\";\n }\n const boxDim = 15;\n const boxDimWidth = boxDim * outputScale.sx;\n const boxDimHeight = boxDim * outputScale.sy;\n const pattern = new OffscreenCanvas(boxDimWidth * 2, boxDimHeight * 2);\n const patternCtx = pattern.getContext(\"2d\");\n patternCtx.fillStyle = white;\n patternCtx.fillRect(0, 0, boxDimWidth * 2, boxDimHeight * 2);\n patternCtx.fillStyle = black;\n patternCtx.fillRect(0, 0, boxDimWidth, boxDimHeight);\n patternCtx.fillRect(boxDimWidth, boxDimHeight, boxDimWidth, boxDimHeight);\n ctx.fillStyle = ctx.createPattern(pattern, \"repeat\");\n ctx.fillRect(0, 0, scaledWidth, scaledHeight);\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n }\n let imageData = null;\n if (createImageData) {\n let dataWidth, dataHeight;\n if (outputScale.symmetric && bitmap.width < maxDataDimension && bitmap.height < maxDataDimension) {\n dataWidth = bitmap.width;\n dataHeight = bitmap.height;\n } else {\n bitmap = this.#bitmap;\n if (bitmapWidth > maxDataDimension || bitmapHeight > maxDataDimension) {\n const ratio = Math.min(maxDataDimension / bitmapWidth, maxDataDimension / bitmapHeight);\n dataWidth = Math.floor(bitmapWidth * ratio);\n dataHeight = Math.floor(bitmapHeight * ratio);\n if (!this.#isSvg) {\n bitmap = this.#scaleBitmap(dataWidth, dataHeight);\n }\n }\n }\n const offscreen = new OffscreenCanvas(dataWidth, dataHeight);\n const offscreenCtx = offscreen.getContext(\"2d\", {\n willReadFrequently: true\n });\n offscreenCtx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, dataWidth, dataHeight);\n imageData = {\n width: dataWidth,\n height: dataHeight,\n data: offscreenCtx.getImageData(0, 0, dataWidth, dataHeight).data\n };\n }\n return {\n canvas,\n width,\n height,\n imageData\n };\n }\n #scaleBitmap(width, height) {\n const {\n width: bitmapWidth,\n height: bitmapHeight\n } = this.#bitmap;\n let newWidth = bitmapWidth;\n let newHeight = bitmapHeight;\n let bitmap = this.#bitmap;\n while (newWidth > 2 * width || newHeight > 2 * height) {\n const prevWidth = newWidth;\n const prevHeight = newHeight;\n if (newWidth > 2 * width) {\n newWidth = newWidth >= 16384 ? Math.floor(newWidth / 2) - 1 : Math.ceil(newWidth / 2);\n }\n if (newHeight > 2 * height) {\n newHeight = newHeight >= 16384 ? Math.floor(newHeight / 2) - 1 : Math.ceil(newHeight / 2);\n }\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n bitmap = offscreen.transferToImageBitmap();\n }\n return bitmap;\n }\n #drawBitmap() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const {\n width,\n height\n } = this;\n const outputScale = new OutputScale();\n const scaledWidth = Math.ceil(width * parentWidth * outputScale.sx);\n const scaledHeight = Math.ceil(height * parentHeight * outputScale.sy);\n const canvas = this.#canvas;\n if (!canvas || canvas.width === scaledWidth && canvas.height === scaledHeight) {\n return;\n }\n canvas.width = scaledWidth;\n canvas.height = scaledHeight;\n const bitmap = this.#isSvg ? this.#bitmap : this.#scaleBitmap(scaledWidth, scaledHeight);\n const ctx = canvas.getContext(\"2d\");\n ctx.filter = this._uiManager.hcmFilter;\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n }\n #serializeBitmap(toUrl) {\n if (toUrl) {\n if (this.#isSvg) {\n const url = this._uiManager.imageManager.getSvgUrl(this.#bitmapId);\n if (url) {\n return url;\n }\n }\n const canvas = document.createElement(\"canvas\");\n ({\n width: canvas.width,\n height: canvas.height\n } = this.#bitmap);\n const ctx = canvas.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0);\n return canvas.toDataURL();\n }\n if (this.#isSvg) {\n const [pageWidth, pageHeight] = this.pageDimensions;\n const width = Math.round(this.width * pageWidth * PixelsPerInch.PDF_TO_CSS_UNITS);\n const height = Math.round(this.height * pageHeight * PixelsPerInch.PDF_TO_CSS_UNITS);\n const offscreen = new OffscreenCanvas(width, height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0, this.#bitmap.width, this.#bitmap.height, 0, 0, width, height);\n return offscreen.transferToImageBitmap();\n }\n return structuredClone(this.#bitmap);\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n let missingCanvas = false;\n if (data instanceof StampAnnotationElement) {\n const {\n data: {\n rect: rect2,\n rotation,\n id,\n structParent,\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n container,\n parent: {\n page: {\n pageNumber\n }\n },\n canvas\n } = data;\n let bitmapId2, bitmap2;\n if (canvas) {\n delete data.canvas;\n ({\n id: bitmapId2,\n bitmap: bitmap2\n } = uiManager.imageManager.getFromCanvas(container.id, canvas));\n canvas.remove();\n } else {\n missingCanvas = true;\n data._hasNoCanvas = true;\n }\n const altText = (await parent._structTree.getAriaAttributes(`${AnnotationPrefix}${id}`))?.get(\"aria-label\") || \"\";\n initialData = data = {\n annotationType: AnnotationEditorType.STAMP,\n bitmapId: bitmapId2,\n bitmap: bitmap2,\n pageIndex: pageNumber - 1,\n rect: rect2.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n accessibilityData: {\n decorative: false,\n altText\n },\n isSvg: false,\n structParent,\n popupRef,\n richText,\n comment: contentsObj?.str || null,\n creationDate,\n modificationDate\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n const {\n rect,\n bitmap,\n bitmapUrl,\n bitmapId,\n isSvg,\n accessibilityData\n } = data;\n if (missingCanvas) {\n uiManager.addMissingCanvas(data.id, editor);\n editor.#missingCanvas = true;\n } else if (bitmapId && uiManager.imageManager.isValidId(bitmapId)) {\n editor.#bitmapId = bitmapId;\n if (bitmap) {\n editor.#bitmap = bitmap;\n }\n } else {\n editor.#bitmapUrl = bitmapUrl;\n }\n editor.#isSvg = isSvg;\n const [parentWidth, parentHeight] = editor.pageDimensions;\n editor.width = (rect[2] - rect[0]) / parentWidth;\n editor.height = (rect[3] - rect[1]) / parentHeight;\n if (accessibilityData) {\n editor.altTextData = accessibilityData;\n }\n editor._initialData = initialData;\n if (data.comment) {\n editor.setCommentData(data);\n }\n editor.#hasBeenAddedInUndoStack = !!initialData;\n return editor;\n }\n serialize(isForCopying = false, context = null) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const serialized = Object.assign(super.serialize(isForCopying), {\n bitmapId: this.#bitmapId,\n isSvg: this.#isSvg\n });\n this.addComment(serialized);\n if (isForCopying) {\n serialized.bitmapUrl = this.#serializeBitmap(true);\n serialized.accessibilityData = this.serializeAltText(true);\n serialized.isCopy = true;\n return serialized;\n }\n const {\n decorative,\n altText\n } = this.serializeAltText(false);\n if (!decorative && altText) {\n serialized.accessibilityData = {\n type: \"Figure\",\n alt: altText\n };\n }\n if (this.annotationElementId) {\n const changes = this.#hasElementChanged(serialized);\n if (changes.isSame) {\n return null;\n }\n if (changes.isSameAltText) {\n delete serialized.accessibilityData;\n } else {\n serialized.accessibilityData.structParent = this._initialData.structParent ?? -1;\n }\n serialized.id = this.annotationElementId;\n delete serialized.bitmapId;\n return serialized;\n }\n if (context === null) {\n return serialized;\n }\n context.stamps ||= /* @__PURE__ */ new Map();\n const area = this.#isSvg ? (serialized.rect[2] - serialized.rect[0]) * (serialized.rect[3] - serialized.rect[1]) : null;\n if (!context.stamps.has(this.#bitmapId)) {\n context.stamps.set(this.#bitmapId, {\n area,\n serialized\n });\n serialized.bitmap = this.#serializeBitmap(false);\n } else if (this.#isSvg) {\n const prevData = context.stamps.get(this.#bitmapId);\n if (area > prevData.area) {\n prevData.area = area;\n prevData.serialized.bitmap.close();\n prevData.serialized.bitmap = this.#serializeBitmap(false);\n }\n }\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n pageIndex,\n accessibilityData: {\n altText\n }\n } = this._initialData;\n const isSamePageIndex = serialized.pageIndex === pageIndex;\n const isSameAltText = (serialized.accessibilityData?.alt || \"\") === altText;\n return {\n isSame: !this.hasEditedComment && !this._hasBeenMoved && !this._hasBeenResized && isSamePageIndex && isSameAltText,\n isSameAltText\n };\n }\n renderAnnotationElement(annotation) {\n if (this.deleted) {\n annotation.hide();\n return null;\n }\n annotation.updateEdited({\n rect: this.getPDFRect(),\n popup: this.comment\n });\n return null;\n }\n}\nclass AnnotationEditorLayer {\n #accessibilityManager;\n #allowClick = false;\n #annotationLayer = null;\n #clickAC = null;\n #editorFocusTimeoutId = null;\n #editors = /* @__PURE__ */ new Map();\n #hadPointerDown = false;\n #isDisabling = false;\n #isEnabling = false;\n #drawingAC = null;\n #focusedElement = null;\n #textLayer = null;\n #textSelectionAC = null;\n #textLayerDblClickAC = null;\n #lastPointerDownTimestamp = -1;\n #uiManager;\n static _initialized = false;\n static #editorTypes = new Map([FreeTextEditor, InkEditor, StampEditor, HighlightEditor, SignatureEditor].map((type) => [type._editorType, type]));\n constructor({\n uiManager,\n pageIndex,\n div,\n structTreeLayer,\n accessibilityManager,\n annotationLayer,\n drawLayer,\n textLayer,\n viewport,\n l10n\n }) {\n const editorTypes = [...AnnotationEditorLayer.#editorTypes.values()];\n if (!AnnotationEditorLayer._initialized) {\n AnnotationEditorLayer._initialized = true;\n for (const editorType of editorTypes) {\n editorType.initialize(l10n, uiManager);\n }\n }\n uiManager.registerEditorTypes(editorTypes);\n this.#uiManager = uiManager;\n this.pageIndex = pageIndex;\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationLayer = annotationLayer;\n this.viewport = viewport;\n this.#textLayer = textLayer;\n this.drawLayer = drawLayer;\n this._structTree = structTreeLayer;\n this.#uiManager.addLayer(this);\n }\n get isEmpty() {\n return this.#editors.size === 0;\n }\n get isInvisible() {\n return this.isEmpty && this.#uiManager.getMode() === AnnotationEditorType.NONE;\n }\n updateToolbar(options) {\n this.#uiManager.updateToolbar(options);\n }\n updateMode(mode = this.#uiManager.getMode()) {\n this.#cleanup();\n switch (mode) {\n case AnnotationEditorType.NONE:\n this.div.classList.toggle(\"nonEditing\", true);\n this.disableTextSelection();\n this.togglePointerEvents(false);\n this.toggleAnnotationLayerPointerEvents(true);\n this.disableClick();\n return;\n case AnnotationEditorType.INK:\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.enableClick();\n break;\n case AnnotationEditorType.HIGHLIGHT:\n this.enableTextSelection();\n this.togglePointerEvents(false);\n this.disableClick();\n break;\n default:\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.enableClick();\n }\n this.toggleAnnotationLayerPointerEvents(false);\n const {\n classList\n } = this.div;\n classList.toggle(\"nonEditing\", false);\n if (mode === AnnotationEditorType.POPUP) {\n classList.toggle(\"commentEditing\", true);\n } else {\n classList.toggle(\"commentEditing\", false);\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.toggle(`${editorType._type}Editing`, mode === editorType._editorType);\n }\n }\n this.div.hidden = false;\n }\n hasTextLayer(textLayer) {\n return textLayer === this.#textLayer?.div;\n }\n setEditingState(isEditing) {\n this.#uiManager.setEditingState(isEditing);\n }\n addCommands(params) {\n this.#uiManager.addCommands(params);\n }\n cleanUndoStack(type) {\n this.#uiManager.cleanUndoStack(type);\n }\n toggleDrawing(enabled = false) {\n this.div.classList.toggle(\"drawing\", !enabled);\n }\n togglePointerEvents(enabled = false) {\n this.div.classList.toggle(\"disabled\", !enabled);\n }\n toggleAnnotationLayerPointerEvents(enabled = false) {\n this.#annotationLayer?.div.classList.toggle(\"disabled\", !enabled);\n }\n get #allEditorsIterator() {\n return this.#editors.size !== 0 ? this.#editors.values() : this.#uiManager.getEditors(this.pageIndex);\n }\n async enable() {\n this.#isEnabling = true;\n this.div.tabIndex = 0;\n this.togglePointerEvents(true);\n this.div.classList.toggle(\"nonEditing\", false);\n this.#textLayerDblClickAC?.abort();\n this.#textLayerDblClickAC = null;\n const annotationElementIds = /* @__PURE__ */ new Set();\n for (const editor of this.#allEditorsIterator) {\n editor.enableEditing();\n editor.show(true);\n if (editor.annotationElementId) {\n this.#uiManager.removeChangedExistingAnnotation(editor);\n annotationElementIds.add(editor.annotationElementId);\n }\n }\n const annotationLayer = this.#annotationLayer;\n if (annotationLayer) {\n for (const editable of annotationLayer.getEditableAnnotations()) {\n editable.hide();\n if (this.#uiManager.isDeletedAnnotationElement(editable.data.id)) {\n continue;\n }\n if (annotationElementIds.has(editable.data.id)) {\n continue;\n }\n const editor = await this.deserialize(editable);\n if (!editor) {\n continue;\n }\n this.addOrRebuild(editor);\n editor.enableEditing();\n }\n }\n this.#isEnabling = false;\n this.#uiManager._eventBus.dispatch(\"editorsrendered\", {\n source: this,\n pageNumber: this.pageIndex + 1\n });\n }\n disable() {\n this.#isDisabling = true;\n this.div.tabIndex = -1;\n this.togglePointerEvents(false);\n this.div.classList.toggle(\"nonEditing\", true);\n if (this.#textLayer && !this.#textLayerDblClickAC) {\n this.#textLayerDblClickAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#textLayerDblClickAC);\n this.#textLayer.div.addEventListener(\"pointerdown\", (e) => {\n const DBL_CLICK_THRESHOLD = 500;\n const {\n clientX,\n clientY,\n timeStamp\n } = e;\n const lastPointerDownTimestamp = this.#lastPointerDownTimestamp;\n if (timeStamp - lastPointerDownTimestamp > DBL_CLICK_THRESHOLD) {\n this.#lastPointerDownTimestamp = timeStamp;\n return;\n }\n this.#lastPointerDownTimestamp = -1;\n const {\n classList: classList2\n } = this.div;\n classList2.toggle(\"getElements\", true);\n const elements = document.elementsFromPoint(clientX, clientY);\n classList2.toggle(\"getElements\", false);\n if (!this.div.contains(elements[0])) {\n return;\n }\n let id;\n const regex = new RegExp(`^${AnnotationEditorPrefix}[0-9]+$`);\n for (const element of elements) {\n if (regex.test(element.id)) {\n id = element.id;\n break;\n }\n }\n if (!id) {\n return;\n }\n const editor = this.#editors.get(id);\n if (editor?.annotationElementId === null) {\n e.stopPropagation();\n e.preventDefault();\n editor.dblclick(e);\n }\n }, {\n signal,\n capture: true\n });\n }\n const annotationLayer = this.#annotationLayer;\n if (annotationLayer) {\n const changedAnnotations = /* @__PURE__ */ new Map();\n const resetAnnotations = /* @__PURE__ */ new Map();\n for (const editor of this.#allEditorsIterator) {\n editor.disableEditing();\n if (!editor.annotationElementId) {\n editor.updateFakeAnnotationElement(annotationLayer);\n continue;\n }\n if (editor.serialize() !== null) {\n changedAnnotations.set(editor.annotationElementId, editor);\n continue;\n } else {\n resetAnnotations.set(editor.annotationElementId, editor);\n }\n this.getEditableAnnotation(editor.annotationElementId)?.show();\n editor.remove();\n }\n const editables = annotationLayer.getEditableAnnotations();\n for (const editable of editables) {\n const {\n id\n } = editable.data;\n if (this.#uiManager.isDeletedAnnotationElement(id)) {\n editable.updateEdited({\n deleted: true\n });\n continue;\n }\n let editor = resetAnnotations.get(id);\n if (editor) {\n editor.resetAnnotationElement(editable);\n editor.show(false);\n editable.show();\n continue;\n }\n editor = changedAnnotations.get(id);\n if (editor) {\n this.#uiManager.addChangedExistingAnnotation(editor);\n if (editor.renderAnnotationElement(editable)) {\n editor.show(false);\n }\n }\n editable.show();\n }\n }\n this.#cleanup();\n if (this.isEmpty) {\n this.div.hidden = true;\n }\n const {\n classList\n } = this.div;\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.remove(`${editorType._type}Editing`);\n }\n this.disableTextSelection();\n this.toggleAnnotationLayerPointerEvents(true);\n this.#isDisabling = false;\n }\n getEditableAnnotation(id) {\n return this.#annotationLayer?.getEditableAnnotation(id) || null;\n }\n setActiveEditor(editor) {\n const currentActive = this.#uiManager.getActive();\n if (currentActive === editor) {\n return;\n }\n this.#uiManager.setActiveEditor(editor);\n }\n enableTextSelection() {\n this.div.tabIndex = -1;\n if (this.#textLayer?.div && !this.#textSelectionAC) {\n this.#textSelectionAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#textSelectionAC);\n this.#textLayer.div.addEventListener(\"pointerdown\", this.#textLayerPointerDown.bind(this), {\n signal\n });\n this.#textLayer.div.classList.add(\"highlighting\");\n }\n }\n disableTextSelection() {\n this.div.tabIndex = 0;\n if (this.#textLayer?.div && this.#textSelectionAC) {\n this.#textSelectionAC.abort();\n this.#textSelectionAC = null;\n this.#textLayer.div.classList.remove(\"highlighting\");\n }\n }\n #textLayerPointerDown(event) {\n this.#uiManager.unselectAll();\n const {\n target\n } = event;\n if (target === this.#textLayer.div || (target.getAttribute(\"role\") === \"img\" || target.classList.contains(\"endOfContent\")) && this.#textLayer.div.contains(target)) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n this.#uiManager.showAllEditors(\"highlight\", true, true);\n this.#textLayer.div.classList.add(\"free\");\n this.toggleDrawing();\n HighlightEditor.startHighlighting(this, this.#uiManager.direction === \"ltr\", {\n target: this.#textLayer.div,\n x: event.x,\n y: event.y\n });\n this.#textLayer.div.addEventListener(\"pointerup\", () => {\n this.#textLayer.div.classList.remove(\"free\");\n this.toggleDrawing(true);\n }, {\n once: true,\n signal: this.#uiManager._signal\n });\n event.preventDefault();\n }\n }\n enableClick() {\n if (this.#clickAC) {\n return;\n }\n this.#clickAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#clickAC);\n this.div.addEventListener(\"pointerdown\", this.pointerdown.bind(this), {\n signal\n });\n const pointerup = this.pointerup.bind(this);\n this.div.addEventListener(\"pointerup\", pointerup, {\n signal\n });\n this.div.addEventListener(\"pointercancel\", pointerup, {\n signal\n });\n }\n disableClick() {\n this.#clickAC?.abort();\n this.#clickAC = null;\n }\n attach(editor) {\n this.#editors.set(editor.id, editor);\n const {\n annotationElementId\n } = editor;\n if (annotationElementId && this.#uiManager.isDeletedAnnotationElement(annotationElementId)) {\n this.#uiManager.removeDeletedAnnotationElement(editor);\n }\n }\n detach(editor) {\n this.#editors.delete(editor.id);\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n if (!this.#isDisabling && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor);\n }\n }\n remove(editor) {\n this.detach(editor);\n this.#uiManager.removeEditor(editor);\n editor.div.remove();\n editor.isAttachedToDOM = false;\n }\n changeParent(editor) {\n if (editor.parent === this) {\n return;\n }\n if (editor.parent && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor.annotationElementId);\n AnnotationEditor.deleteAnnotationElement(editor);\n editor.annotationElementId = null;\n }\n this.attach(editor);\n editor.parent?.detach(editor);\n editor.setParent(this);\n if (editor.div && editor.isAttachedToDOM) {\n editor.div.remove();\n this.div.append(editor.div);\n }\n }\n add(editor) {\n if (editor.parent === this && editor.isAttachedToDOM) {\n return;\n }\n this.changeParent(editor);\n this.#uiManager.addEditor(editor);\n this.attach(editor);\n if (!editor.isAttachedToDOM) {\n const div = editor.render();\n this.div.append(div);\n editor.isAttachedToDOM = true;\n }\n editor.fixAndSetPosition();\n editor.onceAdded(!this.#isEnabling);\n this.#uiManager.addToAnnotationStorage(editor);\n editor._reportTelemetry(editor.telemetryInitialData);\n }\n moveEditorInDOM(editor) {\n if (!editor.isAttachedToDOM) {\n return;\n }\n const {\n activeElement\n } = document;\n if (editor.div.contains(activeElement) && !this.#editorFocusTimeoutId) {\n editor._focusEventsAllowed = false;\n this.#editorFocusTimeoutId = setTimeout(() => {\n this.#editorFocusTimeoutId = null;\n if (!editor.div.contains(document.activeElement)) {\n editor.div.addEventListener(\"focusin\", () => {\n editor._focusEventsAllowed = true;\n }, {\n once: true,\n signal: this.#uiManager._signal\n });\n activeElement.focus();\n } else {\n editor._focusEventsAllowed = true;\n }\n }, 0);\n }\n editor._structTreeParentId = this.#accessibilityManager?.moveElementInDOM(this.div, editor.div, editor.contentDiv, true);\n }\n addOrRebuild(editor) {\n if (editor.needsToBeRebuilt()) {\n editor.parent ||= this;\n editor.rebuild();\n editor.show();\n } else {\n this.add(editor);\n }\n }\n addUndoableEditor(editor) {\n const cmd = () => editor._uiManager.rebuild(editor);\n const undo = () => {\n editor.remove();\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: false\n });\n }\n getEditorByUID(uid) {\n for (const editor of this.#editors.values()) {\n if (editor.uid === uid) {\n return editor;\n }\n }\n return null;\n }\n getNextId() {\n return this.#uiManager.getId();\n }\n get #currentEditorType() {\n return AnnotationEditorLayer.#editorTypes.get(this.#uiManager.getMode());\n }\n combinedSignal(ac) {\n return this.#uiManager.combinedSignal(ac);\n }\n #createNewEditor(params) {\n const editorType = this.#currentEditorType;\n return editorType ? new editorType.prototype.constructor(params) : null;\n }\n canCreateNewEmptyEditor() {\n return this.#currentEditorType?.canCreateNewEmptyEditor();\n }\n async pasteEditor(options, params) {\n this.updateToolbar(options);\n await this.#uiManager.updateMode(options.mode);\n const {\n offsetX,\n offsetY\n } = this.#getCenterPoint();\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: offsetX,\n y: offsetY,\n uiManager: this.#uiManager,\n isCentered: true,\n ...params\n });\n if (editor) {\n this.add(editor);\n }\n }\n async deserialize(data) {\n return await AnnotationEditorLayer.#editorTypes.get(data.annotationType ?? data.annotationEditorType)?.deserialize(data, this, this.#uiManager) || null;\n }\n createAndAddNewEditor(event, isCentered, data = {}) {\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: event.offsetX,\n y: event.offsetY,\n uiManager: this.#uiManager,\n isCentered,\n ...data\n });\n if (editor) {\n this.add(editor);\n }\n return editor;\n }\n get boundingClientRect() {\n return this.div.getBoundingClientRect();\n }\n #getCenterPoint() {\n const {\n x,\n y,\n width,\n height\n } = this.boundingClientRect;\n const tlX = Math.max(0, x);\n const tlY = Math.max(0, y);\n const brX = Math.min(window.innerWidth, x + width);\n const brY = Math.min(window.innerHeight, y + height);\n const centerX = (tlX + brX) / 2 - x;\n const centerY = (tlY + brY) / 2 - y;\n const [offsetX, offsetY] = this.viewport.rotation % 180 === 0 ? [centerX, centerY] : [centerY, centerX];\n return {\n offsetX,\n offsetY\n };\n }\n addNewEditor(data = {}) {\n this.createAndAddNewEditor(this.#getCenterPoint(), true, data);\n }\n setSelected(editor) {\n this.#uiManager.setSelected(editor);\n }\n toggleSelected(editor) {\n this.#uiManager.toggleSelected(editor);\n }\n unselect(editor) {\n this.#uiManager.unselect(editor);\n }\n pointerup(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n if (!this.#hadPointerDown) {\n return;\n }\n this.#hadPointerDown = false;\n if (this.#currentEditorType?.isDrawer && this.#currentEditorType.supportMultipleDrawings) {\n return;\n }\n if (!this.#allowClick) {\n this.#allowClick = true;\n return;\n }\n const currentMode = this.#uiManager.getMode();\n if (currentMode === AnnotationEditorType.STAMP || currentMode === AnnotationEditorType.SIGNATURE) {\n this.#uiManager.unselectAll();\n return;\n }\n this.createAndAddNewEditor(event, false);\n }\n pointerdown(event) {\n if (this.#uiManager.getMode() === AnnotationEditorType.HIGHLIGHT) {\n this.enableTextSelection();\n }\n if (this.#hadPointerDown) {\n this.#hadPointerDown = false;\n return;\n }\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n this.#hadPointerDown = true;\n if (this.#currentEditorType?.isDrawer) {\n this.startDrawingSession(event);\n return;\n }\n const editor = this.#uiManager.getActive();\n this.#allowClick = !editor || editor.isEmpty();\n }\n startDrawingSession(event) {\n this.div.focus({\n preventScroll: true\n });\n if (this.#drawingAC) {\n this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\n return;\n }\n this.#uiManager.setCurrentDrawingSession(this);\n this.#drawingAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#drawingAC);\n this.div.addEventListener(\"blur\", ({\n relatedTarget\n }) => {\n if (relatedTarget && !this.div.contains(relatedTarget)) {\n this.#focusedElement = null;\n this.commitOrRemove();\n }\n }, {\n signal\n });\n this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\n }\n pause(on) {\n if (on) {\n const {\n activeElement\n } = document;\n if (this.div.contains(activeElement)) {\n this.#focusedElement = activeElement;\n }\n return;\n }\n if (this.#focusedElement) {\n setTimeout(() => {\n this.#focusedElement?.focus();\n this.#focusedElement = null;\n }, 0);\n }\n }\n endDrawingSession(isAborted = false) {\n if (!this.#drawingAC) {\n return null;\n }\n this.#uiManager.setCurrentDrawingSession(null);\n this.#drawingAC.abort();\n this.#drawingAC = null;\n this.#focusedElement = null;\n return this.#currentEditorType.endDrawing(isAborted);\n }\n findNewParent(editor, x, y) {\n const layer = this.#uiManager.findParent(x, y);\n if (layer === null || layer === this) {\n return false;\n }\n layer.changeParent(editor);\n return true;\n }\n commitOrRemove() {\n if (this.#drawingAC) {\n this.endDrawingSession();\n return true;\n }\n return false;\n }\n onScaleChanging() {\n if (!this.#drawingAC) {\n return;\n }\n this.#currentEditorType.onScaleChangingWhenDrawing(this);\n }\n destroy() {\n this.commitOrRemove();\n if (this.#uiManager.getActive()?.parent === this) {\n this.#uiManager.commitOrRemove();\n this.#uiManager.setActiveEditor(null);\n }\n if (this.#editorFocusTimeoutId) {\n clearTimeout(this.#editorFocusTimeoutId);\n this.#editorFocusTimeoutId = null;\n }\n for (const editor of this.#editors.values()) {\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n editor.setParent(null);\n editor.isAttachedToDOM = false;\n editor.div.remove();\n }\n this.div = null;\n this.#editors.clear();\n this.#uiManager.removeLayer(this);\n }\n #cleanup() {\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.remove();\n }\n }\n }\n render({\n viewport\n }) {\n this.viewport = viewport;\n setLayerDimensions(this.div, viewport);\n for (const editor of this.#uiManager.getEditors(this.pageIndex)) {\n this.add(editor);\n editor.rebuild();\n }\n this.updateMode();\n }\n update({\n viewport\n }) {\n this.#uiManager.commitOrRemove();\n this.#cleanup();\n const oldRotation = this.viewport.rotation;\n const rotation = viewport.rotation;\n this.viewport = viewport;\n setLayerDimensions(this.div, {\n rotation\n });\n if (oldRotation !== rotation) {\n for (const editor of this.#editors.values()) {\n editor.rotate(rotation);\n }\n }\n }\n get pageDimensions() {\n const {\n pageWidth,\n pageHeight\n } = this.viewport.rawDims;\n return [pageWidth, pageHeight];\n }\n get scale() {\n return this.#uiManager.viewParameters.realScale;\n }\n}\nclass DrawLayer {\n #parent = null;\n #mapping = /* @__PURE__ */ new Map();\n #toUpdate = /* @__PURE__ */ new Map();\n static #id = 0;\n constructor({\n pageIndex\n }) {\n this.pageIndex = pageIndex;\n }\n setParent(parent) {\n if (!this.#parent) {\n this.#parent = parent;\n return;\n }\n if (this.#parent !== parent) {\n if (this.#mapping.size > 0) {\n for (const root of this.#mapping.values()) {\n root.remove();\n parent.append(root);\n }\n }\n this.#parent = parent;\n }\n }\n static get _svgFactory() {\n return shadow(this, \"_svgFactory\", new DOMSVGFactory());\n }\n static #setBox(element, [x, y, width, height]) {\n const {\n style\n } = element;\n style.top = `${100 * y}%`;\n style.left = `${100 * x}%`;\n style.width = `${100 * width}%`;\n style.height = `${100 * height}%`;\n }\n #createSVG() {\n const svg = DrawLayer._svgFactory.create(1, 1, true);\n this.#parent.append(svg);\n svg.setAttribute(\"aria-hidden\", true);\n return svg;\n }\n #createClipPath(defs, pathId) {\n const clipPath = DrawLayer._svgFactory.createElement(\"clipPath\");\n defs.append(clipPath);\n const clipPathId = `clip_${pathId}`;\n clipPath.setAttribute(\"id\", clipPathId);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n const clipPathUse = DrawLayer._svgFactory.createElement(\"use\");\n clipPath.append(clipPathUse);\n clipPathUse.setAttribute(\"href\", `#${pathId}`);\n clipPathUse.classList.add(\"clip\");\n return clipPathId;\n }\n #updateProperties(element, properties) {\n for (const [key, value] of Object.entries(properties)) {\n if (value === null) {\n element.removeAttribute(key);\n } else {\n element.setAttribute(key, value);\n }\n }\n }\n draw(properties, isPathUpdatable = false, hasClip = false) {\n const id = DrawLayer.#id++;\n const root = this.#createSVG();\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_p${this.pageIndex}_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n if (isPathUpdatable) {\n this.#toUpdate.set(id, path);\n }\n const clipPathId = hasClip ? this.#createClipPath(defs, pathId) : null;\n const use = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use);\n use.setAttribute(\"href\", `#${pathId}`);\n this.updateProperties(root, properties);\n this.#mapping.set(id, root);\n return {\n id,\n clipPathId: `url(#${clipPathId})`\n };\n }\n drawOutline(properties, mustRemoveSelfIntersections) {\n const id = DrawLayer.#id++;\n const root = this.#createSVG();\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_p${this.pageIndex}_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n let maskId;\n if (mustRemoveSelfIntersections) {\n const mask = DrawLayer._svgFactory.createElement(\"mask\");\n defs.append(mask);\n maskId = `mask_p${this.pageIndex}_${id}`;\n mask.setAttribute(\"id\", maskId);\n mask.setAttribute(\"maskUnits\", \"objectBoundingBox\");\n const rect = DrawLayer._svgFactory.createElement(\"rect\");\n mask.append(rect);\n rect.setAttribute(\"width\", \"1\");\n rect.setAttribute(\"height\", \"1\");\n rect.setAttribute(\"fill\", \"white\");\n const use = DrawLayer._svgFactory.createElement(\"use\");\n mask.append(use);\n use.setAttribute(\"href\", `#${pathId}`);\n use.setAttribute(\"stroke\", \"none\");\n use.setAttribute(\"fill\", \"black\");\n use.setAttribute(\"fill-rule\", \"nonzero\");\n use.classList.add(\"mask\");\n }\n const use1 = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use1);\n use1.setAttribute(\"href\", `#${pathId}`);\n if (maskId) {\n use1.setAttribute(\"mask\", `url(#${maskId})`);\n }\n const use2 = use1.cloneNode();\n root.append(use2);\n use1.classList.add(\"mainOutline\");\n use2.classList.add(\"secondaryOutline\");\n this.updateProperties(root, properties);\n this.#mapping.set(id, root);\n return id;\n }\n finalizeDraw(id, properties) {\n this.#toUpdate.delete(id);\n this.updateProperties(id, properties);\n }\n updateProperties(elementOrId, properties) {\n if (!properties) {\n return;\n }\n const {\n root,\n bbox,\n rootClass,\n path\n } = properties;\n const element = typeof elementOrId === \"number\" ? this.#mapping.get(elementOrId) : elementOrId;\n if (!element) {\n return;\n }\n if (root) {\n this.#updateProperties(element, root);\n }\n if (bbox) {\n DrawLayer.#setBox(element, bbox);\n }\n if (rootClass) {\n const {\n classList\n } = element;\n for (const [className, value] of Object.entries(rootClass)) {\n classList.toggle(className, value);\n }\n }\n if (path) {\n const defs = element.firstChild;\n const pathElement = defs.firstChild;\n this.#updateProperties(pathElement, path);\n }\n }\n updateParent(id, layer) {\n if (layer === this) {\n return;\n }\n const root = this.#mapping.get(id);\n if (!root) {\n return;\n }\n layer.#parent.append(root);\n this.#mapping.delete(id);\n layer.#mapping.set(id, root);\n }\n remove(id) {\n this.#toUpdate.delete(id);\n if (this.#parent === null) {\n return;\n }\n this.#mapping.get(id).remove();\n this.#mapping.delete(id);\n }\n destroy() {\n this.#parent = null;\n for (const root of this.#mapping.values()) {\n root.remove();\n }\n this.#mapping.clear();\n this.#toUpdate.clear();\n }\n}\n{\n globalThis._pdfjsTestingUtils = {\n HighlightOutliner\n };\n}\nglobalThis.pdfjsLib = {\n AbortException: AbortException$1,\n AnnotationEditorLayer,\n AnnotationEditorParamsType,\n AnnotationEditorType,\n AnnotationEditorUIManager,\n AnnotationLayer,\n AnnotationMode,\n AnnotationType,\n applyOpacity,\n build,\n ColorPicker,\n createValidAbsoluteUrl,\n CSSConstants,\n DOMSVGFactory,\n DrawLayer,\n FeatureTest: util_FeatureTest,\n fetchData,\n findContrastColor,\n getDocument,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n getRGB,\n getUuid,\n getXfaPageViewport,\n GlobalWorkerOptions,\n ImageKind: util_ImageKind,\n InvalidPDFException: InvalidPDFException$1,\n isDataScheme,\n isPdfFile,\n isValidExplicitDest,\n MathClamp,\n noContextMenu,\n normalizeUnicode,\n OPS,\n OutputScale,\n PasswordResponses,\n PDFDataRangeTransport,\n PDFDateString,\n PDFWorker,\n PermissionFlag,\n PixelsPerInch,\n RenderingCancelledException,\n renderRichText,\n ResponseException: ResponseException$1,\n setLayerDimensions,\n shadow,\n SignatureExtractor,\n stopEvent,\n SupportedImageMimeTypes,\n TextLayer,\n TouchManager,\n updateUrlHash,\n Util,\n VerbosityLevel,\n version,\n XfaLayer\n};\nconst pdfjs = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n AbortException: AbortException$1,\n AnnotationEditorLayer,\n AnnotationEditorParamsType,\n AnnotationEditorType,\n AnnotationEditorUIManager,\n AnnotationLayer,\n AnnotationMode,\n AnnotationType,\n CSSConstants,\n ColorPicker,\n DOMSVGFactory,\n DrawLayer,\n FeatureTest: util_FeatureTest,\n GlobalWorkerOptions,\n ImageKind: util_ImageKind,\n InvalidPDFException: InvalidPDFException$1,\n MathClamp,\n OPS,\n OutputScale,\n PDFDataRangeTransport,\n PDFDateString,\n PDFWorker,\n PasswordResponses,\n PermissionFlag,\n PixelsPerInch,\n RenderingCancelledException,\n ResponseException: ResponseException$1,\n SignatureExtractor,\n SupportedImageMimeTypes,\n TextLayer,\n TouchManager,\n Util,\n VerbosityLevel,\n XfaLayer,\n applyOpacity,\n build,\n createValidAbsoluteUrl,\n fetchData,\n findContrastColor,\n getDocument,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n getRGB,\n getUuid,\n getXfaPageViewport,\n isDataScheme,\n isPdfFile,\n isValidExplicitDest,\n noContextMenu,\n normalizeUnicode,\n renderRichText,\n setLayerDimensions,\n shadow,\n stopEvent,\n updateUrlHash,\n version\n}, Symbol.toStringTag, { value: \"Module\" }));\nclass InvalidPDFException2 extends Error {\n /**\n * Create a new InvalidPDFException.\n * @param message - Optional error message.\n * @param cause - Optional underlying cause (preserved on modern runtimes).\n */\n constructor(message, cause) {\n if (cause !== void 0) {\n super(message ?? \"Invalid PDF\", { cause });\n } else {\n super(message ?? \"Invalid PDF\");\n }\n this.name = \"InvalidPDFException\";\n Object.setPrototypeOf(this, InvalidPDFException2.prototype);\n if (typeof Error.captureStackTrace === \"function\") {\n Error.captureStackTrace(this, InvalidPDFException2);\n }\n }\n}\nclass PasswordException2 extends Error {\n /**\n * Create a new PasswordException.\n * @param message - Optional error message.\n * @param cause - Optional underlying cause.\n */\n constructor(message, cause) {\n if (cause !== void 0) {\n super(message ?? \"Password required or incorrect\", { cause });\n } else {\n super(message ?? \"Password required or incorrect\");\n }\n this.name = \"PasswordException\";\n Object.setPrototypeOf(this, PasswordException2.prototype);\n if (typeof Error.captureStackTrace === \"function\") {\n Error.captureStackTrace(this, PasswordException2);\n }\n }\n}\nclass FormatError2 extends Error {\n /**\n * Create a new FormatError.\n * @param message - Optional message describing the format problem.\n * @param cause - Optional underlying cause.\n */\n constructor(message, cause) {\n if (cause !== void 0) {\n super(message ?? \"PDF format error\", { cause });\n } else {\n super(message ?? \"PDF format error\");\n }\n this.name = \"FormatError\";\n Object.setPrototypeOf(this, FormatError2.prototype);\n if (typeof Error.captureStackTrace === \"function\") {\n Error.captureStackTrace(this, FormatError2);\n }\n }\n}\nclass UnknownErrorException2 extends Error {\n /**\n * Create a new UnknownErrorException.\n * @param message - Optional error message.\n * @param details - Optional additional details from the PDF library.\n * @param cause - Optional underlying cause.\n */\n constructor(message, details, cause) {\n if (cause !== void 0) {\n super(message ?? \"Unknown error\", { cause });\n } else {\n super(message ?? \"Unknown error\");\n }\n this.name = \"UnknownErrorException\";\n Object.setPrototypeOf(this, UnknownErrorException2.prototype);\n if (typeof Error.captureStackTrace === \"function\") {\n Error.captureStackTrace(this, UnknownErrorException2);\n }\n this.details = details;\n }\n}\nclass ResponseException2 extends Error {\n /**\n * Create a new ResponseException.\n * @param message - Optional error message.\n * @param status - Optional numeric HTTP/status code.\n * @param missing - Optional field describing missing resources.\n * @param cause - Optional underlying cause.\n */\n constructor(message, status, missing, cause) {\n if (cause !== void 0) {\n super(message ?? \"Response error\", { cause });\n } else {\n super(message ?? \"Response error\");\n }\n this.name = \"ResponseException\";\n Object.setPrototypeOf(this, ResponseException2.prototype);\n if (typeof Error.captureStackTrace === \"function\") {\n Error.captureStackTrace(this, ResponseException2);\n }\n this.status = status;\n this.missing = missing;\n }\n}\nclass AbortException2 extends Error {\n /**\n * Create a new AbortException.\n * @param message - Optional error message.\n * @param cause - Optional underlying cause.\n */\n constructor(message, cause) {\n if (cause !== void 0) {\n super(message ?? \"Operation aborted\", { cause });\n } else {\n super(message ?? \"Operation aborted\");\n }\n this.name = \"AbortException\";\n Object.setPrototypeOf(this, AbortException2.prototype);\n if (typeof Error.captureStackTrace === \"function\") {\n Error.captureStackTrace(this, AbortException2);\n }\n }\n}\nfunction getException(error) {\n if (error instanceof Error) {\n switch (error.name) {\n case \"InvalidPDFException\":\n return new InvalidPDFException2(error.message, error);\n case \"PasswordException\":\n return new PasswordException2(error.message, error);\n case \"FormatError\":\n return new FormatError2(error.message, error);\n case \"UnknownErrorException\":\n return new UnknownErrorException2(error.message, error.details, error);\n case \"ResponseException\":\n return new ResponseException2(error.message, error.status, error.missing, error);\n case \"AbortException\":\n return new AbortException2(error.message, error);\n // add other mappings as needed\n default:\n return error;\n }\n }\n return new Error(String(error));\n}\nclass Shape {\n static tolerance = 2;\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}\nclass Point extends Shape {\n x;\n y;\n constructor(x, y) {\n super();\n this.x = x;\n this.y = y;\n }\n equal(point) {\n return point.x === this.x && point.y === this.y;\n }\n transform(matrix) {\n const p = Shape.applyTransform([this.x, this.y], matrix);\n this.x = p[0];\n this.y = p[1];\n return this;\n }\n}\nvar LineDirection = /* @__PURE__ */ ((LineDirection2) => {\n LineDirection2[LineDirection2[\"None\"] = 0] = \"None\";\n LineDirection2[LineDirection2[\"Horizontal\"] = 1] = \"Horizontal\";\n LineDirection2[LineDirection2[\"Vertical\"] = 2] = \"Vertical\";\n return LineDirection2;\n})(LineDirection || {});\nclass Line extends Shape {\n from;\n to;\n direction = 0;\n length = 0;\n intersections = [];\n gaps = [];\n constructor(from, to) {\n super();\n this.from = from;\n this.to = to;\n this.init();\n }\n init() {\n let from = this.from;\n let to = this.to;\n if (Math.abs(from.y - to.y) < Shape.tolerance) {\n this.direction = 1;\n to.y = from.y;\n if (from.x > to.x) {\n const temp = from;\n from = to;\n to = temp;\n }\n this.length = to.x - from.x;\n } else if (Math.abs(from.x - to.x) < Shape.tolerance) {\n this.direction = 2;\n to.x = from.x;\n if (from.y > to.y) {\n const temp = from;\n from = to;\n to = temp;\n }\n this.length = to.y - from.y;\n }\n this.from = from;\n this.to = to;\n }\n _valid = void 0;\n get valid() {\n if (this._valid === void 0) {\n this._valid = this.direction !== 0 && this.length > Shape.tolerance;\n }\n return this._valid;\n }\n get normalized() {\n if (this.direction === 1) {\n return new Line(\n new Point(this.from.x - Shape.tolerance, this.from.y),\n new Point(this.to.x + Shape.tolerance, this.from.y)\n );\n } else if (this.direction === 2) {\n return new Line(\n new Point(this.from.x, this.from.y - Shape.tolerance),\n new Point(this.from.x, this.to.y + Shape.tolerance)\n );\n }\n return this;\n }\n addGap(line) {\n this.gaps.push(line);\n }\n containsPoint(p) {\n if (this.direction === 2) {\n return this.from.x === p.x && p.y >= this.from.y && p.y <= this.to.y;\n } else if (this.direction === 1) {\n return this.from.y === p.y && p.x >= this.from.x && p.x <= this.to.x;\n }\n return false;\n }\n // // todo implement\n // public containsLine(l:Line):boolean{\n // if(this.direction === LineDirection.Vertical && l.direction === LineDirection.Vertical){\n // return this.from.x === l.from.x\n // }\n // else if(this.direction === LineDirection.Horizontal && l.direction === LineDirection.Horizontal){\n // return this.from.y === l.from.y\n // }\n // return false\n // }\n addIntersectionPoint(point) {\n for (const intPoint of this.intersections) {\n if (intPoint.equal(point)) return;\n }\n this.intersections.push(point);\n }\n intersection(line) {\n let result;\n if (!this.valid || !line.valid) {\n return result;\n }\n const thisNormalized = this.normalized;\n const lineNormalized = line.normalized;\n if (this.direction === 1 && line.direction === 2) {\n const x = lineNormalized.from.x;\n const y = thisNormalized.from.y;\n const isOk = x > thisNormalized.from.x && x < thisNormalized.to.x && y > lineNormalized.from.y && y < lineNormalized.to.y;\n if (isOk) {\n const intPoint = new Point(x, y);\n this.addIntersectionPoint(intPoint);\n line.addIntersectionPoint(intPoint);\n result = intPoint;\n }\n } else if (this.direction === 2 && line.direction === 1) {\n const x = thisNormalized.from.x;\n const y = lineNormalized.from.y;\n const isOk = x > lineNormalized.from.x && x < lineNormalized.to.x && y > thisNormalized.from.y && y < thisNormalized.to.y;\n if (isOk) {\n const intPoint = new Point(x, y);\n this.addIntersectionPoint(intPoint);\n line.addIntersectionPoint(intPoint);\n result = intPoint;\n }\n }\n return result;\n }\n transform(matrix) {\n const p1 = this.from.transform(matrix);\n const p2 = this.to.transform(matrix);\n const x = Math.min(p1.x, p2.x);\n const y = Math.min(p1.y, p2.y);\n const width = Math.abs(p1.x - p2.x);\n const height = Math.abs(p1.y - p2.y);\n this.from = new Point(x, y);\n this.to = new Point(x + width, y + height);\n this.init();\n return this;\n }\n}\nclass TableData {\n minXY;\n maxXY;\n rows;\n rowPivots;\n colPivots;\n constructor(minXY, maxXY, rowPivots, colPivots) {\n this.minXY = minXY;\n this.maxXY = maxXY;\n this.rows = [];\n this.rowPivots = rowPivots;\n this.colPivots = colPivots;\n }\n findCell(x, y) {\n if (x >= this.minXY.x && y >= this.minXY.y && x <= this.maxXY.x && y <= this.maxXY.y) {\n for (const row of this.rows) {\n for (const cell of row) {\n if (cell.minXY.x <= x && cell.minXY.y <= y && cell.maxXY.x >= x && cell.maxXY.y >= y) {\n return cell;\n }\n }\n }\n }\n return void 0;\n }\n get cellCount() {\n return this.rows.reduce((acc, row) => acc + row.length, 0);\n }\n get rowCount() {\n return this.rows.length;\n }\n check() {\n const virtualCellCount = (this.colPivots.length - 1) * (this.rowPivots.length - 1);\n let allCellCount = 0;\n for (const row of this.rows) {\n for (const cell of row) {\n const count = (cell.colspan || 1) * (cell.rowspan || 1);\n allCellCount += count;\n }\n }\n if (virtualCellCount !== allCellCount) {\n return false;\n }\n return true;\n }\n toArray() {\n const tableArr = [];\n for (const row of this.rows) {\n const rowArr = [];\n for (const cell of row) {\n let text = cell.text.join(\"\");\n text = text.replace(/^[\\s]+|[\\s]+$/g, \"\");\n text = text.trim();\n rowArr.push(text);\n }\n tableArr.push(rowArr);\n }\n return tableArr;\n }\n}\nclass Table {\n hLines = [];\n vLines = [];\n constructor(line) {\n if (line.direction === LineDirection.Horizontal) {\n this.hLines.push(line);\n } else if (line.direction === LineDirection.Vertical) {\n this.vLines.push(line);\n }\n }\n get isValid() {\n return this.hLines.length + this.vLines.length > 4;\n }\n get rowPivots() {\n const rowSet = /* @__PURE__ */ new Set();\n for (const line of this.hLines) {\n rowSet.add(line.from.y);\n }\n return [...rowSet].sort((a, b) => a - b);\n }\n get colPivots() {\n const colSet = /* @__PURE__ */ new Set();\n for (const line of this.vLines) {\n colSet.add(line.from.x);\n }\n return [...colSet].sort((a, b) => a - b);\n }\n add(line) {\n const hasIntersection = this.intersection(line);\n if (hasIntersection) {\n if (line.direction === LineDirection.Horizontal) {\n this.hLines.push(line);\n return true;\n } else if (line.direction === LineDirection.Vertical) {\n this.vLines.push(line);\n return true;\n }\n }\n return false;\n }\n intersection(line) {\n let flag = false;\n if (!line.valid) return flag;\n if (line.direction === LineDirection.Horizontal) {\n for (const vLine of this.vLines) {\n const p = line.intersection(vLine);\n if (p) {\n flag = true;\n }\n }\n } else if (line.direction === LineDirection.Vertical) {\n for (const hLine of this.hLines) {\n const p = line.intersection(hLine);\n if (p) {\n flag = true;\n }\n }\n }\n return flag;\n }\n getSameHorizontal(line) {\n const same = [line];\n const other = [];\n while (this.hLines.length > 0) {\n const hLine = this.hLines.shift();\n if (!hLine) continue;\n if (hLine.from.y === line.from.y) {\n same.push(hLine);\n } else {\n other.push(hLine);\n }\n }\n this.hLines = other;\n return same;\n }\n getSameVertical(line) {\n const same = [line];\n const other = [];\n while (this.vLines.length > 0) {\n const vLine = this.vLines.shift();\n if (!vLine) continue;\n if (vLine.from.x === line.from.x) {\n same.push(vLine);\n } else {\n other.push(vLine);\n }\n }\n this.vLines = other;\n return same;\n }\n mergeHorizontalLines(lines) {\n lines.sort((l1, l2) => l1.from.x - l2.from.x);\n const minX = lines[0].from.x;\n const maxX = lines[lines.length - 1].to.x;\n const resultLine = new Line(new Point(minX, lines[0].from.y), new Point(maxX, lines[0].from.y));\n for (let i = 1; i < lines.length; i++) {\n const prevLine = lines[i - 1];\n const currLine = lines[i];\n if (Math.abs(prevLine.to.x - currLine.from.x) > Shape.tolerance) {\n const gapLine = new Line(\n new Point(prevLine.to.x, prevLine.from.y),\n new Point(currLine.from.x, currLine.from.y)\n );\n resultLine.addGap(gapLine);\n }\n }\n return resultLine;\n }\n mergeVerticalLines(lines) {\n lines.sort((l1, l2) => l1.from.y - l2.from.y);\n const minY = lines[0].from.y;\n const maxY = lines[lines.length - 1].to.y;\n const resultLine = new Line(new Point(lines[0].from.x, minY), new Point(lines[0].from.x, maxY));\n for (let i = 1; i < lines.length; i++) {\n const prevLine = lines[i - 1];\n const currLine = lines[i];\n if (Math.abs(prevLine.to.y - currLine.from.y) > Shape.tolerance) {\n const gapLine = new Line(new Point(prevLine.to.x, prevLine.to.y), new Point(prevLine.to.x, currLine.from.y));\n resultLine.addGap(gapLine);\n }\n }\n return resultLine;\n }\n normalize() {\n this.hLines = this.hLines.filter((l) => l.intersections.length > 1);\n this.vLines = this.vLines.filter((l) => l.intersections.length > 1);\n this.hLines.sort((l1, l2) => l1.from.y - l2.from.y);\n this.vLines.sort((l1, l2) => l1.from.x - l2.from.x);\n const newHLines = [];\n while (this.hLines.length > 0) {\n const line = this.hLines.shift();\n if (!line) continue;\n const lines = this.getSameHorizontal(line);\n const merged = this.mergeHorizontalLines(lines);\n newHLines.push(merged);\n }\n this.hLines = newHLines;\n const newVLines = [];\n while (this.vLines.length > 0) {\n const line = this.vLines.shift();\n if (!line) continue;\n const lines = this.getSameVertical(line);\n const merged = this.mergeVerticalLines(lines);\n newVLines.push(merged);\n }\n this.vLines = newVLines;\n }\n verticalExists(line, y1, y2) {\n if (line.direction !== LineDirection.Vertical) {\n throw new Error(\"Line is not vertical\");\n }\n if (y1 >= y2) {\n throw new Error(\"y1 must be less than y2\");\n }\n if (line.from.y <= y1 && line.to.y >= y2) {\n for (const gap of line.gaps) {\n if (gap.from.y <= y1 && gap.to.y >= y2) {\n return false;\n }\n }\n return true;\n }\n return false;\n }\n horizontalExists(line, x1, x2) {\n if (line.direction !== LineDirection.Horizontal) {\n throw new Error(\"Line is not horizontal\");\n }\n if (x1 >= x2) {\n throw new Error(\"x1 must be less than x2\");\n }\n if (line.from.x <= x1 && line.to.x >= x2) {\n for (const gap of line.gaps) {\n if (gap.from.x <= x1 && gap.to.x >= x2) {\n return false;\n }\n }\n return true;\n }\n return false;\n }\n findBottomLineIndex(h2Index, xMiddle) {\n for (let i = h2Index; i < this.hLines.length; i++) {\n const hLine = this.hLines[i];\n if (hLine.from.x <= xMiddle && hLine.to.x >= xMiddle) {\n return i;\n }\n }\n return -1;\n }\n findVerticalLineIndexs(topHLine, yMiddle) {\n const result = [];\n for (let i = 0; i < this.vLines.length; i++) {\n const vLine = this.vLines[i];\n if (vLine.from.y <= yMiddle && vLine.to.y >= yMiddle && topHLine.intersection(vLine)) {\n result.push(i);\n }\n }\n return result;\n }\n getRow(h1Index, h2Index, yMiddle) {\n const tableRow = [];\n const topHLine = this.hLines[h1Index];\n const vLineIndexes = this.findVerticalLineIndexs(topHLine, yMiddle);\n for (let i = 1; i < vLineIndexes.length; i++) {\n const leftVLine = this.vLines[vLineIndexes[i - 1]];\n const rightVLine = this.vLines[vLineIndexes[i]];\n const xMiddle = (leftVLine.from.x + rightVLine.from.x) / 2;\n const bottomHLineIndex = this.findBottomLineIndex(h2Index, xMiddle);\n const bottomHLine = this.hLines[bottomHLineIndex];\n const tableCell = {\n minXY: new Point(leftVLine.from.x, topHLine.from.y),\n maxXY: new Point(rightVLine.from.x, bottomHLine.from.y),\n width: rightVLine.from.x - leftVLine.from.x,\n height: bottomHLine.from.y - topHLine.from.y,\n text: []\n };\n const colSpan = vLineIndexes[i] - vLineIndexes[i - 1];\n const rowSpan = bottomHLineIndex - h1Index;\n if (colSpan > 1) {\n tableCell.colspan = colSpan;\n }\n if (rowSpan > 1) {\n tableCell.rowspan = rowSpan;\n }\n tableRow.push(tableCell);\n }\n return tableRow;\n }\n toData() {\n const rowPivots = this.rowPivots;\n const colPivots = this.colPivots;\n const minXY = new Point(colPivots[0], rowPivots[0]);\n const maxXY = new Point(colPivots[colPivots.length - 1], rowPivots[rowPivots.length - 1]);\n const result = new TableData(minXY, maxXY, rowPivots, colPivots);\n for (let h1 = 1; h1 < this.hLines.length; h1++) {\n const prevHLine = this.hLines[h1 - 1];\n const currHLine = this.hLines[h1];\n const YMiddle = (prevHLine.from.y + currHLine.from.y) / 2;\n const rowData = this.getRow(h1 - 1, h1, YMiddle);\n result.rows.push(rowData);\n }\n return result;\n }\n}\nclass LineStore {\n hLines = [];\n vLines = [];\n add(line) {\n if (line.valid) {\n if (line.direction === LineDirection.Horizontal) {\n this.hLines.push(line);\n } else if (line.direction === LineDirection.Vertical) {\n this.vLines.push(line);\n }\n }\n }\n addRectangle(rect) {\n for (const line of rect.getLines()) {\n this.add(line);\n }\n }\n getTableData() {\n const result = [];\n const tables = this.getTables();\n for (const table of tables) {\n const data = table.toData();\n if (data) {\n result.push(data);\n }\n }\n return result;\n }\n getTables() {\n const result = [];\n while (this.hLines.length !== 0) {\n const hLine = this.hLines.shift();\n if (!hLine) continue;\n const filled = this.tryFill(result, hLine);\n if (filled) continue;\n const table = new Table(hLine);\n this.fillTable(table);\n result.push(table);\n }\n while (this.vLines.length !== 0) {\n const vLine = this.vLines.shift();\n if (!vLine) continue;\n const filled = this.tryFill(result, vLine);\n if (filled) continue;\n const table = new Table(vLine);\n this.fillTable(table);\n result.push(table);\n }\n const validTables = result.filter((t) => t.isValid);\n for (const table of validTables) {\n table.normalize();\n }\n return validTables;\n }\n normalize() {\n this.normalizeHorizontal();\n this.normalizeVertical();\n }\n normalizeHorizontal() {\n this.hLines.sort((l1, l2) => l1.from.y - l2.from.y);\n const newLines = [];\n let sameY = [];\n for (const line of this.hLines) {\n if (sameY.length === 0) {\n sameY.push(line);\n } else if (Math.abs(sameY[0]?.from.y - line.from.y) < Shape.tolerance) {\n sameY.push(line);\n } else {\n const merged = this.margeHorizontalLines(sameY);\n newLines.push(...merged);\n sameY = [line];\n }\n }\n if (sameY.length > 0) {\n const merged = this.margeHorizontalLines(sameY);\n newLines.push(...merged);\n }\n this.hLines = newLines;\n }\n normalizeVertical() {\n this.vLines.sort((l1, l2) => l1.from.x - l2.from.x);\n const newLines = [];\n let sameX = [];\n for (const line of this.vLines) {\n if (sameX.length === 0) {\n sameX.push(line);\n } else if (Math.abs(sameX[0]?.from.x - line.from.x) < Shape.tolerance) {\n sameX.push(line);\n } else {\n const merged = this.margeVerticalLines(sameX);\n newLines.push(...merged);\n sameX = [line];\n }\n }\n if (sameX.length > 0) {\n const merged = this.margeVerticalLines(sameX);\n newLines.push(...merged);\n }\n this.vLines = newLines;\n }\n fillTable(table) {\n const newVLines = [];\n const newHLines = [];\n for (const vLine of this.vLines) {\n if (!table.add(vLine)) {\n newVLines.push(vLine);\n }\n }\n for (const hLine of this.hLines) {\n if (!table.add(hLine)) {\n newHLines.push(hLine);\n }\n }\n this.hLines = newHLines;\n this.vLines = newVLines;\n }\n tryFill(tables, line) {\n for (const table of tables) {\n if (table.add(line)) {\n this.fillTable(table);\n return true;\n }\n }\n return false;\n }\n margeHorizontalLines(sameYLines) {\n const result = [];\n sameYLines.sort((l1, l2) => l1.from.x - l2.from.x);\n const sameY = sameYLines[0]?.from.y;\n if (sameY === void 0) return result;\n let minX = Number.MAX_SAFE_INTEGER;\n let maxX = Number.MIN_SAFE_INTEGER;\n for (const line of sameYLines) {\n if (line.from.x - maxX < Shape.tolerance) {\n if (line.from.x < minX) {\n minX = line.from.x;\n }\n if (line.to.x > maxX) {\n maxX = line.to.x;\n }\n } else {\n if (maxX > minX) {\n result.push(new Line(new Point(minX, sameY), new Point(maxX, sameY)));\n }\n minX = line.from.x;\n maxX = line.to.x;\n }\n }\n const last = result[result.length - 1];\n if (last) {\n if (last.from.x !== minX && last.to.x !== maxX) {\n result.push(new Line(new Point(minX, sameY), new Point(maxX, sameY)));\n }\n } else {\n result.push(new Line(new Point(minX, sameY), new Point(maxX, sameY)));\n }\n return result;\n }\n margeVerticalLines(sameXLines) {\n const result = [];\n sameXLines.sort((l1, l2) => l1.from.y - l2.from.y);\n const sameX = sameXLines[0]?.from.x;\n if (sameX === void 0) return result;\n let minY = Number.MAX_SAFE_INTEGER;\n let maxY = Number.MIN_SAFE_INTEGER;\n for (const line of sameXLines) {\n if (line.from.y - maxY < Shape.tolerance) {\n if (line.from.y < minY) {\n minY = line.from.y;\n }\n if (line.to.y > maxY) {\n maxY = line.to.y;\n }\n } else {\n if (maxY > minY) {\n result.push(new Line(new Point(sameX, minY), new Point(sameX, maxY)));\n }\n minY = line.from.y;\n maxY = line.to.y;\n }\n }\n const last = result[result.length - 1];\n if (last) {\n if (last.from.y !== minY && last.to.y !== maxY) {\n result.push(new Line(new Point(sameX, minY), new Point(sameX, maxY)));\n }\n } else {\n result.push(new Line(new Point(sameX, minY), new Point(sameX, maxY)));\n }\n return result;\n }\n}\nclass Rectangle extends Shape {\n from;\n width;\n height;\n constructor(from, width, height) {\n super();\n this.from = from;\n this.width = width;\n this.height = height;\n }\n get to() {\n return new Point(this.from.x + this.width, this.from.y + this.height);\n }\n getLines() {\n const to = this.to;\n const lines = [\n new Line(this.from, new Point(to.x, this.from.y)),\n new Line(this.from, new Point(this.from.x, to.y)),\n new Line(new Point(to.x, this.from.y), to),\n new Line(new Point(this.from.x, to.y), to)\n ];\n return lines.filter((l) => l.valid);\n }\n transform(matrix) {\n const p1 = Shape.applyTransform([this.from.x, this.from.y], matrix);\n const p2 = Shape.applyTransform([this.from.x + this.width, this.from.y + this.height], matrix);\n const x = Math.min(p1[0], p2[0]);\n const y = Math.min(p1[1], p2[1]);\n const width = Math.abs(p1[0] - p2[0]);\n const height = Math.abs(p1[1] - p2[1]);\n this.from = new Point(x, y);\n this.width = width;\n this.height = height;\n return this;\n }\n}\nclass ImageResult {\n pages = [];\n total = 0;\n getPageImage(num, name) {\n for (const pageData of this.pages) {\n if (pageData.pageNumber === num) {\n for (const img of pageData.images) {\n if (img.name === name) {\n return img;\n }\n }\n }\n }\n return null;\n }\n constructor(total) {\n this.total = total;\n }\n}\nconst XMP_DATE_PROPERTIES = [\n \"xmp:createdate\",\n \"xmp:modifydate\",\n \"xmp:metadatadate\",\n \"xap:createdate\",\n \"xap:modifydate\",\n \"xap:metadatadate\"\n];\nclass InfoResult {\n // Total number of pages in the PDF document (count of physical pages).\n total;\n /**\n * The PDF 'Info' dictionary. Typical fields include title, author, subject,\n * Creator, Producer and Creation/Modification dates. The exact structure is\n * determined by the PDF and as returned by PDF.js.\n */\n // biome-ignore lint/suspicious/noExplicitAny: <unsupported underline type>\n info;\n // Low-level document metadata object (XMP). Use this to access extended\n // properties that are not present in the Info dictionary.\n metadata;\n /**\n * An array of document fingerprint strings provided by PDF.js. Useful\n * for caching, de-duplication or identifying a document across runs.\n */\n fingerprints;\n /**\n * Permission flags for the document as returned by PDF.js (or null).\n * These flags indicate capabilities such as printing, copying and\n * other restrictions imposed by the PDF security settings.\n */\n permission;\n /**\n * Optional document outline (bookmarks). When present this is the\n * hierarchical navigation structure which viewers use for quick access.\n */\n outline;\n // Results with per-page hyperlink extraction. Empty array by default.\n pages = [];\n /**\n * Collects dates from different sources (Info dictionary and XMP/XAP metadata)\n * and returns them as a DateNode where available. This helps callers compare\n * and choose the most relevant timestamp (for example a creation date vs XMP date).\n */\n getDateNode() {\n const result = {};\n const CreationDate = this.info?.CreationDate;\n if (CreationDate) {\n result.CreationDate = PDFDateString.toDateObject(CreationDate);\n }\n const ModDate = this.info?.ModDate;\n if (ModDate) {\n result.ModDate = PDFDateString.toDateObject(ModDate);\n }\n if (!this.metadata) {\n return result;\n }\n for (const prop of XMP_DATE_PROPERTIES) {\n const value = this.metadata?.get(prop);\n const date = this.parseISODateString(value);\n switch (prop) {\n case XMP_DATE_PROPERTIES[0]:\n result.XmpCreateDate = date;\n break;\n case XMP_DATE_PROPERTIES[1]:\n result.XmpModifyDate = date;\n break;\n case XMP_DATE_PROPERTIES[2]:\n result.XmpMetadataDate = date;\n break;\n case XMP_DATE_PROPERTIES[3]:\n result.XapCreateDate = date;\n break;\n case XMP_DATE_PROPERTIES[4]:\n result.XapModifyDate = date;\n break;\n case XMP_DATE_PROPERTIES[5]:\n result.XapMetadataDate = date;\n break;\n }\n }\n return result;\n }\n /**\n * Try to parse an ISO-8601 date string from XMP/XAP metadata. If the\n * value is falsy or cannot be parsed, undefined is returned to indicate\n * absence or unparsable input.\n */\n parseISODateString(isoDateString) {\n if (!isoDateString) return void 0;\n const parsedDate = Date.parse(isoDateString);\n if (!Number.isNaN(parsedDate)) {\n return new Date(parsedDate);\n }\n return void 0;\n }\n constructor(total) {\n this.total = total;\n }\n}\nfunction setDefaultParseParameters(params) {\n params.lineThreshold = params?.lineThreshold ?? 4.6;\n params.cellThreshold = params?.cellThreshold ?? 7;\n params.cellSeparator = params?.cellSeparator ?? \"\t\";\n params.lineEnforce = params?.lineEnforce ?? true;\n params.pageJoiner = params?.pageJoiner ?? \"\\n-- page_number of total_number --\";\n params.imageThreshold = params?.imageThreshold ?? 80;\n params.imageDataUrl = params?.imageDataUrl ?? true;\n params.imageBuffer = params?.imageBuffer ?? true;\n params.scale = params?.scale ?? 1;\n return params;\n}\nvar PathGeometry = /* @__PURE__ */ ((PathGeometry2) => {\n PathGeometry2[PathGeometry2[\"undefined\"] = 0] = \"undefined\";\n PathGeometry2[PathGeometry2[\"hline\"] = 1] = \"hline\";\n PathGeometry2[PathGeometry2[\"vline\"] = 2] = \"vline\";\n PathGeometry2[PathGeometry2[\"rectangle\"] = 3] = \"rectangle\";\n return PathGeometry2;\n})(PathGeometry || {});\nclass ScreenshotResult {\n pages = [];\n total = 0;\n constructor(total) {\n this.total = total;\n }\n}\nclass TableResult {\n pages = [];\n mergedTables = [];\n total = 0;\n constructor(total) {\n this.total = total;\n }\n}\nclass TextResult {\n pages = [];\n text = \"\";\n total = 0;\n getPageText(num) {\n for (const pageData of this.pages) {\n if (pageData.num === num) return pageData.text;\n }\n return \"\";\n }\n constructor(total) {\n this.total = total;\n }\n}\nclass PDFParse {\n options;\n doc;\n progress = { loaded: -1, total: 0 };\n /**\n * Create a new parser with `LoadParameters`.\n * Converts Node.js `Buffer` data to `Uint8Array` automatically and ensures a default verbosity level.\n * @param options - Initialization parameters.\n */\n constructor(options) {\n if (options.verbosity === void 0) {\n options.verbosity = VerbosityLevel.ERRORS;\n }\n if (typeof Buffer !== \"undefined\" && options.data instanceof Buffer) {\n options.data = new Uint8Array(options.data);\n }\n this.options = options;\n }\n async destroy() {\n if (this.doc) {\n await this.doc.destroy();\n this.doc = void 0;\n }\n }\n // biome-ignore-start lint/suspicious/noExplicitAny: unsupported underline type\n static get isNodeJS() {\n const isNodeJS2 = typeof process === \"object\" && `${process}` === \"[object process]\" && !process.versions.nw && !(process.versions.electron && typeof process.type !== \"undefined\" && process.type !== \"browser\");\n return isNodeJS2;\n }\n static setWorker(workerSrc) {\n if (typeof globalThis.pdfjs === \"undefined\") {\n globalThis.pdfjs = pdfjs;\n }\n if (GlobalWorkerOptions === null) return \"\";\n if (workerSrc !== void 0) {\n GlobalWorkerOptions.workerSrc = workerSrc;\n return GlobalWorkerOptions.workerSrc;\n }\n return GlobalWorkerOptions.workerSrc;\n }\n // biome-ignore-end lint/suspicious/noExplicitAny: unsupported underline type\n /**\n * Load document-level metadata (info, outline, permissions, page labels) and optionally gather per-page link details.\n * @param params - Parse options; set `parsePageInfo` to collect per-page metadata described in `ParseParameters`.\n * @returns Aggregated document metadata in an `InfoResult`.\n */\n async getInfo(params = {}) {\n const doc = await this.load();\n const result = new InfoResult(doc.numPages);\n const { info: info2, metadata } = await doc.getMetadata();\n result.info = info2;\n result.metadata = metadata;\n result.fingerprints = doc.fingerprints;\n result.outline = await doc.getOutline();\n result.permission = await doc.getPermissions();\n const pageLabels = await doc.getPageLabels();\n if (params.parsePageInfo) {\n for (let i = 1; i <= result.total; i++) {\n if (this.shouldParse(i, result.total, params)) {\n const page = await doc.getPage(i);\n const pageLinkResult = await this.getPageLinks(page);\n pageLinkResult.pageLabel = pageLabels?.[page.pageNumber];\n result.pages.push(pageLinkResult);\n page.cleanup();\n }\n }\n }\n return result;\n }\n async getPageLinks(page) {\n const viewport = page.getViewport({ scale: 1 });\n const result = {\n pageNumber: page.pageNumber,\n links: [],\n width: viewport.width,\n height: viewport.height\n };\n const annotations = await page.getAnnotations({ intent: \"display\" }) || [];\n for (const i of annotations) {\n if (i.subtype !== \"Link\") continue;\n const url = i.url ?? i.unsafeUrl;\n if (!url) continue;\n const text = i.overlaidText || \"\";\n result.links.push({ url, text });\n }\n return result;\n }\n /**\n * Extract plain text for each requested page, optionally enriching hyperlinks and enforcing line or cell separators.\n * @param params - Parse options controlling pagination, link handling, and line/cell thresholds.\n * @returns A `TextResult` containing page-wise text and a concatenated document string.\n */\n async getText(params = {}) {\n const doc = await this.load();\n const result = new TextResult(doc.numPages);\n for (let i = 1; i <= result.total; i++) {\n if (this.shouldParse(i, result.total, params)) {\n const page = await doc.getPage(i);\n const text = await this.getPageText(page, params, result.total);\n result.pages.push({\n text,\n num: i\n });\n page.cleanup();\n }\n }\n for (const page of result.pages) {\n if (params.pageJoiner) {\n let pageNumber = params.pageJoiner.replace(\"page_number\", `${page.num}`);\n pageNumber = pageNumber.replace(\"total_number\", `${result.total}`);\n result.text += `${page.text}\n${pageNumber}\n\n`;\n } else {\n result.text += `${page.text}\n\n`;\n }\n }\n return result;\n }\n async load() {\n try {\n if (this.doc === void 0) {\n const loadingTask = getDocument(this.options);\n loadingTask.onProgress = (progress) => {\n this.progress = progress;\n };\n this.doc = await loadingTask.promise;\n }\n return this.doc;\n } catch (error) {\n throw getException(error);\n }\n }\n shouldParse(currentPage, totalPage, params) {\n params.partial = params?.partial ?? [];\n params.first = params?.first ?? 0;\n params.last = params?.last ?? 0;\n if (params.partial.length > 0) {\n if (params.partial.includes(currentPage)) {\n return true;\n }\n return false;\n }\n if (params.first > 0 && params.last > 0) {\n if (currentPage >= params.first && currentPage <= params.last) {\n return true;\n }\n return false;\n }\n if (params.first > 0) {\n if (currentPage <= params.first) {\n return true;\n }\n return false;\n }\n if (params.last > 0) {\n if (currentPage > totalPage - params.last) {\n return true;\n }\n return false;\n }\n return true;\n }\n async getPageText(page, parseParams, total) {\n const viewport = page.getViewport({ scale: 1 });\n const params = setDefaultParseParameters(parseParams);\n const textContent = await page.getTextContent({\n includeMarkedContent: !!params.includeMarkedContent,\n disableNormalization: !!params.disableNormalization\n });\n let links = /* @__PURE__ */ new Map();\n if (params.parseHyperlinks) {\n links = await this.getHyperlinks(page, viewport);\n }\n const strBuf = [];\n let lastX;\n let lastY;\n let lineHeight = 0;\n for (const item of textContent.items) {\n if (!(\"str\" in item)) continue;\n const tm = item.transform ?? item.transform;\n const [x, y] = viewport.convertToViewportPoint(tm[4], tm[5]);\n if (params.parseHyperlinks) {\n const posArr = links.get(item.str) || [];\n const hit = posArr.find((l) => x >= l.rect.left && x <= l.rect.right && y >= l.rect.top && y <= l.rect.bottom);\n if (hit) {\n item.str = `[${item.str}](${hit.url})`;\n }\n }\n if (params.lineEnforce) {\n if (lastY !== void 0 && Math.abs(lastY - y) > params.lineThreshold) {\n const lastItem = strBuf.length ? strBuf[strBuf.length - 1] : void 0;\n const isCurrentItemHasNewLine = item.str.startsWith(\"\\n\") || item.str.trim() === \"\" && item.hasEOL;\n if (lastItem?.endsWith(\"\\n\") === false && !isCurrentItemHasNewLine) {\n const ydiff = Math.abs(lastY - y);\n if (ydiff - 1 > lineHeight) {\n strBuf.push(\"\\n\");\n lineHeight = 0;\n }\n }\n }\n }\n if (params.cellSeparator) {\n if (lastY !== void 0 && Math.abs(lastY - y) < params.lineThreshold) {\n if (lastX !== void 0 && Math.abs(lastX - x) > params.cellThreshold) {\n item.str = `${params.cellSeparator}${item.str}`;\n }\n }\n }\n strBuf.push(item.str);\n lastX = x + item.width;\n lastY = y;\n lineHeight = Math.max(lineHeight, item.height);\n if (item.hasEOL) {\n strBuf.push(\"\\n\");\n }\n if (item.hasEOL || item.str.endsWith(\"\\n\")) {\n lineHeight = 0;\n }\n }\n if (params.itemJoiner) {\n return strBuf.join(params.itemJoiner);\n }\n return strBuf.join(\"\");\n }\n async getHyperlinks(page, viewport) {\n const result = /* @__PURE__ */ new Map();\n const annotations = await page.getAnnotations({ intent: \"display\" }) || [];\n for (const i of annotations) {\n if (i.subtype !== \"Link\") continue;\n const url = i.url ?? i.unsafeUrl;\n if (!url) continue;\n const text = i.overlaidText;\n if (!text) continue;\n const rectVp = viewport.convertToViewportRectangle(i.rect);\n const left = Math.min(rectVp[0], rectVp[2]) - 0.5;\n const top = Math.min(rectVp[1], rectVp[3]) - 0.5;\n const right = Math.max(rectVp[0], rectVp[2]) + 0.5;\n const bottom = Math.max(rectVp[1], rectVp[3]) + 0.5;\n const pos = { rect: { left, top, right, bottom }, url, text, used: false };\n const el = result.get(text);\n if (el) {\n el.push(pos);\n } else {\n result.set(text, [pos]);\n }\n }\n return result;\n }\n /**\n * Extract embedded images from requested pages.\n *\n * Behavior notes:\n * - Pages are selected according to ParseParameters (partial, first, last).\n * - Images smaller than `params.imageThreshold` (width OR height) are skipped.\n * - Returned ImageResult contains per-page PageImages; each image entry includes:\n * - data: Uint8Array (present when params.imageBuffer === true)\n * - dataUrl: string (present when params.imageDataUrl === true)\n * - width, height, kind, name\n * - Works in both Node.js (canvas.toBuffer) and browser (canvas.toDataURL) environments.\n *\n * @param params - ParseParameters controlling page selection, thresholds and output format.\n * @returns Promise<ImageResult> with extracted images grouped by page.\n */\n async getImage(params = {}) {\n const doc = await this.load();\n const result = new ImageResult(doc.numPages);\n setDefaultParseParameters(params);\n for (let i = 1; i <= result.total; i++) {\n if (this.shouldParse(i, result.total, params)) {\n const page = await doc.getPage(i);\n const ops = await page.getOperatorList();\n const pageImages = { pageNumber: i, images: [] };\n result.pages.push(pageImages);\n for (let j = 0; j < ops.fnArray.length; j++) {\n if (ops.fnArray[j] === OPS.paintInlineImageXObject || ops.fnArray[j] === OPS.paintImageXObject) {\n const name = ops.argsArray[j][0];\n const isCommon = page.commonObjs.has(name);\n const imgPromise = isCommon ? this.resolveEmbeddedImage(page.commonObjs, name) : this.resolveEmbeddedImage(page.objs, name);\n const { width, height, kind, data } = await imgPromise;\n if (params.imageThreshold) {\n if (params.imageThreshold >= width || params.imageThreshold >= height) {\n continue;\n }\n }\n const canvasFactory = doc.canvasFactory;\n const canvasAndContext = canvasFactory.create(width, height);\n const context = canvasAndContext.context;\n let imgData = null;\n if (kind === util_ImageKind.RGBA_32BPP) {\n imgData = context.createImageData(width, height);\n imgData.data.set(data);\n } else {\n imgData = context.createImageData(width, height);\n this.convertToRGBA({\n src: data,\n dest: new Uint32Array(imgData.data.buffer),\n width,\n height,\n kind\n });\n }\n context.putImageData(imgData, 0, 0);\n let buffer = new Uint8Array();\n let dataUrl = \"\";\n if (typeof canvasAndContext.canvas.toBuffer === \"function\") {\n let nodeBuffer;\n if (params.imageBuffer) {\n nodeBuffer = canvasAndContext.canvas.toBuffer(\"image/png\");\n buffer = new Uint8Array(nodeBuffer);\n }\n if (params.imageDataUrl) {\n if (nodeBuffer) {\n dataUrl = `data:image/png;base64,${nodeBuffer.toString(\"base64\")}`;\n } else {\n nodeBuffer = canvasAndContext.canvas.toBuffer(\"image/png\");\n buffer = new Uint8Array(nodeBuffer);\n dataUrl = `data:image/png;base64,${nodeBuffer.toString(\"base64\")}`;\n }\n }\n } else {\n if (params.imageBuffer) {\n const imageData = canvasAndContext.context.getImageData(\n 0,\n 0,\n canvasAndContext.canvas.width,\n canvasAndContext.canvas.height\n );\n buffer = new Uint8Array(imageData.data);\n }\n if (params.imageDataUrl) {\n dataUrl = canvasAndContext.canvas.toDataURL(\"image/png\");\n }\n }\n pageImages.images.push({\n data: buffer,\n dataUrl,\n name,\n height,\n width,\n kind\n });\n }\n }\n }\n }\n return result;\n }\n convertToRGBA({\n src,\n dest,\n width,\n height,\n kind\n }) {\n if (kind === util_ImageKind.RGB_24BPP) {\n for (let i = 0, j = 0; i < src.length; i += 3, j++) {\n const r = src[i];\n const g = src[i + 1];\n const b = src[i + 2];\n dest[j] = 255 << 24 | b << 16 | g << 8 | r;\n }\n } else if (kind === util_ImageKind.GRAYSCALE_1BPP) {\n let pixelIndex = 0;\n for (let i = 0; i < src.length; i++) {\n const byte = src[i];\n for (let bit = 7; bit >= 0; bit--) {\n if (pixelIndex >= width * height) break;\n const isWhite = (byte >> bit & 1) === 1;\n const gray = isWhite ? 255 : 0;\n dest[pixelIndex++] = 255 << 24 | gray << 16 | gray << 8 | gray;\n }\n }\n } else if (kind === void 0 || kind === null) {\n const bytesPerPixel = src.length / (width * height);\n if (Math.abs(bytesPerPixel - 3) < 0.1) {\n for (let i = 0, j = 0; i < src.length; i += 3, j++) {\n const r = src[i];\n const g = src[i + 1];\n const b = src[i + 2];\n dest[j] = 255 << 24 | b << 16 | g << 8 | r;\n }\n } else if (Math.abs(bytesPerPixel - 4) < 0.1) {\n for (let i = 0, j = 0; i < src.length; i += 4, j++) {\n const r = src[i];\n const g = src[i + 1];\n const b = src[i + 2];\n const a = src[i + 3];\n dest[j] = a << 24 | b << 16 | g << 8 | r;\n }\n } else if (Math.abs(bytesPerPixel - 1) < 0.1) {\n for (let i = 0; i < src.length; i++) {\n const gray = src[i];\n dest[i] = 255 << 24 | gray << 16 | gray << 8 | gray;\n }\n } else {\n throw new Error(\n `convertToRGBA: Cannot infer image format. kind: ${kind}, bytesPerPixel: ${bytesPerPixel}, width: ${width}, height: ${height}, dataLength: ${src.length}`\n );\n }\n } else {\n throw new Error(\n `convertToRGBA: Unsupported image kind: ${kind}. Available kinds: GRAYSCALE_1BPP=${util_ImageKind.GRAYSCALE_1BPP}, RGB_24BPP=${util_ImageKind.RGB_24BPP}, RGBA_32BPP=${util_ImageKind.RGBA_32BPP}`\n );\n }\n }\n resolveEmbeddedImage(pdfObjects, name) {\n return new Promise((resolve, reject) => {\n pdfObjects.get(name, (imgData) => {\n if (imgData) {\n let dataBuff;\n if (imgData.data instanceof Uint8Array) {\n dataBuff = imgData.data;\n } else if (imgData.data instanceof Uint8ClampedArray) {\n dataBuff = new Uint8Array(imgData.data);\n } else if (imgData.data?.buffer) {\n dataBuff = new Uint8Array(imgData.data.buffer);\n } else if (imgData.bitmap) {\n const canvasFactory = this.doc.canvasFactory;\n const canvasAndContext = canvasFactory.create(imgData.bitmap.width, imgData.bitmap.height);\n canvasAndContext.context.drawImage(imgData.bitmap, 0, 0);\n const imageData = canvasAndContext.context.getImageData(0, 0, imgData.bitmap.width, imgData.bitmap.height);\n dataBuff = new Uint8Array(imageData.data.buffer);\n } else if (ArrayBuffer.isView(imgData.data)) {\n dataBuff = new Uint8Array(imgData.data.buffer, imgData.data.byteOffset, imgData.data.byteLength);\n }\n if (!dataBuff) {\n reject(\n new Error(\n `Image object ${name}: data field is empty or invalid. Available fields: ${Object.keys(imgData).join(\", \")}`\n )\n );\n return;\n }\n if (dataBuff.length === 0) {\n reject(new Error(`Image object ${name}: data buffer is empty (length: 0)`));\n return;\n }\n resolve({ width: imgData.width, height: imgData.height, kind: imgData.kind, data: dataBuff });\n } else {\n reject(new Error(`Image object ${name} not found`));\n }\n });\n });\n }\n /**\n * Render pages to raster screenshots.\n *\n * Behavior notes:\n * - Pages are selected according to ParseParameters (partial, first, last).\n * - Use params.scale for zoom; if params.desiredWidth is specified it takes precedence.\n * - Each ScreenshotResult page contains:\n * - data: Uint8Array (when params.imageBuffer === true)\n * - dataUrl: string (when params.imageDataUrl === true)\n * - pageNumber, width, height, scale\n * - Works in both Node.js (canvas.toBuffer) and browser (canvas.toDataURL) environments.\n *\n * @param parseParams - ParseParameters controlling page selection and render options.\n * @returns Promise<ScreenshotResult> with rendered page images.\n */\n async getScreenshot(parseParams = {}) {\n const params = setDefaultParseParameters(parseParams);\n const doc = await this.load();\n const result = new ScreenshotResult(doc.numPages);\n if (this.doc === void 0) {\n throw new Error(\"PDF document not loaded\");\n }\n for (let i = 1; i <= result.total; i++) {\n if (this.shouldParse(i, result.total, params)) {\n const page = await this.doc.getPage(i);\n let viewport = page.getViewport({ scale: params.scale });\n if (params.desiredWidth) {\n viewport = page.getViewport({ scale: 1 });\n const scale = params.desiredWidth / viewport.width;\n viewport = page.getViewport({ scale });\n }\n const canvasFactory = this.doc.canvasFactory;\n const canvasAndContext = canvasFactory.create(viewport.width, viewport.height);\n const renderContext = {\n canvasContext: canvasAndContext.context,\n viewport,\n canvas: canvasAndContext.canvas\n };\n const renderTask = page.render(renderContext);\n await renderTask.promise;\n let data = new Uint8Array();\n let dataUrl = \"\";\n if (typeof canvasAndContext.canvas.toBuffer === \"function\") {\n let nodeBuffer;\n if (params.imageBuffer) {\n nodeBuffer = canvasAndContext.canvas.toBuffer(\"image/png\");\n data = new Uint8Array(nodeBuffer);\n }\n if (params.imageDataUrl) {\n if (nodeBuffer) {\n dataUrl = `data:image/png;base64,${nodeBuffer.toString(\"base64\")}`;\n } else {\n nodeBuffer = canvasAndContext.canvas.toBuffer(\"image/png\");\n data = new Uint8Array(nodeBuffer);\n dataUrl = `data:image/png;base64,${nodeBuffer.toString(\"base64\")}`;\n }\n }\n } else {\n if (params.imageBuffer) {\n const imageData = canvasAndContext.context.getImageData(\n 0,\n 0,\n canvasAndContext.canvas.width,\n canvasAndContext.canvas.height\n );\n data = new Uint8Array(imageData.data);\n }\n if (params.imageDataUrl) {\n dataUrl = canvasAndContext.canvas.toDataURL(\"image/png\");\n }\n }\n result.pages.push({\n data,\n dataUrl,\n pageNumber: i,\n width: viewport.width,\n height: viewport.height,\n scale: viewport.scale\n });\n page.cleanup();\n }\n }\n return result;\n }\n /**\n * Detect and extract tables from pages by analysing vector drawing operators, then populate cells with text.\n *\n * Behavior notes:\n * - Scans operator lists for rectangles/lines that form table grids (uses PathGeometry and LineStore).\n * - Normalizes detected geometry and matches positioned text to table cells.\n * - Honors ParseParameters for page selection.\n *\n * @param params - ParseParameters controlling which pages to analyse (partial/first/last).\n * @returns Promise<TableResult> containing discovered tables per page.\n */\n async getTable(params = {}) {\n const doc = await this.load();\n const result = new TableResult(doc.numPages);\n if (this.doc === void 0) {\n throw new Error(\"PDF document not loaded\");\n }\n for (let i = 1; i <= result.total; i++) {\n if (this.shouldParse(i, result.total, params)) {\n const page = await this.doc.getPage(i);\n const store = await this.getPageTables(page);\n store.normalize();\n const tableDataArr = store.getTableData();\n await this.fillPageTables(page, tableDataArr);\n const pageTableResult = { num: i, tables: [] };\n for (const table of tableDataArr) {\n pageTableResult.tables.push(table.toArray());\n }\n result.pages.push(pageTableResult);\n page.cleanup();\n }\n }\n return result;\n }\n getPathGeometry(mm) {\n const width = mm[2] - mm[0];\n const height = mm[3] - mm[1];\n if (mm[0] === Infinity) {\n return PathGeometry.undefined;\n }\n if (width > 5 && height > 5) {\n return PathGeometry.rectangle;\n } else if (width > 5 && height === 0) {\n return PathGeometry.hline;\n } else if (width === 0 && height > 5) {\n return PathGeometry.vline;\n }\n return PathGeometry.undefined;\n }\n async getPageTables(page) {\n const lineStore = new LineStore();\n const viewport = page.getViewport({ scale: 1 });\n let transformMatrix = [1, 0, 0, 1, 0, 0];\n const transformStack = [];\n const opList = await page.getOperatorList();\n for (let i = 0; i < opList.fnArray.length; i++) {\n const fn = opList.fnArray[i];\n const args = opList.argsArray[i];\n const op = args?.[0] ?? 0;\n const mm = args?.[2] ?? [Infinity, Infinity, -Infinity, -Infinity];\n if (fn === OPS.constructPath) {\n if (op === OPS.fill) ;\n if (op !== OPS.stroke) {\n continue;\n }\n const pg = this.getPathGeometry(mm);\n if (pg === PathGeometry.rectangle) {\n const rect = new Rectangle(new Point(mm[0], mm[1]), mm[2] - mm[0], mm[3] - mm[1]);\n rect.transform(transformMatrix);\n rect.transform(viewport.transform);\n lineStore.addRectangle(rect);\n } else if (pg === PathGeometry.hline || pg === PathGeometry.vline) {\n const from = new Point(mm[0], mm[1]);\n const to = new Point(mm[2], mm[3]);\n const line = new Line(from, to);\n line.transform(transformMatrix);\n line.transform(viewport.transform);\n lineStore.add(line);\n } else ;\n } else if (fn === OPS.setLineWidth) ;\n else if (fn === OPS.save) {\n transformStack.push(transformMatrix);\n } else if (fn === OPS.restore) {\n const restoredMatrix = transformStack.pop();\n if (restoredMatrix) {\n transformMatrix = restoredMatrix;\n }\n } else if (fn === OPS.transform) {\n transformMatrix = Util.transform(transformMatrix, args);\n }\n }\n return lineStore;\n }\n // private async getPageGeometry(page: PDFPageProxy): Promise<LineStore> {\n // \tconst lineStore: LineStore = new LineStore();\n // \tconst opList = await page.getOperatorList();\n // \tconst viewport = page.getViewport({ scale: 1 });\n // \tlet transformMatrix = [1, 0, 0, 1, 0, 0];\n // \tconst transformStack: Array<Array<number>> = [];\n // \tlet current_x: number = 0;\n // \tlet current_y: number = 0;\n // \tfor (let j = 0; j < opList.fnArray.length; j++) {\n // \t\tconst fn = opList.fnArray[j];\n // \t\tconst args = opList.argsArray[j];\n // \t\tif (fn === pdfjs.OPS.constructPath) {\n // \t\t\twhile (args[0].length) {\n // \t\t\t\tconst op = args[0].shift();\n // \t\t\t\tconst combinedMatrix = pdfjs.Util.transform(viewport.transform, transformMatrix);\n // \t\t\t\tif (op === pdfjs.OPS.rectangle) {\n // \t\t\t\t\tconst x = args[1].shift();\n // \t\t\t\t\tconst y = args[1].shift();\n // \t\t\t\t\tconst width = args[1].shift();\n // \t\t\t\t\tconst height = args[1].shift();\n // \t\t\t\t\tif (Math.min(width, height) <= 2) {\n // \t\t\t\t\t\t// TODO remove\n // \t\t\t\t\t\tdebugger;\n // \t\t\t\t\t}\n // \t\t\t\t\tconst rect = new Rectangle(new Point(x, y), width, height);\n // \t\t\t\t\trect.transform(combinedMatrix);\n // \t\t\t\t\t//rect.transform(viewport.transform);\n // \t\t\t\t\tlineStore.addRectangle(rect);\n // \t\t\t\t} else if (op === pdfjs.OPS.moveTo) {\n // \t\t\t\t\tcurrent_x = args[1].shift();\n // \t\t\t\t\tcurrent_y = args[1].shift();\n // \t\t\t\t} else if (op === pdfjs.OPS.lineTo) {\n // \t\t\t\t\tconst x = args[1].shift();\n // \t\t\t\t\tconst y = args[1].shift();\n // \t\t\t\t\t//default trasform\n // \t\t\t\t\tconst from = new Point(current_x, current_y);\n // \t\t\t\t\tconst to = new Point(x, y);\n // \t\t\t\t\tconst line = new Line(from, to);\n // \t\t\t\t\tline.transform(combinedMatrix);\n // \t\t\t\t\t//line.transform(viewport.transform);\n // \t\t\t\t\t// // viewport transform\n // \t\t\t\t\t// const _from = viewport.convertToViewportPoint(line.from.x, line.from.y)\n // \t\t\t\t\t// const _to = viewport.convertToViewportPoint(line.to.x, line.to.y)\n // \t\t\t\t\t//\n // \t\t\t\t\t// const transformedLine = new Line(new Point(_from[0], _from[1]), new Point(_to[0], _to[1]))\n // \t\t\t\t\tlineStore.add(line);\n // \t\t\t\t\tcurrent_x = x;\n // \t\t\t\t\tcurrent_y = y;\n // \t\t\t\t}\n // \t\t\t}\n // \t\t} else if (fn === pdfjs.OPS.save) {\n // \t\t\ttransformStack.push(transformMatrix);\n // \t\t} else if (fn === pdfjs.OPS.restore) {\n // \t\t\tconst restoredMatrix = transformStack.pop();\n // \t\t\tif (restoredMatrix) {\n // \t\t\t\ttransformMatrix = restoredMatrix;\n // \t\t\t}\n // \t\t} else if (fn === pdfjs.OPS.transform) {\n // \t\t\t//transformMatrix = this.transform_fn(transformMatrix, args);\n // \t\t\ttransformMatrix = pdfjs.Util.transform(transformMatrix, args);\n // \t\t}\n // \t}\n // \treturn lineStore;\n // }\n async fillPageTables(page, pageTables) {\n const viewport = page.getViewport({ scale: 1 });\n const textContent = await page.getTextContent({\n includeMarkedContent: false,\n disableNormalization: false\n });\n for (const textItem of textContent.items) {\n if (!(\"str\" in textItem)) continue;\n const tx = Util.transform(\n Util.transform(viewport.transform, textItem.transform),\n [1, 0, 0, -1, 0, 0]\n );\n for (const pageTable of pageTables) {\n const cell = pageTable.findCell(tx[4], tx[5]);\n if (cell) {\n cell.text.push(textItem.str);\n if (textItem.hasEOL) {\n cell.text.push(\"\\n\");\n }\n break;\n }\n }\n }\n }\n}\nexport {\n AbortException2 as AbortException,\n FormatError2 as FormatError,\n InvalidPDFException2 as InvalidPDFException,\n Line,\n LineDirection,\n LineStore,\n PDFParse,\n PasswordException2 as PasswordException,\n Point,\n Rectangle,\n ResponseException2 as ResponseException,\n Shape,\n Table,\n UnknownErrorException2 as UnknownErrorException,\n VerbosityLevel,\n getException\n};\n//# sourceMappingURL=pdf-parse.es.js.map\n",
5
+ "import type { IAgentRuntime } from \"@elizaos/core\";\nimport { logger, Service, ServiceType } from \"@elizaos/core\";\nimport * as pdfjs from \"pdfjs-dist/legacy/build/pdf.mjs\";\n\nconst { getDocument } = pdfjs;\n\nimport type { TextItem, TextMarkedContent } from \"pdfjs-dist/types/src/display/api\";\n\nimport type {\n PdfConversionResult,\n PdfDocumentInfo,\n PdfExtractionOptions,\n PdfMetadata,\n PdfPageInfo,\n} from \"../types\";\n\nfunction isTextItem(item: TextItem | TextMarkedContent): item is TextItem {\n return \"str\" in item;\n}\n\nexport class PdfService extends Service {\n static serviceType = ServiceType.PDF;\n capabilityDescription = \"The agent is able to convert PDF files to text\";\n\n static async start(runtime: IAgentRuntime): Promise<PdfService> {\n const service = new PdfService(runtime);\n return service;\n }\n\n static async stop(runtime: IAgentRuntime): Promise<void> {\n const service = runtime.getService(ServiceType.PDF);\n if (service) {\n await service.stop();\n }\n }\n\n async stop(): Promise<void> {}\n\n async convertPdfToText(pdfBuffer: Buffer): Promise<string> {\n try {\n const uint8Array = new Uint8Array(pdfBuffer);\n const pdf = await getDocument({ data: uint8Array }).promise;\n const numPages = pdf.numPages;\n\n const textPages: string[] = [];\n\n for (let pageNum = 1; pageNum <= numPages; pageNum++) {\n const page = await pdf.getPage(pageNum);\n const textContent = await page.getTextContent();\n const pageText = textContent.items\n .filter(isTextItem)\n .map((item: TextItem) => item.str)\n .join(\" \");\n textPages.push(pageText);\n }\n\n const rawText = textPages.join(\"\\n\");\n return this.cleanUpContent(rawText);\n } catch (error) {\n logger.error(\n `PdfService: Failed to convert PDF to text - error: ${error}, bufferSize: ${pdfBuffer.length}`\n );\n throw error;\n }\n }\n\n async convertPdfToTextWithOptions(\n pdfBuffer: Buffer,\n options: PdfExtractionOptions = {}\n ): Promise<PdfConversionResult> {\n try {\n const uint8Array = new Uint8Array(pdfBuffer);\n const pdf = await getDocument({ data: uint8Array }).promise;\n const numPages = pdf.numPages;\n\n const startPage = Math.max(1, options.startPage || 1);\n const endPage = Math.min(numPages, options.endPage || numPages);\n\n const textPages: string[] = [];\n\n for (let pageNum = startPage; pageNum <= endPage; pageNum++) {\n const page = await pdf.getPage(pageNum);\n const textContent = await page.getTextContent();\n const pageText = textContent.items\n .filter(isTextItem)\n .map((item: TextItem) => item.str)\n .join(options.preserveWhitespace ? \"\" : \" \");\n textPages.push(pageText);\n }\n\n let text = textPages.join(\"\\n\");\n\n if (options.cleanContent !== false) {\n text = this.cleanUpContent(text);\n }\n\n return {\n success: true,\n text,\n pageCount: numPages,\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n }\n\n async getDocumentInfo(pdfBuffer: Buffer): Promise<PdfDocumentInfo> {\n const uint8Array = new Uint8Array(pdfBuffer);\n const pdf = await getDocument({ data: uint8Array }).promise;\n const numPages = pdf.numPages;\n\n const metadataResult = await pdf.getMetadata();\n const info = metadataResult.info as Record<string, string | Date | undefined>;\n\n const metadata: PdfMetadata = {\n title: info.Title as string | undefined,\n author: info.Author as string | undefined,\n subject: info.Subject as string | undefined,\n keywords: info.Keywords as string | undefined,\n creator: info.Creator as string | undefined,\n producer: info.Producer as string | undefined,\n creationDate: info.CreationDate ? new Date(info.CreationDate as string) : undefined,\n modificationDate: info.ModDate ? new Date(info.ModDate as string) : undefined,\n };\n\n const pages: PdfPageInfo[] = [];\n const allText: string[] = [];\n\n for (let pageNum = 1; pageNum <= numPages; pageNum++) {\n const page = await pdf.getPage(pageNum);\n const viewport = page.getViewport({ scale: 1.0 });\n const textContent = await page.getTextContent();\n\n const pageText = textContent.items\n .filter(isTextItem)\n .map((item: TextItem) => item.str)\n .join(\" \");\n\n pages.push({\n pageNumber: pageNum,\n width: viewport.width,\n height: viewport.height,\n text: this.cleanUpContent(pageText),\n });\n\n allText.push(pageText);\n }\n\n return {\n pageCount: numPages,\n metadata,\n text: this.cleanUpContent(allText.join(\"\\n\")),\n pages,\n };\n }\n\n cleanUpContent(content: string): string {\n try {\n const filtered = content\n .split(\"\")\n .filter((char) => {\n const charCode = char.charCodeAt(0);\n return !(\n charCode === 0 ||\n (charCode >= 1 && charCode <= 8) ||\n (charCode >= 11 && charCode <= 12) ||\n (charCode >= 14 && charCode <= 31) ||\n charCode === 127\n );\n })\n .join(\"\");\n\n const cleaned = filtered\n .replace(/[^\\S\\r\\n]+/g, \" \")\n .replace(/[ \\t]+(\\r?\\n)/g, \"$1\")\n .trim();\n\n return cleaned;\n } catch (error) {\n logger.error(\n `PdfService: Failed to clean up content - error: ${error}, contentLength: ${content.length}`\n );\n return content;\n }\n }\n}\n\nexport default PdfService;\n",
7
6
  "import type { Plugin } from \"@elizaos/core\";\nimport { PdfService } from \"./services/pdf\";\n\nexport * from \"./services\";\nexport * from \"./types\";\n\nexport const pdfPlugin: Plugin = {\n name: \"pdf\",\n description: \"Plugin for PDF reading and text extraction\",\n services: [PdfService],\n actions: [],\n};\n\nexport default pdfPlugin;\n"
8
7
  ],
9
- "mappings": "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,CAAC,EACH,OAEF,EAAM,GAAQ,OAAO,CAAI,EACzB,KAAK,GAAS,OAAO,CAAE,EACvB,EAAM,GAAS,IAAI,EAAI,CAAI,EAE7B,MAAM,CAAC,EAAI,CAET,GADA,KAAK,GAAU,OAAO,CAAE,EACpB,KAAK,KAAY,KACnB,OAEF,KAAK,GAAS,IAAI,CAAE,EAAE,OAAO,EAC7B,KAAK,GAAS,OAAO,CAAE,EAEzB,OAAO,EAAG,CACR,KAAK,GAAU,KACf,QAAW,KAAQ,KAAK,GAAS,OAAO,EACtC,EAAK,OAAO,EAEd,KAAK,GAAS,MAAM,EACpB,KAAK,GAAU,MAAM,EAEzB,CAEE,WAAW,mBAAqB,CAC9B,oBACF,EAEF,WAAW,SAAW,CACpB,eAAgB,GAChB,yBACA,6BACA,uBACA,6BACA,mBACA,kBACA,kBACA,gBACA,SACA,eACA,0BACA,gBACA,iBACA,aACA,YAAa,GACb,aACA,qBACA,eACA,sBACA,yBACA,UACA,WACA,sBACA,uBACA,UAAW,GACX,oBAAqB,GACrB,gBACA,aACA,uBACA,aACA,iBACA,oBACA,OACA,eACA,qBACA,yBACA,iBACA,aACA,kBACA,iBACA,+BACA,kBACA,kBAAmB,GACnB,sBACA,SACA,sBACA,aACA,2BACA,aACA,gBACA,iBACA,OACA,kBACA,WACA,WACF,EACA,IAAM,GAAwB,OAAO,OAAuB,OAAO,eAAe,CAChF,UAAW,KACX,eAAgB,GAChB,yBACA,6BACA,uBACA,6BACA,mBACA,kBACA,kBACA,gBACA,eACA,iBACA,aACA,YAAa,GACb,uBACA,UAAW,GACX,oBAAqB,GACrB,aACA,OACA,eACA,yBACA,iBACA,aACA,qBACA,kBACA,iBACA,+BACA,kBAAmB,GACnB,sBACA,2BACA,aACA,gBACA,OACA,kBACA,YACA,gBACA,SACA,0BACA,aACA,qBACA,eACA,sBACA,yBACA,UACA,WACA,sBACA,gBACA,aACA,uBACA,iBACA,oBACA,kBACA,sBACA,SACA,aACA,iBACA,UACF,EAAG,OAAO,YAAa,CAAE,MAAO,QAAS,CAAC,CAAC,EAC3C,MAAM,WAA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",
10
- "debugId": "0BE942E0394446F464756E2164756E21",
8
+ "mappings": "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",
9
+ "debugId": "AE2239ACD8254B9464756E2164756E21",
11
10
  "names": []
12
11
  }