From 7b88d3a1bc0c92f4dc8ab0861468395dc514b974 Mon Sep 17 00:00:00 2001 From: Alex <33497058+bexsoft@users.noreply.github.com> Date: Thu, 13 Jun 2024 11:23:50 -0600 Subject: [PATCH] Updated UI package dependencies (#3381) Updated package dependencies - Updated react-pdf to fix security vulnerability - Removed ignored security alerts Signed-off-by: Benjamin Perez --- .github/workflows/vulncheck.yaml | 2 +- web-app/.yarnrc.yml | 3 +- web-app/package.json | 42 +- web-app/public/scripts/pdf.worker.min.js | 61724 ---------------- web-app/public/scripts/pdf.worker.min.mjs | 56810 ++++++++++++++ .../Objects/Preview/PreviewPDF.tsx | 2 +- web-app/yarn.lock | 296 +- 7 files changed, 56949 insertions(+), 61930 deletions(-) delete mode 100644 web-app/public/scripts/pdf.worker.min.js create mode 100644 web-app/public/scripts/pdf.worker.min.mjs diff --git a/.github/workflows/vulncheck.yaml b/.github/workflows/vulncheck.yaml index 810174104..dbf8ca120 100644 --- a/.github/workflows/vulncheck.yaml +++ b/.github/workflows/vulncheck.yaml @@ -57,4 +57,4 @@ jobs: # - https://github.com/wojtekmaj/react-pdf/issues/1789 # - https://github.com/wojtekmaj/react-pdf/discussions/1786 # - https://www.npmjs.com/advisories/1097244 - yarn npm audit --recursive --environment production --no-deprecations --ignore 1097244 + yarn npm audit --recursive --environment production --no-deprecations diff --git a/web-app/.yarnrc.yml b/web-app/.yarnrc.yml index 4b1dd64a2..b094f5e9a 100644 --- a/web-app/.yarnrc.yml +++ b/web-app/.yarnrc.yml @@ -1,2 +1,3 @@ -nodeLinker: node-modules checksumBehavior: reset + +nodeLinker: node-modules diff --git a/web-app/package.json b/web-app/package.json index 8fb54f345..66bce5689 100644 --- a/web-app/package.json +++ b/web-app/package.json @@ -5,26 +5,26 @@ "homepage": ".", "private": true, "dependencies": { - "@reduxjs/toolkit": "^1.9.6", - "kbar": "^0.1.0-beta.39", - "local-storage-fallback": "^4.1.1", + "@reduxjs/toolkit": "^1.9.7", + "kbar": "^0.1.0-beta.45", + "local-storage-fallback": "^4.1.2", "lodash": "^4.17.21", - "luxon": "^3.4.3", + "luxon": "^3.4.4", "mds": "https://github.com/minio/mds.git#v1.0.2", "react": "^18.3.1", "react-component-export-image": "^1.0.6", - "react-copy-to-clipboard": "^5.0.2", + "react-copy-to-clipboard": "^5.1.0", "react-dom": "^18.3.1", "react-dropzone": "^14.2.3", "react-markdown": "8.0.7", - "react-pdf": "^8.0.2", + "react-pdf": "^9.0.0", "react-redux": "^8.1.3", - "react-router-dom": "6.23.0", + "react-router-dom": "6.23.1", "react-use-websocket": "^4.8.1", "react-virtualized": "^9.22.5", "react-window": "^1.8.10", "react-window-infinite-loader": "^1.0.9", - "recharts": "^2.12.6", + "recharts": "^2.12.7", "styled-components": "5.3.11", "superagent": "^9.0.2", "tinycolor2": "^1.6.0" @@ -59,31 +59,31 @@ "proxy": "http://localhost:9090/", "devDependencies": { "@babel/plugin-proposal-private-property-in-object": "^7.21.11", - "@playwright/test": "^1.44.0", - "@types/lodash": "^4.17.0", + "@playwright/test": "^1.44.1", + "@types/lodash": "^4.17.5", "@types/luxon": "^3.4.2", - "@types/node": "20.12.8", - "@types/react": "18.3.1", - "@types/react-copy-to-clipboard": "^5.0.5", + "@types/node": "20.14.2", + "@types/react": "18.3.3", + "@types/react-copy-to-clipboard": "^5.0.7", "@types/react-dom": "18.3.0", - "@types/react-redux": "^7.1.32", + "@types/react-redux": "^7.1.33", "@types/react-virtualized": "^9.21.30", - "@types/react-window": "^1.8.6", - "@types/react-window-infinite-loader": "^1.0.7", + "@types/react-window": "^1.8.8", + "@types/react-window-infinite-loader": "^1.0.9", "@types/recharts": "^1.8.29", "@types/superagent": "^4.1.24", - "@types/webpack-env": "^1.18.2", + "@types/webpack-env": "^1.18.5", "babel-plugin-istanbul": "^6.1.1", "customize-cra": "^1.0.0", "minio": "^8.0.0", "nyc": "^15.1.0", - "prettier": "3.2.5", + "prettier": "3.3.2", "react-app-rewire-hot-loader": "^2.0.1", "react-app-rewired": "^2.2.1", "react-scripts": "5.0.1", - "testcafe": "3.5.0", + "testcafe": "3.6.1", "ts-prune": "^0.10.3", - "typescript": "^4.4.3" + "typescript": "^4.9.5" }, "resolutions": { "nth-check": "^2.0.1", @@ -93,5 +93,5 @@ "semver": "^7.5.2" }, "main": "index.js", - "packageManager": "yarn@4.2.2" + "packageManager": "yarn@4.3.0" } diff --git a/web-app/public/scripts/pdf.worker.min.js b/web-app/public/scripts/pdf.worker.min.js deleted file mode 100644 index 4d021adc2..000000000 --- a/web-app/public/scripts/pdf.worker.min.js +++ /dev/null @@ -1,61724 +0,0 @@ -/** - * @licstart The following is the entire license notice for the - * JavaScript code in this page - * - * Copyright 2023 Mozilla Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * @licend The above is the entire license notice for the - * JavaScript code in this page - */ -!(function webpackUniversalModuleDefinition(e, t) { - "object" == typeof exports && "object" == typeof module - ? (module.exports = e.pdfjsWorker = t()) - : "function" == typeof define && define.amd - ? define("pdfjs-dist/build/pdf.worker", [], () => (e.pdfjsWorker = t())) - : "object" == typeof exports - ? (exports["pdfjs-dist/build/pdf.worker"] = e.pdfjsWorker = t()) - : (e["pdfjs-dist/build/pdf.worker"] = e.pdfjsWorker = t()); -})(globalThis, () => - (() => { - "use strict"; - var e = [ - , - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.WorkerTask = t.WorkerMessageHandler = void 0; - var r = a(2), - n = a(3), - i = a(4), - s = a(6), - o = a(10), - c = a(68), - l = a(73), - h = a(104), - u = a(105), - d = a(72); - class WorkerTask { - constructor(e) { - this.name = e; - this.terminated = !1; - this._capability = new r.PromiseCapability(); - } - get finished() { - return this._capability.promise; - } - finish() { - this._capability.resolve(); - } - terminate() { - this.terminated = !0; - } - ensureNotTerminated() { - if (this.terminated) - throw new Error("Worker task was terminated"); - } - } - t.WorkerTask = WorkerTask; - class WorkerMessageHandler { - static setup(e, t) { - let a = !1; - e.on("test", function (t) { - if (!a) { - a = !0; - e.send("test", t instanceof Uint8Array); - } - }); - e.on("configure", function (e) { - (0, r.setVerbosityLevel)(e.verbosity); - }); - e.on("GetDocRequest", function (e) { - return WorkerMessageHandler.createDocumentHandler(e, t); - }); - } - static createDocumentHandler(e, t) { - let a, - f = !1, - g = null; - const p = new Set(), - m = (0, r.getVerbosityLevel)(), - { docId: b, apiVersion: y } = e, - w = "3.11.174"; - if (y !== w) - throw new Error( - `The API version "${y}" does not match the Worker version "${w}".`, - ); - const S = []; - for (const e in []) S.push(e); - if (S.length) - throw new Error( - "The `Array.prototype` contains unexpected enumerable properties: " + - S.join(", ") + - "; thus breaking e.g. `for...in` iteration of `Array`s.", - ); - const x = b + "_worker"; - let C = new h.MessageHandler(x, b, t); - function ensureNotTerminated() { - if (f) throw new Error("Worker was terminated"); - } - function startWorkerTask(e) { - p.add(e); - } - function finishWorkerTask(e) { - e.finish(); - p.delete(e); - } - async function loadDocument(e) { - await a.ensureDoc("checkHeader"); - await a.ensureDoc("parseStartXRef"); - await a.ensureDoc("parse", [e]); - await a.ensureDoc("checkFirstPage", [e]); - await a.ensureDoc("checkLastPage", [e]); - const t = await a.ensureDoc("isPureXfa"); - if (t) { - const e = new WorkerTask("loadXfaFonts"); - startWorkerTask(e); - await Promise.all([ - a - .loadXfaFonts(C, e) - .catch((e) => {}) - .then(() => finishWorkerTask(e)), - a.loadXfaImages(), - ]); - } - const [r, n] = await Promise.all([ - a.ensureDoc("numPages"), - a.ensureDoc("fingerprints"), - ]); - return { - numPages: r, - fingerprints: n, - htmlForXfa: t ? await a.ensureDoc("htmlForXfa") : null, - }; - } - function getPdfManager({ - data: e, - password: t, - disableAutoFetch: a, - rangeChunkSize: i, - length: o, - docBaseUrl: c, - enableXfa: l, - evaluatorOptions: h, - }) { - const d = { - source: null, - disableAutoFetch: a, - docBaseUrl: c, - docId: b, - enableXfa: l, - evaluatorOptions: h, - handler: C, - length: o, - password: t, - rangeChunkSize: i, - }, - f = new r.PromiseCapability(); - let p; - if (e) { - try { - d.source = e; - p = new s.LocalPdfManager(d); - f.resolve(p); - } catch (e) { - f.reject(e); - } - return f.promise; - } - let m, - y = []; - try { - m = new u.PDFWorkerStream(C); - } catch (e) { - f.reject(e); - return f.promise; - } - const w = m.getFullReader(); - w.headersReady - .then(function () { - if (w.isRangeSupported) { - d.source = m; - d.length = w.contentLength; - d.disableAutoFetch ||= w.isStreamingSupported; - p = new s.NetworkPdfManager(d); - for (const e of y) p.sendProgressiveData(e); - y = []; - f.resolve(p); - g = null; - } - }) - .catch(function (e) { - f.reject(e); - g = null; - }); - let S = 0; - new Promise(function (e, t) { - const readChunk = function ({ value: e, done: a }) { - try { - ensureNotTerminated(); - if (a) { - p || - (function () { - const e = (0, n.arrayBuffersToBytes)(y); - o && - e.length !== o && - (0, r.warn)( - "reported HTTP length is different from actual", - ); - try { - d.source = e; - p = new s.LocalPdfManager(d); - f.resolve(p); - } catch (e) { - f.reject(e); - } - y = []; - })(); - g = null; - return; - } - S += e.byteLength; - w.isStreamingSupported || - C.send("DocProgress", { - loaded: S, - total: Math.max(S, w.contentLength || 0), - }); - p ? p.sendProgressiveData(e) : y.push(e); - w.read().then(readChunk, t); - } catch (e) { - t(e); - } - }; - w.read().then(readChunk, t); - }).catch(function (e) { - f.reject(e); - g = null; - }); - g = function (e) { - m.cancelAllRequests(e); - }; - return f.promise; - } - C.on("GetPage", function (e) { - return a.getPage(e.pageIndex).then(function (e) { - return Promise.all([ - a.ensure(e, "rotate"), - a.ensure(e, "ref"), - a.ensure(e, "userUnit"), - a.ensure(e, "view"), - ]).then(function ([e, t, a, r]) { - return { rotate: e, ref: t, userUnit: a, view: r }; - }); - }); - }); - C.on("GetPageIndex", function (e) { - const t = i.Ref.get(e.num, e.gen); - return a.ensureCatalog("getPageIndex", [t]); - }); - C.on("GetDestinations", function (e) { - return a.ensureCatalog("destinations"); - }); - C.on("GetDestination", function (e) { - return a.ensureCatalog("getDestination", [e.id]); - }); - C.on("GetPageLabels", function (e) { - return a.ensureCatalog("pageLabels"); - }); - C.on("GetPageLayout", function (e) { - return a.ensureCatalog("pageLayout"); - }); - C.on("GetPageMode", function (e) { - return a.ensureCatalog("pageMode"); - }); - C.on("GetViewerPreferences", function (e) { - return a.ensureCatalog("viewerPreferences"); - }); - C.on("GetOpenAction", function (e) { - return a.ensureCatalog("openAction"); - }); - C.on("GetAttachments", function (e) { - return a.ensureCatalog("attachments"); - }); - C.on("GetDocJSActions", function (e) { - return a.ensureCatalog("jsActions"); - }); - C.on("GetPageJSActions", function ({ pageIndex: e }) { - return a.getPage(e).then(function (e) { - return a.ensure(e, "jsActions"); - }); - }); - C.on("GetOutline", function (e) { - return a.ensureCatalog("documentOutline"); - }); - C.on("GetOptionalContentConfig", function (e) { - return a.ensureCatalog("optionalContentConfig"); - }); - C.on("GetPermissions", function (e) { - return a.ensureCatalog("permissions"); - }); - C.on("GetMetadata", function (e) { - return Promise.all([ - a.ensureDoc("documentInfo"), - a.ensureCatalog("metadata"), - ]); - }); - C.on("GetMarkInfo", function (e) { - return a.ensureCatalog("markInfo"); - }); - C.on("GetData", function (e) { - return a.requestLoadedStream().then(function (e) { - return e.bytes; - }); - }); - C.on("GetAnnotations", function ({ pageIndex: e, intent: t }) { - return a.getPage(e).then(function (a) { - const r = new WorkerTask(`GetAnnotations: page ${e}`); - startWorkerTask(r); - return a.getAnnotationsData(C, r, t).then( - (e) => { - finishWorkerTask(r); - return e; - }, - (e) => { - finishWorkerTask(r); - throw e; - }, - ); - }); - }); - C.on("GetFieldObjects", function (e) { - return a.ensureDoc("fieldObjects"); - }); - C.on("HasJSActions", function (e) { - return a.ensureDoc("hasJSActions"); - }); - C.on("GetCalculationOrderIds", function (e) { - return a.ensureDoc("calculationOrderIds"); - }); - C.on( - "SaveDocument", - async function ({ - isPureXfa: e, - numPages: t, - annotationStorage: s, - filename: c, - }) { - const h = [ - a.requestLoadedStream(), - a.ensureCatalog("acroForm"), - a.ensureCatalog("acroFormRef"), - a.ensureDoc("startXRef"), - a.ensureDoc("xref"), - a.ensureDoc("linearization"), - a.ensureCatalog("structTreeRoot"), - ], - u = [], - f = e ? null : (0, n.getNewAnnotationsMap)(s), - [g, p, m, b, y, w, S] = await Promise.all(h), - x = y.trailer.getRaw("Root") || null; - let k; - if (f) { - S - ? (await S.canUpdateStructTree({ - pdfManager: a, - newAnnotationsByPage: f, - })) && (k = S) - : (await d.StructTreeRoot.canCreateStructureTree({ - catalogRef: x, - pdfManager: a, - newAnnotationsByPage: f, - })) && (k = null); - const e = o.AnnotationFactory.generateImages( - s.values(), - y, - a.evaluatorOptions.isOffscreenCanvasSupported, - ), - t = void 0 === k ? u : []; - for (const [r, n] of f) - t.push( - a.getPage(r).then((t) => { - const a = new WorkerTask(`Save (editor): page ${r}`); - return t - .saveNewAnnotations(C, a, n, e) - .finally(function () { - finishWorkerTask(a); - }); - }), - ); - null === k - ? u.push( - Promise.all(t).then(async (e) => { - await d.StructTreeRoot.createStructureTree({ - newAnnotationsByPage: f, - xref: y, - catalogRef: x, - pdfManager: a, - newRefs: e, - }); - return e; - }), - ) - : k && - u.push( - Promise.all(t).then(async (e) => { - await k.updateStructureTree({ - newAnnotationsByPage: f, - pdfManager: a, - newRefs: e, - }); - return e; - }), - ); - } - if (e) u.push(a.serializeXfaData(s)); - else - for (let e = 0; e < t; e++) - u.push( - a.getPage(e).then(function (t) { - const a = new WorkerTask(`Save: page ${e}`); - return t.save(C, a, s).finally(function () { - finishWorkerTask(a); - }); - }), - ); - const v = await Promise.all(u); - let F = [], - O = null; - if (e) { - O = v[0]; - if (!O) return g.bytes; - } else { - F = v.flat(2); - if (0 === F.length) return g.bytes; - } - const T = - m && - p instanceof i.Dict && - F.some((e) => e.needAppearances), - M = (p instanceof i.Dict && p.get("XFA")) || null; - let D = null, - E = !1; - if (Array.isArray(M)) { - for (let e = 0, t = M.length; e < t; e += 2) - if ("datasets" === M[e]) { - D = M[e + 1]; - E = !0; - } - null === D && (D = y.getNewTemporaryRef()); - } else M && (0, r.warn)("Unsupported XFA type."); - let N = Object.create(null); - if (y.trailer) { - const e = Object.create(null), - t = y.trailer.get("Info") || null; - t instanceof i.Dict && - t.forEach((t, a) => { - "string" == typeof a && - (e[t] = (0, r.stringToPDFString)(a)); - }); - N = { - rootRef: x, - encryptRef: y.trailer.getRaw("Encrypt") || null, - newRef: y.getNewTemporaryRef(), - infoRef: y.trailer.getRaw("Info") || null, - info: e, - fileIds: y.trailer.get("ID") || null, - startXRef: w ? b : y.lastXRefStreamPos ?? b, - filename: c, - }; - } - return (0, l.incrementalUpdate)({ - originalData: g.bytes, - xrefInfo: N, - newRefs: F, - xref: y, - hasXfa: !!M, - xfaDatasetsRef: D, - hasXfaDatasetsEntry: E, - needAppearances: T, - acroFormRef: m, - acroForm: p, - xfaData: O, - }).finally(() => { - y.resetNewTemporaryRef(); - }); - }, - ); - C.on("GetOperatorList", function (e, t) { - const n = e.pageIndex; - a.getPage(n).then(function (a) { - const i = new WorkerTask(`GetOperatorList: page ${n}`); - startWorkerTask(i); - const s = m >= r.VerbosityLevel.INFOS ? Date.now() : 0; - a.getOperatorList({ - handler: C, - sink: t, - task: i, - intent: e.intent, - cacheKey: e.cacheKey, - annotationStorage: e.annotationStorage, - }).then( - function (e) { - finishWorkerTask(i); - s && - (0, r.info)( - `page=${n + 1} - getOperatorList: time=${Date.now() - s}ms, len=${e.length}`, - ); - t.close(); - }, - function (e) { - finishWorkerTask(i); - i.terminated || t.error(e); - }, - ); - }); - }); - C.on("GetTextContent", function (e, t) { - const { - pageIndex: n, - includeMarkedContent: i, - disableNormalization: s, - } = e; - a.getPage(n).then(function (e) { - const a = new WorkerTask("GetTextContent: page " + n); - startWorkerTask(a); - const o = m >= r.VerbosityLevel.INFOS ? Date.now() : 0; - e.extractTextContent({ - handler: C, - task: a, - sink: t, - includeMarkedContent: i, - disableNormalization: s, - }).then( - function () { - finishWorkerTask(a); - o && - (0, r.info)( - `page=${n + 1} - getTextContent: time=` + - (Date.now() - o) + - "ms", - ); - t.close(); - }, - function (e) { - finishWorkerTask(a); - a.terminated || t.error(e); - }, - ); - }); - }); - C.on("GetStructTree", function (e) { - return a.getPage(e.pageIndex).then(function (e) { - return a.ensure(e, "getStructTree"); - }); - }); - C.on("FontFallback", function (e) { - return a.fontFallback(e.id, C); - }); - C.on("Cleanup", function (e) { - return a.cleanup(!0); - }); - C.on("Terminate", function (e) { - f = !0; - const t = []; - if (a) { - a.terminate(new r.AbortException("Worker was terminated.")); - const e = a.cleanup(); - t.push(e); - a = null; - } else (0, c.clearGlobalCaches)(); - g && g(new r.AbortException("Worker was terminated.")); - for (const e of p) { - t.push(e.finished); - e.terminate(); - } - return Promise.all(t).then(function () { - C.destroy(); - C = null; - }); - }); - C.on("Ready", function (t) { - !(function setupDoc(e) { - function onSuccess(e) { - ensureNotTerminated(); - C.send("GetDoc", { pdfInfo: e }); - } - function onFailure(e) { - ensureNotTerminated(); - if (e instanceof r.PasswordException) { - const t = new WorkerTask( - `PasswordException: response ${e.code}`, - ); - startWorkerTask(t); - C.sendWithPromise("PasswordRequest", e) - .then(function ({ password: e }) { - finishWorkerTask(t); - a.updatePassword(e); - pdfManagerReady(); - }) - .catch(function () { - finishWorkerTask(t); - C.send("DocException", e); - }); - } else - e instanceof r.InvalidPDFException || - e instanceof r.MissingPDFException || - e instanceof r.UnexpectedResponseException || - e instanceof r.UnknownErrorException - ? C.send("DocException", e) - : C.send( - "DocException", - new r.UnknownErrorException( - e.message, - e.toString(), - ), - ); - } - function pdfManagerReady() { - ensureNotTerminated(); - loadDocument(!1).then(onSuccess, function (e) { - ensureNotTerminated(); - e instanceof n.XRefParseException - ? a.requestLoadedStream().then(function () { - ensureNotTerminated(); - loadDocument(!0).then(onSuccess, onFailure); - }) - : onFailure(e); - }); - } - ensureNotTerminated(); - getPdfManager(e) - .then(function (e) { - if (f) { - e.terminate( - new r.AbortException("Worker was terminated."), - ); - throw new Error("Worker was terminated"); - } - a = e; - a.requestLoadedStream(!0).then((e) => { - C.send("DataLoaded", { length: e.bytes.byteLength }); - }); - }) - .then(pdfManagerReady, onFailure); - })(e); - e = null; - }); - return x; - } - static initializeFromPort(e) { - const t = new h.MessageHandler("worker", "main", e); - WorkerMessageHandler.setup(t, e); - t.send("ready", null); - } - } - t.WorkerMessageHandler = WorkerMessageHandler; - "undefined" == typeof window && - !r.isNodeJS && - "undefined" != typeof self && - (function isMessagePort(e) { - return "function" == typeof e.postMessage && "onmessage" in e; - })(self) && - WorkerMessageHandler.initializeFromPort(self); - }, - (e, t) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.VerbosityLevel = - t.Util = - t.UnknownErrorException = - t.UnexpectedResponseException = - t.TextRenderingMode = - t.RenderingIntentFlag = - t.PromiseCapability = - t.PermissionFlag = - t.PasswordResponses = - t.PasswordException = - t.PageActionEventType = - t.OPS = - t.MissingPDFException = - t.MAX_IMAGE_SIZE_TO_CACHE = - t.LINE_FACTOR = - t.LINE_DESCENT_FACTOR = - t.InvalidPDFException = - t.ImageKind = - t.IDENTITY_MATRIX = - t.FormatError = - t.FeatureTest = - t.FONT_IDENTITY_MATRIX = - t.DocumentActionEventType = - t.CMapCompressionType = - t.BaseException = - t.BASELINE_FACTOR = - t.AnnotationType = - t.AnnotationReplyType = - t.AnnotationPrefix = - t.AnnotationMode = - t.AnnotationFlag = - t.AnnotationFieldFlag = - t.AnnotationEditorType = - t.AnnotationEditorPrefix = - t.AnnotationEditorParamsType = - t.AnnotationBorderStyleType = - t.AnnotationActionEventType = - t.AbortException = - void 0; - t.assert = function assert(e, t) { - e || unreachable(t); - }; - t.bytesToString = bytesToString; - t.createValidAbsoluteUrl = function createValidAbsoluteUrl( - e, - t = null, - a = null, - ) { - if (!e) return null; - try { - if (a && "string" == typeof e) { - if (a.addDefaultProtocol && e.startsWith("www.")) { - const t = e.match(/\./g); - t?.length >= 2 && (e = `http://${e}`); - } - if (a.tryConvertEncoding) - try { - e = stringToUTF8String(e); - } catch {} - } - const r = t ? new URL(e, t) : new URL(e); - if ( - (function _isValidProtocol(e) { - switch (e?.protocol) { - case "http:": - case "https:": - case "ftp:": - case "mailto:": - case "tel:": - return !0; - default: - return !1; - } - })(r) - ) - return r; - } catch {} - return null; - }; - t.getModificationDate = function getModificationDate(e = new Date()) { - return [ - e.getUTCFullYear().toString(), - (e.getUTCMonth() + 1).toString().padStart(2, "0"), - e.getUTCDate().toString().padStart(2, "0"), - e.getUTCHours().toString().padStart(2, "0"), - e.getUTCMinutes().toString().padStart(2, "0"), - e.getUTCSeconds().toString().padStart(2, "0"), - ].join(""); - }; - t.getUuid = function getUuid() { - if ( - "undefined" != typeof crypto && - "function" == typeof crypto?.randomUUID - ) - return crypto.randomUUID(); - const e = new Uint8Array(32); - if ( - "undefined" != typeof crypto && - "function" == typeof crypto?.getRandomValues - ) - crypto.getRandomValues(e); - else - for (let t = 0; t < 32; t++) - e[t] = Math.floor(255 * Math.random()); - return bytesToString(e); - }; - t.getVerbosityLevel = function getVerbosityLevel() { - return n; - }; - t.info = function info(e) { - n >= r.INFOS && console.log(`Info: ${e}`); - }; - t.isArrayBuffer = function isArrayBuffer(e) { - return "object" == typeof e && void 0 !== e?.byteLength; - }; - t.isArrayEqual = function isArrayEqual(e, t) { - if (e.length !== t.length) return !1; - for (let a = 0, r = e.length; a < r; a++) - if (e[a] !== t[a]) return !1; - return !0; - }; - t.isNodeJS = void 0; - t.normalizeUnicode = function normalizeUnicode(e) { - if (!c) { - c = - /([\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; - l = new Map([["ſt", "ſt"]]); - } - return e.replaceAll(c, (e, t, a) => - t ? t.normalize("NFKC") : l.get(a), - ); - }; - t.objectFromMap = function objectFromMap(e) { - const t = Object.create(null); - for (const [a, r] of e) t[a] = r; - return t; - }; - t.objectSize = function objectSize(e) { - return Object.keys(e).length; - }; - t.setVerbosityLevel = function setVerbosityLevel(e) { - Number.isInteger(e) && (n = e); - }; - t.shadow = shadow; - t.string32 = function string32(e) { - return String.fromCharCode( - (e >> 24) & 255, - (e >> 16) & 255, - (e >> 8) & 255, - 255 & e, - ); - }; - t.stringToBytes = stringToBytes; - t.stringToPDFString = function stringToPDFString(e) { - if (e[0] >= "ï") { - let t; - "þ" === e[0] && "ÿ" === e[1] - ? (t = "utf-16be") - : "ÿ" === e[0] && "þ" === e[1] - ? (t = "utf-16le") - : "ï" === e[0] && - "»" === e[1] && - "¿" === e[2] && - (t = "utf-8"); - if (t) - try { - const a = new TextDecoder(t, { fatal: !0 }), - r = stringToBytes(e); - return a.decode(r); - } catch (e) { - warn(`stringToPDFString: "${e}".`); - } - } - const t = []; - for (let a = 0, r = e.length; a < r; a++) { - const r = o[e.charCodeAt(a)]; - t.push(r ? String.fromCharCode(r) : e.charAt(a)); - } - return t.join(""); - }; - t.stringToUTF8String = stringToUTF8String; - t.unreachable = unreachable; - t.utf8StringToString = function utf8StringToString(e) { - return unescape(encodeURIComponent(e)); - }; - t.warn = warn; - const a = !( - "object" != typeof process || - process + "" != "[object process]" || - process.versions.nw || - (process.versions.electron && - process.type && - "browser" !== process.type) - ); - t.isNodeJS = a; - t.IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0]; - t.FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0]; - t.MAX_IMAGE_SIZE_TO_CACHE = 1e7; - t.LINE_FACTOR = 1.35; - t.LINE_DESCENT_FACTOR = 0.35; - t.BASELINE_FACTOR = 0.25925925925925924; - t.RenderingIntentFlag = { - ANY: 1, - DISPLAY: 2, - PRINT: 4, - SAVE: 8, - ANNOTATIONS_FORMS: 16, - ANNOTATIONS_STORAGE: 32, - ANNOTATIONS_DISABLE: 64, - OPLIST: 256, - }; - t.AnnotationMode = { - DISABLE: 0, - ENABLE: 1, - ENABLE_FORMS: 2, - ENABLE_STORAGE: 3, - }; - t.AnnotationEditorPrefix = "pdfjs_internal_editor_"; - t.AnnotationEditorType = { - DISABLE: -1, - NONE: 0, - FREETEXT: 3, - STAMP: 13, - INK: 15, - }; - t.AnnotationEditorParamsType = { - RESIZE: 1, - CREATE: 2, - FREETEXT_SIZE: 11, - FREETEXT_COLOR: 12, - FREETEXT_OPACITY: 13, - INK_COLOR: 21, - INK_THICKNESS: 22, - INK_OPACITY: 23, - }; - t.PermissionFlag = { - PRINT: 4, - MODIFY_CONTENTS: 8, - COPY: 16, - MODIFY_ANNOTATIONS: 32, - FILL_INTERACTIVE_FORMS: 256, - COPY_FOR_ACCESSIBILITY: 512, - ASSEMBLE: 1024, - PRINT_HIGH_QUALITY: 2048, - }; - t.TextRenderingMode = { - FILL: 0, - STROKE: 1, - FILL_STROKE: 2, - INVISIBLE: 3, - FILL_ADD_TO_PATH: 4, - STROKE_ADD_TO_PATH: 5, - FILL_STROKE_ADD_TO_PATH: 6, - ADD_TO_PATH: 7, - FILL_STROKE_MASK: 3, - ADD_TO_PATH_FLAG: 4, - }; - t.ImageKind = { GRAYSCALE_1BPP: 1, RGB_24BPP: 2, RGBA_32BPP: 3 }; - t.AnnotationType = { - TEXT: 1, - LINK: 2, - FREETEXT: 3, - LINE: 4, - SQUARE: 5, - CIRCLE: 6, - POLYGON: 7, - POLYLINE: 8, - HIGHLIGHT: 9, - UNDERLINE: 10, - SQUIGGLY: 11, - STRIKEOUT: 12, - STAMP: 13, - CARET: 14, - INK: 15, - POPUP: 16, - FILEATTACHMENT: 17, - SOUND: 18, - MOVIE: 19, - WIDGET: 20, - SCREEN: 21, - PRINTERMARK: 22, - TRAPNET: 23, - WATERMARK: 24, - THREED: 25, - REDACT: 26, - }; - t.AnnotationReplyType = { GROUP: "Group", REPLY: "R" }; - t.AnnotationFlag = { - INVISIBLE: 1, - HIDDEN: 2, - PRINT: 4, - NOZOOM: 8, - NOROTATE: 16, - NOVIEW: 32, - READONLY: 64, - LOCKED: 128, - TOGGLENOVIEW: 256, - LOCKEDCONTENTS: 512, - }; - t.AnnotationFieldFlag = { - READONLY: 1, - REQUIRED: 2, - NOEXPORT: 4, - MULTILINE: 4096, - PASSWORD: 8192, - NOTOGGLETOOFF: 16384, - RADIO: 32768, - PUSHBUTTON: 65536, - COMBO: 131072, - EDIT: 262144, - SORT: 524288, - FILESELECT: 1048576, - MULTISELECT: 2097152, - DONOTSPELLCHECK: 4194304, - DONOTSCROLL: 8388608, - COMB: 16777216, - RICHTEXT: 33554432, - RADIOSINUNISON: 33554432, - COMMITONSELCHANGE: 67108864, - }; - t.AnnotationBorderStyleType = { - SOLID: 1, - DASHED: 2, - BEVELED: 3, - INSET: 4, - UNDERLINE: 5, - }; - t.AnnotationActionEventType = { - E: "Mouse Enter", - X: "Mouse Exit", - D: "Mouse Down", - U: "Mouse Up", - Fo: "Focus", - Bl: "Blur", - PO: "PageOpen", - PC: "PageClose", - PV: "PageVisible", - PI: "PageInvisible", - K: "Keystroke", - F: "Format", - V: "Validate", - C: "Calculate", - }; - t.DocumentActionEventType = { - WC: "WillClose", - WS: "WillSave", - DS: "DidSave", - WP: "WillPrint", - DP: "DidPrint", - }; - t.PageActionEventType = { O: "PageOpen", C: "PageClose" }; - const r = { ERRORS: 0, WARNINGS: 1, INFOS: 5 }; - t.VerbosityLevel = r; - t.CMapCompressionType = { NONE: 0, BINARY: 1 }; - t.OPS = { - dependency: 1, - setLineWidth: 2, - setLineCap: 3, - setLineJoin: 4, - setMiterLimit: 5, - setDash: 6, - setRenderingIntent: 7, - setFlatness: 8, - setGState: 9, - save: 10, - restore: 11, - transform: 12, - moveTo: 13, - lineTo: 14, - curveTo: 15, - curveTo2: 16, - curveTo3: 17, - closePath: 18, - rectangle: 19, - stroke: 20, - closeStroke: 21, - fill: 22, - eoFill: 23, - fillStroke: 24, - eoFillStroke: 25, - closeFillStroke: 26, - closeEOFillStroke: 27, - endPath: 28, - clip: 29, - eoClip: 30, - beginText: 31, - endText: 32, - setCharSpacing: 33, - setWordSpacing: 34, - setHScale: 35, - setLeading: 36, - setFont: 37, - setTextRenderingMode: 38, - setTextRise: 39, - moveText: 40, - setLeadingMoveText: 41, - setTextMatrix: 42, - nextLine: 43, - showText: 44, - showSpacedText: 45, - nextLineShowText: 46, - nextLineSetSpacingShowText: 47, - setCharWidth: 48, - setCharWidthAndBounds: 49, - setStrokeColorSpace: 50, - setFillColorSpace: 51, - setStrokeColor: 52, - setStrokeColorN: 53, - setFillColor: 54, - setFillColorN: 55, - setStrokeGray: 56, - setFillGray: 57, - setStrokeRGBColor: 58, - setFillRGBColor: 59, - setStrokeCMYKColor: 60, - setFillCMYKColor: 61, - shadingFill: 62, - beginInlineImage: 63, - beginImageData: 64, - endInlineImage: 65, - paintXObject: 66, - markPoint: 67, - markPointProps: 68, - beginMarkedContent: 69, - beginMarkedContentProps: 70, - endMarkedContent: 71, - beginCompat: 72, - endCompat: 73, - paintFormXObjectBegin: 74, - paintFormXObjectEnd: 75, - beginGroup: 76, - endGroup: 77, - beginAnnotation: 80, - endAnnotation: 81, - paintImageMaskXObject: 83, - paintImageMaskXObjectGroup: 84, - paintImageXObject: 85, - paintInlineImageXObject: 86, - paintInlineImageXObjectGroup: 87, - paintImageXObjectRepeat: 88, - paintImageMaskXObjectRepeat: 89, - paintSolidColorImageMask: 90, - constructPath: 91, - }; - t.PasswordResponses = { NEED_PASSWORD: 1, INCORRECT_PASSWORD: 2 }; - let n = r.WARNINGS; - function warn(e) { - n >= r.WARNINGS && console.log(`Warning: ${e}`); - } - function unreachable(e) { - throw new Error(e); - } - function shadow(e, t, a, r = !1) { - Object.defineProperty(e, t, { - value: a, - enumerable: !r, - configurable: !0, - writable: !1, - }); - return a; - } - const i = (function BaseExceptionClosure() { - function BaseException(e, t) { - this.constructor === BaseException && - unreachable("Cannot initialize BaseException."); - this.message = e; - this.name = t; - } - BaseException.prototype = new Error(); - BaseException.constructor = BaseException; - return BaseException; - })(); - t.BaseException = i; - t.PasswordException = class PasswordException extends i { - constructor(e, t) { - super(e, "PasswordException"); - this.code = t; - } - }; - t.UnknownErrorException = class UnknownErrorException extends i { - constructor(e, t) { - super(e, "UnknownErrorException"); - this.details = t; - } - }; - t.InvalidPDFException = class InvalidPDFException extends i { - constructor(e) { - super(e, "InvalidPDFException"); - } - }; - t.MissingPDFException = class MissingPDFException extends i { - constructor(e) { - super(e, "MissingPDFException"); - } - }; - t.UnexpectedResponseException = class UnexpectedResponseException extends ( - i - ) { - constructor(e, t) { - super(e, "UnexpectedResponseException"); - this.status = t; - } - }; - t.FormatError = class FormatError extends i { - constructor(e) { - super(e, "FormatError"); - } - }; - t.AbortException = class AbortException extends i { - constructor(e) { - super(e, "AbortException"); - } - }; - function bytesToString(e) { - ("object" == typeof e && void 0 !== e?.length) || - unreachable("Invalid argument for bytesToString"); - const t = e.length, - a = 8192; - if (t < a) return String.fromCharCode.apply(null, e); - const r = []; - for (let n = 0; n < t; n += a) { - const i = Math.min(n + a, t), - s = e.subarray(n, i); - r.push(String.fromCharCode.apply(null, s)); - } - return r.join(""); - } - function stringToBytes(e) { - "string" != typeof e && - unreachable("Invalid argument for stringToBytes"); - const t = e.length, - a = new Uint8Array(t); - for (let r = 0; r < t; ++r) a[r] = 255 & e.charCodeAt(r); - return a; - } - t.FeatureTest = class FeatureTest { - static get isLittleEndian() { - return shadow( - this, - "isLittleEndian", - (function isLittleEndian() { - const e = new Uint8Array(4); - e[0] = 1; - return 1 === new Uint32Array(e.buffer, 0, 1)[0]; - })(), - ); - } - static get isEvalSupported() { - return shadow( - this, - "isEvalSupported", - (function isEvalSupported() { - try { - new Function(""); - return !0; - } catch { - return !1; - } - })(), - ); - } - static get isOffscreenCanvasSupported() { - return shadow( - this, - "isOffscreenCanvasSupported", - "undefined" != typeof OffscreenCanvas, - ); - } - static get platform() { - return "undefined" == typeof navigator - ? shadow(this, "platform", { isWin: !1, isMac: !1 }) - : shadow(this, "platform", { - isWin: navigator.platform.includes("Win"), - isMac: navigator.platform.includes("Mac"), - }); - } - static get isCSSRoundSupported() { - return shadow( - this, - "isCSSRoundSupported", - globalThis.CSS?.supports?.("width: round(1.5px, 1px)"), - ); - } - }; - const s = [...Array(256).keys()].map((e) => - e.toString(16).padStart(2, "0"), - ); - t.Util = class Util { - static makeHexColor(e, t, a) { - return `#${s[e]}${s[t]}${s[a]}`; - } - static scaleMinMax(e, t) { - let a; - if (e[0]) { - if (e[0] < 0) { - a = t[0]; - t[0] = t[1]; - t[1] = a; - } - t[0] *= e[0]; - t[1] *= e[0]; - if (e[3] < 0) { - a = t[2]; - t[2] = t[3]; - t[3] = a; - } - t[2] *= e[3]; - t[3] *= e[3]; - } else { - a = t[0]; - t[0] = t[2]; - t[2] = a; - a = t[1]; - t[1] = t[3]; - t[3] = a; - if (e[1] < 0) { - a = t[2]; - t[2] = t[3]; - t[3] = a; - } - t[2] *= e[1]; - t[3] *= e[1]; - if (e[2] < 0) { - a = t[0]; - t[0] = t[1]; - t[1] = a; - } - t[0] *= e[2]; - t[1] *= e[2]; - } - t[0] += e[4]; - t[1] += e[4]; - t[2] += e[5]; - t[3] += e[5]; - } - static transform(e, t) { - return [ - e[0] * t[0] + e[2] * t[1], - e[1] * t[0] + e[3] * t[1], - e[0] * t[2] + e[2] * t[3], - e[1] * t[2] + e[3] * t[3], - e[0] * t[4] + e[2] * t[5] + e[4], - e[1] * t[4] + e[3] * t[5] + e[5], - ]; - } - static applyTransform(e, t) { - return [ - e[0] * t[0] + e[1] * t[2] + t[4], - e[0] * t[1] + e[1] * t[3] + t[5], - ]; - } - static applyInverseTransform(e, t) { - const a = t[0] * t[3] - t[1] * t[2]; - return [ - (e[0] * t[3] - e[1] * t[2] + t[2] * t[5] - t[4] * t[3]) / a, - (-e[0] * t[1] + e[1] * t[0] + t[4] * t[1] - t[5] * t[0]) / a, - ]; - } - static getAxialAlignedBoundingBox(e, t) { - const a = this.applyTransform(e, t), - r = this.applyTransform(e.slice(2, 4), t), - n = this.applyTransform([e[0], e[3]], t), - i = this.applyTransform([e[2], e[1]], t); - return [ - Math.min(a[0], r[0], n[0], i[0]), - Math.min(a[1], r[1], n[1], i[1]), - Math.max(a[0], r[0], n[0], i[0]), - Math.max(a[1], r[1], n[1], i[1]), - ]; - } - static inverseTransform(e) { - const t = e[0] * e[3] - e[1] * e[2]; - return [ - e[3] / t, - -e[1] / t, - -e[2] / t, - e[0] / t, - (e[2] * e[5] - e[4] * e[3]) / t, - (e[4] * e[1] - e[5] * e[0]) / t, - ]; - } - static singularValueDecompose2dScale(e) { - const t = [e[0], e[2], e[1], e[3]], - a = e[0] * t[0] + e[1] * t[2], - r = e[0] * t[1] + e[1] * t[3], - n = e[2] * t[0] + e[3] * t[2], - i = e[2] * t[1] + e[3] * t[3], - s = (a + i) / 2, - o = Math.sqrt((a + i) ** 2 - 4 * (a * i - n * r)) / 2, - c = s + o || 1, - l = s - o || 1; - return [Math.sqrt(c), Math.sqrt(l)]; - } - static normalizeRect(e) { - const t = e.slice(0); - if (e[0] > e[2]) { - t[0] = e[2]; - t[2] = e[0]; - } - if (e[1] > e[3]) { - t[1] = e[3]; - t[3] = e[1]; - } - return t; - } - static intersect(e, t) { - const a = Math.max(Math.min(e[0], e[2]), Math.min(t[0], t[2])), - r = Math.min(Math.max(e[0], e[2]), Math.max(t[0], t[2])); - if (a > r) return null; - const n = Math.max(Math.min(e[1], e[3]), Math.min(t[1], t[3])), - i = Math.min(Math.max(e[1], e[3]), Math.max(t[1], t[3])); - return n > i ? null : [a, n, r, i]; - } - static bezierBoundingBox(e, t, a, r, n, i, s, o) { - const c = [], - l = [[], []]; - let h, u, d, f, g, p, m, b; - for (let l = 0; l < 2; ++l) { - if (0 === l) { - u = 6 * e - 12 * a + 6 * n; - h = -3 * e + 9 * a - 9 * n + 3 * s; - d = 3 * a - 3 * e; - } else { - u = 6 * t - 12 * r + 6 * i; - h = -3 * t + 9 * r - 9 * i + 3 * o; - d = 3 * r - 3 * t; - } - if (Math.abs(h) < 1e-12) { - if (Math.abs(u) < 1e-12) continue; - f = -d / u; - 0 < f && f < 1 && c.push(f); - } else { - m = u * u - 4 * d * h; - b = Math.sqrt(m); - if (!(m < 0)) { - g = (-u + b) / (2 * h); - 0 < g && g < 1 && c.push(g); - p = (-u - b) / (2 * h); - 0 < p && p < 1 && c.push(p); - } - } - } - let y, - w = c.length; - const S = w; - for (; w--; ) { - f = c[w]; - y = 1 - f; - l[0][w] = - y * y * y * e + - 3 * y * y * f * a + - 3 * y * f * f * n + - f * f * f * s; - l[1][w] = - y * y * y * t + - 3 * y * y * f * r + - 3 * y * f * f * i + - f * f * f * o; - } - l[0][S] = e; - l[1][S] = t; - l[0][S + 1] = s; - l[1][S + 1] = o; - l[0].length = l[1].length = S + 2; - return [ - Math.min(...l[0]), - Math.min(...l[1]), - Math.max(...l[0]), - Math.max(...l[1]), - ]; - } - }; - const o = [ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 728, 711, 710, 729, 733, 731, 730, 732, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8226, 8224, - 8225, 8230, 8212, 8211, 402, 8260, 8249, 8250, 8722, 8240, 8222, - 8220, 8221, 8216, 8217, 8218, 8482, 64257, 64258, 321, 338, 352, - 376, 381, 305, 322, 339, 353, 382, 0, 8364, - ]; - function stringToUTF8String(e) { - return decodeURIComponent(escape(e)); - } - t.PromiseCapability = class PromiseCapability { - #e = !1; - constructor() { - this.promise = new Promise((e, t) => { - this.resolve = (t) => { - this.#e = !0; - e(t); - }; - this.reject = (e) => { - this.#e = !0; - t(e); - }; - }); - } - get settled() { - return this.#e; - } - }; - let c = null, - l = null; - t.AnnotationPrefix = "pdfjs_internal_id_"; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.XRefParseException = - t.XRefEntryException = - t.ParserEOFException = - t.PDF_VERSION_REGEXP = - t.MissingDataException = - void 0; - t.arrayBuffersToBytes = function arrayBuffersToBytes(e) { - const t = e.length; - if (0 === t) return new Uint8Array(0); - if (1 === t) return new Uint8Array(e[0]); - let a = 0; - for (let r = 0; r < t; r++) a += e[r].byteLength; - const r = new Uint8Array(a); - let n = 0; - for (let a = 0; a < t; a++) { - const t = new Uint8Array(e[a]); - r.set(t, n); - n += t.byteLength; - } - return r; - }; - t.collectActions = function collectActions(e, t, a) { - const i = Object.create(null), - s = getInheritableProperty({ - dict: t, - key: "AA", - stopWhenFound: !1, - }); - if (s) - for (let t = s.length - 1; t >= 0; t--) { - const r = s[t]; - if (r instanceof n.Dict) - for (const t of r.getKeys()) { - const s = a[t]; - if (!s) continue; - const o = []; - _collectJS(r.getRaw(t), e, o, new n.RefSet()); - o.length > 0 && (i[s] = o); - } - } - if (t.has("A")) { - const a = []; - _collectJS(t.get("A"), e, a, new n.RefSet()); - a.length > 0 && (i.Action = a); - } - return (0, r.objectSize)(i) > 0 ? i : null; - }; - t.encodeToXmlString = function encodeToXmlString(e) { - const t = []; - let a = 0; - for (let r = 0, n = e.length; r < n; r++) { - const n = e.codePointAt(r); - if (32 <= n && n <= 126) { - const i = o[n]; - if (i) { - a < r && t.push(e.substring(a, r)); - t.push(i); - a = r + 1; - } - } else { - a < r && t.push(e.substring(a, r)); - t.push(`&#x${n.toString(16).toUpperCase()};`); - n > 55295 && (n < 57344 || n > 65533) && r++; - a = r + 1; - } - } - if (0 === t.length) return e; - a < e.length && t.push(e.substring(a, e.length)); - return t.join(""); - }; - t.escapePDFName = function escapePDFName(e) { - const t = []; - let a = 0; - for (let r = 0, n = e.length; r < n; r++) { - const n = e.charCodeAt(r); - if ( - n < 33 || - n > 126 || - 35 === n || - 40 === n || - 41 === n || - 60 === n || - 62 === n || - 91 === n || - 93 === n || - 123 === n || - 125 === n || - 47 === n || - 37 === n - ) { - a < r && t.push(e.substring(a, r)); - t.push(`#${n.toString(16)}`); - a = r + 1; - } - } - if (0 === t.length) return e; - a < e.length && t.push(e.substring(a, e.length)); - return t.join(""); - }; - t.escapeString = function escapeString(e) { - return e.replaceAll(/([()\\\n\r])/g, (e) => - "\n" === e ? "\\n" : "\r" === e ? "\\r" : `\\${e}`, - ); - }; - t.getInheritableProperty = getInheritableProperty; - t.getLookupTableFactory = function getLookupTableFactory(e) { - let t; - return function () { - if (e) { - t = Object.create(null); - e(t); - e = null; - } - return t; - }; - }; - t.getNewAnnotationsMap = function getNewAnnotationsMap(e) { - if (!e) return null; - const t = new Map(); - for (const [a, n] of e) { - if (!a.startsWith(r.AnnotationEditorPrefix)) continue; - let e = t.get(n.pageIndex); - if (!e) { - e = []; - t.set(n.pageIndex, e); - } - e.push(n); - } - return t.size > 0 ? t : null; - }; - t.getRotationMatrix = function getRotationMatrix(e, t, a) { - switch (e) { - case 90: - return [0, 1, -1, 0, t, 0]; - case 180: - return [-1, 0, 0, -1, t, a]; - case 270: - return [0, -1, 1, 0, 0, a]; - default: - throw new Error("Invalid rotation"); - } - }; - t.isAscii = function isAscii(e) { - return /^[\x00-\x7F]*$/.test(e); - }; - t.isWhiteSpace = function isWhiteSpace(e) { - return 32 === e || 9 === e || 13 === e || 10 === e; - }; - t.log2 = function log2(e) { - if (e <= 0) return 0; - return Math.ceil(Math.log2(e)); - }; - t.numberToString = function numberToString(e) { - if (Number.isInteger(e)) return e.toString(); - const t = Math.round(100 * e); - if (t % 100 == 0) return (t / 100).toString(); - if (t % 10 == 0) return e.toFixed(1); - return e.toFixed(2); - }; - t.parseXFAPath = function parseXFAPath(e) { - const t = /(.+)\[(\d+)\]$/; - return e.split(".").map((e) => { - const a = e.match(t); - return a - ? { name: a[1], pos: parseInt(a[2], 10) } - : { name: e, pos: 0 }; - }); - }; - t.readInt8 = function readInt8(e, t) { - return (e[t] << 24) >> 24; - }; - t.readUint16 = function readUint16(e, t) { - return (e[t] << 8) | e[t + 1]; - }; - t.readUint32 = function readUint32(e, t) { - return ( - ((e[t] << 24) | (e[t + 1] << 16) | (e[t + 2] << 8) | e[t + 3]) >>> - 0 - ); - }; - t.recoverJsURL = function recoverJsURL(e) { - const t = new RegExp( - "^\\s*(" + - ["app.launchURL", "window.open", "xfa.host.gotoURL"] - .join("|") - .replaceAll(".", "\\.") + - ")\\((?:'|\")([^'\"]*)(?:'|\")(?:,\\s*(\\w+)\\)|\\))", - "i", - ).exec(e); - if (t?.[2]) { - const e = t[2]; - let a = !1; - "true" === t[3] && "app.launchURL" === t[1] && (a = !0); - return { url: e, newWindow: a }; - } - return null; - }; - t.stringToUTF16HexString = function stringToUTF16HexString(e) { - const t = []; - for (let a = 0, r = e.length; a < r; a++) { - const r = e.charCodeAt(a); - t.push( - ((r >> 8) & 255).toString(16).padStart(2, "0"), - (255 & r).toString(16).padStart(2, "0"), - ); - } - return t.join(""); - }; - t.stringToUTF16String = function stringToUTF16String(e, t = !1) { - const a = []; - t && a.push("þÿ"); - for (let t = 0, r = e.length; t < r; t++) { - const r = e.charCodeAt(t); - a.push( - String.fromCharCode((r >> 8) & 255), - String.fromCharCode(255 & r), - ); - } - return a.join(""); - }; - t.toRomanNumerals = function toRomanNumerals(e, t = !1) { - (0, r.assert)( - Number.isInteger(e) && e > 0, - "The number should be a positive integer.", - ); - const a = []; - let n; - for (; e >= 1e3; ) { - e -= 1e3; - a.push("M"); - } - n = (e / 100) | 0; - e %= 100; - a.push(s[n]); - n = (e / 10) | 0; - e %= 10; - a.push(s[10 + n]); - a.push(s[20 + e]); - const i = a.join(""); - return t ? i.toLowerCase() : i; - }; - t.validateCSSFont = function validateCSSFont(e) { - const t = new Set([ - "100", - "200", - "300", - "400", - "500", - "600", - "700", - "800", - "900", - "1000", - "normal", - "bold", - "bolder", - "lighter", - ]), - { fontFamily: a, fontWeight: r, italicAngle: n } = e; - if (!validateFontName(a, !0)) return !1; - const i = r ? r.toString() : ""; - e.fontWeight = t.has(i) ? i : "400"; - const s = parseFloat(n); - e.italicAngle = isNaN(s) || s < -90 || s > 90 ? "14" : n.toString(); - return !0; - }; - t.validateFontName = validateFontName; - var r = a(2), - n = a(4), - i = a(5); - t.PDF_VERSION_REGEXP = /^[1-9]\.\d$/; - class MissingDataException extends r.BaseException { - constructor(e, t) { - super(`Missing data [${e}, ${t})`, "MissingDataException"); - this.begin = e; - this.end = t; - } - } - t.MissingDataException = MissingDataException; - class ParserEOFException extends r.BaseException { - constructor(e) { - super(e, "ParserEOFException"); - } - } - t.ParserEOFException = ParserEOFException; - class XRefEntryException extends r.BaseException { - constructor(e) { - super(e, "XRefEntryException"); - } - } - t.XRefEntryException = XRefEntryException; - class XRefParseException extends r.BaseException { - constructor(e) { - super(e, "XRefParseException"); - } - } - t.XRefParseException = XRefParseException; - function getInheritableProperty({ - dict: e, - key: t, - getArray: a = !1, - stopWhenFound: r = !0, - }) { - let i; - const s = new n.RefSet(); - for (; e instanceof n.Dict && (!e.objId || !s.has(e.objId)); ) { - e.objId && s.put(e.objId); - const n = a ? e.getArray(t) : e.get(t); - if (void 0 !== n) { - if (r) return n; - (i ||= []).push(n); - } - e = e.get("Parent"); - } - return i; - } - const s = [ - "", - "C", - "CC", - "CCC", - "CD", - "D", - "DC", - "DCC", - "DCCC", - "CM", - "", - "X", - "XX", - "XXX", - "XL", - "L", - "LX", - "LXX", - "LXXX", - "XC", - "", - "I", - "II", - "III", - "IV", - "V", - "VI", - "VII", - "VIII", - "IX", - ]; - function _collectJS(e, t, a, s) { - if (!e) return; - let o = null; - if (e instanceof n.Ref) { - if (s.has(e)) return; - o = e; - s.put(o); - e = t.fetch(e); - } - if (Array.isArray(e)) for (const r of e) _collectJS(r, t, a, s); - else if (e instanceof n.Dict) { - if ((0, n.isName)(e.get("S"), "JavaScript")) { - const t = e.get("JS"); - let n; - t instanceof i.BaseStream - ? (n = t.getString()) - : "string" == typeof t && (n = t); - n &&= (0, r.stringToPDFString)(n).replaceAll("\0", ""); - n && a.push(n); - } - _collectJS(e.getRaw("Next"), t, a, s); - } - o && s.remove(o); - } - const o = { - 60: "<", - 62: ">", - 38: "&", - 34: """, - 39: "'", - }; - function validateFontName(e, t = !1) { - const a = /^("|').*("|')$/.exec(e); - if (a && a[1] === a[2]) { - if (new RegExp(`[^\\\\]${a[1]}`).test(e.slice(1, -1))) { - t && - (0, r.warn)(`FontFamily contains unescaped ${a[1]}: ${e}.`); - return !1; - } - } else - for (const a of e.split(/[ \t]+/)) - if (/^(\d|(-(\d|-)))/.test(a) || !/^[\w-\\]+$/.test(a)) { - t && - (0, r.warn)( - `FontFamily contains invalid : ${e}.`, - ); - return !1; - } - return !0; - } - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.RefSetCache = - t.RefSet = - t.Ref = - t.Name = - t.EOF = - t.Dict = - t.Cmd = - t.CIRCULAR_REF = - void 0; - t.clearPrimitiveCaches = function clearPrimitiveCaches() { - s = Object.create(null); - o = Object.create(null); - c = Object.create(null); - }; - t.isCmd = function isCmd(e, t) { - return e instanceof Cmd && (void 0 === t || e.cmd === t); - }; - t.isDict = function isDict(e, t) { - return ( - e instanceof Dict && (void 0 === t || isName(e.get("Type"), t)) - ); - }; - t.isName = isName; - t.isRefsEqual = function isRefsEqual(e, t) { - return e.num === t.num && e.gen === t.gen; - }; - var r = a(2); - const n = Symbol("CIRCULAR_REF"); - t.CIRCULAR_REF = n; - const i = Symbol("EOF"); - t.EOF = i; - let s = Object.create(null), - o = Object.create(null), - c = Object.create(null); - class Name { - constructor(e) { - this.name = e; - } - static get(e) { - return (o[e] ||= new Name(e)); - } - } - t.Name = Name; - class Cmd { - constructor(e) { - this.cmd = e; - } - static get(e) { - return (s[e] ||= new Cmd(e)); - } - } - t.Cmd = Cmd; - const l = function nonSerializableClosure() { - return l; - }; - class Dict { - constructor(e = null) { - this._map = Object.create(null); - this.xref = e; - this.objId = null; - this.suppressEncryption = !1; - this.__nonSerializable__ = l; - } - assignXref(e) { - this.xref = e; - } - get size() { - return Object.keys(this._map).length; - } - get(e, t, a) { - let r = this._map[e]; - if (void 0 === r && void 0 !== t) { - r = this._map[t]; - void 0 === r && void 0 !== a && (r = this._map[a]); - } - return r instanceof Ref && this.xref - ? this.xref.fetch(r, this.suppressEncryption) - : r; - } - async getAsync(e, t, a) { - let r = this._map[e]; - if (void 0 === r && void 0 !== t) { - r = this._map[t]; - void 0 === r && void 0 !== a && (r = this._map[a]); - } - return r instanceof Ref && this.xref - ? this.xref.fetchAsync(r, this.suppressEncryption) - : r; - } - getArray(e, t, a) { - let r = this._map[e]; - if (void 0 === r && void 0 !== t) { - r = this._map[t]; - void 0 === r && void 0 !== a && (r = this._map[a]); - } - r instanceof Ref && - this.xref && - (r = this.xref.fetch(r, this.suppressEncryption)); - if (Array.isArray(r)) { - r = r.slice(); - for (let e = 0, t = r.length; e < t; e++) - r[e] instanceof Ref && - this.xref && - (r[e] = this.xref.fetch(r[e], this.suppressEncryption)); - } - return r; - } - getRaw(e) { - return this._map[e]; - } - getKeys() { - return Object.keys(this._map); - } - getRawValues() { - return Object.values(this._map); - } - set(e, t) { - this._map[e] = t; - } - has(e) { - return void 0 !== this._map[e]; - } - forEach(e) { - for (const t in this._map) e(t, this.get(t)); - } - static get empty() { - const e = new Dict(null); - e.set = (e, t) => { - (0, r.unreachable)( - "Should not call `set` on the empty dictionary.", - ); - }; - return (0, r.shadow)(this, "empty", e); - } - static merge({ xref: e, dictArray: t, mergeSubDicts: a = !1 }) { - const r = new Dict(e), - n = new Map(); - for (const e of t) - if (e instanceof Dict) - for (const [t, r] of Object.entries(e._map)) { - let e = n.get(t); - if (void 0 === e) { - e = []; - n.set(t, e); - } else if (!(a && r instanceof Dict)) continue; - e.push(r); - } - for (const [t, a] of n) { - if (1 === a.length || !(a[0] instanceof Dict)) { - r._map[t] = a[0]; - continue; - } - const n = new Dict(e); - for (const e of a) - for (const [t, a] of Object.entries(e._map)) - void 0 === n._map[t] && (n._map[t] = a); - n.size > 0 && (r._map[t] = n); - } - n.clear(); - return r.size > 0 ? r : Dict.empty; - } - clone() { - const e = new Dict(this.xref); - for (const t of this.getKeys()) e.set(t, this.getRaw(t)); - return e; - } - } - t.Dict = Dict; - class Ref { - constructor(e, t) { - this.num = e; - this.gen = t; - } - toString() { - return 0 === this.gen - ? `${this.num}R` - : `${this.num}R${this.gen}`; - } - static fromString(e) { - const t = c[e]; - if (t) return t; - const a = /^(\d+)R(\d*)$/.exec(e); - return a && "0" !== a[1] - ? (c[e] = new Ref(parseInt(a[1]), a[2] ? parseInt(a[2]) : 0)) - : null; - } - static get(e, t) { - const a = 0 === t ? `${e}R` : `${e}R${t}`; - return (c[a] ||= new Ref(e, t)); - } - } - t.Ref = Ref; - class RefSet { - constructor(e = null) { - this._set = new Set(e?._set); - } - has(e) { - return this._set.has(e.toString()); - } - put(e) { - this._set.add(e.toString()); - } - remove(e) { - this._set.delete(e.toString()); - } - [Symbol.iterator]() { - return this._set.values(); - } - clear() { - this._set.clear(); - } - } - t.RefSet = RefSet; - class RefSetCache { - constructor() { - this._map = new Map(); - } - get size() { - return this._map.size; - } - get(e) { - return this._map.get(e.toString()); - } - has(e) { - return this._map.has(e.toString()); - } - put(e, t) { - this._map.set(e.toString(), t); - } - putAlias(e, t) { - this._map.set(e.toString(), this.get(t)); - } - [Symbol.iterator]() { - return this._map.values(); - } - clear() { - this._map.clear(); - } - } - t.RefSetCache = RefSetCache; - function isName(e, t) { - return e instanceof Name && (void 0 === t || e.name === t); - } - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.BaseStream = void 0; - var r = a(2); - class BaseStream { - constructor() { - this.constructor === BaseStream && - (0, r.unreachable)("Cannot initialize BaseStream."); - } - get length() { - (0, r.unreachable)("Abstract getter `length` accessed"); - } - get isEmpty() { - (0, r.unreachable)("Abstract getter `isEmpty` accessed"); - } - get isDataLoaded() { - return (0, r.shadow)(this, "isDataLoaded", !0); - } - getByte() { - (0, r.unreachable)("Abstract method `getByte` called"); - } - getBytes(e) { - (0, r.unreachable)("Abstract method `getBytes` called"); - } - peekByte() { - const e = this.getByte(); - -1 !== e && this.pos--; - return e; - } - peekBytes(e) { - const t = this.getBytes(e); - this.pos -= t.length; - return t; - } - getUint16() { - const e = this.getByte(), - t = this.getByte(); - return -1 === e || -1 === t ? -1 : (e << 8) + t; - } - getInt32() { - return ( - (this.getByte() << 24) + - (this.getByte() << 16) + - (this.getByte() << 8) + - this.getByte() - ); - } - getByteRange(e, t) { - (0, r.unreachable)("Abstract method `getByteRange` called"); - } - getString(e) { - return (0, r.bytesToString)(this.getBytes(e)); - } - skip(e) { - this.pos += e || 1; - } - reset() { - (0, r.unreachable)("Abstract method `reset` called"); - } - moveStart() { - (0, r.unreachable)("Abstract method `moveStart` called"); - } - makeSubStream(e, t, a = null) { - (0, r.unreachable)("Abstract method `makeSubStream` called"); - } - getBaseStreams() { - return null; - } - } - t.BaseStream = BaseStream; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.NetworkPdfManager = t.LocalPdfManager = void 0; - var r = a(2), - n = a(7), - i = a(3), - s = a(9), - o = a(8); - class BasePdfManager { - constructor(e) { - this.constructor === BasePdfManager && - (0, r.unreachable)("Cannot initialize BasePdfManager."); - this._docBaseUrl = (function parseDocBaseUrl(e) { - if (e) { - const t = (0, r.createValidAbsoluteUrl)(e); - if (t) return t.href; - (0, r.warn)(`Invalid absolute docBaseUrl: "${e}".`); - } - return null; - })(e.docBaseUrl); - this._docId = e.docId; - this._password = e.password; - this.enableXfa = e.enableXfa; - e.evaluatorOptions.isOffscreenCanvasSupported &&= - r.FeatureTest.isOffscreenCanvasSupported; - this.evaluatorOptions = e.evaluatorOptions; - } - get docId() { - return this._docId; - } - get password() { - return this._password; - } - get docBaseUrl() { - return this._docBaseUrl; - } - get catalog() { - return this.pdfDocument.catalog; - } - ensureDoc(e, t) { - return this.ensure(this.pdfDocument, e, t); - } - ensureXRef(e, t) { - return this.ensure(this.pdfDocument.xref, e, t); - } - ensureCatalog(e, t) { - return this.ensure(this.pdfDocument.catalog, e, t); - } - getPage(e) { - return this.pdfDocument.getPage(e); - } - fontFallback(e, t) { - return this.pdfDocument.fontFallback(e, t); - } - loadXfaFonts(e, t) { - return this.pdfDocument.loadXfaFonts(e, t); - } - loadXfaImages() { - return this.pdfDocument.loadXfaImages(); - } - serializeXfaData(e) { - return this.pdfDocument.serializeXfaData(e); - } - cleanup(e = !1) { - return this.pdfDocument.cleanup(e); - } - async ensure(e, t, a) { - (0, r.unreachable)("Abstract method `ensure` called"); - } - requestRange(e, t) { - (0, r.unreachable)("Abstract method `requestRange` called"); - } - requestLoadedStream(e = !1) { - (0, r.unreachable)( - "Abstract method `requestLoadedStream` called", - ); - } - sendProgressiveData(e) { - (0, r.unreachable)( - "Abstract method `sendProgressiveData` called", - ); - } - updatePassword(e) { - this._password = e; - } - terminate(e) { - (0, r.unreachable)("Abstract method `terminate` called"); - } - } - t.LocalPdfManager = class LocalPdfManager extends BasePdfManager { - constructor(e) { - super(e); - const t = new o.Stream(e.source); - this.pdfDocument = new s.PDFDocument(this, t); - this._loadedStreamPromise = Promise.resolve(t); - } - async ensure(e, t, a) { - const r = e[t]; - return "function" == typeof r ? r.apply(e, a) : r; - } - requestRange(e, t) { - return Promise.resolve(); - } - requestLoadedStream(e = !1) { - return this._loadedStreamPromise; - } - terminate(e) {} - }; - t.NetworkPdfManager = class NetworkPdfManager extends BasePdfManager { - constructor(e) { - super(e); - this.streamManager = new n.ChunkedStreamManager(e.source, { - msgHandler: e.handler, - length: e.length, - disableAutoFetch: e.disableAutoFetch, - rangeChunkSize: e.rangeChunkSize, - }); - this.pdfDocument = new s.PDFDocument( - this, - this.streamManager.getStream(), - ); - } - async ensure(e, t, a) { - try { - const r = e[t]; - return "function" == typeof r ? r.apply(e, a) : r; - } catch (r) { - if (!(r instanceof i.MissingDataException)) throw r; - await this.requestRange(r.begin, r.end); - return this.ensure(e, t, a); - } - } - requestRange(e, t) { - return this.streamManager.requestRange(e, t); - } - requestLoadedStream(e = !1) { - return this.streamManager.requestAllChunks(e); - } - sendProgressiveData(e) { - this.streamManager.onReceiveData({ chunk: e }); - } - terminate(e) { - this.streamManager.abort(e); - } - }; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.ChunkedStreamManager = t.ChunkedStream = void 0; - var r = a(3), - n = a(2), - i = a(8); - class ChunkedStream extends i.Stream { - constructor(e, t, a) { - super(new Uint8Array(e), 0, e, null); - this.chunkSize = t; - this._loadedChunks = new Set(); - this.numChunks = Math.ceil(e / t); - this.manager = a; - this.progressiveDataLength = 0; - this.lastSuccessfulEnsureByteChunk = -1; - } - getMissingChunks() { - const e = []; - for (let t = 0, a = this.numChunks; t < a; ++t) - this._loadedChunks.has(t) || e.push(t); - return e; - } - get numChunksLoaded() { - return this._loadedChunks.size; - } - get isDataLoaded() { - return this.numChunksLoaded === this.numChunks; - } - onReceiveData(e, t) { - const a = this.chunkSize; - if (e % a != 0) throw new Error(`Bad begin offset: ${e}`); - const r = e + t.byteLength; - if (r % a != 0 && r !== this.bytes.length) - throw new Error(`Bad end offset: ${r}`); - this.bytes.set(new Uint8Array(t), e); - const n = Math.floor(e / a), - i = Math.floor((r - 1) / a) + 1; - for (let e = n; e < i; ++e) this._loadedChunks.add(e); - } - onReceiveProgressiveData(e) { - let t = this.progressiveDataLength; - const a = Math.floor(t / this.chunkSize); - this.bytes.set(new Uint8Array(e), t); - t += e.byteLength; - this.progressiveDataLength = t; - const r = - t >= this.end ? this.numChunks : Math.floor(t / this.chunkSize); - for (let e = a; e < r; ++e) this._loadedChunks.add(e); - } - ensureByte(e) { - if (e < this.progressiveDataLength) return; - const t = Math.floor(e / this.chunkSize); - if ( - !(t > this.numChunks) && - t !== this.lastSuccessfulEnsureByteChunk - ) { - if (!this._loadedChunks.has(t)) - throw new r.MissingDataException(e, e + 1); - this.lastSuccessfulEnsureByteChunk = t; - } - } - ensureRange(e, t) { - if (e >= t) return; - if (t <= this.progressiveDataLength) return; - const a = Math.floor(e / this.chunkSize); - if (a > this.numChunks) return; - const n = Math.min( - Math.floor((t - 1) / this.chunkSize) + 1, - this.numChunks, - ); - for (let i = a; i < n; ++i) - if (!this._loadedChunks.has(i)) - throw new r.MissingDataException(e, t); - } - nextEmptyChunk(e) { - const t = this.numChunks; - for (let a = 0; a < t; ++a) { - const r = (e + a) % t; - if (!this._loadedChunks.has(r)) return r; - } - return null; - } - hasChunk(e) { - return this._loadedChunks.has(e); - } - getByte() { - const e = this.pos; - if (e >= this.end) return -1; - e >= this.progressiveDataLength && this.ensureByte(e); - return this.bytes[this.pos++]; - } - getBytes(e) { - const t = this.bytes, - a = this.pos, - r = this.end; - if (!e) { - r > this.progressiveDataLength && this.ensureRange(a, r); - return t.subarray(a, r); - } - let n = a + e; - n > r && (n = r); - n > this.progressiveDataLength && this.ensureRange(a, n); - this.pos = n; - return t.subarray(a, n); - } - getByteRange(e, t) { - e < 0 && (e = 0); - t > this.end && (t = this.end); - t > this.progressiveDataLength && this.ensureRange(e, t); - return this.bytes.subarray(e, t); - } - makeSubStream(e, t, a = null) { - t - ? e + t > this.progressiveDataLength && - this.ensureRange(e, e + t) - : e >= this.progressiveDataLength && this.ensureByte(e); - function ChunkedStreamSubstream() {} - ChunkedStreamSubstream.prototype = Object.create(this); - ChunkedStreamSubstream.prototype.getMissingChunks = function () { - const e = this.chunkSize, - t = Math.floor(this.start / e), - a = Math.floor((this.end - 1) / e) + 1, - r = []; - for (let e = t; e < a; ++e) - this._loadedChunks.has(e) || r.push(e); - return r; - }; - Object.defineProperty( - ChunkedStreamSubstream.prototype, - "isDataLoaded", - { - get() { - return ( - this.numChunksLoaded === this.numChunks || - 0 === this.getMissingChunks().length - ); - }, - configurable: !0, - }, - ); - const r = new ChunkedStreamSubstream(); - r.pos = r.start = e; - r.end = e + t || this.end; - r.dict = a; - return r; - } - getBaseStreams() { - return [this]; - } - } - t.ChunkedStream = ChunkedStream; - t.ChunkedStreamManager = class ChunkedStreamManager { - constructor(e, t) { - this.length = t.length; - this.chunkSize = t.rangeChunkSize; - this.stream = new ChunkedStream( - this.length, - this.chunkSize, - this, - ); - this.pdfNetworkStream = e; - this.disableAutoFetch = t.disableAutoFetch; - this.msgHandler = t.msgHandler; - this.currRequestId = 0; - this._chunksNeededByRequest = new Map(); - this._requestsByChunk = new Map(); - this._promisesByRequest = new Map(); - this.progressiveDataLength = 0; - this.aborted = !1; - this._loadedStreamCapability = new n.PromiseCapability(); - } - sendRequest(e, t) { - const a = this.pdfNetworkStream.getRangeReader(e, t); - a.isStreamingSupported || - (a.onProgress = this.onProgress.bind(this)); - let n = [], - i = 0; - return new Promise((e, t) => { - const readChunk = ({ value: s, done: o }) => { - try { - if (o) { - const t = (0, r.arrayBuffersToBytes)(n); - n = null; - e(t); - return; - } - i += s.byteLength; - a.isStreamingSupported && this.onProgress({ loaded: i }); - n.push(s); - a.read().then(readChunk, t); - } catch (e) { - t(e); - } - }; - a.read().then(readChunk, t); - }).then((t) => { - this.aborted || this.onReceiveData({ chunk: t, begin: e }); - }); - } - requestAllChunks(e = !1) { - if (!e) { - const e = this.stream.getMissingChunks(); - this._requestChunks(e); - } - return this._loadedStreamCapability.promise; - } - _requestChunks(e) { - const t = this.currRequestId++, - a = new Set(); - this._chunksNeededByRequest.set(t, a); - for (const t of e) this.stream.hasChunk(t) || a.add(t); - if (0 === a.size) return Promise.resolve(); - const r = new n.PromiseCapability(); - this._promisesByRequest.set(t, r); - const i = []; - for (const e of a) { - let a = this._requestsByChunk.get(e); - if (!a) { - a = []; - this._requestsByChunk.set(e, a); - i.push(e); - } - a.push(t); - } - if (i.length > 0) { - const e = this.groupChunks(i); - for (const t of e) { - const e = t.beginChunk * this.chunkSize, - a = Math.min(t.endChunk * this.chunkSize, this.length); - this.sendRequest(e, a).catch(r.reject); - } - } - return r.promise.catch((e) => { - if (!this.aborted) throw e; - }); - } - getStream() { - return this.stream; - } - requestRange(e, t) { - t = Math.min(t, this.length); - const a = this.getBeginChunk(e), - r = this.getEndChunk(t), - n = []; - for (let e = a; e < r; ++e) n.push(e); - return this._requestChunks(n); - } - requestRanges(e = []) { - const t = []; - for (const a of e) { - const e = this.getBeginChunk(a.begin), - r = this.getEndChunk(a.end); - for (let a = e; a < r; ++a) t.includes(a) || t.push(a); - } - t.sort(function (e, t) { - return e - t; - }); - return this._requestChunks(t); - } - groupChunks(e) { - const t = []; - let a = -1, - r = -1; - for (let n = 0, i = e.length; n < i; ++n) { - const i = e[n]; - a < 0 && (a = i); - if (r >= 0 && r + 1 !== i) { - t.push({ beginChunk: a, endChunk: r + 1 }); - a = i; - } - n + 1 === e.length && - t.push({ beginChunk: a, endChunk: i + 1 }); - r = i; - } - return t; - } - onProgress(e) { - this.msgHandler.send("DocProgress", { - loaded: this.stream.numChunksLoaded * this.chunkSize + e.loaded, - total: this.length, - }); - } - onReceiveData(e) { - const t = e.chunk, - a = void 0 === e.begin, - r = a ? this.progressiveDataLength : e.begin, - n = r + t.byteLength, - i = Math.floor(r / this.chunkSize), - s = - n < this.length - ? Math.floor(n / this.chunkSize) - : Math.ceil(n / this.chunkSize); - if (a) { - this.stream.onReceiveProgressiveData(t); - this.progressiveDataLength = n; - } else this.stream.onReceiveData(r, t); - this.stream.isDataLoaded && - this._loadedStreamCapability.resolve(this.stream); - const o = []; - for (let e = i; e < s; ++e) { - const t = this._requestsByChunk.get(e); - if (t) { - this._requestsByChunk.delete(e); - for (const a of t) { - const t = this._chunksNeededByRequest.get(a); - t.has(e) && t.delete(e); - t.size > 0 || o.push(a); - } - } - } - if (!this.disableAutoFetch && 0 === this._requestsByChunk.size) { - let e; - if (1 === this.stream.numChunksLoaded) { - const t = this.stream.numChunks - 1; - this.stream.hasChunk(t) || (e = t); - } else e = this.stream.nextEmptyChunk(s); - Number.isInteger(e) && this._requestChunks([e]); - } - for (const e of o) { - const t = this._promisesByRequest.get(e); - this._promisesByRequest.delete(e); - t.resolve(); - } - this.msgHandler.send("DocProgress", { - loaded: this.stream.numChunksLoaded * this.chunkSize, - total: this.length, - }); - } - onError(e) { - this._loadedStreamCapability.reject(e); - } - getBeginChunk(e) { - return Math.floor(e / this.chunkSize); - } - getEndChunk(e) { - return Math.floor((e - 1) / this.chunkSize) + 1; - } - abort(e) { - this.aborted = !0; - this.pdfNetworkStream?.cancelAllRequests(e); - for (const t of this._promisesByRequest.values()) t.reject(e); - } - }; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.StringStream = t.Stream = t.NullStream = void 0; - var r = a(5), - n = a(2); - class Stream extends r.BaseStream { - constructor(e, t, a, r) { - super(); - this.bytes = e instanceof Uint8Array ? e : new Uint8Array(e); - this.start = t || 0; - this.pos = this.start; - this.end = t + a || this.bytes.length; - this.dict = r; - } - get length() { - return this.end - this.start; - } - get isEmpty() { - return 0 === this.length; - } - getByte() { - return this.pos >= this.end ? -1 : this.bytes[this.pos++]; - } - getBytes(e) { - const t = this.bytes, - a = this.pos, - r = this.end; - if (!e) return t.subarray(a, r); - let n = a + e; - n > r && (n = r); - this.pos = n; - return t.subarray(a, n); - } - getByteRange(e, t) { - e < 0 && (e = 0); - t > this.end && (t = this.end); - return this.bytes.subarray(e, t); - } - reset() { - this.pos = this.start; - } - moveStart() { - this.start = this.pos; - } - makeSubStream(e, t, a = null) { - return new Stream(this.bytes.buffer, e, t, a); - } - } - t.Stream = Stream; - t.StringStream = class StringStream extends Stream { - constructor(e) { - super((0, n.stringToBytes)(e)); - } - }; - t.NullStream = class NullStream extends Stream { - constructor() { - super(new Uint8Array(0)); - } - }; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.Page = t.PDFDocument = void 0; - var r = a(2), - n = a(10), - i = a(3), - s = a(4), - o = a(51), - c = a(5), - l = a(74), - h = a(66), - u = a(68), - d = a(102), - f = a(16), - g = a(8), - p = a(76), - m = a(64), - b = a(13), - y = a(18), - w = a(72), - S = a(73), - x = a(77), - C = a(103); - const k = [0, 0, 612, 792]; - class Page { - constructor({ - pdfManager: e, - xref: t, - pageIndex: a, - pageDict: r, - ref: n, - globalIdFactory: i, - fontCache: s, - builtInCMapCache: o, - standardFontDataCache: c, - globalImageCache: l, - systemFontCache: h, - nonBlendModesSet: u, - xfaFactory: d, - }) { - this.pdfManager = e; - this.pageIndex = a; - this.pageDict = r; - this.xref = t; - this.ref = n; - this.fontCache = s; - this.builtInCMapCache = o; - this.standardFontDataCache = c; - this.globalImageCache = l; - this.systemFontCache = h; - this.nonBlendModesSet = u; - this.evaluatorOptions = e.evaluatorOptions; - this.resourcesPromise = null; - this.xfaFactory = d; - const f = { obj: 0 }; - this._localIdFactory = class extends i { - static createObjId() { - return `p${a}_${++f.obj}`; - } - static getPageObjId() { - return `p${n.toString()}`; - } - }; - } - _getInheritableProperty(e, t = !1) { - const a = (0, i.getInheritableProperty)({ - dict: this.pageDict, - key: e, - getArray: t, - stopWhenFound: !1, - }); - return Array.isArray(a) - ? 1 !== a.length && a[0] instanceof s.Dict - ? s.Dict.merge({ xref: this.xref, dictArray: a }) - : a[0] - : a; - } - get content() { - return this.pageDict.getArray("Contents"); - } - get resources() { - const e = this._getInheritableProperty("Resources"); - return (0, r.shadow)( - this, - "resources", - e instanceof s.Dict ? e : s.Dict.empty, - ); - } - _getBoundingBox(e) { - if (this.xfaData) return this.xfaData.bbox; - let t = this._getInheritableProperty(e, !0); - if (Array.isArray(t) && 4 === t.length) { - t = r.Util.normalizeRect(t); - if (t[2] - t[0] > 0 && t[3] - t[1] > 0) return t; - (0, r.warn)(`Empty, or invalid, /${e} entry.`); - } - return null; - } - get mediaBox() { - return (0, r.shadow)( - this, - "mediaBox", - this._getBoundingBox("MediaBox") || k, - ); - } - get cropBox() { - return (0, r.shadow)( - this, - "cropBox", - this._getBoundingBox("CropBox") || this.mediaBox, - ); - } - get userUnit() { - let e = this.pageDict.get("UserUnit"); - ("number" != typeof e || e <= 0) && (e = 1); - return (0, r.shadow)(this, "userUnit", e); - } - get view() { - const { cropBox: e, mediaBox: t } = this; - if (e !== t && !(0, r.isArrayEqual)(e, t)) { - const a = r.Util.intersect(e, t); - if (a && a[2] - a[0] > 0 && a[3] - a[1] > 0) - return (0, r.shadow)(this, "view", a); - (0, r.warn)("Empty /CropBox and /MediaBox intersection."); - } - return (0, r.shadow)(this, "view", t); - } - get rotate() { - let e = this._getInheritableProperty("Rotate") || 0; - e % 90 != 0 - ? (e = 0) - : e >= 360 - ? (e %= 360) - : e < 0 && (e = ((e % 360) + 360) % 360); - return (0, r.shadow)(this, "rotate", e); - } - _onSubStreamError(e, t) { - if (!this.evaluatorOptions.ignoreErrors) throw e; - (0, r.warn)( - `getContentStream - ignoring sub-stream (${t}): "${e}".`, - ); - } - getContentStream() { - return this.pdfManager - .ensure(this, "content") - .then((e) => - e instanceof c.BaseStream - ? e - : Array.isArray(e) - ? new y.StreamsSequenceStream( - e, - this._onSubStreamError.bind(this), - ) - : new g.NullStream(), - ); - } - get xfaData() { - return (0, r.shadow)( - this, - "xfaData", - this.xfaFactory - ? { bbox: this.xfaFactory.getBoundingBox(this.pageIndex) } - : null, - ); - } - #t(e, t, a) { - for (const n of e) - if (n.id) { - const e = s.Ref.fromString(n.id); - if (!e) { - (0, r.warn)( - `A non-linked annotation cannot be modified: ${n.id}`, - ); - continue; - } - if (n.deleted) { - t.put(e); - continue; - } - a?.put(e); - n.ref = e; - delete n.id; - } - } - async saveNewAnnotations(e, t, a, r) { - if (this.xfaFactory) - throw new Error("XFA: Cannot save new annotations."); - const i = new b.PartialEvaluator({ - xref: this.xref, - handler: e, - pageIndex: this.pageIndex, - idFactory: this._localIdFactory, - fontCache: this.fontCache, - builtInCMapCache: this.builtInCMapCache, - standardFontDataCache: this.standardFontDataCache, - globalImageCache: this.globalImageCache, - systemFontCache: this.systemFontCache, - options: this.evaluatorOptions, - }), - o = new s.RefSet(), - c = new s.RefSet(); - this.#t(a, o, c); - const l = this.pageDict, - h = this.annotations.filter( - (e) => !(e instanceof s.Ref && o.has(e)), - ), - u = await n.AnnotationFactory.saveNewAnnotations(i, t, a, r); - for (const { ref: e } of u.annotations) - e instanceof s.Ref && !c.has(e) && h.push(e); - const d = l.get("Annots"); - l.set("Annots", h); - const f = []; - await (0, S.writeObject)(this.ref, l, f, this.xref); - d && l.set("Annots", d); - const g = u.dependencies; - g.push({ ref: this.ref, data: f.join("") }, ...u.annotations); - return g; - } - save(e, t, a) { - const n = new b.PartialEvaluator({ - xref: this.xref, - handler: e, - pageIndex: this.pageIndex, - idFactory: this._localIdFactory, - fontCache: this.fontCache, - builtInCMapCache: this.builtInCMapCache, - standardFontDataCache: this.standardFontDataCache, - globalImageCache: this.globalImageCache, - systemFontCache: this.systemFontCache, - options: this.evaluatorOptions, - }); - return this._parsedAnnotations.then(function (e) { - const i = []; - for (const s of e) - s.mustBePrinted(a) && - i.push( - s.save(n, t, a).catch(function (e) { - (0, r.warn)( - `save - ignoring annotation data during "${t.name}" task: "${e}".`, - ); - return null; - }), - ); - return Promise.all(i).then(function (e) { - return e.filter((e) => !!e); - }); - }); - } - loadResources(e) { - this.resourcesPromise || - (this.resourcesPromise = this.pdfManager.ensure( - this, - "resources", - )); - return this.resourcesPromise.then(() => - new p.ObjectLoader(this.resources, e, this.xref).load(), - ); - } - getOperatorList({ - handler: e, - sink: t, - task: a, - intent: o, - cacheKey: c, - annotationStorage: l = null, - }) { - const h = this.getContentStream(), - u = this.loadResources([ - "ColorSpace", - "ExtGState", - "Font", - "Pattern", - "Properties", - "Shading", - "XObject", - ]), - d = new b.PartialEvaluator({ - xref: this.xref, - handler: e, - pageIndex: this.pageIndex, - idFactory: this._localIdFactory, - fontCache: this.fontCache, - builtInCMapCache: this.builtInCMapCache, - standardFontDataCache: this.standardFontDataCache, - globalImageCache: this.globalImageCache, - systemFontCache: this.systemFontCache, - options: this.evaluatorOptions, - }), - f = this.xfaFactory ? null : (0, i.getNewAnnotationsMap)(l); - let g = null, - p = Promise.resolve(null); - if (f) { - const e = f.get(this.pageIndex); - if (e) { - const t = this.pdfManager.ensureDoc("annotationGlobals"); - let i; - const o = new Set(); - for (const { bitmapId: t, bitmap: a } of e) - !t || a || o.has(t) || o.add(t); - const { isOffscreenCanvasSupported: c } = - this.evaluatorOptions; - if (o.size > 0) { - const t = e.slice(); - for (const [e, a] of l) - e.startsWith(r.AnnotationEditorPrefix) && - a.bitmap && - o.has(a.bitmapId) && - t.push(a); - i = n.AnnotationFactory.generateImages(t, this.xref, c); - } else - i = n.AnnotationFactory.generateImages(e, this.xref, c); - g = new s.RefSet(); - this.#t(e, g, null); - p = t.then((t) => - t - ? n.AnnotationFactory.printNewAnnotations(t, d, a, e, i) - : null, - ); - } - } - const y = Promise.all([h, u]).then(([r]) => { - const n = new m.OperatorList(o, t); - e.send("StartRenderPage", { - transparency: d.hasBlendModes( - this.resources, - this.nonBlendModesSet, - ), - pageIndex: this.pageIndex, - cacheKey: c, - }); - return d - .getOperatorList({ - stream: r, - task: a, - resources: this.resources, - operatorList: n, - }) - .then(function () { - return n; - }); - }); - return Promise.all([y, this._parsedAnnotations, p]).then( - function ([e, t, n]) { - if (n) { - t = t.filter((e) => !(e.ref && g.has(e.ref))); - for (let e = 0, a = n.length; e < a; e++) { - const r = n[e]; - if (r.refToReplace) { - const i = t.findIndex( - (e) => - e.ref && (0, s.isRefsEqual)(e.ref, r.refToReplace), - ); - if (i >= 0) { - t.splice(i, 1, r); - n.splice(e--, 1); - a--; - } - } - } - t = t.concat(n); - } - if ( - 0 === t.length || - o & r.RenderingIntentFlag.ANNOTATIONS_DISABLE - ) { - e.flush(!0); - return { length: e.totalLength }; - } - const i = !!(o & r.RenderingIntentFlag.ANNOTATIONS_FORMS), - c = !!(o & r.RenderingIntentFlag.ANY), - h = !!(o & r.RenderingIntentFlag.DISPLAY), - u = !!(o & r.RenderingIntentFlag.PRINT), - f = []; - for (const e of t) - (c || - (h && e.mustBeViewed(l, i)) || - (u && e.mustBePrinted(l))) && - f.push( - e.getOperatorList(d, a, o, i, l).catch(function (e) { - (0, r.warn)( - `getOperatorList - ignoring annotation data during "${a.name}" task: "${e}".`, - ); - return { - opList: null, - separateForm: !1, - separateCanvas: !1, - }; - }), - ); - return Promise.all(f).then(function (t) { - let a = !1, - r = !1; - for (const { - opList: n, - separateForm: i, - separateCanvas: s, - } of t) { - e.addOpList(n); - a ||= i; - r ||= s; - } - e.flush(!0, { form: a, canvas: r }); - return { length: e.totalLength }; - }); - }, - ); - } - extractTextContent({ - handler: e, - task: t, - includeMarkedContent: a, - disableNormalization: r, - sink: n, - }) { - const i = this.getContentStream(), - s = this.loadResources([ - "ExtGState", - "Font", - "Properties", - "XObject", - ]); - return Promise.all([i, s]).then(([i]) => - new b.PartialEvaluator({ - xref: this.xref, - handler: e, - pageIndex: this.pageIndex, - idFactory: this._localIdFactory, - fontCache: this.fontCache, - builtInCMapCache: this.builtInCMapCache, - standardFontDataCache: this.standardFontDataCache, - globalImageCache: this.globalImageCache, - systemFontCache: this.systemFontCache, - options: this.evaluatorOptions, - }).getTextContent({ - stream: i, - task: t, - resources: this.resources, - includeMarkedContent: a, - disableNormalization: r, - sink: n, - viewBox: this.view, - }), - ); - } - async getStructTree() { - const e = await this.pdfManager.ensureCatalog("structTreeRoot"); - if (!e) return null; - await this._parsedAnnotations; - return ( - await this.pdfManager.ensure(this, "_parseStructTree", [e]) - ).serializable; - } - _parseStructTree(e) { - const t = new w.StructTreePage(e, this.pageDict); - t.parse(this.ref); - return t; - } - async getAnnotationsData(e, t, a) { - const n = await this._parsedAnnotations; - if (0 === n.length) return n; - const i = [], - s = []; - let o; - const c = !!(a & r.RenderingIntentFlag.ANY), - l = !!(a & r.RenderingIntentFlag.DISPLAY), - h = !!(a & r.RenderingIntentFlag.PRINT); - for (const a of n) { - const n = c || (l && a.viewable); - (n || (h && a.printable)) && i.push(a.data); - if (a.hasTextContent && n) { - o ||= new b.PartialEvaluator({ - xref: this.xref, - handler: e, - pageIndex: this.pageIndex, - idFactory: this._localIdFactory, - fontCache: this.fontCache, - builtInCMapCache: this.builtInCMapCache, - standardFontDataCache: this.standardFontDataCache, - globalImageCache: this.globalImageCache, - systemFontCache: this.systemFontCache, - options: this.evaluatorOptions, - }); - s.push( - a - .extractTextContent(o, t, [-1 / 0, -1 / 0, 1 / 0, 1 / 0]) - .catch(function (e) { - (0, r.warn)( - `getAnnotationsData - ignoring textContent during "${t.name}" task: "${e}".`, - ); - }), - ); - } - } - await Promise.all(s); - return i; - } - get annotations() { - const e = this._getInheritableProperty("Annots"); - return (0, r.shadow)( - this, - "annotations", - Array.isArray(e) ? e : [], - ); - } - get _parsedAnnotations() { - const e = this.pdfManager - .ensure(this, "annotations") - .then(async (e) => { - if (0 === e.length) return e; - const t = - await this.pdfManager.ensureDoc("annotationGlobals"); - if (!t) return []; - const a = []; - for (const i of e) - a.push( - n.AnnotationFactory.create( - this.xref, - i, - t, - this._localIdFactory, - !1, - this.ref, - ).catch(function (e) { - (0, r.warn)(`_parsedAnnotations: "${e}".`); - return null; - }), - ); - const i = []; - let s; - for (const e of await Promise.all(a)) - e && - (e instanceof n.PopupAnnotation - ? (s ||= []).push(e) - : i.push(e)); - s && i.push(...s); - return i; - }); - return (0, r.shadow)(this, "_parsedAnnotations", e); - } - get jsActions() { - const e = (0, i.collectActions)( - this.xref, - this.pageDict, - r.PageActionEventType, - ); - return (0, r.shadow)(this, "jsActions", e); - } - } - t.Page = Page; - const v = new Uint8Array([37, 80, 68, 70, 45]), - F = new Uint8Array([115, 116, 97, 114, 116, 120, 114, 101, 102]), - O = new Uint8Array([101, 110, 100, 111, 98, 106]); - function find(e, t, a = 1024, r = !1) { - const n = t.length, - i = e.peekBytes(a), - s = i.length - n; - if (s <= 0) return !1; - if (r) { - const a = n - 1; - let r = i.length - 1; - for (; r >= a; ) { - let s = 0; - for (; s < n && i[r - s] === t[a - s]; ) s++; - if (s >= n) { - e.pos += r - a; - return !0; - } - r--; - } - } else { - let a = 0; - for (; a <= s; ) { - let r = 0; - for (; r < n && i[a + r] === t[r]; ) r++; - if (r >= n) { - e.pos += a; - return !0; - } - a++; - } - } - return !1; - } - t.PDFDocument = class PDFDocument { - constructor(e, t) { - if (t.length <= 0) - throw new r.InvalidPDFException( - "The PDF file is empty, i.e. its size is zero bytes.", - ); - this.pdfManager = e; - this.stream = t; - this.xref = new C.XRef(t, e); - this._pagePromises = new Map(); - this._version = null; - const a = { font: 0 }; - this._globalIdFactory = class { - static getDocId() { - return `g_${e.docId}`; - } - static createFontId() { - return "f" + ++a.font; - } - static createObjId() { - (0, r.unreachable)("Abstract method `createObjId` called."); - } - static getPageObjId() { - (0, r.unreachable)("Abstract method `getPageObjId` called."); - } - }; - } - parse(e) { - this.xref.parse(e); - this.catalog = new h.Catalog(this.pdfManager, this.xref); - } - get linearization() { - let e = null; - try { - e = f.Linearization.create(this.stream); - } catch (e) { - if (e instanceof i.MissingDataException) throw e; - (0, r.info)(e); - } - return (0, r.shadow)(this, "linearization", e); - } - get startXRef() { - const e = this.stream; - let t = 0; - if (this.linearization) { - e.reset(); - find(e, O) && (t = e.pos + 6 - e.start); - } else { - const a = 1024, - r = F.length; - let n = !1, - s = e.end; - for (; !n && s > 0; ) { - s -= a - r; - s < 0 && (s = 0); - e.pos = s; - n = find(e, F, a, !0); - } - if (n) { - e.skip(9); - let a; - do { - a = e.getByte(); - } while ((0, i.isWhiteSpace)(a)); - let r = ""; - for (; a >= 32 && a <= 57; ) { - r += String.fromCharCode(a); - a = e.getByte(); - } - t = parseInt(r, 10); - isNaN(t) && (t = 0); - } - } - return (0, r.shadow)(this, "startXRef", t); - } - checkHeader() { - const e = this.stream; - e.reset(); - if (!find(e, v)) return; - e.moveStart(); - e.skip(v.length); - let t, - a = ""; - for (; (t = e.getByte()) > 32 && a.length < 7; ) - a += String.fromCharCode(t); - i.PDF_VERSION_REGEXP.test(a) - ? (this._version = a) - : (0, r.warn)(`Invalid PDF header version: ${a}`); - } - parseStartXRef() { - this.xref.setStartXRef(this.startXRef); - } - get numPages() { - let e = 0; - e = this.catalog.hasActualNumPages - ? this.catalog.numPages - : this.xfaFactory - ? this.xfaFactory.getNumPages() - : this.linearization - ? this.linearization.numPages - : this.catalog.numPages; - return (0, r.shadow)(this, "numPages", e); - } - _hasOnlyDocumentSignatures(e, t = 0) { - return ( - !!Array.isArray(e) && - e.every((e) => { - if (!((e = this.xref.fetchIfRef(e)) instanceof s.Dict)) - return !1; - if (e.has("Kids")) { - if (++t > 10) { - (0, r.warn)( - "_hasOnlyDocumentSignatures: maximum recursion depth reached", - ); - return !1; - } - return this._hasOnlyDocumentSignatures(e.get("Kids"), t); - } - const a = (0, s.isName)(e.get("FT"), "Sig"), - n = e.get("Rect"), - i = Array.isArray(n) && n.every((e) => 0 === e); - return a && i; - }) - ); - } - get _xfaStreams() { - const e = this.catalog.acroForm; - if (!e) return null; - const t = e.get("XFA"), - a = { - "xdp:xdp": "", - template: "", - datasets: "", - config: "", - connectionSet: "", - localeSet: "", - stylesheet: "", - "/xdp:xdp": "", - }; - if (t instanceof c.BaseStream && !t.isEmpty) { - a["xdp:xdp"] = t; - return a; - } - if (!Array.isArray(t) || 0 === t.length) return null; - for (let e = 0, r = t.length; e < r; e += 2) { - let n; - n = 0 === e ? "xdp:xdp" : e === r - 2 ? "/xdp:xdp" : t[e]; - if (!a.hasOwnProperty(n)) continue; - const i = this.xref.fetchIfRef(t[e + 1]); - i instanceof c.BaseStream && !i.isEmpty && (a[n] = i); - } - return a; - } - get xfaDatasets() { - const e = this._xfaStreams; - if (!e) return (0, r.shadow)(this, "xfaDatasets", null); - for (const t of ["datasets", "xdp:xdp"]) { - const a = e[t]; - if (a) - try { - const e = { [t]: (0, r.stringToUTF8String)(a.getString()) }; - return (0, r.shadow)( - this, - "xfaDatasets", - new d.DatasetReader(e), - ); - } catch { - (0, r.warn)("XFA - Invalid utf-8 string."); - break; - } - } - return (0, r.shadow)(this, "xfaDatasets", null); - } - get xfaData() { - const e = this._xfaStreams; - if (!e) return null; - const t = Object.create(null); - for (const [a, n] of Object.entries(e)) - if (n) - try { - t[a] = (0, r.stringToUTF8String)(n.getString()); - } catch { - (0, r.warn)("XFA - Invalid utf-8 string."); - return null; - } - return t; - } - get xfaFactory() { - let e; - this.pdfManager.enableXfa && - this.catalog.needsRendering && - this.formInfo.hasXfa && - !this.formInfo.hasAcroForm && - (e = this.xfaData); - return (0, r.shadow)( - this, - "xfaFactory", - e ? new x.XFAFactory(e) : null, - ); - } - get isPureXfa() { - return !!this.xfaFactory && this.xfaFactory.isValid(); - } - get htmlForXfa() { - return this.xfaFactory ? this.xfaFactory.getPages() : null; - } - async loadXfaImages() { - const e = await this.pdfManager.ensureCatalog("xfaImages"); - if (!e) return; - const t = e.getKeys(), - a = new p.ObjectLoader(e, t, this.xref); - await a.load(); - const r = new Map(); - for (const a of t) { - const t = e.get(a); - t instanceof c.BaseStream && r.set(a, t.getBytes()); - } - this.xfaFactory.setImages(r); - } - async loadXfaFonts(e, t) { - const a = await this.pdfManager.ensureCatalog("acroForm"); - if (!a) return; - const n = await a.getAsync("DR"); - if (!(n instanceof s.Dict)) return; - const c = new p.ObjectLoader(n, ["Font"], this.xref); - await c.load(); - const l = n.get("Font"); - if (!(l instanceof s.Dict)) return; - const h = Object.assign( - Object.create(null), - this.pdfManager.evaluatorOptions, - ); - h.useSystemFonts = !1; - const u = new b.PartialEvaluator({ - xref: this.xref, - handler: e, - pageIndex: -1, - idFactory: this._globalIdFactory, - fontCache: this.catalog.fontCache, - builtInCMapCache: this.catalog.builtInCMapCache, - standardFontDataCache: this.catalog.standardFontDataCache, - options: h, - }), - d = new m.OperatorList(), - f = [], - g = { - get font() { - return f.at(-1); - }, - set font(e) { - f.push(e); - }, - clone() { - return this; - }, - }, - y = new Map(); - l.forEach((e, t) => { - y.set(e, t); - }); - const w = []; - for (const [e, a] of y) { - const o = a.get("FontDescriptor"); - if (!(o instanceof s.Dict)) continue; - let c = o.get("FontFamily"); - c = c.replaceAll(/[ ]+(\d)/g, "$1"); - const l = { - fontFamily: c, - fontWeight: o.get("FontWeight"), - italicAngle: -o.get("ItalicAngle"), - }; - (0, i.validateCSSFont)(l) && - w.push( - u - .handleSetFont( - n, - [s.Name.get(e), 1], - null, - d, - t, - g, - null, - l, - ) - .catch(function (e) { - (0, r.warn)(`loadXfaFonts: "${e}".`); - return null; - }), - ); - } - await Promise.all(w); - const S = this.xfaFactory.setFonts(f); - if (!S) return; - h.ignoreErrors = !0; - w.length = 0; - f.length = 0; - const x = new Set(); - for (const e of S) - (0, o.getXfaFontName)(`${e}-Regular`) || x.add(e); - x.size && S.push("PdfJS-Fallback"); - for (const e of S) - if (!x.has(e)) - for (const a of [ - { name: "Regular", fontWeight: 400, italicAngle: 0 }, - { name: "Bold", fontWeight: 700, italicAngle: 0 }, - { name: "Italic", fontWeight: 400, italicAngle: 12 }, - { name: "BoldItalic", fontWeight: 700, italicAngle: 12 }, - ]) { - const i = `${e}-${a.name}`, - c = (0, o.getXfaFontDict)(i); - w.push( - u - .handleSetFont( - n, - [s.Name.get(i), 1], - null, - d, - t, - g, - c, - { - fontFamily: e, - fontWeight: a.fontWeight, - italicAngle: a.italicAngle, - }, - ) - .catch(function (e) { - (0, r.warn)(`loadXfaFonts: "${e}".`); - return null; - }), - ); - } - await Promise.all(w); - this.xfaFactory.appendFonts(f, x); - } - async serializeXfaData(e) { - return this.xfaFactory ? this.xfaFactory.serializeData(e) : null; - } - get version() { - return this.catalog.version || this._version; - } - get formInfo() { - const e = { - hasFields: !1, - hasAcroForm: !1, - hasXfa: !1, - hasSignatures: !1, - }, - t = this.catalog.acroForm; - if (!t) return (0, r.shadow)(this, "formInfo", e); - try { - const a = t.get("Fields"), - r = Array.isArray(a) && a.length > 0; - e.hasFields = r; - const n = t.get("XFA"); - e.hasXfa = - (Array.isArray(n) && n.length > 0) || - (n instanceof c.BaseStream && !n.isEmpty); - const i = !!(1 & t.get("SigFlags")), - s = i && this._hasOnlyDocumentSignatures(a); - e.hasAcroForm = r && !s; - e.hasSignatures = i; - } catch (e) { - if (e instanceof i.MissingDataException) throw e; - (0, r.warn)(`Cannot fetch form information: "${e}".`); - } - return (0, r.shadow)(this, "formInfo", e); - } - get documentInfo() { - const e = { - PDFFormatVersion: this.version, - Language: this.catalog.lang, - EncryptFilterName: this.xref.encrypt - ? this.xref.encrypt.filterName - : null, - IsLinearized: !!this.linearization, - IsAcroFormPresent: this.formInfo.hasAcroForm, - IsXFAPresent: this.formInfo.hasXfa, - IsCollectionPresent: !!this.catalog.collection, - IsSignaturesPresent: this.formInfo.hasSignatures, - }; - let t; - try { - t = this.xref.trailer.get("Info"); - } catch (e) { - if (e instanceof i.MissingDataException) throw e; - (0, r.info)("The document information dictionary is invalid."); - } - if (!(t instanceof s.Dict)) - return (0, r.shadow)(this, "documentInfo", e); - for (const a of t.getKeys()) { - const n = t.get(a); - switch (a) { - case "Title": - case "Author": - case "Subject": - case "Keywords": - case "Creator": - case "Producer": - case "CreationDate": - case "ModDate": - if ("string" == typeof n) { - e[a] = (0, r.stringToPDFString)(n); - continue; - } - break; - case "Trapped": - if (n instanceof s.Name) { - e[a] = n; - continue; - } - break; - default: - let t; - switch (typeof n) { - case "string": - t = (0, r.stringToPDFString)(n); - break; - case "number": - case "boolean": - t = n; - break; - default: - n instanceof s.Name && (t = n); - } - if (void 0 === t) { - (0, r.warn)( - `Bad value, for custom key "${a}", in Info: ${n}.`, - ); - continue; - } - e.Custom || (e.Custom = Object.create(null)); - e.Custom[a] = t; - continue; - } - (0, r.warn)(`Bad value, for key "${a}", in Info: ${n}.`); - } - return (0, r.shadow)(this, "documentInfo", e); - } - get fingerprints() { - function validate(e) { - return ( - "string" == typeof e && - e.length > 0 && - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" !== e - ); - } - function hexString(e) { - const t = []; - for (const a of e) { - const e = a.toString(16); - t.push(e.padStart(2, "0")); - } - return t.join(""); - } - const e = this.xref.trailer.get("ID"); - let t, a; - if (Array.isArray(e) && validate(e[0])) { - t = (0, r.stringToBytes)(e[0]); - e[1] !== e[0] && - validate(e[1]) && - (a = (0, r.stringToBytes)(e[1])); - } else - t = (0, l.calculateMD5)( - this.stream.getByteRange(0, 1024), - 0, - 1024, - ); - return (0, r.shadow)(this, "fingerprints", [ - hexString(t), - a ? hexString(a) : null, - ]); - } - async _getLinearizationPage(e) { - const { catalog: t, linearization: a, xref: n } = this, - i = s.Ref.get(a.objectNumberFirst, 0); - try { - const e = await n.fetchAsync(i); - if (e instanceof s.Dict) { - let a = e.getRaw("Type"); - a instanceof s.Ref && (a = await n.fetchAsync(a)); - if ( - (0, s.isName)(a, "Page") || - (!e.has("Type") && !e.has("Kids")) - ) { - t.pageKidsCountCache.has(i) || - t.pageKidsCountCache.put(i, 1); - t.pageIndexCache.has(i) || t.pageIndexCache.put(i, 0); - return [e, i]; - } - } - throw new r.FormatError( - "The Linearization dictionary doesn't point to a valid Page dictionary.", - ); - } catch (a) { - (0, r.warn)(`_getLinearizationPage: "${a.message}".`); - return t.getPageDict(e); - } - } - getPage(e) { - const t = this._pagePromises.get(e); - if (t) return t; - const { catalog: a, linearization: r, xfaFactory: n } = this; - let i; - i = n - ? Promise.resolve([s.Dict.empty, null]) - : r?.pageFirst === e - ? this._getLinearizationPage(e) - : a.getPageDict(e); - i = i.then( - ([t, r]) => - new Page({ - pdfManager: this.pdfManager, - xref: this.xref, - pageIndex: e, - pageDict: t, - ref: r, - globalIdFactory: this._globalIdFactory, - fontCache: a.fontCache, - builtInCMapCache: a.builtInCMapCache, - standardFontDataCache: a.standardFontDataCache, - globalImageCache: a.globalImageCache, - systemFontCache: a.systemFontCache, - nonBlendModesSet: a.nonBlendModesSet, - xfaFactory: n, - }), - ); - this._pagePromises.set(e, i); - return i; - } - async checkFirstPage(e = !1) { - if (!e) - try { - await this.getPage(0); - } catch (e) { - if (e instanceof i.XRefEntryException) { - this._pagePromises.delete(0); - await this.cleanup(); - throw new i.XRefParseException(); - } - } - } - async checkLastPage(e = !1) { - const { catalog: t, pdfManager: a } = this; - t.setActualNumPages(); - let n; - try { - await Promise.all([ - a.ensureDoc("xfaFactory"), - a.ensureDoc("linearization"), - a.ensureCatalog("numPages"), - ]); - if (this.xfaFactory) return; - n = this.linearization - ? this.linearization.numPages - : t.numPages; - if (!Number.isInteger(n)) - throw new r.FormatError("Page count is not an integer."); - if (n <= 1) return; - await this.getPage(n - 1); - } catch (s) { - this._pagePromises.delete(n - 1); - await this.cleanup(); - if (s instanceof i.XRefEntryException && !e) - throw new i.XRefParseException(); - (0, r.warn)( - `checkLastPage - invalid /Pages tree /Count: ${n}.`, - ); - let o; - try { - o = await t.getAllPageDicts(e); - } catch (a) { - if (a instanceof i.XRefEntryException && !e) - throw new i.XRefParseException(); - t.setActualNumPages(1); - return; - } - for (const [e, [r, n]] of o) { - let i; - if (r instanceof Error) { - i = Promise.reject(r); - i.catch(() => {}); - } else - i = Promise.resolve( - new Page({ - pdfManager: a, - xref: this.xref, - pageIndex: e, - pageDict: r, - ref: n, - globalIdFactory: this._globalIdFactory, - fontCache: t.fontCache, - builtInCMapCache: t.builtInCMapCache, - standardFontDataCache: t.standardFontDataCache, - globalImageCache: t.globalImageCache, - systemFontCache: t.systemFontCache, - nonBlendModesSet: t.nonBlendModesSet, - xfaFactory: null, - }), - ); - this._pagePromises.set(e, i); - } - t.setActualNumPages(o.size); - } - } - fontFallback(e, t) { - return this.catalog.fontFallback(e, t); - } - async cleanup(e = !1) { - return this.catalog - ? this.catalog.cleanup(e) - : (0, u.clearGlobalCaches)(); - } - #a(e, t, a, i) { - const s = this.xref.fetchIfRef(t); - if (s.has("T")) { - const t = (0, r.stringToPDFString)(s.get("T")); - e = "" === e ? t : `${e}.${t}`; - } - a.has(e) || a.set(e, []); - a.get(e).push( - n.AnnotationFactory.create( - this.xref, - t, - i, - this._localIdFactory, - !0, - null, - ) - .then((e) => e?.getFieldObject()) - .catch(function (e) { - (0, r.warn)(`#collectFieldObjects: "${e}".`); - return null; - }), - ); - if (s.has("Kids")) - for (const t of s.get("Kids")) this.#a(e, t, a, i); - } - get fieldObjects() { - if (!this.formInfo.hasFields) - return (0, r.shadow)( - this, - "fieldObjects", - Promise.resolve(null), - ); - const e = this.pdfManager - .ensureDoc("annotationGlobals") - .then(async (e) => { - if (!e) return null; - const t = Object.create(null), - a = new Map(); - for (const t of this.catalog.acroForm.get("Fields")) - this.#a("", t, a, e); - const r = []; - for (const [e, n] of a) - r.push( - Promise.all(n).then((a) => { - (a = a.filter((e) => !!e)).length > 0 && (t[e] = a); - }), - ); - await Promise.all(r); - return t; - }); - return (0, r.shadow)(this, "fieldObjects", e); - } - get hasJSActions() { - const e = this.pdfManager.ensureDoc("_parseHasJSActions"); - return (0, r.shadow)(this, "hasJSActions", e); - } - async _parseHasJSActions() { - const [e, t] = await Promise.all([ - this.pdfManager.ensureCatalog("jsActions"), - this.pdfManager.ensureDoc("fieldObjects"), - ]); - return ( - !!e || - (!!t && - Object.values(t).some((e) => - e.some((e) => null !== e.actions), - )) - ); - } - get calculationOrderIds() { - const e = this.catalog.acroForm; - if (!e?.has("CO")) - return (0, r.shadow)(this, "calculationOrderIds", null); - const t = e.get("CO"); - if (!Array.isArray(t) || 0 === t.length) - return (0, r.shadow)(this, "calculationOrderIds", null); - const a = []; - for (const e of t) e instanceof s.Ref && a.push(e.toString()); - return 0 === a.length - ? (0, r.shadow)(this, "calculationOrderIds", null) - : (0, r.shadow)(this, "calculationOrderIds", a); - } - get annotationGlobals() { - return (0, r.shadow)( - this, - "annotationGlobals", - n.AnnotationFactory.createGlobals(this.pdfManager), - ); - } - }; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.PopupAnnotation = - t.MarkupAnnotation = - t.AnnotationFactory = - t.AnnotationBorderStyle = - t.Annotation = - void 0; - t.getQuadPoints = getQuadPoints; - var r = a(2), - n = a(3), - i = a(11), - s = a(4), - o = a(8), - c = a(5), - l = a(60), - h = a(66), - u = a(12), - d = a(69), - f = a(26), - g = a(76), - p = a(64), - m = a(73), - b = a(77); - t.AnnotationFactory = class AnnotationFactory { - static createGlobals(e) { - return Promise.all([ - e.ensureCatalog("acroForm"), - e.ensureDoc("xfaDatasets"), - e.ensureCatalog("structTreeRoot"), - e.ensureCatalog("baseUrl"), - e.ensureCatalog("attachments"), - ]).then( - ([t, a, r, n, i]) => ({ - pdfManager: e, - acroForm: t instanceof s.Dict ? t : s.Dict.empty, - xfaDatasets: a, - structTreeRoot: r, - baseUrl: n, - attachments: i, - }), - (e) => { - (0, r.warn)(`createGlobals: "${e}".`); - return null; - }, - ); - } - static async create(e, t, a, r, n, i) { - const s = n ? await this._getPageIndex(e, t, a.pdfManager) : null; - return a.pdfManager.ensure(this, "_create", [ - e, - t, - a, - r, - n, - s, - i, - ]); - } - static _create(e, t, a, i, o = !1, c = null, l = null) { - const h = e.fetchIfRef(t); - if (!(h instanceof s.Dict)) return; - const { acroForm: u, pdfManager: d } = a, - f = - t instanceof s.Ref - ? t.toString() - : `annot_${i.createObjId()}`; - let g = h.get("Subtype"); - g = g instanceof s.Name ? g.name : null; - const p = { - xref: e, - ref: t, - dict: h, - subtype: g, - id: f, - annotationGlobals: a, - collectFields: o, - needAppearances: !o && !0 === u.get("NeedAppearances"), - pageIndex: c, - evaluatorOptions: d.evaluatorOptions, - pageRef: l, - }; - switch (g) { - case "Link": - return new LinkAnnotation(p); - case "Text": - return new TextAnnotation(p); - case "Widget": - let e = (0, n.getInheritableProperty)({ dict: h, key: "FT" }); - e = e instanceof s.Name ? e.name : null; - switch (e) { - case "Tx": - return new TextWidgetAnnotation(p); - case "Btn": - return new ButtonWidgetAnnotation(p); - case "Ch": - return new ChoiceWidgetAnnotation(p); - case "Sig": - return new SignatureWidgetAnnotation(p); - } - (0, r.warn)( - `Unimplemented widget field type "${e}", falling back to base field type.`, - ); - return new WidgetAnnotation(p); - case "Popup": - return new PopupAnnotation(p); - case "FreeText": - return new FreeTextAnnotation(p); - case "Line": - return new LineAnnotation(p); - case "Square": - return new SquareAnnotation(p); - case "Circle": - return new CircleAnnotation(p); - case "PolyLine": - return new PolylineAnnotation(p); - case "Polygon": - return new PolygonAnnotation(p); - case "Caret": - return new CaretAnnotation(p); - case "Ink": - return new InkAnnotation(p); - case "Highlight": - return new HighlightAnnotation(p); - case "Underline": - return new UnderlineAnnotation(p); - case "Squiggly": - return new SquigglyAnnotation(p); - case "StrikeOut": - return new StrikeOutAnnotation(p); - case "Stamp": - return new StampAnnotation(p); - case "FileAttachment": - return new FileAttachmentAnnotation(p); - default: - o || - (g - ? (0, r.warn)( - `Unimplemented annotation type "${g}", falling back to base annotation.`, - ) - : (0, r.warn)( - "Annotation is missing the required /Subtype.", - )); - return new Annotation(p); - } - } - static async _getPageIndex(e, t, a) { - try { - const n = await e.fetchIfRefAsync(t); - if (!(n instanceof s.Dict)) return -1; - const i = n.getRaw("P"); - if (i instanceof s.Ref) - try { - return await a.ensureCatalog("getPageIndex", [i]); - } catch (e) { - (0, r.info)( - `_getPageIndex -- not a valid page reference: "${e}".`, - ); - } - if (n.has("Kids")) return -1; - const o = await a.ensureDoc("numPages"); - for (let e = 0; e < o; e++) { - const r = await a.getPage(e), - n = await a.ensure(r, "annotations"); - for (const a of n) - if (a instanceof s.Ref && (0, s.isRefsEqual)(a, t)) - return e; - } - } catch (e) { - (0, r.warn)(`_getPageIndex: "${e}".`); - } - return -1; - } - static generateImages(e, t, a) { - if (!a) { - (0, r.warn)( - "generateImages: OffscreenCanvas is not supported, cannot save or print some annotations with images.", - ); - return null; - } - let n; - for (const { bitmapId: a, bitmap: r } of e) - if (r) { - n ||= new Map(); - n.set(a, StampAnnotation.createImage(r, t)); - } - return n; - } - static async saveNewAnnotations(e, t, a, n) { - const i = e.xref; - let o; - const c = [], - l = [], - { isOffscreenCanvasSupported: h } = e.options; - for (const u of a) - if (!u.deleted) - switch (u.annotationType) { - case r.AnnotationEditorType.FREETEXT: - if (!o) { - const e = new s.Dict(i); - e.set("BaseFont", s.Name.get("Helvetica")); - e.set("Type", s.Name.get("Font")); - e.set("Subtype", s.Name.get("Type1")); - e.set("Encoding", s.Name.get("WinAnsiEncoding")); - const t = []; - o = i.getNewTemporaryRef(); - await (0, m.writeObject)(o, e, t, i); - c.push({ ref: o, data: t.join("") }); - } - l.push( - FreeTextAnnotation.createNewAnnotation(i, u, c, { - evaluator: e, - task: t, - baseFontRef: o, - }), - ); - break; - case r.AnnotationEditorType.INK: - l.push(InkAnnotation.createNewAnnotation(i, u, c)); - break; - case r.AnnotationEditorType.STAMP: - if (!h) break; - const a = await n.get(u.bitmapId); - if (a.imageStream) { - const { imageStream: e, smaskStream: t } = a, - r = []; - if (t) { - const a = i.getNewTemporaryRef(); - await (0, m.writeObject)(a, t, r, i); - c.push({ ref: a, data: r.join("") }); - e.dict.set("SMask", a); - r.length = 0; - } - const n = (a.imageRef = i.getNewTemporaryRef()); - await (0, m.writeObject)(n, e, r, i); - c.push({ ref: n, data: r.join("") }); - a.imageStream = a.smaskStream = null; - } - l.push( - StampAnnotation.createNewAnnotation(i, u, c, { - image: a, - }), - ); - } - return { annotations: await Promise.all(l), dependencies: c }; - } - static async printNewAnnotations(e, t, a, n, i) { - if (!n) return null; - const { options: s, xref: o } = t, - c = []; - for (const l of n) - if (!l.deleted) - switch (l.annotationType) { - case r.AnnotationEditorType.FREETEXT: - c.push( - FreeTextAnnotation.createNewPrintAnnotation(e, o, l, { - evaluator: t, - task: a, - evaluatorOptions: s, - }), - ); - break; - case r.AnnotationEditorType.INK: - c.push( - InkAnnotation.createNewPrintAnnotation(e, o, l, { - evaluatorOptions: s, - }), - ); - break; - case r.AnnotationEditorType.STAMP: - if (!s.isOffscreenCanvasSupported) break; - const n = await i.get(l.bitmapId); - if (n.imageStream) { - const { imageStream: e, smaskStream: t } = n; - t && e.dict.set("SMask", t); - n.imageRef = new f.JpegStream(e, e.length); - n.imageStream = n.smaskStream = null; - } - c.push( - StampAnnotation.createNewPrintAnnotation(e, o, l, { - image: n, - evaluatorOptions: s, - }), - ); - } - return Promise.all(c); - } - }; - function getRgbColor(e, t = new Uint8ClampedArray(3)) { - if (!Array.isArray(e)) return t; - const a = t || new Uint8ClampedArray(3); - switch (e.length) { - case 0: - return null; - case 1: - u.ColorSpace.singletons.gray.getRgbItem(e, 0, a, 0); - return a; - case 3: - u.ColorSpace.singletons.rgb.getRgbItem(e, 0, a, 0); - return a; - case 4: - u.ColorSpace.singletons.cmyk.getRgbItem(e, 0, a, 0); - return a; - default: - return t; - } - } - function getPdfColorArray(e) { - return Array.from(e, (e) => e / 255); - } - function getQuadPoints(e, t) { - const a = e.getArray("QuadPoints"); - if (!Array.isArray(a) || 0 === a.length || a.length % 8 > 0) - return null; - const r = []; - for (let e = 0, n = a.length / 8; e < n; e++) { - let n = 1 / 0, - i = -1 / 0, - s = 1 / 0, - o = -1 / 0; - for (let t = 8 * e, r = 8 * e + 8; t < r; t += 2) { - const e = a[t], - r = a[t + 1]; - n = Math.min(e, n); - i = Math.max(e, i); - s = Math.min(r, s); - o = Math.max(r, o); - } - if (null !== t && (n < t[0] || i > t[2] || s < t[1] || o > t[3])) - return null; - r.push([ - { x: n, y: o }, - { x: i, y: o }, - { x: n, y: s }, - { x: i, y: s }, - ]); - } - return r; - } - function getTransformMatrix(e, t, a) { - const [n, i, s, o] = r.Util.getAxialAlignedBoundingBox(t, a); - if (n === s || i === o) return [1, 0, 0, 1, e[0], e[1]]; - const c = (e[2] - e[0]) / (s - n), - l = (e[3] - e[1]) / (o - i); - return [c, 0, 0, l, e[0] - n * c, e[1] - i * l]; - } - class Annotation { - constructor(e) { - const { dict: t, xref: a, annotationGlobals: i } = e; - this.setTitle(t.get("T")); - this.setContents(t.get("Contents")); - this.setModificationDate(t.get("M")); - this.setFlags(t.get("F")); - this.setRectangle(t.getArray("Rect")); - this.setColor(t.getArray("C")); - this.setBorderStyle(t); - this.setAppearance(t); - this.setOptionalContent(t); - const o = t.get("MK"); - this.setBorderAndBackgroundColors(o); - this.setRotation(o, t); - this.ref = e.ref instanceof s.Ref ? e.ref : null; - this._streams = []; - this.appearance && this._streams.push(this.appearance); - const c = !!(this.flags & r.AnnotationFlag.LOCKED), - l = !!(this.flags & r.AnnotationFlag.LOCKEDCONTENTS); - if (i.structTreeRoot) { - let a = t.get("StructParent"); - a = Number.isInteger(a) && a >= 0 ? a : -1; - i.structTreeRoot.addAnnotationIdToPage(e.pageRef, a); - } - this.data = { - annotationFlags: this.flags, - borderStyle: this.borderStyle, - color: this.color, - backgroundColor: this.backgroundColor, - borderColor: this.borderColor, - rotation: this.rotation, - contentsObj: this._contents, - hasAppearance: !!this.appearance, - id: e.id, - modificationDate: this.modificationDate, - rect: this.rectangle, - subtype: e.subtype, - hasOwnCanvas: !1, - noRotate: !!(this.flags & r.AnnotationFlag.NOROTATE), - noHTML: c && l, - }; - if (e.collectFields) { - const i = t.get("Kids"); - if (Array.isArray(i)) { - const e = []; - for (const t of i) t instanceof s.Ref && e.push(t.toString()); - 0 !== e.length && (this.data.kidIds = e); - } - this.data.actions = (0, n.collectActions)( - a, - t, - r.AnnotationActionEventType, - ); - this.data.fieldName = this._constructFieldName(t); - this.data.pageIndex = e.pageIndex; - } - this._isOffscreenCanvasSupported = - e.evaluatorOptions.isOffscreenCanvasSupported; - this._fallbackFontDict = null; - this._needAppearances = !1; - } - _hasFlag(e, t) { - return !!(e & t); - } - _isViewable(e) { - return ( - !this._hasFlag(e, r.AnnotationFlag.INVISIBLE) && - !this._hasFlag(e, r.AnnotationFlag.NOVIEW) - ); - } - _isPrintable(e) { - return ( - this._hasFlag(e, r.AnnotationFlag.PRINT) && - !this._hasFlag(e, r.AnnotationFlag.HIDDEN) && - !this._hasFlag(e, r.AnnotationFlag.INVISIBLE) - ); - } - mustBeViewed(e, t) { - const a = e?.get(this.data.id)?.noView; - return void 0 !== a - ? !a - : this.viewable && - !this._hasFlag(this.flags, r.AnnotationFlag.HIDDEN); - } - mustBePrinted(e) { - const t = e?.get(this.data.id)?.noPrint; - return void 0 !== t ? !t : this.printable; - } - get viewable() { - return ( - null !== this.data.quadPoints && - (0 === this.flags || this._isViewable(this.flags)) - ); - } - get printable() { - return ( - null !== this.data.quadPoints && - 0 !== this.flags && - this._isPrintable(this.flags) - ); - } - _parseStringHelper(e) { - const t = "string" == typeof e ? (0, r.stringToPDFString)(e) : ""; - return { - str: t, - dir: t && "rtl" === (0, l.bidi)(t).dir ? "rtl" : "ltr", - }; - } - setDefaultAppearance(e) { - const { dict: t, annotationGlobals: a } = e, - r = - (0, n.getInheritableProperty)({ dict: t, key: "DA" }) || - a.acroForm.get("DA"); - this._defaultAppearance = "string" == typeof r ? r : ""; - this.data.defaultAppearanceData = (0, i.parseDefaultAppearance)( - this._defaultAppearance, - ); - } - setTitle(e) { - this._title = this._parseStringHelper(e); - } - setContents(e) { - this._contents = this._parseStringHelper(e); - } - setModificationDate(e) { - this.modificationDate = "string" == typeof e ? e : null; - } - setFlags(e) { - this.flags = Number.isInteger(e) && e > 0 ? e : 0; - } - hasFlag(e) { - return this._hasFlag(this.flags, e); - } - setRectangle(e) { - this.rectangle = - Array.isArray(e) && 4 === e.length - ? r.Util.normalizeRect(e) - : [0, 0, 0, 0]; - } - setColor(e) { - this.color = getRgbColor(e); - } - setLineEndings(e) { - this.lineEndings = ["None", "None"]; - if (Array.isArray(e) && 2 === e.length) - for (let t = 0; t < 2; t++) { - const a = e[t]; - if (a instanceof s.Name) - switch (a.name) { - case "None": - continue; - case "Square": - case "Circle": - case "Diamond": - case "OpenArrow": - case "ClosedArrow": - case "Butt": - case "ROpenArrow": - case "RClosedArrow": - case "Slash": - this.lineEndings[t] = a.name; - continue; - } - (0, r.warn)(`Ignoring invalid lineEnding: ${a}`); - } - } - setRotation(e, t) { - this.rotation = 0; - let a = - e instanceof s.Dict ? e.get("R") || 0 : t.get("Rotate") || 0; - if (Number.isInteger(a) && 0 !== a) { - a %= 360; - a < 0 && (a += 360); - a % 90 == 0 && (this.rotation = a); - } - } - setBorderAndBackgroundColors(e) { - if (e instanceof s.Dict) { - this.borderColor = getRgbColor(e.getArray("BC"), null); - this.backgroundColor = getRgbColor(e.getArray("BG"), null); - } else this.borderColor = this.backgroundColor = null; - } - setBorderStyle(e) { - this.borderStyle = new AnnotationBorderStyle(); - if (e instanceof s.Dict) - if (e.has("BS")) { - const t = e.get("BS"), - a = t.get("Type"); - if (!a || (0, s.isName)(a, "Border")) { - this.borderStyle.setWidth(t.get("W"), this.rectangle); - this.borderStyle.setStyle(t.get("S")); - this.borderStyle.setDashArray(t.getArray("D")); - } - } else if (e.has("Border")) { - const t = e.getArray("Border"); - if (Array.isArray(t) && t.length >= 3) { - this.borderStyle.setHorizontalCornerRadius(t[0]); - this.borderStyle.setVerticalCornerRadius(t[1]); - this.borderStyle.setWidth(t[2], this.rectangle); - 4 === t.length && this.borderStyle.setDashArray(t[3], !0); - } - } else this.borderStyle.setWidth(0); - } - setAppearance(e) { - this.appearance = null; - const t = e.get("AP"); - if (!(t instanceof s.Dict)) return; - const a = t.get("N"); - if (a instanceof c.BaseStream) { - this.appearance = a; - return; - } - if (!(a instanceof s.Dict)) return; - const r = e.get("AS"); - if (!(r instanceof s.Name && a.has(r.name))) return; - const n = a.get(r.name); - n instanceof c.BaseStream && (this.appearance = n); - } - setOptionalContent(e) { - this.oc = null; - const t = e.get("OC"); - t instanceof s.Name - ? (0, r.warn)( - "setOptionalContent: Support for /Name-entry is not implemented.", - ) - : t instanceof s.Dict && (this.oc = t); - } - loadResources(e, t) { - return t.dict.getAsync("Resources").then((t) => { - if (!t) return; - return new g.ObjectLoader(t, e, t.xref) - .load() - .then(function () { - return t; - }); - }); - } - async getOperatorList(e, t, a, n, i) { - const c = this.data; - let l = this.appearance; - const h = !!( - this.data.hasOwnCanvas && a & r.RenderingIntentFlag.DISPLAY - ); - if (!l) { - if (!h) - return { - opList: new p.OperatorList(), - separateForm: !1, - separateCanvas: !1, - }; - l = new o.StringStream(""); - l.dict = new s.Dict(); - } - const u = l.dict, - d = await this.loadResources( - [ - "ExtGState", - "ColorSpace", - "Pattern", - "Shading", - "XObject", - "Font", - ], - l, - ), - f = u.getArray("BBox") || [0, 0, 1, 1], - g = u.getArray("Matrix") || [1, 0, 0, 1, 0, 0], - m = getTransformMatrix(c.rect, f, g), - b = new p.OperatorList(); - let y; - this.oc && (y = await e.parseMarkedContentProps(this.oc, null)); - void 0 !== y && b.addOp(r.OPS.beginMarkedContentProps, ["OC", y]); - b.addOp(r.OPS.beginAnnotation, [c.id, c.rect, m, g, h]); - await e.getOperatorList({ - stream: l, - task: t, - resources: d, - operatorList: b, - fallbackFontDict: this._fallbackFontDict, - }); - b.addOp(r.OPS.endAnnotation, []); - void 0 !== y && b.addOp(r.OPS.endMarkedContent, []); - this.reset(); - return { opList: b, separateForm: !1, separateCanvas: h }; - } - async save(e, t, a) { - return null; - } - get hasTextContent() { - return !1; - } - async extractTextContent(e, t, a) { - if (!this.appearance) return; - const n = await this.loadResources( - ["ExtGState", "Font", "Properties", "XObject"], - this.appearance, - ), - i = [], - s = []; - let o = null; - const c = { - desiredSize: Math.Infinity, - ready: !0, - enqueue(e, t) { - for (const t of e.items) - if (void 0 !== t.str) { - o ||= t.transform.slice(-2); - s.push(t.str); - if (t.hasEOL) { - i.push(s.join("")); - s.length = 0; - } - } - }, - }; - await e.getTextContent({ - stream: this.appearance, - task: t, - resources: n, - includeMarkedContent: !0, - sink: c, - viewBox: a, - }); - this.reset(); - s.length && i.push(s.join("")); - if (i.length > 1 || i[0]) { - const e = this.appearance.dict, - t = e.getArray("BBox") || [0, 0, 1, 1], - a = e.getArray("Matrix") || [1, 0, 0, 1, 0, 0], - n = this.data.rect, - s = getTransformMatrix(n, t, a); - s[4] -= n[0]; - s[5] -= n[1]; - o = r.Util.applyTransform(o, s); - o = r.Util.applyTransform(o, a); - this.data.textPosition = o; - this.data.textContent = i; - } - } - getFieldObject() { - return this.data.kidIds - ? { - id: this.data.id, - actions: this.data.actions, - name: this.data.fieldName, - strokeColor: this.data.borderColor, - fillColor: this.data.backgroundColor, - type: "", - kidIds: this.data.kidIds, - page: this.data.pageIndex, - rotation: this.rotation, - } - : null; - } - reset() { - for (const e of this._streams) e.reset(); - } - _constructFieldName(e) { - if (!e.has("T") && !e.has("Parent")) { - (0, r.warn)( - "Unknown field name, falling back to empty field name.", - ); - return ""; - } - if (!e.has("Parent")) return (0, r.stringToPDFString)(e.get("T")); - const t = []; - e.has("T") && t.unshift((0, r.stringToPDFString)(e.get("T"))); - let a = e; - const n = new s.RefSet(); - e.objId && n.put(e.objId); - for (; a.has("Parent"); ) { - a = a.get("Parent"); - if (!(a instanceof s.Dict) || (a.objId && n.has(a.objId))) - break; - a.objId && n.put(a.objId); - a.has("T") && t.unshift((0, r.stringToPDFString)(a.get("T"))); - } - return t.join("."); - } - } - t.Annotation = Annotation; - class AnnotationBorderStyle { - constructor() { - this.width = 1; - this.style = r.AnnotationBorderStyleType.SOLID; - this.dashArray = [3]; - this.horizontalCornerRadius = 0; - this.verticalCornerRadius = 0; - } - setWidth(e, t = [0, 0, 0, 0]) { - if (e instanceof s.Name) this.width = 0; - else if ("number" == typeof e) { - if (e > 0) { - const a = (t[2] - t[0]) / 2, - n = (t[3] - t[1]) / 2; - if (a > 0 && n > 0 && (e > a || e > n)) { - (0, r.warn)( - `AnnotationBorderStyle.setWidth - ignoring width: ${e}`, - ); - e = 1; - } - } - this.width = e; - } - } - setStyle(e) { - if (e instanceof s.Name) - switch (e.name) { - case "S": - this.style = r.AnnotationBorderStyleType.SOLID; - break; - case "D": - this.style = r.AnnotationBorderStyleType.DASHED; - break; - case "B": - this.style = r.AnnotationBorderStyleType.BEVELED; - break; - case "I": - this.style = r.AnnotationBorderStyleType.INSET; - break; - case "U": - this.style = r.AnnotationBorderStyleType.UNDERLINE; - } - } - setDashArray(e, t = !1) { - if (Array.isArray(e) && e.length > 0) { - let a = !0, - r = !0; - for (const t of e) { - if (!(+t >= 0)) { - a = !1; - break; - } - t > 0 && (r = !1); - } - if (a && !r) { - this.dashArray = e; - t && this.setStyle(s.Name.get("D")); - } else this.width = 0; - } else e && (this.width = 0); - } - setHorizontalCornerRadius(e) { - Number.isInteger(e) && (this.horizontalCornerRadius = e); - } - setVerticalCornerRadius(e) { - Number.isInteger(e) && (this.verticalCornerRadius = e); - } - } - t.AnnotationBorderStyle = AnnotationBorderStyle; - class MarkupAnnotation extends Annotation { - constructor(e) { - super(e); - const { dict: t } = e; - if (t.has("IRT")) { - const e = t.getRaw("IRT"); - this.data.inReplyTo = e instanceof s.Ref ? e.toString() : null; - const a = t.get("RT"); - this.data.replyType = - a instanceof s.Name ? a.name : r.AnnotationReplyType.REPLY; - } - let a = null; - if (this.data.replyType === r.AnnotationReplyType.GROUP) { - const e = t.get("IRT"); - this.setTitle(e.get("T")); - this.data.titleObj = this._title; - this.setContents(e.get("Contents")); - this.data.contentsObj = this._contents; - if (e.has("CreationDate")) { - this.setCreationDate(e.get("CreationDate")); - this.data.creationDate = this.creationDate; - } else this.data.creationDate = null; - if (e.has("M")) { - this.setModificationDate(e.get("M")); - this.data.modificationDate = this.modificationDate; - } else this.data.modificationDate = null; - a = e.getRaw("Popup"); - if (e.has("C")) { - this.setColor(e.getArray("C")); - this.data.color = this.color; - } else this.data.color = null; - } else { - this.data.titleObj = this._title; - this.setCreationDate(t.get("CreationDate")); - this.data.creationDate = this.creationDate; - a = t.getRaw("Popup"); - t.has("C") || (this.data.color = null); - } - this.data.popupRef = a instanceof s.Ref ? a.toString() : null; - t.has("RC") && - (this.data.richText = b.XFAFactory.getRichTextAsHtml( - t.get("RC"), - )); - } - setCreationDate(e) { - this.creationDate = "string" == typeof e ? e : null; - } - _setDefaultAppearance({ - xref: e, - extra: t, - strokeColor: a, - fillColor: r, - blendMode: n, - strokeAlpha: i, - fillAlpha: c, - pointsCallback: l, - }) { - let h = Number.MAX_VALUE, - u = Number.MAX_VALUE, - d = Number.MIN_VALUE, - f = Number.MIN_VALUE; - const g = ["q"]; - t && g.push(t); - a && g.push(`${a[0]} ${a[1]} ${a[2]} RG`); - r && g.push(`${r[0]} ${r[1]} ${r[2]} rg`); - let p = this.data.quadPoints; - p || - (p = [ - [ - { x: this.rectangle[0], y: this.rectangle[3] }, - { x: this.rectangle[2], y: this.rectangle[3] }, - { x: this.rectangle[0], y: this.rectangle[1] }, - { x: this.rectangle[2], y: this.rectangle[1] }, - ], - ]); - for (const e of p) { - const [t, a, r, n] = l(g, e); - h = Math.min(h, t); - d = Math.max(d, a); - u = Math.min(u, r); - f = Math.max(f, n); - } - g.push("Q"); - const m = new s.Dict(e), - b = new s.Dict(e); - b.set("Subtype", s.Name.get("Form")); - const y = new o.StringStream(g.join(" ")); - y.dict = b; - m.set("Fm0", y); - const w = new s.Dict(e); - n && w.set("BM", s.Name.get(n)); - "number" == typeof i && w.set("CA", i); - "number" == typeof c && w.set("ca", c); - const S = new s.Dict(e); - S.set("GS0", w); - const x = new s.Dict(e); - x.set("ExtGState", S); - x.set("XObject", m); - const C = new s.Dict(e); - C.set("Resources", x); - const k = (this.data.rect = [h, u, d, f]); - C.set("BBox", k); - this.appearance = new o.StringStream("/GS0 gs /Fm0 Do"); - this.appearance.dict = C; - this._streams.push(this.appearance, y); - } - static async createNewAnnotation(e, t, a, r) { - const n = (t.ref ||= e.getNewTemporaryRef()), - i = await this.createNewAppearanceStream(t, e, r), - s = []; - let o; - if (i) { - const r = e.getNewTemporaryRef(); - o = this.createNewDict(t, e, { apRef: r }); - await (0, m.writeObject)(r, i, s, e); - a.push({ ref: r, data: s.join("") }); - } else o = this.createNewDict(t, e, {}); - Number.isInteger(t.parentTreeId) && - o.set("StructParent", t.parentTreeId); - s.length = 0; - await (0, m.writeObject)(n, o, s, e); - return { ref: n, data: s.join("") }; - } - static async createNewPrintAnnotation(e, t, a, r) { - const n = await this.createNewAppearanceStream(a, t, r), - i = this.createNewDict(a, t, { ap: n }), - s = new this.prototype.constructor({ - dict: i, - xref: t, - annotationGlobals: e, - evaluatorOptions: r.evaluatorOptions, - }); - a.ref && (s.ref = s.refToReplace = a.ref); - return s; - } - } - t.MarkupAnnotation = MarkupAnnotation; - class WidgetAnnotation extends Annotation { - constructor(e) { - super(e); - const { dict: t, xref: a, annotationGlobals: i } = e, - o = this.data; - this._needAppearances = e.needAppearances; - o.annotationType = r.AnnotationType.WIDGET; - void 0 === o.fieldName && - (o.fieldName = this._constructFieldName(t)); - void 0 === o.actions && - (o.actions = (0, n.collectActions)( - a, - t, - r.AnnotationActionEventType, - )); - let c = (0, n.getInheritableProperty)({ - dict: t, - key: "V", - getArray: !0, - }); - o.fieldValue = this._decodeFormValue(c); - const l = (0, n.getInheritableProperty)({ - dict: t, - key: "DV", - getArray: !0, - }); - o.defaultFieldValue = this._decodeFormValue(l); - if (void 0 === c && i.xfaDatasets) { - const e = this._title.str; - if (e) { - this._hasValueFromXFA = !0; - o.fieldValue = c = i.xfaDatasets.getValue(e); - } - } - void 0 === c && - null !== o.defaultFieldValue && - (o.fieldValue = o.defaultFieldValue); - o.alternativeText = (0, r.stringToPDFString)(t.get("TU") || ""); - this.setDefaultAppearance(e); - o.hasAppearance ||= - this._needAppearances && - void 0 !== o.fieldValue && - null !== o.fieldValue; - const h = (0, n.getInheritableProperty)({ dict: t, key: "FT" }); - o.fieldType = h instanceof s.Name ? h.name : null; - const u = (0, n.getInheritableProperty)({ dict: t, key: "DR" }), - d = i.acroForm.get("DR"), - f = this.appearance?.dict.get("Resources"); - this._fieldResources = { - localResources: u, - acroFormResources: d, - appearanceResources: f, - mergedResources: s.Dict.merge({ - xref: a, - dictArray: [u, f, d], - mergeSubDicts: !0, - }), - }; - o.fieldFlags = (0, n.getInheritableProperty)({ - dict: t, - key: "Ff", - }); - (!Number.isInteger(o.fieldFlags) || o.fieldFlags < 0) && - (o.fieldFlags = 0); - o.readOnly = this.hasFieldFlag(r.AnnotationFieldFlag.READONLY); - o.required = this.hasFieldFlag(r.AnnotationFieldFlag.REQUIRED); - o.hidden = - this._hasFlag(o.annotationFlags, r.AnnotationFlag.HIDDEN) || - this._hasFlag(o.annotationFlags, r.AnnotationFlag.NOVIEW); - } - _decodeFormValue(e) { - return Array.isArray(e) - ? e - .filter((e) => "string" == typeof e) - .map((e) => (0, r.stringToPDFString)(e)) - : e instanceof s.Name - ? (0, r.stringToPDFString)(e.name) - : "string" == typeof e - ? (0, r.stringToPDFString)(e) - : null; - } - hasFieldFlag(e) { - return !!(this.data.fieldFlags & e); - } - _isViewable(e) { - return !this._hasFlag(e, r.AnnotationFlag.INVISIBLE); - } - mustBeViewed(e, t) { - return t - ? this.viewable - : super.mustBeViewed(e, t) && - !this._hasFlag(this.flags, r.AnnotationFlag.NOVIEW); - } - getRotationMatrix(e) { - let t = e?.get(this.data.id)?.rotation; - void 0 === t && (t = this.rotation); - if (0 === t) return r.IDENTITY_MATRIX; - const a = this.data.rect[2] - this.data.rect[0], - i = this.data.rect[3] - this.data.rect[1]; - return (0, n.getRotationMatrix)(t, a, i); - } - getBorderAndBackgroundAppearances(e) { - let t = e?.get(this.data.id)?.rotation; - void 0 === t && (t = this.rotation); - if (!this.backgroundColor && !this.borderColor) return ""; - const a = this.data.rect[2] - this.data.rect[0], - r = this.data.rect[3] - this.data.rect[1], - n = - 0 === t || 180 === t - ? `0 0 ${a} ${r} re` - : `0 0 ${r} ${a} re`; - let s = ""; - this.backgroundColor && - (s = `${(0, i.getPdfColor)(this.backgroundColor, !0)} ${n} f `); - if (this.borderColor) { - s += `${this.borderStyle.width || 1} w ${(0, i.getPdfColor)(this.borderColor, !1)} ${n} S `; - } - return s; - } - async getOperatorList(e, t, a, n, i) { - if ( - n && - !(this instanceof SignatureWidgetAnnotation) && - !this.data.noHTML && - !this.data.hasOwnCanvas - ) - return { - opList: new p.OperatorList(), - separateForm: !0, - separateCanvas: !1, - }; - if (!this._hasText) return super.getOperatorList(e, t, a, n, i); - const s = await this._getAppearance(e, t, a, i); - if (this.appearance && null === s) - return super.getOperatorList(e, t, a, n, i); - const c = new p.OperatorList(); - if (!this._defaultAppearance || null === s) - return { opList: c, separateForm: !1, separateCanvas: !1 }; - const l = !!( - this.data.hasOwnCanvas && a & r.RenderingIntentFlag.DISPLAY - ), - h = [ - 0, - 0, - this.data.rect[2] - this.data.rect[0], - this.data.rect[3] - this.data.rect[1], - ], - u = getTransformMatrix(this.data.rect, h, [1, 0, 0, 1, 0, 0]); - let d; - this.oc && (d = await e.parseMarkedContentProps(this.oc, null)); - void 0 !== d && c.addOp(r.OPS.beginMarkedContentProps, ["OC", d]); - c.addOp(r.OPS.beginAnnotation, [ - this.data.id, - this.data.rect, - u, - this.getRotationMatrix(i), - l, - ]); - const f = new o.StringStream(s); - await e.getOperatorList({ - stream: f, - task: t, - resources: this._fieldResources.mergedResources, - operatorList: c, - }); - c.addOp(r.OPS.endAnnotation, []); - void 0 !== d && c.addOp(r.OPS.endMarkedContent, []); - return { opList: c, separateForm: !1, separateCanvas: l }; - } - _getMKDict(e) { - const t = new s.Dict(null); - e && t.set("R", e); - this.borderColor && - t.set("BC", getPdfColorArray(this.borderColor)); - this.backgroundColor && - t.set("BG", getPdfColorArray(this.backgroundColor)); - return t.size > 0 ? t : null; - } - amendSavedDict(e, t) {} - async save(e, t, a) { - const i = a?.get(this.data.id); - let c = i?.value, - l = i?.rotation; - if (c === this.data.fieldValue || void 0 === c) { - if (!this._hasValueFromXFA && void 0 === l) return null; - c ||= this.data.fieldValue; - } - if ( - void 0 === l && - !this._hasValueFromXFA && - Array.isArray(c) && - Array.isArray(this.data.fieldValue) && - c.length === this.data.fieldValue.length && - c.every((e, t) => e === this.data.fieldValue[t]) - ) - return null; - void 0 === l && (l = this.rotation); - let h = null; - if (!this._needAppearances) { - h = await this._getAppearance( - e, - t, - r.RenderingIntentFlag.SAVE, - a, - ); - if (null === h) return null; - } - let u = !1; - if (h?.needAppearances) { - u = !0; - h = null; - } - const { xref: d } = e, - f = d.fetchIfRef(this.ref); - if (!(f instanceof s.Dict)) return null; - const g = new s.Dict(d); - for (const e of f.getKeys()) "AP" !== e && g.set(e, f.getRaw(e)); - const p = { path: this.data.fieldName, value: c }, - encoder = (e) => - (0, n.isAscii)(e) ? e : (0, n.stringToUTF16String)(e, !0); - g.set("V", Array.isArray(c) ? c.map(encoder) : encoder(c)); - this.amendSavedDict(a, g); - const b = this._getMKDict(l); - b && g.set("MK", b); - const y = [], - w = [{ ref: this.ref, data: "", xfa: p, needAppearances: u }]; - if (null !== h) { - const e = d.getNewTemporaryRef(), - t = new s.Dict(d); - g.set("AP", t); - t.set("N", e); - const n = this._getSaveFieldResources(d), - i = new o.StringStream(h), - c = (i.dict = new s.Dict(d)); - c.set("Subtype", s.Name.get("Form")); - c.set("Resources", n); - c.set("BBox", [ - 0, - 0, - this.data.rect[2] - this.data.rect[0], - this.data.rect[3] - this.data.rect[1], - ]); - const l = this.getRotationMatrix(a); - l !== r.IDENTITY_MATRIX && c.set("Matrix", l); - await (0, m.writeObject)(e, i, y, d); - w.push({ - ref: e, - data: y.join(""), - xfa: null, - needAppearances: !1, - }); - y.length = 0; - } - g.set("M", `D:${(0, r.getModificationDate)()}`); - await (0, m.writeObject)(this.ref, g, y, d); - w[0].data = y.join(""); - return w; - } - async _getAppearance(e, t, a, s) { - if (this.hasFieldFlag(r.AnnotationFieldFlag.PASSWORD)) - return null; - const o = s?.get(this.data.id); - let c, l; - if (o) { - c = o.formattedValue || o.value; - l = o.rotation; - } - if ( - void 0 === l && - void 0 === c && - !this._needAppearances && - (!this._hasValueFromXFA || this.appearance) - ) - return null; - const h = this.getBorderAndBackgroundAppearances(s); - if (void 0 === c) { - c = this.data.fieldValue; - if (!c) return `/Tx BMC q ${h}Q EMC`; - } - Array.isArray(c) && 1 === c.length && (c = c[0]); - (0, r.assert)( - "string" == typeof c, - "Expected `value` to be a string.", - ); - c = c.trim(); - if (this.data.combo) { - const e = this.data.options.find( - ({ exportValue: e }) => c === e, - ); - c = e?.displayValue || c; - } - if ("" === c) return `/Tx BMC q ${h}Q EMC`; - void 0 === l && (l = this.rotation); - let u, - d = -1; - if (this.data.multiLine) { - u = c.split(/\r\n?|\n/).map((e) => e.normalize("NFC")); - d = u.length; - } else u = [c.replace(/\r\n?|\n/, "").normalize("NFC")]; - let f = this.data.rect[3] - this.data.rect[1], - g = this.data.rect[2] - this.data.rect[0]; - (90 !== l && 270 !== l) || ([g, f] = [f, g]); - this._defaultAppearance || - (this.data.defaultAppearanceData = (0, - i.parseDefaultAppearance)( - (this._defaultAppearance = "/Helvetica 0 Tf 0 g"), - )); - let p, - m, - b, - y = await WidgetAnnotation._getFontData( - e, - t, - this.data.defaultAppearanceData, - this._fieldResources.mergedResources, - ); - const w = []; - let S = !1; - for (const e of u) { - const t = y.encodeString(e); - t.length > 1 && (S = !0); - w.push(t.join("")); - } - if (S && a & r.RenderingIntentFlag.SAVE) - return { needAppearances: !0 }; - if (S && this._isOffscreenCanvasSupported) { - const a = this.data.comb ? "monospace" : "sans-serif", - r = new i.FakeUnicodeFont(e.xref, a), - s = r.createFontResources(u.join("")), - o = s.getRaw("Font"); - if (this._fieldResources.mergedResources.has("Font")) { - const e = this._fieldResources.mergedResources.get("Font"); - for (const t of o.getKeys()) e.set(t, o.getRaw(t)); - } else this._fieldResources.mergedResources.set("Font", o); - const l = r.fontName.name; - y = await WidgetAnnotation._getFontData( - e, - t, - { fontName: l, fontSize: 0 }, - s, - ); - for (let e = 0, t = w.length; e < t; e++) - w[e] = (0, n.stringToUTF16String)(u[e]); - const h = Object.assign( - Object.create(null), - this.data.defaultAppearanceData, - ); - this.data.defaultAppearanceData.fontSize = 0; - this.data.defaultAppearanceData.fontName = l; - [p, m, b] = this._computeFontSize(f - 2, g - 4, c, y, d); - this.data.defaultAppearanceData = h; - } else { - this._isOffscreenCanvasSupported || - (0, r.warn)( - "_getAppearance: OffscreenCanvas is not supported, annotation may not render correctly.", - ); - [p, m, b] = this._computeFontSize(f - 2, g - 4, c, y, d); - } - let x = y.descent; - x = isNaN(x) - ? r.BASELINE_FACTOR * b - : Math.max(r.BASELINE_FACTOR * b, Math.abs(x) * m); - const C = Math.min(Math.floor((f - m) / 2), 1), - k = this.data.textAlignment; - if (this.data.multiLine) - return this._getMultilineAppearance( - p, - w, - y, - m, - g, - f, - k, - 2, - C, - x, - b, - s, - ); - if (this.data.comb) - return this._getCombAppearance( - p, - y, - w[0], - m, - g, - f, - 2, - C, - x, - b, - s, - ); - const v = C + x; - if (0 === k || k > 2) - return ( - `/Tx BMC q ${h}BT ` + - p + - ` 1 0 0 1 ${(0, n.numberToString)(2)} ${(0, n.numberToString)(v)} Tm (${(0, n.escapeString)(w[0])}) Tj ET Q EMC` - ); - return ( - `/Tx BMC q ${h}BT ` + - p + - ` 1 0 0 1 0 0 Tm ${this._renderText(w[0], y, m, g, k, { shift: 0 }, 2, v)} ET Q EMC` - ); - } - static async _getFontData(e, t, a, r) { - const n = new p.OperatorList(), - i = { - font: null, - clone() { - return this; - }, - }, - { fontName: o, fontSize: c } = a; - await e.handleSetFont( - r, - [o && s.Name.get(o), c], - null, - n, - t, - i, - null, - ); - return i.font; - } - _getTextWidth(e, t) { - return t.charsToGlyphs(e).reduce((e, t) => e + t.width, 0) / 1e3; - } - _computeFontSize(e, t, a, n, s) { - let { fontSize: o } = this.data.defaultAppearanceData, - c = (o || 12) * r.LINE_FACTOR, - l = Math.round(e / c); - if (!o) { - const roundWithTwoDigits = (e) => Math.floor(100 * e) / 100; - if (-1 === s) { - const i = this._getTextWidth(a, n); - o = roundWithTwoDigits( - Math.min(e / r.LINE_FACTOR, i > t ? t / i : 1 / 0), - ); - l = 1; - } else { - const i = a.split(/\r\n?|\n/), - h = []; - for (const e of i) { - const t = n.encodeString(e).join(""), - a = n.charsToGlyphs(t), - r = n.getCharPositions(t); - h.push({ line: t, glyphs: a, positions: r }); - } - const isTooBig = (a) => { - let r = 0; - for (const i of h) { - r += this._splitLine(null, n, a, t, i).length * a; - if (r > e) return !0; - } - return !1; - }; - l = Math.max(l, s); - for (;;) { - c = e / l; - o = roundWithTwoDigits(c / r.LINE_FACTOR); - if (!isTooBig(o)) break; - l++; - } - } - const { fontName: h, fontColor: u } = - this.data.defaultAppearanceData; - this._defaultAppearance = (0, i.createDefaultAppearance)({ - fontSize: o, - fontName: h, - fontColor: u, - }); - } - return [this._defaultAppearance, o, e / l]; - } - _renderText(e, t, a, r, i, s, o, c) { - let l; - if (1 === i) { - l = (r - this._getTextWidth(e, t) * a) / 2; - } else if (2 === i) { - l = r - this._getTextWidth(e, t) * a - o; - } else l = o; - const h = (0, n.numberToString)(l - s.shift); - s.shift = l; - return `${h} ${(c = (0, n.numberToString)(c))} Td (${(0, n.escapeString)(e)}) Tj`; - } - _getSaveFieldResources(e) { - const { - localResources: t, - appearanceResources: a, - acroFormResources: r, - } = this._fieldResources, - n = this.data.defaultAppearanceData?.fontName; - if (!n) return t || s.Dict.empty; - for (const e of [t, a]) - if (e instanceof s.Dict) { - const t = e.get("Font"); - if (t instanceof s.Dict && t.has(n)) return e; - } - if (r instanceof s.Dict) { - const a = r.get("Font"); - if (a instanceof s.Dict && a.has(n)) { - const r = new s.Dict(e); - r.set(n, a.getRaw(n)); - const i = new s.Dict(e); - i.set("Font", r); - return s.Dict.merge({ - xref: e, - dictArray: [i, t], - mergeSubDicts: !0, - }); - } - } - return t || s.Dict.empty; - } - getFieldObject() { - return null; - } - } - class TextWidgetAnnotation extends WidgetAnnotation { - constructor(e) { - super(e); - this.data.hasOwnCanvas = this.data.readOnly && !this.data.noHTML; - this._hasText = !0; - const t = e.dict; - "string" != typeof this.data.fieldValue && - (this.data.fieldValue = ""); - let a = (0, n.getInheritableProperty)({ dict: t, key: "Q" }); - (!Number.isInteger(a) || a < 0 || a > 2) && (a = null); - this.data.textAlignment = a; - let i = (0, n.getInheritableProperty)({ dict: t, key: "MaxLen" }); - (!Number.isInteger(i) || i < 0) && (i = 0); - this.data.maxLen = i; - this.data.multiLine = this.hasFieldFlag( - r.AnnotationFieldFlag.MULTILINE, - ); - this.data.comb = - this.hasFieldFlag(r.AnnotationFieldFlag.COMB) && - !this.hasFieldFlag(r.AnnotationFieldFlag.MULTILINE) && - !this.hasFieldFlag(r.AnnotationFieldFlag.PASSWORD) && - !this.hasFieldFlag(r.AnnotationFieldFlag.FILESELECT) && - 0 !== this.data.maxLen; - this.data.doNotScroll = this.hasFieldFlag( - r.AnnotationFieldFlag.DONOTSCROLL, - ); - } - get hasTextContent() { - return !!this.appearance && !this._needAppearances; - } - _getCombAppearance(e, t, a, r, i, s, o, c, l, h, u) { - const d = i / this.data.maxLen, - f = this.getBorderAndBackgroundAppearances(u), - g = [], - p = t.getCharPositions(a); - for (const [e, t] of p) - g.push(`(${(0, n.escapeString)(a.substring(e, t))}) Tj`); - const m = g.join(` ${(0, n.numberToString)(d)} 0 Td `); - return ( - `/Tx BMC q ${f}BT ` + - e + - ` 1 0 0 1 ${(0, n.numberToString)(o)} ${(0, n.numberToString)(c + l)} Tm ${m} ET Q EMC` - ); - } - _getMultilineAppearance(e, t, a, r, i, s, o, c, l, h, u, d) { - const f = [], - g = i - 2 * c, - p = { shift: 0 }; - for (let e = 0, n = t.length; e < n; e++) { - const n = t[e], - s = this._splitLine(n, a, r, g); - for (let t = 0, n = s.length; t < n; t++) { - const n = s[t], - d = 0 === e && 0 === t ? -l - (u - h) : -u; - f.push(this._renderText(n, a, r, i, o, p, c, d)); - } - } - const m = this.getBorderAndBackgroundAppearances(d), - b = f.join("\n"); - return ( - `/Tx BMC q ${m}BT ` + - e + - ` 1 0 0 1 0 ${(0, n.numberToString)(s)} Tm ${b} ET Q EMC` - ); - } - _splitLine(e, t, a, r, n = {}) { - e = n.line || e; - const i = n.glyphs || t.charsToGlyphs(e); - if (i.length <= 1) return [e]; - const s = n.positions || t.getCharPositions(e), - o = a / 1e3, - c = []; - let l = -1, - h = -1, - u = -1, - d = 0, - f = 0; - for (let t = 0, a = i.length; t < a; t++) { - const [a, n] = s[t], - g = i[t], - p = g.width * o; - if (" " === g.unicode) - if (f + p > r) { - c.push(e.substring(d, a)); - d = a; - f = p; - l = -1; - u = -1; - } else { - f += p; - l = a; - h = n; - u = t; - } - else if (f + p > r) - if (-1 !== l) { - c.push(e.substring(d, h)); - d = h; - t = u + 1; - l = -1; - f = 0; - } else { - c.push(e.substring(d, a)); - d = a; - f = p; - } - else f += p; - } - d < e.length && c.push(e.substring(d, e.length)); - return c; - } - getFieldObject() { - return { - id: this.data.id, - value: this.data.fieldValue, - defaultValue: this.data.defaultFieldValue || "", - multiline: this.data.multiLine, - password: this.hasFieldFlag(r.AnnotationFieldFlag.PASSWORD), - charLimit: this.data.maxLen, - comb: this.data.comb, - editable: !this.data.readOnly, - hidden: this.data.hidden, - name: this.data.fieldName, - rect: this.data.rect, - actions: this.data.actions, - page: this.data.pageIndex, - strokeColor: this.data.borderColor, - fillColor: this.data.backgroundColor, - rotation: this.rotation, - type: "text", - }; - } - } - class ButtonWidgetAnnotation extends WidgetAnnotation { - constructor(e) { - super(e); - this.checkedAppearance = null; - this.uncheckedAppearance = null; - this.data.checkBox = - !this.hasFieldFlag(r.AnnotationFieldFlag.RADIO) && - !this.hasFieldFlag(r.AnnotationFieldFlag.PUSHBUTTON); - this.data.radioButton = - this.hasFieldFlag(r.AnnotationFieldFlag.RADIO) && - !this.hasFieldFlag(r.AnnotationFieldFlag.PUSHBUTTON); - this.data.pushButton = this.hasFieldFlag( - r.AnnotationFieldFlag.PUSHBUTTON, - ); - this.data.isTooltipOnly = !1; - if (this.data.checkBox) this._processCheckBox(e); - else if (this.data.radioButton) this._processRadioButton(e); - else if (this.data.pushButton) { - this.data.hasOwnCanvas = !0; - this._processPushButton(e); - } else - (0, r.warn)("Invalid field flags for button widget annotation"); - } - async getOperatorList(e, t, a, n, i) { - if (this.data.pushButton) - return super.getOperatorList(e, t, a, !1, i); - let s = null, - o = null; - if (i) { - const e = i.get(this.data.id); - s = e ? e.value : null; - o = e ? e.rotation : null; - } - if (null === s && this.appearance) - return super.getOperatorList(e, t, a, n, i); - null == s && - (s = this.data.checkBox - ? this.data.fieldValue === this.data.exportValue - : this.data.fieldValue === this.data.buttonValue); - const c = s ? this.checkedAppearance : this.uncheckedAppearance; - if (c) { - const s = this.appearance, - l = c.dict.getArray("Matrix") || r.IDENTITY_MATRIX; - o && c.dict.set("Matrix", this.getRotationMatrix(i)); - this.appearance = c; - const h = super.getOperatorList(e, t, a, n, i); - this.appearance = s; - c.dict.set("Matrix", l); - return h; - } - return { - opList: new p.OperatorList(), - separateForm: !1, - separateCanvas: !1, - }; - } - async save(e, t, a) { - return this.data.checkBox - ? this._saveCheckbox(e, t, a) - : this.data.radioButton - ? this._saveRadioButton(e, t, a) - : null; - } - async _saveCheckbox(e, t, a) { - if (!a) return null; - const n = a.get(this.data.id); - let i = n?.rotation, - o = n?.value; - if (void 0 === i) { - if (void 0 === o) return null; - if ((this.data.fieldValue === this.data.exportValue) === o) - return null; - } - const c = e.xref.fetchIfRef(this.ref); - if (!(c instanceof s.Dict)) return null; - void 0 === i && (i = this.rotation); - void 0 === o && - (o = this.data.fieldValue === this.data.exportValue); - const l = { - path: this.data.fieldName, - value: o ? this.data.exportValue : "", - }, - h = s.Name.get(o ? this.data.exportValue : "Off"); - c.set("V", h); - c.set("AS", h); - c.set("M", `D:${(0, r.getModificationDate)()}`); - const u = this._getMKDict(i); - u && c.set("MK", u); - const d = []; - await (0, m.writeObject)(this.ref, c, d, e.xref); - return [{ ref: this.ref, data: d.join(""), xfa: l }]; - } - async _saveRadioButton(e, t, a) { - if (!a) return null; - const n = a.get(this.data.id); - let i = n?.rotation, - o = n?.value; - if (void 0 === i) { - if (void 0 === o) return null; - if ((this.data.fieldValue === this.data.buttonValue) === o) - return null; - } - const c = e.xref.fetchIfRef(this.ref); - if (!(c instanceof s.Dict)) return null; - void 0 === o && - (o = this.data.fieldValue === this.data.buttonValue); - void 0 === i && (i = this.rotation); - const l = { - path: this.data.fieldName, - value: o ? this.data.buttonValue : "", - }, - h = s.Name.get(o ? this.data.buttonValue : "Off"), - u = []; - let d = null; - if (o) - if (this.parent instanceof s.Ref) { - const t = e.xref.fetch(this.parent); - t.set("V", h); - await (0, m.writeObject)(this.parent, t, u, e.xref); - d = u.join(""); - u.length = 0; - } else this.parent instanceof s.Dict && this.parent.set("V", h); - c.set("AS", h); - c.set("M", `D:${(0, r.getModificationDate)()}`); - const f = this._getMKDict(i); - f && c.set("MK", f); - await (0, m.writeObject)(this.ref, c, u, e.xref); - const g = [{ ref: this.ref, data: u.join(""), xfa: l }]; - d && g.push({ ref: this.parent, data: d, xfa: null }); - return g; - } - _getDefaultCheckedAppearance(e, t) { - const a = this.data.rect[2] - this.data.rect[0], - i = this.data.rect[3] - this.data.rect[1], - c = [0, 0, a, i], - l = 0.8 * Math.min(a, i); - let h, u; - if ("check" === t) { - h = { width: 0.755 * l, height: 0.705 * l }; - u = "3"; - } else if ("disc" === t) { - h = { width: 0.791 * l, height: 0.705 * l }; - u = "l"; - } else - (0, r.unreachable)( - `_getDefaultCheckedAppearance - unsupported type: ${t}`, - ); - const d = `q BT /PdfJsZaDb ${l} Tf 0 g ${(0, n.numberToString)((a - h.width) / 2)} ${(0, n.numberToString)((i - h.height) / 2)} Td (${u}) Tj ET Q`, - f = new s.Dict(e.xref); - f.set("FormType", 1); - f.set("Subtype", s.Name.get("Form")); - f.set("Type", s.Name.get("XObject")); - f.set("BBox", c); - f.set("Matrix", [1, 0, 0, 1, 0, 0]); - f.set("Length", d.length); - const g = new s.Dict(e.xref), - p = new s.Dict(e.xref); - p.set("PdfJsZaDb", this.fallbackFontDict); - g.set("Font", p); - f.set("Resources", g); - this.checkedAppearance = new o.StringStream(d); - this.checkedAppearance.dict = f; - this._streams.push(this.checkedAppearance); - } - _processCheckBox(e) { - const t = e.dict.get("AP"); - if (!(t instanceof s.Dict)) return; - const a = t.get("N"); - if (!(a instanceof s.Dict)) return; - const r = this._decodeFormValue(e.dict.get("AS")); - "string" == typeof r && (this.data.fieldValue = r); - const n = - null !== this.data.fieldValue && - "Off" !== this.data.fieldValue - ? this.data.fieldValue - : "Yes", - i = a.getKeys(); - if (0 === i.length) i.push("Off", n); - else if (1 === i.length) - "Off" === i[0] ? i.push(n) : i.unshift("Off"); - else if (i.includes(n)) { - i.length = 0; - i.push("Off", n); - } else { - const e = i.find((e) => "Off" !== e); - i.length = 0; - i.push("Off", e); - } - i.includes(this.data.fieldValue) || - (this.data.fieldValue = "Off"); - this.data.exportValue = i[1]; - const o = a.get(this.data.exportValue); - this.checkedAppearance = o instanceof c.BaseStream ? o : null; - const l = a.get("Off"); - this.uncheckedAppearance = l instanceof c.BaseStream ? l : null; - this.checkedAppearance - ? this._streams.push(this.checkedAppearance) - : this._getDefaultCheckedAppearance(e, "check"); - this.uncheckedAppearance && - this._streams.push(this.uncheckedAppearance); - this._fallbackFontDict = this.fallbackFontDict; - null === this.data.defaultFieldValue && - (this.data.defaultFieldValue = "Off"); - } - _processRadioButton(e) { - this.data.fieldValue = this.data.buttonValue = null; - const t = e.dict.get("Parent"); - if (t instanceof s.Dict) { - this.parent = e.dict.getRaw("Parent"); - const a = t.get("V"); - a instanceof s.Name && - (this.data.fieldValue = this._decodeFormValue(a)); - } - const a = e.dict.get("AP"); - if (!(a instanceof s.Dict)) return; - const r = a.get("N"); - if (!(r instanceof s.Dict)) return; - for (const e of r.getKeys()) - if ("Off" !== e) { - this.data.buttonValue = this._decodeFormValue(e); - break; - } - const n = r.get(this.data.buttonValue); - this.checkedAppearance = n instanceof c.BaseStream ? n : null; - const i = r.get("Off"); - this.uncheckedAppearance = i instanceof c.BaseStream ? i : null; - this.checkedAppearance - ? this._streams.push(this.checkedAppearance) - : this._getDefaultCheckedAppearance(e, "disc"); - this.uncheckedAppearance && - this._streams.push(this.uncheckedAppearance); - this._fallbackFontDict = this.fallbackFontDict; - null === this.data.defaultFieldValue && - (this.data.defaultFieldValue = "Off"); - } - _processPushButton(e) { - const { dict: t, annotationGlobals: a } = e; - if (t.has("A") || t.has("AA") || this.data.alternativeText) { - this.data.isTooltipOnly = !t.has("A") && !t.has("AA"); - h.Catalog.parseDestDictionary({ - destDict: t, - resultObj: this.data, - docBaseUrl: a.baseUrl, - docAttachments: a.attachments, - }); - } else - (0, r.warn)( - "Push buttons without action dictionaries are not supported", - ); - } - getFieldObject() { - let e, - t = "button"; - if (this.data.checkBox) { - t = "checkbox"; - e = this.data.exportValue; - } else if (this.data.radioButton) { - t = "radiobutton"; - e = this.data.buttonValue; - } - return { - id: this.data.id, - value: this.data.fieldValue || "Off", - defaultValue: this.data.defaultFieldValue, - exportValues: e, - editable: !this.data.readOnly, - name: this.data.fieldName, - rect: this.data.rect, - hidden: this.data.hidden, - actions: this.data.actions, - page: this.data.pageIndex, - strokeColor: this.data.borderColor, - fillColor: this.data.backgroundColor, - rotation: this.rotation, - type: t, - }; - } - get fallbackFontDict() { - const e = new s.Dict(); - e.set("BaseFont", s.Name.get("ZapfDingbats")); - e.set("Type", s.Name.get("FallbackType")); - e.set("Subtype", s.Name.get("FallbackType")); - e.set("Encoding", s.Name.get("ZapfDingbatsEncoding")); - return (0, r.shadow)(this, "fallbackFontDict", e); - } - } - class ChoiceWidgetAnnotation extends WidgetAnnotation { - constructor(e) { - super(e); - const { dict: t, xref: a } = e; - this.indices = t.getArray("I"); - this.hasIndices = - Array.isArray(this.indices) && this.indices.length > 0; - this.data.options = []; - const i = (0, n.getInheritableProperty)({ dict: t, key: "Opt" }); - if (Array.isArray(i)) - for (let e = 0, t = i.length; e < t; e++) { - const t = a.fetchIfRef(i[e]), - r = Array.isArray(t); - this.data.options[e] = { - exportValue: this._decodeFormValue( - r ? a.fetchIfRef(t[0]) : t, - ), - displayValue: this._decodeFormValue( - r ? a.fetchIfRef(t[1]) : t, - ), - }; - } - if (this.hasIndices) { - this.data.fieldValue = []; - const e = this.data.options.length; - for (const t of this.indices) - Number.isInteger(t) && - t >= 0 && - t < e && - this.data.fieldValue.push(this.data.options[t].exportValue); - } else - "string" == typeof this.data.fieldValue - ? (this.data.fieldValue = [this.data.fieldValue]) - : this.data.fieldValue || (this.data.fieldValue = []); - this.data.combo = this.hasFieldFlag(r.AnnotationFieldFlag.COMBO); - this.data.multiSelect = this.hasFieldFlag( - r.AnnotationFieldFlag.MULTISELECT, - ); - this._hasText = !0; - } - getFieldObject() { - const e = this.data.combo ? "combobox" : "listbox", - t = - this.data.fieldValue.length > 0 - ? this.data.fieldValue[0] - : null; - return { - id: this.data.id, - value: t, - defaultValue: this.data.defaultFieldValue, - editable: !this.data.readOnly, - name: this.data.fieldName, - rect: this.data.rect, - numItems: this.data.fieldValue.length, - multipleSelection: this.data.multiSelect, - hidden: this.data.hidden, - actions: this.data.actions, - items: this.data.options, - page: this.data.pageIndex, - strokeColor: this.data.borderColor, - fillColor: this.data.backgroundColor, - rotation: this.rotation, - type: e, - }; - } - amendSavedDict(e, t) { - if (!this.hasIndices) return; - let a = e?.get(this.data.id)?.value; - Array.isArray(a) || (a = [a]); - const r = [], - { options: n } = this.data; - for (let e = 0, t = 0, i = n.length; e < i; e++) - if (n[e].exportValue === a[t]) { - r.push(e); - t += 1; - } - t.set("I", r); - } - async _getAppearance(e, t, a, n) { - if (this.data.combo) return super._getAppearance(e, t, a, n); - let s, o; - const c = n?.get(this.data.id); - if (c) { - o = c.rotation; - s = c.value; - } - if (void 0 === o && void 0 === s && !this._needAppearances) - return null; - void 0 === s - ? (s = this.data.fieldValue) - : Array.isArray(s) || (s = [s]); - let l = this.data.rect[3] - this.data.rect[1], - h = this.data.rect[2] - this.data.rect[0]; - (90 !== o && 270 !== o) || ([h, l] = [l, h]); - const u = this.data.options.length, - d = []; - for (let e = 0; e < u; e++) { - const { exportValue: t } = this.data.options[e]; - s.includes(t) && d.push(e); - } - this._defaultAppearance || - (this.data.defaultAppearanceData = (0, - i.parseDefaultAppearance)( - (this._defaultAppearance = "/Helvetica 0 Tf 0 g"), - )); - const f = await WidgetAnnotation._getFontData( - e, - t, - this.data.defaultAppearanceData, - this._fieldResources.mergedResources, - ); - let g, - { fontSize: p } = this.data.defaultAppearanceData; - if (p) g = this._defaultAppearance; - else { - const e = (l - 1) / u; - let t, - a = -1; - for (const { displayValue: e } of this.data.options) { - const r = this._getTextWidth(e, f); - if (r > a) { - a = r; - t = e; - } - } - [g, p] = this._computeFontSize(e, h - 4, t, f, -1); - } - const m = p * r.LINE_FACTOR, - b = (m - p) / 2, - y = Math.floor(l / m); - let w = 0; - if (d.length > 0) { - const e = Math.min(...d), - t = Math.max(...d); - w = Math.max(0, t - y + 1); - w > e && (w = e); - } - const S = Math.min(w + y + 1, u), - x = ["/Tx BMC q", `1 1 ${h} ${l} re W n`]; - if (d.length) { - x.push("0.600006 0.756866 0.854904 rg"); - for (const e of d) - w <= e && - e < S && - x.push(`1 ${l - (e - w + 1) * m} ${h} ${m} re f`); - } - x.push("BT", g, `1 0 0 1 0 ${l} Tm`); - const C = { shift: 0 }; - for (let e = w; e < S; e++) { - const { displayValue: t } = this.data.options[e], - a = e === w ? b : 0; - x.push(this._renderText(t, f, p, h, 0, C, 2, -m + a)); - } - x.push("ET Q EMC"); - return x.join("\n"); - } - } - class SignatureWidgetAnnotation extends WidgetAnnotation { - constructor(e) { - super(e); - this.data.fieldValue = null; - this.data.hasOwnCanvas = this.data.noRotate; - } - getFieldObject() { - return { - id: this.data.id, - value: null, - page: this.data.pageIndex, - type: "signature", - }; - } - } - class TextAnnotation extends MarkupAnnotation { - constructor(e) { - super(e); - this.data.noRotate = !0; - this.data.hasOwnCanvas = this.data.noRotate; - const { dict: t } = e; - this.data.annotationType = r.AnnotationType.TEXT; - if (this.data.hasAppearance) this.data.name = "NoIcon"; - else { - this.data.rect[1] = this.data.rect[3] - 22; - this.data.rect[2] = this.data.rect[0] + 22; - this.data.name = t.has("Name") ? t.get("Name").name : "Note"; - } - if (t.has("State")) { - this.data.state = t.get("State") || null; - this.data.stateModel = t.get("StateModel") || null; - } else { - this.data.state = null; - this.data.stateModel = null; - } - } - } - class LinkAnnotation extends Annotation { - constructor(e) { - super(e); - const { dict: t, annotationGlobals: a } = e; - this.data.annotationType = r.AnnotationType.LINK; - const n = getQuadPoints(t, this.rectangle); - n && (this.data.quadPoints = n); - this.data.borderColor ||= this.data.color; - h.Catalog.parseDestDictionary({ - destDict: t, - resultObj: this.data, - docBaseUrl: a.baseUrl, - docAttachments: a.attachments, - }); - } - } - class PopupAnnotation extends Annotation { - constructor(e) { - super(e); - const { dict: t } = e; - this.data.annotationType = r.AnnotationType.POPUP; - (this.data.rect[0] !== this.data.rect[2] && - this.data.rect[1] !== this.data.rect[3]) || - (this.data.rect = null); - let a = t.get("Parent"); - if (!a) { - (0, r.warn)( - "Popup annotation has a missing or invalid parent annotation.", - ); - return; - } - const n = a.getArray("Rect"); - this.data.parentRect = - Array.isArray(n) && 4 === n.length - ? r.Util.normalizeRect(n) - : null; - const i = a.get("RT"); - (0, s.isName)(i, r.AnnotationReplyType.GROUP) && - (a = a.get("IRT")); - if (a.has("M")) { - this.setModificationDate(a.get("M")); - this.data.modificationDate = this.modificationDate; - } else this.data.modificationDate = null; - if (a.has("C")) { - this.setColor(a.getArray("C")); - this.data.color = this.color; - } else this.data.color = null; - if (!this.viewable) { - const e = a.get("F"); - this._isViewable(e) && this.setFlags(e); - } - this.setTitle(a.get("T")); - this.data.titleObj = this._title; - this.setContents(a.get("Contents")); - this.data.contentsObj = this._contents; - a.has("RC") && - (this.data.richText = b.XFAFactory.getRichTextAsHtml( - a.get("RC"), - )); - this.data.open = !!t.get("Open"); - } - } - t.PopupAnnotation = PopupAnnotation; - class FreeTextAnnotation extends MarkupAnnotation { - constructor(e) { - super(e); - this.data.hasOwnCanvas = !0; - const { evaluatorOptions: t, xref: a } = e; - this.data.annotationType = r.AnnotationType.FREETEXT; - this.setDefaultAppearance(e); - if (this.appearance) { - const { fontColor: e, fontSize: r } = (0, - i.parseAppearanceStream)(this.appearance, t, a); - this.data.defaultAppearanceData.fontColor = e; - this.data.defaultAppearanceData.fontSize = r || 10; - } else if (this._isOffscreenCanvasSupported) { - const t = e.dict.get("CA"), - r = new i.FakeUnicodeFont(a, "sans-serif"); - this.data.defaultAppearanceData.fontSize ||= 10; - const { fontColor: n, fontSize: s } = - this.data.defaultAppearanceData; - this.appearance = r.createAppearance( - this._contents.str, - this.rectangle, - this.rotation, - s, - n, - t, - ); - this._streams.push( - this.appearance, - i.FakeUnicodeFont.toUnicodeStream, - ); - } else - (0, r.warn)( - "FreeTextAnnotation: OffscreenCanvas is not supported, annotation may not render correctly.", - ); - } - get hasTextContent() { - return !!this.appearance; - } - static createNewDict(e, t, { apRef: a, ap: o }) { - const { - color: c, - fontSize: l, - rect: h, - rotation: u, - user: d, - value: f, - } = e, - g = new s.Dict(t); - g.set("Type", s.Name.get("Annot")); - g.set("Subtype", s.Name.get("FreeText")); - g.set("CreationDate", `D:${(0, r.getModificationDate)()}`); - g.set("Rect", h); - const p = `/Helv ${l} Tf ${(0, i.getPdfColor)(c, !0)}`; - g.set("DA", p); - g.set( - "Contents", - (0, n.isAscii)(f) ? f : (0, n.stringToUTF16String)(f, !0), - ); - g.set("F", 4); - g.set("Border", [0, 0, 0]); - g.set("Rotate", u); - d && - g.set( - "T", - (0, n.isAscii)(d) ? d : (0, n.stringToUTF16String)(d, !0), - ); - if (a || o) { - const e = new s.Dict(t); - g.set("AP", e); - a ? e.set("N", a) : e.set("N", o); - } - return g; - } - static async createNewAppearanceStream(e, t, a) { - const { baseFontRef: c, evaluator: l, task: h } = a, - { color: u, fontSize: d, rect: f, rotation: g, value: p } = e, - m = new s.Dict(t), - b = new s.Dict(t); - if (c) b.set("Helv", c); - else { - const e = new s.Dict(t); - e.set("BaseFont", s.Name.get("Helvetica")); - e.set("Type", s.Name.get("Font")); - e.set("Subtype", s.Name.get("Type1")); - e.set("Encoding", s.Name.get("WinAnsiEncoding")); - b.set("Helv", e); - } - m.set("Font", b); - const y = await WidgetAnnotation._getFontData( - l, - h, - { fontName: "Helv", fontSize: d }, - m, - ), - [w, S, x, C] = f; - let k = x - w, - v = C - S; - g % 180 != 0 && ([k, v] = [v, k]); - const F = p.split("\n"), - O = d / 1e3; - let T = -1 / 0; - const M = []; - for (let e of F) { - const t = y.encodeString(e); - if (t.length > 1) return null; - e = t.join(""); - M.push(e); - let a = 0; - const r = y.charsToGlyphs(e); - for (const e of r) a += e.width * O; - T = Math.max(T, a); - } - let D = 1; - T > k && (D = k / T); - let E = 1; - const N = r.LINE_FACTOR * d, - R = (r.LINE_FACTOR - r.LINE_DESCENT_FACTOR) * d, - L = N * F.length; - L > v && (E = v / L); - const $ = d * Math.min(D, E); - let _, j, U; - switch (g) { - case 0: - U = [1, 0, 0, 1]; - j = [f[0], f[1], k, v]; - _ = [f[0], f[3] - R]; - break; - case 90: - U = [0, 1, -1, 0]; - j = [f[1], -f[2], k, v]; - _ = [f[1], -f[0] - R]; - break; - case 180: - U = [-1, 0, 0, -1]; - j = [-f[2], -f[3], k, v]; - _ = [-f[2], -f[1] - R]; - break; - case 270: - U = [0, -1, 1, 0]; - j = [-f[3], f[0], k, v]; - _ = [-f[3], f[2] - R]; - } - const X = [ - "q", - `${U.join(" ")} 0 0 cm`, - `${j.join(" ")} re W n`, - "BT", - `${(0, i.getPdfColor)(u, !0)}`, - `0 Tc /Helv ${(0, n.numberToString)($)} Tf`, - ]; - X.push(`${_.join(" ")} Td (${(0, n.escapeString)(M[0])}) Tj`); - const H = (0, n.numberToString)(N); - for (let e = 1, t = M.length; e < t; e++) { - const t = M[e]; - X.push(`0 -${H} Td (${(0, n.escapeString)(t)}) Tj`); - } - X.push("ET", "Q"); - const q = X.join("\n"), - z = new s.Dict(t); - z.set("FormType", 1); - z.set("Subtype", s.Name.get("Form")); - z.set("Type", s.Name.get("XObject")); - z.set("BBox", f); - z.set("Resources", m); - z.set("Matrix", [1, 0, 0, 1, -f[0], -f[1]]); - const W = new o.StringStream(q); - W.dict = z; - return W; - } - } - class LineAnnotation extends MarkupAnnotation { - constructor(e) { - super(e); - const { dict: t, xref: a } = e; - this.data.annotationType = r.AnnotationType.LINE; - this.data.hasOwnCanvas = this.data.noRotate; - const n = t.getArray("L"); - this.data.lineCoordinates = r.Util.normalizeRect(n); - this.setLineEndings(t.getArray("LE")); - this.data.lineEndings = this.lineEndings; - if (!this.appearance) { - const e = this.color ? getPdfColorArray(this.color) : [0, 0, 0], - i = t.get("CA"), - s = getRgbColor(t.getArray("IC"), null), - o = s ? getPdfColorArray(s) : null, - c = o ? i : null, - l = this.borderStyle.width || 1, - h = 2 * l, - u = [ - this.data.lineCoordinates[0] - h, - this.data.lineCoordinates[1] - h, - this.data.lineCoordinates[2] + h, - this.data.lineCoordinates[3] + h, - ]; - r.Util.intersect(this.rectangle, u) || (this.rectangle = u); - this._setDefaultAppearance({ - xref: a, - extra: `${l} w`, - strokeColor: e, - fillColor: o, - strokeAlpha: i, - fillAlpha: c, - pointsCallback: (e, t) => { - e.push(`${n[0]} ${n[1]} m`, `${n[2]} ${n[3]} l`, "S"); - return [t[0].x - l, t[1].x + l, t[3].y - l, t[1].y + l]; - }, - }); - } - } - } - class SquareAnnotation extends MarkupAnnotation { - constructor(e) { - super(e); - const { dict: t, xref: a } = e; - this.data.annotationType = r.AnnotationType.SQUARE; - this.data.hasOwnCanvas = this.data.noRotate; - if (!this.appearance) { - const e = this.color ? getPdfColorArray(this.color) : [0, 0, 0], - r = t.get("CA"), - n = getRgbColor(t.getArray("IC"), null), - i = n ? getPdfColorArray(n) : null, - s = i ? r : null; - if (0 === this.borderStyle.width && !i) return; - this._setDefaultAppearance({ - xref: a, - extra: `${this.borderStyle.width} w`, - strokeColor: e, - fillColor: i, - strokeAlpha: r, - fillAlpha: s, - pointsCallback: (e, t) => { - const a = t[2].x + this.borderStyle.width / 2, - r = t[2].y + this.borderStyle.width / 2, - n = t[3].x - t[2].x - this.borderStyle.width, - s = t[1].y - t[3].y - this.borderStyle.width; - e.push(`${a} ${r} ${n} ${s} re`); - i ? e.push("B") : e.push("S"); - return [t[0].x, t[1].x, t[3].y, t[1].y]; - }, - }); - } - } - } - class CircleAnnotation extends MarkupAnnotation { - constructor(e) { - super(e); - const { dict: t, xref: a } = e; - this.data.annotationType = r.AnnotationType.CIRCLE; - if (!this.appearance) { - const e = this.color ? getPdfColorArray(this.color) : [0, 0, 0], - r = t.get("CA"), - n = getRgbColor(t.getArray("IC"), null), - i = n ? getPdfColorArray(n) : null, - s = i ? r : null; - if (0 === this.borderStyle.width && !i) return; - const o = (4 / 3) * Math.tan(Math.PI / 8); - this._setDefaultAppearance({ - xref: a, - extra: `${this.borderStyle.width} w`, - strokeColor: e, - fillColor: i, - strokeAlpha: r, - fillAlpha: s, - pointsCallback: (e, t) => { - const a = t[0].x + this.borderStyle.width / 2, - r = t[0].y - this.borderStyle.width / 2, - n = t[3].x - this.borderStyle.width / 2, - s = t[3].y + this.borderStyle.width / 2, - c = a + (n - a) / 2, - l = r + (s - r) / 2, - h = ((n - a) / 2) * o, - u = ((s - r) / 2) * o; - e.push( - `${c} ${s} m`, - `${c + h} ${s} ${n} ${l + u} ${n} ${l} c`, - `${n} ${l - u} ${c + h} ${r} ${c} ${r} c`, - `${c - h} ${r} ${a} ${l - u} ${a} ${l} c`, - `${a} ${l + u} ${c - h} ${s} ${c} ${s} c`, - "h", - ); - i ? e.push("B") : e.push("S"); - return [t[0].x, t[1].x, t[3].y, t[1].y]; - }, - }); - } - } - } - class PolylineAnnotation extends MarkupAnnotation { - constructor(e) { - super(e); - const { dict: t, xref: a } = e; - this.data.annotationType = r.AnnotationType.POLYLINE; - this.data.hasOwnCanvas = this.data.noRotate; - this.data.vertices = []; - if (!(this instanceof PolygonAnnotation)) { - this.setLineEndings(t.getArray("LE")); - this.data.lineEndings = this.lineEndings; - } - const n = t.getArray("Vertices"); - if (Array.isArray(n)) { - for (let e = 0, t = n.length; e < t; e += 2) - this.data.vertices.push({ x: n[e], y: n[e + 1] }); - if (!this.appearance) { - const e = this.color - ? getPdfColorArray(this.color) - : [0, 0, 0], - n = t.get("CA"), - i = this.borderStyle.width || 1, - s = 2 * i, - o = [1 / 0, 1 / 0, -1 / 0, -1 / 0]; - for (const e of this.data.vertices) { - o[0] = Math.min(o[0], e.x - s); - o[1] = Math.min(o[1], e.y - s); - o[2] = Math.max(o[2], e.x + s); - o[3] = Math.max(o[3], e.y + s); - } - r.Util.intersect(this.rectangle, o) || (this.rectangle = o); - this._setDefaultAppearance({ - xref: a, - extra: `${i} w`, - strokeColor: e, - strokeAlpha: n, - pointsCallback: (e, t) => { - const a = this.data.vertices; - for (let t = 0, r = a.length; t < r; t++) - e.push(`${a[t].x} ${a[t].y} ${0 === t ? "m" : "l"}`); - e.push("S"); - return [t[0].x, t[1].x, t[3].y, t[1].y]; - }, - }); - } - } - } - } - class PolygonAnnotation extends PolylineAnnotation { - constructor(e) { - super(e); - this.data.annotationType = r.AnnotationType.POLYGON; - } - } - class CaretAnnotation extends MarkupAnnotation { - constructor(e) { - super(e); - this.data.annotationType = r.AnnotationType.CARET; - } - } - class InkAnnotation extends MarkupAnnotation { - constructor(e) { - super(e); - this.data.hasOwnCanvas = this.data.noRotate; - const { dict: t, xref: a } = e; - this.data.annotationType = r.AnnotationType.INK; - this.data.inkLists = []; - const n = t.getArray("InkList"); - if (Array.isArray(n)) { - for (let e = 0, t = n.length; e < t; ++e) { - this.data.inkLists.push([]); - for (let t = 0, r = n[e].length; t < r; t += 2) - this.data.inkLists[e].push({ - x: a.fetchIfRef(n[e][t]), - y: a.fetchIfRef(n[e][t + 1]), - }); - } - if (!this.appearance) { - const e = this.color - ? getPdfColorArray(this.color) - : [0, 0, 0], - n = t.get("CA"), - i = this.borderStyle.width || 1, - s = 2 * i, - o = [1 / 0, 1 / 0, -1 / 0, -1 / 0]; - for (const e of this.data.inkLists) - for (const t of e) { - o[0] = Math.min(o[0], t.x - s); - o[1] = Math.min(o[1], t.y - s); - o[2] = Math.max(o[2], t.x + s); - o[3] = Math.max(o[3], t.y + s); - } - r.Util.intersect(this.rectangle, o) || (this.rectangle = o); - this._setDefaultAppearance({ - xref: a, - extra: `${i} w`, - strokeColor: e, - strokeAlpha: n, - pointsCallback: (e, t) => { - for (const t of this.data.inkLists) { - for (let a = 0, r = t.length; a < r; a++) - e.push(`${t[a].x} ${t[a].y} ${0 === a ? "m" : "l"}`); - e.push("S"); - } - return [t[0].x, t[1].x, t[3].y, t[1].y]; - }, - }); - } - } - } - static createNewDict(e, t, { apRef: a, ap: n }) { - const { - color: i, - opacity: o, - paths: c, - rect: l, - rotation: h, - thickness: u, - } = e, - d = new s.Dict(t); - d.set("Type", s.Name.get("Annot")); - d.set("Subtype", s.Name.get("Ink")); - d.set("CreationDate", `D:${(0, r.getModificationDate)()}`); - d.set("Rect", l); - d.set( - "InkList", - c.map((e) => e.points), - ); - d.set("F", 4); - d.set("Rotate", h); - const f = new s.Dict(t); - d.set("BS", f); - f.set("W", u); - d.set( - "C", - Array.from(i, (e) => e / 255), - ); - d.set("CA", o); - const g = new s.Dict(t); - d.set("AP", g); - a ? g.set("N", a) : g.set("N", n); - return d; - } - static async createNewAppearanceStream(e, t, a) { - const { - color: r, - rect: c, - paths: l, - thickness: h, - opacity: u, - } = e, - d = [`${h} w 1 J 1 j`, `${(0, i.getPdfColor)(r, !1)}`]; - 1 !== u && d.push("/R0 gs"); - const f = []; - for (const { bezier: e } of l) { - f.length = 0; - f.push( - `${(0, n.numberToString)(e[0])} ${(0, n.numberToString)(e[1])} m`, - ); - for (let t = 2, a = e.length; t < a; t += 6) { - const a = e - .slice(t, t + 6) - .map(n.numberToString) - .join(" "); - f.push(`${a} c`); - } - f.push("S"); - d.push(f.join("\n")); - } - const g = d.join("\n"), - p = new s.Dict(t); - p.set("FormType", 1); - p.set("Subtype", s.Name.get("Form")); - p.set("Type", s.Name.get("XObject")); - p.set("BBox", c); - p.set("Length", g.length); - if (1 !== u) { - const e = new s.Dict(t), - a = new s.Dict(t), - r = new s.Dict(t); - r.set("CA", u); - r.set("Type", s.Name.get("ExtGState")); - a.set("R0", r); - e.set("ExtGState", a); - p.set("Resources", e); - } - const m = new o.StringStream(g); - m.dict = p; - return m; - } - } - class HighlightAnnotation extends MarkupAnnotation { - constructor(e) { - super(e); - const { dict: t, xref: a } = e; - this.data.annotationType = r.AnnotationType.HIGHLIGHT; - if ((this.data.quadPoints = getQuadPoints(t, null))) { - const e = this.appearance?.dict.get("Resources"); - if (!this.appearance || !e?.has("ExtGState")) { - this.appearance && - (0, r.warn)( - "HighlightAnnotation - ignoring built-in appearance stream.", - ); - const e = this.color - ? getPdfColorArray(this.color) - : [1, 1, 0], - n = t.get("CA"); - this._setDefaultAppearance({ - xref: a, - fillColor: e, - blendMode: "Multiply", - fillAlpha: n, - pointsCallback: (e, t) => { - e.push( - `${t[0].x} ${t[0].y} m`, - `${t[1].x} ${t[1].y} l`, - `${t[3].x} ${t[3].y} l`, - `${t[2].x} ${t[2].y} l`, - "f", - ); - return [t[0].x, t[1].x, t[3].y, t[1].y]; - }, - }); - } - } else this.data.popupRef = null; - } - } - class UnderlineAnnotation extends MarkupAnnotation { - constructor(e) { - super(e); - const { dict: t, xref: a } = e; - this.data.annotationType = r.AnnotationType.UNDERLINE; - if ((this.data.quadPoints = getQuadPoints(t, null))) { - if (!this.appearance) { - const e = this.color - ? getPdfColorArray(this.color) - : [0, 0, 0], - r = t.get("CA"); - this._setDefaultAppearance({ - xref: a, - extra: "[] 0 d 0.571 w", - strokeColor: e, - strokeAlpha: r, - pointsCallback: (e, t) => { - e.push( - `${t[2].x} ${t[2].y + 1.3} m`, - `${t[3].x} ${t[3].y + 1.3} l`, - "S", - ); - return [t[0].x, t[1].x, t[3].y, t[1].y]; - }, - }); - } - } else this.data.popupRef = null; - } - } - class SquigglyAnnotation extends MarkupAnnotation { - constructor(e) { - super(e); - const { dict: t, xref: a } = e; - this.data.annotationType = r.AnnotationType.SQUIGGLY; - if ((this.data.quadPoints = getQuadPoints(t, null))) { - if (!this.appearance) { - const e = this.color - ? getPdfColorArray(this.color) - : [0, 0, 0], - r = t.get("CA"); - this._setDefaultAppearance({ - xref: a, - extra: "[] 0 d 1 w", - strokeColor: e, - strokeAlpha: r, - pointsCallback: (e, t) => { - const a = (t[0].y - t[2].y) / 6; - let r = a, - n = t[2].x; - const i = t[2].y, - s = t[3].x; - e.push(`${n} ${i + r} m`); - do { - n += 2; - r = 0 === r ? a : 0; - e.push(`${n} ${i + r} l`); - } while (n < s); - e.push("S"); - return [t[2].x, s, i - 2 * a, i + 2 * a]; - }, - }); - } - } else this.data.popupRef = null; - } - } - class StrikeOutAnnotation extends MarkupAnnotation { - constructor(e) { - super(e); - const { dict: t, xref: a } = e; - this.data.annotationType = r.AnnotationType.STRIKEOUT; - if ((this.data.quadPoints = getQuadPoints(t, null))) { - if (!this.appearance) { - const e = this.color - ? getPdfColorArray(this.color) - : [0, 0, 0], - r = t.get("CA"); - this._setDefaultAppearance({ - xref: a, - extra: "[] 0 d 1 w", - strokeColor: e, - strokeAlpha: r, - pointsCallback: (e, t) => { - e.push( - (t[0].x + t[2].x) / 2 + - " " + - (t[0].y + t[2].y) / 2 + - " m", - (t[1].x + t[3].x) / 2 + - " " + - (t[1].y + t[3].y) / 2 + - " l", - "S", - ); - return [t[0].x, t[1].x, t[3].y, t[1].y]; - }, - }); - } - } else this.data.popupRef = null; - } - } - class StampAnnotation extends MarkupAnnotation { - constructor(e) { - super(e); - this.data.annotationType = r.AnnotationType.STAMP; - this.data.hasOwnCanvas = this.data.noRotate; - } - static async createImage(e, t) { - const { width: a, height: n } = e, - i = new OffscreenCanvas(a, n), - c = i.getContext("2d", { alpha: !0 }); - c.drawImage(e, 0, 0); - const l = c.getImageData(0, 0, a, n).data, - h = new Uint32Array(l.buffer), - u = h.some( - r.FeatureTest.isLittleEndian - ? (e) => e >>> 24 != 255 - : (e) => 255 != (255 & e), - ); - if (u) { - c.fillStyle = "white"; - c.fillRect(0, 0, a, n); - c.drawImage(e, 0, 0); - } - const d = i - .convertToBlob({ type: "image/jpeg", quality: 1 }) - .then((e) => e.arrayBuffer()), - f = s.Name.get("XObject"), - g = s.Name.get("Image"), - p = new s.Dict(t); - p.set("Type", f); - p.set("Subtype", g); - p.set("BitsPerComponent", 8); - p.set("ColorSpace", s.Name.get("DeviceRGB")); - p.set("Filter", s.Name.get("DCTDecode")); - p.set("BBox", [0, 0, a, n]); - p.set("Width", a); - p.set("Height", n); - let m = null; - if (u) { - const e = new Uint8Array(h.length); - if (r.FeatureTest.isLittleEndian) - for (let t = 0, a = h.length; t < a; t++) e[t] = h[t] >>> 24; - else - for (let t = 0, a = h.length; t < a; t++) e[t] = 255 & h[t]; - const i = new s.Dict(t); - i.set("Type", f); - i.set("Subtype", g); - i.set("BitsPerComponent", 8); - i.set("ColorSpace", s.Name.get("DeviceGray")); - i.set("Width", a); - i.set("Height", n); - m = new o.Stream(e, 0, 0, i); - } - return { - imageStream: new o.Stream(await d, 0, 0, p), - smaskStream: m, - width: a, - height: n, - }; - } - static createNewDict(e, t, { apRef: a, ap: i }) { - const { rect: o, rotation: c, user: l } = e, - h = new s.Dict(t); - h.set("Type", s.Name.get("Annot")); - h.set("Subtype", s.Name.get("Stamp")); - h.set("CreationDate", `D:${(0, r.getModificationDate)()}`); - h.set("Rect", o); - h.set("F", 4); - h.set("Border", [0, 0, 0]); - h.set("Rotate", c); - l && - h.set( - "T", - (0, n.isAscii)(l) ? l : (0, n.stringToUTF16String)(l, !0), - ); - if (a || i) { - const e = new s.Dict(t); - h.set("AP", e); - a ? e.set("N", a) : e.set("N", i); - } - return h; - } - static async createNewAppearanceStream(e, t, a) { - const { rotation: r } = e, - { imageRef: i, width: c, height: l } = a.image, - h = new s.Dict(t), - u = new s.Dict(t); - h.set("XObject", u); - u.set("Im0", i); - const d = `q ${c} 0 0 ${l} 0 0 cm /Im0 Do Q`, - f = new s.Dict(t); - f.set("FormType", 1); - f.set("Subtype", s.Name.get("Form")); - f.set("Type", s.Name.get("XObject")); - f.set("BBox", [0, 0, c, l]); - f.set("Resources", h); - if (r) { - const e = (0, n.getRotationMatrix)(r, c, l); - f.set("Matrix", e); - } - const g = new o.StringStream(d); - g.dict = f; - return g; - } - } - class FileAttachmentAnnotation extends MarkupAnnotation { - constructor(e) { - super(e); - const { dict: t, xref: a } = e, - n = new d.FileSpec(t.get("FS"), a); - this.data.annotationType = r.AnnotationType.FILEATTACHMENT; - this.data.hasOwnCanvas = this.data.noRotate; - this.data.file = n.serializable; - const i = t.get("Name"); - this.data.name = - i instanceof s.Name - ? (0, r.stringToPDFString)(i.name) - : "PushPin"; - const o = t.get("ca"); - this.data.fillAlpha = - "number" == typeof o && o >= 0 && o <= 1 ? o : null; - } - } - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.FakeUnicodeFont = void 0; - t.createDefaultAppearance = function createDefaultAppearance({ - fontSize: e, - fontName: t, - fontColor: a, - }) { - return `/${(0, n.escapePDFName)(t)} ${e} Tf ${getPdfColor(a, !0)}`; - }; - t.getPdfColor = getPdfColor; - t.parseAppearanceStream = function parseAppearanceStream(e, t, a) { - return new AppearanceStreamEvaluator(e, t, a).parse(); - }; - t.parseDefaultAppearance = function parseDefaultAppearance(e) { - return new DefaultAppearanceEvaluator(e).parse(); - }; - var r = a(4), - n = a(3), - i = a(2), - s = a(12), - o = a(13), - c = a(59), - l = a(57), - h = a(8); - class DefaultAppearanceEvaluator extends o.EvaluatorPreprocessor { - constructor(e) { - super(new h.StringStream(e)); - } - parse() { - const e = { fn: 0, args: [] }, - t = { - fontSize: 0, - fontName: "", - fontColor: new Uint8ClampedArray(3), - }; - try { - for (;;) { - e.args.length = 0; - if (!this.read(e)) break; - if (0 !== this.savedStatesDepth) continue; - const { fn: a, args: n } = e; - switch (0 | a) { - case i.OPS.setFont: - const [e, a] = n; - e instanceof r.Name && (t.fontName = e.name); - "number" == typeof a && a > 0 && (t.fontSize = a); - break; - case i.OPS.setFillRGBColor: - s.ColorSpace.singletons.rgb.getRgbItem( - n, - 0, - t.fontColor, - 0, - ); - break; - case i.OPS.setFillGray: - s.ColorSpace.singletons.gray.getRgbItem( - n, - 0, - t.fontColor, - 0, - ); - break; - case i.OPS.setFillCMYKColor: - s.ColorSpace.singletons.cmyk.getRgbItem( - n, - 0, - t.fontColor, - 0, - ); - } - } - } catch (e) { - (0, i.warn)( - `parseDefaultAppearance - ignoring errors: "${e}".`, - ); - } - return t; - } - } - class AppearanceStreamEvaluator extends o.EvaluatorPreprocessor { - constructor(e, t, a) { - super(e); - this.stream = e; - this.evaluatorOptions = t; - this.xref = a; - this.resources = e.dict?.get("Resources"); - } - parse() { - const e = { fn: 0, args: [] }; - let t = { - scaleFactor: 1, - fontSize: 0, - fontName: "", - fontColor: new Uint8ClampedArray(3), - fillColorSpace: s.ColorSpace.singletons.gray, - }, - a = !1; - const n = []; - try { - for (;;) { - e.args.length = 0; - if (a || !this.read(e)) break; - const { fn: o, args: c } = e; - switch (0 | o) { - case i.OPS.save: - n.push({ - scaleFactor: t.scaleFactor, - fontSize: t.fontSize, - fontName: t.fontName, - fontColor: t.fontColor.slice(), - fillColorSpace: t.fillColorSpace, - }); - break; - case i.OPS.restore: - t = n.pop() || t; - break; - case i.OPS.setTextMatrix: - t.scaleFactor *= Math.hypot(c[0], c[1]); - break; - case i.OPS.setFont: - const [e, o] = c; - e instanceof r.Name && (t.fontName = e.name); - "number" == typeof o && - o > 0 && - (t.fontSize = o * t.scaleFactor); - break; - case i.OPS.setFillColorSpace: - t.fillColorSpace = s.ColorSpace.parse({ - cs: c[0], - xref: this.xref, - resources: this.resources, - pdfFunctionFactory: this._pdfFunctionFactory, - localColorSpaceCache: this._localColorSpaceCache, - }); - break; - case i.OPS.setFillColor: - t.fillColorSpace.getRgbItem(c, 0, t.fontColor, 0); - break; - case i.OPS.setFillRGBColor: - s.ColorSpace.singletons.rgb.getRgbItem( - c, - 0, - t.fontColor, - 0, - ); - break; - case i.OPS.setFillGray: - s.ColorSpace.singletons.gray.getRgbItem( - c, - 0, - t.fontColor, - 0, - ); - break; - case i.OPS.setFillCMYKColor: - s.ColorSpace.singletons.cmyk.getRgbItem( - c, - 0, - t.fontColor, - 0, - ); - break; - case i.OPS.showText: - case i.OPS.showSpacedText: - case i.OPS.nextLineShowText: - case i.OPS.nextLineSetSpacingShowText: - a = !0; - } - } - } catch (e) { - (0, i.warn)(`parseAppearanceStream - ignoring errors: "${e}".`); - } - this.stream.reset(); - delete t.scaleFactor; - delete t.fillColorSpace; - return t; - } - get _localColorSpaceCache() { - return (0, i.shadow)( - this, - "_localColorSpaceCache", - new c.LocalColorSpaceCache(), - ); - } - get _pdfFunctionFactory() { - const e = new l.PDFFunctionFactory({ - xref: this.xref, - isEvalSupported: this.evaluatorOptions.isEvalSupported, - }); - return (0, i.shadow)(this, "_pdfFunctionFactory", e); - } - } - function getPdfColor(e, t) { - if (e[0] === e[1] && e[1] === e[2]) { - const a = e[0] / 255; - return `${(0, n.numberToString)(a)} ${t ? "g" : "G"}`; - } - return ( - Array.from(e, (e) => (0, n.numberToString)(e / 255)).join(" ") + - " " + - (t ? "rg" : "RG") - ); - } - class FakeUnicodeFont { - constructor(e, t) { - this.xref = e; - this.widths = null; - this.firstChar = 1 / 0; - this.lastChar = -1 / 0; - this.fontFamily = t; - const a = new OffscreenCanvas(1, 1); - this.ctxMeasure = a.getContext("2d"); - FakeUnicodeFont._fontNameId || (FakeUnicodeFont._fontNameId = 1); - this.fontName = r.Name.get( - `InvalidPDFjsFont_${t}_${FakeUnicodeFont._fontNameId++}`, - ); - } - get toUnicodeRef() { - if (!FakeUnicodeFont._toUnicodeRef) { - const e = - "/CIDInit /ProcSet findresource begin\n12 dict begin\nbegincmap\n/CIDSystemInfo\n<< /Registry (Adobe)\n/Ordering (UCS) /Supplement 0 >> def\n/CMapName /Adobe-Identity-UCS def\n/CMapType 2 def\n1 begincodespacerange\n<0000> \nendcodespacerange\n1 beginbfrange\n<0000> <0000>\nendbfrange\nendcmap CMapName currentdict /CMap defineresource pop end end", - t = (FakeUnicodeFont.toUnicodeStream = new h.StringStream(e)), - a = new r.Dict(this.xref); - t.dict = a; - a.set("Length", e.length); - FakeUnicodeFont._toUnicodeRef = - this.xref.getNewPersistentRef(t); - } - return FakeUnicodeFont._toUnicodeRef; - } - get fontDescriptorRef() { - if (!FakeUnicodeFont._fontDescriptorRef) { - const e = new r.Dict(this.xref); - e.set("Type", r.Name.get("FontDescriptor")); - e.set("FontName", this.fontName); - e.set("FontFamily", "MyriadPro Regular"); - e.set("FontBBox", [0, 0, 0, 0]); - e.set("FontStretch", r.Name.get("Normal")); - e.set("FontWeight", 400); - e.set("ItalicAngle", 0); - FakeUnicodeFont._fontDescriptorRef = - this.xref.getNewPersistentRef(e); - } - return FakeUnicodeFont._fontDescriptorRef; - } - get descendantFontRef() { - const e = new r.Dict(this.xref); - e.set("BaseFont", this.fontName); - e.set("Type", r.Name.get("Font")); - e.set("Subtype", r.Name.get("CIDFontType0")); - e.set("CIDToGIDMap", r.Name.get("Identity")); - e.set("FirstChar", this.firstChar); - e.set("LastChar", this.lastChar); - e.set("FontDescriptor", this.fontDescriptorRef); - e.set("DW", 1e3); - const t = [], - a = [...this.widths.entries()].sort(); - let n = null, - i = null; - for (const [e, r] of a) - if (n) - if (e === n + i.length) i.push(r); - else { - t.push(n, i); - n = e; - i = [r]; - } - else { - n = e; - i = [r]; - } - n && t.push(n, i); - e.set("W", t); - const s = new r.Dict(this.xref); - s.set("Ordering", "Identity"); - s.set("Registry", "Adobe"); - s.set("Supplement", 0); - e.set("CIDSystemInfo", s); - return this.xref.getNewPersistentRef(e); - } - get baseFontRef() { - const e = new r.Dict(this.xref); - e.set("BaseFont", this.fontName); - e.set("Type", r.Name.get("Font")); - e.set("Subtype", r.Name.get("Type0")); - e.set("Encoding", r.Name.get("Identity-H")); - e.set("DescendantFonts", [this.descendantFontRef]); - e.set("ToUnicode", this.toUnicodeRef); - return this.xref.getNewPersistentRef(e); - } - get resources() { - const e = new r.Dict(this.xref), - t = new r.Dict(this.xref); - t.set(this.fontName.name, this.baseFontRef); - e.set("Font", t); - return e; - } - _createContext() { - this.widths = new Map(); - this.ctxMeasure.font = `1000px ${this.fontFamily}`; - return this.ctxMeasure; - } - createFontResources(e) { - const t = this._createContext(); - for (const a of e.split(/\r\n?|\n/)) - for (const e of a.split("")) { - const a = e.charCodeAt(0); - if (this.widths.has(a)) continue; - const r = t.measureText(e), - n = Math.ceil(r.width); - this.widths.set(a, n); - this.firstChar = Math.min(a, this.firstChar); - this.lastChar = Math.max(a, this.lastChar); - } - return this.resources; - } - createAppearance(e, t, a, s, o, c) { - const l = this._createContext(), - u = []; - let d = -1 / 0; - for (const t of e.split(/\r\n?|\n/)) { - u.push(t); - const e = l.measureText(t).width; - d = Math.max(d, e); - for (const e of t.split("")) { - const t = e.charCodeAt(0); - let a = this.widths.get(t); - if (void 0 === a) { - const r = l.measureText(e); - a = Math.ceil(r.width); - this.widths.set(t, a); - this.firstChar = Math.min(t, this.firstChar); - this.lastChar = Math.max(t, this.lastChar); - } - } - } - d *= s / 1e3; - const [f, g, p, m] = t; - let b = p - f, - y = m - g; - a % 180 != 0 && ([b, y] = [y, b]); - let w = 1; - d > b && (w = b / d); - let S = 1; - const x = i.LINE_FACTOR * s, - C = i.LINE_DESCENT_FACTOR * s, - k = x * u.length; - k > y && (S = y / k); - const v = s * Math.min(w, S), - F = [ - "q", - `0 0 ${(0, n.numberToString)(b)} ${(0, n.numberToString)(y)} re W n`, - "BT", - `1 0 0 1 0 ${(0, n.numberToString)(y + C)} Tm 0 Tc ${getPdfColor(o, !0)}`, - `/${this.fontName.name} ${(0, n.numberToString)(v)} Tf`, - ], - { resources: O } = this; - if ( - 1 !== (c = "number" == typeof c && c >= 0 && c <= 1 ? c : 1) - ) { - F.push("/R0 gs"); - const e = new r.Dict(this.xref), - t = new r.Dict(this.xref); - t.set("ca", c); - t.set("CA", c); - t.set("Type", r.Name.get("ExtGState")); - e.set("R0", t); - O.set("ExtGState", e); - } - const T = (0, n.numberToString)(x); - for (const e of u) - F.push(`0 -${T} Td <${(0, n.stringToUTF16HexString)(e)}> Tj`); - F.push("ET", "Q"); - const M = F.join("\n"), - D = new r.Dict(this.xref); - D.set("Subtype", r.Name.get("Form")); - D.set("Type", r.Name.get("XObject")); - D.set("BBox", [0, 0, b, y]); - D.set("Length", M.length); - D.set("Resources", O); - if (a) { - const e = (0, n.getRotationMatrix)(a, b, y); - D.set("Matrix", e); - } - const E = new h.StringStream(M); - E.dict = D; - return E; - } - } - t.FakeUnicodeFont = FakeUnicodeFont; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.ColorSpace = void 0; - var r = a(2), - n = a(4), - i = a(5), - s = a(3); - class ColorSpace { - constructor(e, t) { - this.constructor === ColorSpace && - (0, r.unreachable)("Cannot initialize ColorSpace."); - this.name = e; - this.numComps = t; - } - getRgb(e, t) { - const a = new Uint8ClampedArray(3); - this.getRgbItem(e, t, a, 0); - return a; - } - getRgbItem(e, t, a, n) { - (0, r.unreachable)("Should not call ColorSpace.getRgbItem"); - } - getRgbBuffer(e, t, a, n, i, s, o) { - (0, r.unreachable)("Should not call ColorSpace.getRgbBuffer"); - } - getOutputLength(e, t) { - (0, r.unreachable)("Should not call ColorSpace.getOutputLength"); - } - isPassthrough(e) { - return !1; - } - isDefaultDecode(e, t) { - return ColorSpace.isDefaultDecode(e, this.numComps); - } - fillRgb(e, t, a, r, n, i, s, o, c) { - const l = t * a; - let h = null; - const u = 1 << s, - d = a !== n || t !== r; - if (this.isPassthrough(s)) h = o; - else if ( - 1 === this.numComps && - l > u && - "DeviceGray" !== this.name && - "DeviceRGB" !== this.name - ) { - const t = s <= 8 ? new Uint8Array(u) : new Uint16Array(u); - for (let e = 0; e < u; e++) t[e] = e; - const a = new Uint8ClampedArray(3 * u); - this.getRgbBuffer(t, 0, u, a, 0, s, 0); - if (d) { - h = new Uint8Array(3 * l); - let e = 0; - for (let t = 0; t < l; ++t) { - const r = 3 * o[t]; - h[e++] = a[r]; - h[e++] = a[r + 1]; - h[e++] = a[r + 2]; - } - } else { - let t = 0; - for (let r = 0; r < l; ++r) { - const n = 3 * o[r]; - e[t++] = a[n]; - e[t++] = a[n + 1]; - e[t++] = a[n + 2]; - t += c; - } - } - } else if (d) { - h = new Uint8ClampedArray(3 * l); - this.getRgbBuffer(o, 0, l, h, 0, s, 0); - } else this.getRgbBuffer(o, 0, r * i, e, 0, s, c); - if (h) - if (d) - !(function resizeRgbImage(e, t, a, r, n, i, s) { - s = 1 !== s ? 0 : s; - const o = a / n, - c = r / i; - let l, - h = 0; - const u = new Uint16Array(n), - d = 3 * a; - for (let e = 0; e < n; e++) u[e] = 3 * Math.floor(e * o); - for (let a = 0; a < i; a++) { - const r = Math.floor(a * c) * d; - for (let a = 0; a < n; a++) { - l = r + u[a]; - t[h++] = e[l++]; - t[h++] = e[l++]; - t[h++] = e[l++]; - h += s; - } - } - })(h, e, t, a, r, n, c); - else { - let t = 0, - a = 0; - for (let n = 0, s = r * i; n < s; n++) { - e[t++] = h[a++]; - e[t++] = h[a++]; - e[t++] = h[a++]; - t += c; - } - } - } - get usesZeroToOneRange() { - return (0, r.shadow)(this, "usesZeroToOneRange", !0); - } - static _cache(e, t, a, r) { - if (!a) - throw new Error( - 'ColorSpace._cache - expected "localColorSpaceCache" argument.', - ); - if (!r) - throw new Error( - 'ColorSpace._cache - expected "parsedColorSpace" argument.', - ); - let i, s; - if (e instanceof n.Ref) { - s = e; - e = t.fetch(e); - } - e instanceof n.Name && (i = e.name); - (i || s) && a.set(i, s, r); - } - static getCached(e, t, a) { - if (!a) - throw new Error( - 'ColorSpace.getCached - expected "localColorSpaceCache" argument.', - ); - if (e instanceof n.Ref) { - const r = a.getByRef(e); - if (r) return r; - try { - e = t.fetch(e); - } catch (e) { - if (e instanceof s.MissingDataException) throw e; - } - } - if (e instanceof n.Name) { - const t = a.getByName(e.name); - if (t) return t; - } - return null; - } - static async parseAsync({ - cs: e, - xref: t, - resources: a = null, - pdfFunctionFactory: r, - localColorSpaceCache: n, - }) { - const i = this._parse(e, t, a, r); - this._cache(e, t, n, i); - return i; - } - static parse({ - cs: e, - xref: t, - resources: a = null, - pdfFunctionFactory: r, - localColorSpaceCache: n, - }) { - const i = this.getCached(e, t, n); - if (i) return i; - const s = this._parse(e, t, a, r); - this._cache(e, t, n, s); - return s; - } - static _parse(e, t, a = null, i) { - if ((e = t.fetchIfRef(e)) instanceof n.Name) - switch (e.name) { - case "G": - case "DeviceGray": - return this.singletons.gray; - case "RGB": - case "DeviceRGB": - return this.singletons.rgb; - case "CMYK": - case "DeviceCMYK": - return this.singletons.cmyk; - case "Pattern": - return new PatternCS(null); - default: - if (a instanceof n.Dict) { - const r = a.get("ColorSpace"); - if (r instanceof n.Dict) { - const s = r.get(e.name); - if (s) { - if (s instanceof n.Name) - return this._parse(s, t, a, i); - e = s; - break; - } - } - } - throw new r.FormatError( - `Unrecognized ColorSpace: ${e.name}`, - ); - } - if (Array.isArray(e)) { - const n = t.fetchIfRef(e[0]).name; - let s, o, c, l, h, u; - switch (n) { - case "G": - case "DeviceGray": - return this.singletons.gray; - case "RGB": - case "DeviceRGB": - return this.singletons.rgb; - case "CMYK": - case "DeviceCMYK": - return this.singletons.cmyk; - case "CalGray": - s = t.fetchIfRef(e[1]); - l = s.getArray("WhitePoint"); - h = s.getArray("BlackPoint"); - u = s.get("Gamma"); - return new CalGrayCS(l, h, u); - case "CalRGB": - s = t.fetchIfRef(e[1]); - l = s.getArray("WhitePoint"); - h = s.getArray("BlackPoint"); - u = s.getArray("Gamma"); - const d = s.getArray("Matrix"); - return new CalRGBCS(l, h, u, d); - case "ICCBased": - const f = t.fetchIfRef(e[1]).dict; - o = f.get("N"); - const g = f.get("Alternate"); - if (g) { - const e = this._parse(g, t, a, i); - if (e.numComps === o) return e; - (0, r.warn)( - "ICCBased color space: Ignoring incorrect /Alternate entry.", - ); - } - if (1 === o) return this.singletons.gray; - if (3 === o) return this.singletons.rgb; - if (4 === o) return this.singletons.cmyk; - break; - case "Pattern": - c = e[1] || null; - c && (c = this._parse(c, t, a, i)); - return new PatternCS(c); - case "I": - case "Indexed": - c = this._parse(e[1], t, a, i); - const p = t.fetchIfRef(e[2]) + 1, - m = t.fetchIfRef(e[3]); - return new IndexedCS(c, p, m); - case "Separation": - case "DeviceN": - const b = t.fetchIfRef(e[1]); - o = Array.isArray(b) ? b.length : 1; - c = this._parse(e[2], t, a, i); - const y = i.create(e[3]); - return new AlternateCS(o, c, y); - case "Lab": - s = t.fetchIfRef(e[1]); - l = s.getArray("WhitePoint"); - h = s.getArray("BlackPoint"); - const w = s.getArray("Range"); - return new LabCS(l, h, w); - default: - throw new r.FormatError( - `Unimplemented ColorSpace object: ${n}`, - ); - } - } - throw new r.FormatError(`Unrecognized ColorSpace object: ${e}`); - } - static isDefaultDecode(e, t) { - if (!Array.isArray(e)) return !0; - if (2 * t !== e.length) { - (0, r.warn)("The decode map is not the correct length"); - return !0; - } - for (let t = 0, a = e.length; t < a; t += 2) - if (0 !== e[t] || 1 !== e[t + 1]) return !1; - return !0; - } - static get singletons() { - return (0, r.shadow)(this, "singletons", { - get gray() { - return (0, r.shadow)(this, "gray", new DeviceGrayCS()); - }, - get rgb() { - return (0, r.shadow)(this, "rgb", new DeviceRgbCS()); - }, - get cmyk() { - return (0, r.shadow)(this, "cmyk", new DeviceCmykCS()); - }, - }); - } - } - t.ColorSpace = ColorSpace; - class AlternateCS extends ColorSpace { - constructor(e, t, a) { - super("Alternate", e); - this.base = t; - this.tintFn = a; - this.tmpBuf = new Float32Array(t.numComps); - } - getRgbItem(e, t, a, r) { - const n = this.tmpBuf; - this.tintFn(e, t, n, 0); - this.base.getRgbItem(n, 0, a, r); - } - getRgbBuffer(e, t, a, r, n, i, s) { - const o = this.tintFn, - c = this.base, - l = 1 / ((1 << i) - 1), - h = c.numComps, - u = c.usesZeroToOneRange, - d = (c.isPassthrough(8) || !u) && 0 === s; - let f = d ? n : 0; - const g = d ? r : new Uint8ClampedArray(h * a), - p = this.numComps, - m = new Float32Array(p), - b = new Float32Array(h); - let y, w; - for (y = 0; y < a; y++) { - for (w = 0; w < p; w++) m[w] = e[t++] * l; - o(m, 0, b, 0); - if (u) for (w = 0; w < h; w++) g[f++] = 255 * b[w]; - else { - c.getRgbItem(b, 0, g, f); - f += h; - } - } - d || c.getRgbBuffer(g, 0, a, r, n, 8, s); - } - getOutputLength(e, t) { - return this.base.getOutputLength( - (e * this.base.numComps) / this.numComps, - t, - ); - } - } - class PatternCS extends ColorSpace { - constructor(e) { - super("Pattern", null); - this.base = e; - } - isDefaultDecode(e, t) { - (0, r.unreachable)("Should not call PatternCS.isDefaultDecode"); - } - } - class IndexedCS extends ColorSpace { - constructor(e, t, a) { - super("Indexed", 1); - this.base = e; - this.highVal = t; - const n = e.numComps * t; - this.lookup = new Uint8Array(n); - if (a instanceof i.BaseStream) { - const e = a.getBytes(n); - this.lookup.set(e); - } else { - if ("string" != typeof a) - throw new r.FormatError( - `IndexedCS - unrecognized lookup table: ${a}`, - ); - for (let e = 0; e < n; ++e) - this.lookup[e] = 255 & a.charCodeAt(e); - } - } - getRgbItem(e, t, a, r) { - const n = this.base.numComps, - i = e[t] * n; - this.base.getRgbBuffer(this.lookup, i, 1, a, r, 8, 0); - } - getRgbBuffer(e, t, a, r, n, i, s) { - const o = this.base, - c = o.numComps, - l = o.getOutputLength(c, s), - h = this.lookup; - for (let i = 0; i < a; ++i) { - const a = e[t++] * c; - o.getRgbBuffer(h, a, 1, r, n, 8, s); - n += l; - } - } - getOutputLength(e, t) { - return this.base.getOutputLength(e * this.base.numComps, t); - } - isDefaultDecode(e, t) { - if (!Array.isArray(e)) return !0; - if (2 !== e.length) { - (0, r.warn)("Decode map length is not correct"); - return !0; - } - if (!Number.isInteger(t) || t < 1) { - (0, r.warn)("Bits per component is not correct"); - return !0; - } - return 0 === e[0] && e[1] === (1 << t) - 1; - } - } - class DeviceGrayCS extends ColorSpace { - constructor() { - super("DeviceGray", 1); - } - getRgbItem(e, t, a, r) { - const n = 255 * e[t]; - a[r] = a[r + 1] = a[r + 2] = n; - } - getRgbBuffer(e, t, a, r, n, i, s) { - const o = 255 / ((1 << i) - 1); - let c = t, - l = n; - for (let t = 0; t < a; ++t) { - const t = o * e[c++]; - r[l++] = t; - r[l++] = t; - r[l++] = t; - l += s; - } - } - getOutputLength(e, t) { - return e * (3 + t); - } - } - class DeviceRgbCS extends ColorSpace { - constructor() { - super("DeviceRGB", 3); - } - getRgbItem(e, t, a, r) { - a[r] = 255 * e[t]; - a[r + 1] = 255 * e[t + 1]; - a[r + 2] = 255 * e[t + 2]; - } - getRgbBuffer(e, t, a, r, n, i, s) { - if (8 === i && 0 === s) { - r.set(e.subarray(t, t + 3 * a), n); - return; - } - const o = 255 / ((1 << i) - 1); - let c = t, - l = n; - for (let t = 0; t < a; ++t) { - r[l++] = o * e[c++]; - r[l++] = o * e[c++]; - r[l++] = o * e[c++]; - l += s; - } - } - getOutputLength(e, t) { - return ((e * (3 + t)) / 3) | 0; - } - isPassthrough(e) { - return 8 === e; - } - } - class DeviceCmykCS extends ColorSpace { - constructor() { - super("DeviceCMYK", 4); - } - #r(e, t, a, r, n) { - const i = e[t] * a, - s = e[t + 1] * a, - o = e[t + 2] * a, - c = e[t + 3] * a; - r[n] = - 255 + - i * - (-4.387332384609988 * i + - 54.48615194189176 * s + - 18.82290502165302 * o + - 212.25662451639585 * c - - 285.2331026137004) + - s * - (1.7149763477362134 * s - - 5.6096736904047315 * o + - -17.873870861415444 * c - - 5.497006427196366) + - o * - (-2.5217340131683033 * o - - 21.248923337353073 * c + - 17.5119270841813) + - c * (-21.86122147463605 * c - 189.48180835922747); - r[n + 1] = - 255 + - i * - (8.841041422036149 * i + - 60.118027045597366 * s + - 6.871425592049007 * o + - 31.159100130055922 * c - - 79.2970844816548) + - s * - (-15.310361306967817 * s + - 17.575251261109482 * o + - 131.35250912493976 * c - - 190.9453302588951) + - o * - (4.444339102852739 * o + - 9.8632861493405 * c - - 24.86741582555878) + - c * (-20.737325471181034 * c - 187.80453709719578); - r[n + 2] = - 255 + - i * - (0.8842522430003296 * i + - 8.078677503112928 * s + - 30.89978309703729 * o - - 0.23883238689178934 * c - - 14.183576799673286) + - s * - (10.49593273432072 * s + - 63.02378494754052 * o + - 50.606957656360734 * c - - 112.23884253719248) + - o * - (0.03296041114873217 * o + - 115.60384449646641 * c - - 193.58209356861505) + - c * (-22.33816807309886 * c - 180.12613974708367); - } - getRgbItem(e, t, a, r) { - this.#r(e, t, 1, a, r); - } - getRgbBuffer(e, t, a, r, n, i, s) { - const o = 1 / ((1 << i) - 1); - for (let i = 0; i < a; i++) { - this.#r(e, t, o, r, n); - t += 4; - n += 3 + s; - } - } - getOutputLength(e, t) { - return ((e / 4) * (3 + t)) | 0; - } - } - class CalGrayCS extends ColorSpace { - constructor(e, t, a) { - super("CalGray", 1); - if (!e) - throw new r.FormatError( - "WhitePoint missing - required for color space CalGray", - ); - [this.XW, this.YW, this.ZW] = e; - [this.XB, this.YB, this.ZB] = t || [0, 0, 0]; - this.G = a || 1; - if (this.XW < 0 || this.ZW < 0 || 1 !== this.YW) - throw new r.FormatError( - `Invalid WhitePoint components for ${this.name}, no fallback available`, - ); - if (this.XB < 0 || this.YB < 0 || this.ZB < 0) { - (0, r.info)( - `Invalid BlackPoint for ${this.name}, falling back to default.`, - ); - this.XB = this.YB = this.ZB = 0; - } - (0 === this.XB && 0 === this.YB && 0 === this.ZB) || - (0, r.warn)( - `${this.name}, BlackPoint: XB: ${this.XB}, YB: ${this.YB}, ZB: ${this.ZB}, only default values are supported.`, - ); - if (this.G < 1) { - (0, r.info)( - `Invalid Gamma: ${this.G} for ${this.name}, falling back to default.`, - ); - this.G = 1; - } - } - #r(e, t, a, r, n) { - const i = (e[t] * n) ** this.G, - s = this.YW * i, - o = Math.max(295.8 * s ** 0.3333333333333333 - 40.8, 0); - a[r] = o; - a[r + 1] = o; - a[r + 2] = o; - } - getRgbItem(e, t, a, r) { - this.#r(e, t, a, r, 1); - } - getRgbBuffer(e, t, a, r, n, i, s) { - const o = 1 / ((1 << i) - 1); - for (let i = 0; i < a; ++i) { - this.#r(e, t, r, n, o); - t += 1; - n += 3 + s; - } - } - getOutputLength(e, t) { - return e * (3 + t); - } - } - class CalRGBCS extends ColorSpace { - static #n = new Float32Array([ - 0.8951, 0.2664, -0.1614, -0.7502, 1.7135, 0.0367, 0.0389, -0.0685, - 1.0296, - ]); - static #i = new Float32Array([ - 0.9869929, -0.1470543, 0.1599627, 0.4323053, 0.5183603, 0.0492912, - -0.0085287, 0.0400428, 0.9684867, - ]); - static #s = new Float32Array([ - 3.2404542, -1.5371385, -0.4985314, -0.969266, 1.8760108, 0.041556, - 0.0556434, -0.2040259, 1.0572252, - ]); - static #o = new Float32Array([1, 1, 1]); - static #c = new Float32Array(3); - static #l = new Float32Array(3); - static #h = new Float32Array(3); - static #u = (24 / 116) ** 3 / 8; - constructor(e, t, a, n) { - super("CalRGB", 3); - if (!e) - throw new r.FormatError( - "WhitePoint missing - required for color space CalRGB", - ); - const [i, s, o] = (this.whitePoint = e), - [c, l, h] = (this.blackPoint = t || new Float32Array(3)); - [this.GR, this.GG, this.GB] = a || new Float32Array([1, 1, 1]); - [ - this.MXA, - this.MYA, - this.MZA, - this.MXB, - this.MYB, - this.MZB, - this.MXC, - this.MYC, - this.MZC, - ] = n || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]); - if (i < 0 || o < 0 || 1 !== s) - throw new r.FormatError( - `Invalid WhitePoint components for ${this.name}, no fallback available`, - ); - if (c < 0 || l < 0 || h < 0) { - (0, r.info)( - `Invalid BlackPoint for ${this.name} [${c}, ${l}, ${h}], falling back to default.`, - ); - this.blackPoint = new Float32Array(3); - } - if (this.GR < 0 || this.GG < 0 || this.GB < 0) { - (0, r.info)( - `Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ${this.name}, falling back to default.`, - ); - this.GR = this.GG = this.GB = 1; - } - } - #d(e, t, a) { - a[0] = e[0] * t[0] + e[1] * t[1] + e[2] * t[2]; - a[1] = e[3] * t[0] + e[4] * t[1] + e[5] * t[2]; - a[2] = e[6] * t[0] + e[7] * t[1] + e[8] * t[2]; - } - #f(e, t, a) { - a[0] = (1 * t[0]) / e[0]; - a[1] = (1 * t[1]) / e[1]; - a[2] = (1 * t[2]) / e[2]; - } - #g(e, t, a) { - a[0] = (0.95047 * t[0]) / e[0]; - a[1] = (1 * t[1]) / e[1]; - a[2] = (1.08883 * t[2]) / e[2]; - } - #p(e) { - return e <= 0.0031308 - ? this.#m(0, 1, 12.92 * e) - : e >= 0.99554525 - ? 1 - : this.#m(0, 1, 1.055 * e ** (1 / 2.4) - 0.055); - } - #m(e, t, a) { - return Math.max(e, Math.min(t, a)); - } - #b(e) { - return e < 0 - ? -this.#b(-e) - : e > 8 - ? ((e + 16) / 116) ** 3 - : e * CalRGBCS.#u; - } - #y(e, t, a) { - if (0 === e[0] && 0 === e[1] && 0 === e[2]) { - a[0] = t[0]; - a[1] = t[1]; - a[2] = t[2]; - return; - } - const r = this.#b(0), - n = (1 - r) / (1 - this.#b(e[0])), - i = 1 - n, - s = (1 - r) / (1 - this.#b(e[1])), - o = 1 - s, - c = (1 - r) / (1 - this.#b(e[2])), - l = 1 - c; - a[0] = t[0] * n + i; - a[1] = t[1] * s + o; - a[2] = t[2] * c + l; - } - #w(e, t, a) { - if (1 === e[0] && 1 === e[2]) { - a[0] = t[0]; - a[1] = t[1]; - a[2] = t[2]; - return; - } - const r = a; - this.#d(CalRGBCS.#n, t, r); - const n = CalRGBCS.#c; - this.#f(e, r, n); - this.#d(CalRGBCS.#i, n, a); - } - #S(e, t, a) { - const r = a; - this.#d(CalRGBCS.#n, t, r); - const n = CalRGBCS.#c; - this.#g(e, r, n); - this.#d(CalRGBCS.#i, n, a); - } - #r(e, t, a, r, n) { - const i = this.#m(0, 1, e[t] * n), - s = this.#m(0, 1, e[t + 1] * n), - o = this.#m(0, 1, e[t + 2] * n), - c = 1 === i ? 1 : i ** this.GR, - l = 1 === s ? 1 : s ** this.GG, - h = 1 === o ? 1 : o ** this.GB, - u = this.MXA * c + this.MXB * l + this.MXC * h, - d = this.MYA * c + this.MYB * l + this.MYC * h, - f = this.MZA * c + this.MZB * l + this.MZC * h, - g = CalRGBCS.#l; - g[0] = u; - g[1] = d; - g[2] = f; - const p = CalRGBCS.#h; - this.#w(this.whitePoint, g, p); - const m = CalRGBCS.#l; - this.#y(this.blackPoint, p, m); - const b = CalRGBCS.#h; - this.#S(CalRGBCS.#o, m, b); - const y = CalRGBCS.#l; - this.#d(CalRGBCS.#s, b, y); - a[r] = 255 * this.#p(y[0]); - a[r + 1] = 255 * this.#p(y[1]); - a[r + 2] = 255 * this.#p(y[2]); - } - getRgbItem(e, t, a, r) { - this.#r(e, t, a, r, 1); - } - getRgbBuffer(e, t, a, r, n, i, s) { - const o = 1 / ((1 << i) - 1); - for (let i = 0; i < a; ++i) { - this.#r(e, t, r, n, o); - t += 3; - n += 3 + s; - } - } - getOutputLength(e, t) { - return ((e * (3 + t)) / 3) | 0; - } - } - class LabCS extends ColorSpace { - constructor(e, t, a) { - super("Lab", 3); - if (!e) - throw new r.FormatError( - "WhitePoint missing - required for color space Lab", - ); - [this.XW, this.YW, this.ZW] = e; - [this.amin, this.amax, this.bmin, this.bmax] = a || [ - -100, 100, -100, 100, - ]; - [this.XB, this.YB, this.ZB] = t || [0, 0, 0]; - if (this.XW < 0 || this.ZW < 0 || 1 !== this.YW) - throw new r.FormatError( - "Invalid WhitePoint components, no fallback available", - ); - if (this.XB < 0 || this.YB < 0 || this.ZB < 0) { - (0, r.info)("Invalid BlackPoint, falling back to default"); - this.XB = this.YB = this.ZB = 0; - } - if (this.amin > this.amax || this.bmin > this.bmax) { - (0, r.info)("Invalid Range, falling back to defaults"); - this.amin = -100; - this.amax = 100; - this.bmin = -100; - this.bmax = 100; - } - } - #x(e) { - return e >= 6 / 29 ? e ** 3 : (108 / 841) * (e - 4 / 29); - } - #A(e, t, a, r) { - return a + (e * (r - a)) / t; - } - #r(e, t, a, r, n) { - let i = e[t], - s = e[t + 1], - o = e[t + 2]; - if (!1 !== a) { - i = this.#A(i, a, 0, 100); - s = this.#A(s, a, this.amin, this.amax); - o = this.#A(o, a, this.bmin, this.bmax); - } - s > this.amax - ? (s = this.amax) - : s < this.amin && (s = this.amin); - o > this.bmax - ? (o = this.bmax) - : o < this.bmin && (o = this.bmin); - const c = (i + 16) / 116, - l = c + s / 500, - h = c - o / 200, - u = this.XW * this.#x(l), - d = this.YW * this.#x(c), - f = this.ZW * this.#x(h); - let g, p, m; - if (this.ZW < 1) { - g = 3.1339 * u + -1.617 * d + -0.4906 * f; - p = -0.9785 * u + 1.916 * d + 0.0333 * f; - m = 0.072 * u + -0.229 * d + 1.4057 * f; - } else { - g = 3.2406 * u + -1.5372 * d + -0.4986 * f; - p = -0.9689 * u + 1.8758 * d + 0.0415 * f; - m = 0.0557 * u + -0.204 * d + 1.057 * f; - } - r[n] = 255 * Math.sqrt(g); - r[n + 1] = 255 * Math.sqrt(p); - r[n + 2] = 255 * Math.sqrt(m); - } - getRgbItem(e, t, a, r) { - this.#r(e, t, !1, a, r); - } - getRgbBuffer(e, t, a, r, n, i, s) { - const o = (1 << i) - 1; - for (let i = 0; i < a; i++) { - this.#r(e, t, o, r, n); - t += 3; - n += 3 + s; - } - } - getOutputLength(e, t) { - return ((e * (3 + t)) / 3) | 0; - } - isDefaultDecode(e, t) { - return !0; - } - get usesZeroToOneRange() { - return (0, r.shadow)(this, "usesZeroToOneRange", !1); - } - } - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.PartialEvaluator = t.EvaluatorPreprocessor = void 0; - var r = a(2), - n = a(14), - i = a(4), - s = a(34), - o = a(37), - c = a(41), - l = a(50), - h = a(51), - u = a(42), - d = a(57), - f = a(16), - g = a(59), - p = a(8), - m = a(5), - b = a(60), - y = a(12), - w = a(18), - S = a(38), - x = a(61), - C = a(39), - k = a(45), - v = a(40), - F = a(62), - O = a(63), - T = a(64), - M = a(65); - const D = Object.freeze({ - maxImageSize: -1, - disableFontFace: !1, - ignoreErrors: !1, - isEvalSupported: !0, - isOffscreenCanvasSupported: !1, - canvasMaxAreaInBytes: -1, - fontExtraProperties: !1, - useSystemFonts: !0, - cMapUrl: null, - standardFontDataUrl: null, - }), - E = 1, - N = 2, - R = Promise.resolve(); - function normalizeBlendMode(e, t = !1) { - if (Array.isArray(e)) { - for (const t of e) { - const e = normalizeBlendMode(t, !0); - if (e) return e; - } - (0, r.warn)(`Unsupported blend mode Array: ${e}`); - return "source-over"; - } - if (!(e instanceof i.Name)) return t ? null : "source-over"; - switch (e.name) { - case "Normal": - case "Compatible": - return "source-over"; - case "Multiply": - return "multiply"; - case "Screen": - return "screen"; - case "Overlay": - return "overlay"; - case "Darken": - return "darken"; - case "Lighten": - return "lighten"; - case "ColorDodge": - return "color-dodge"; - case "ColorBurn": - return "color-burn"; - case "HardLight": - return "hard-light"; - case "SoftLight": - return "soft-light"; - case "Difference": - return "difference"; - case "Exclusion": - return "exclusion"; - case "Hue": - return "hue"; - case "Saturation": - return "saturation"; - case "Color": - return "color"; - case "Luminosity": - return "luminosity"; - } - if (t) return null; - (0, r.warn)(`Unsupported blend mode: ${e.name}`); - return "source-over"; - } - function incrementCachedImageMaskCount(e) { - e.fn === r.OPS.paintImageMaskXObject && - e.args[0]?.count > 0 && - e.args[0].count++; - } - class TimeSlotManager { - static TIME_SLOT_DURATION_MS = 20; - static CHECK_TIME_EVERY = 100; - constructor() { - this.reset(); - } - check() { - if (++this.checked < TimeSlotManager.CHECK_TIME_EVERY) return !1; - this.checked = 0; - return this.endTime <= Date.now(); - } - reset() { - this.endTime = Date.now() + TimeSlotManager.TIME_SLOT_DURATION_MS; - this.checked = 0; - } - } - class PartialEvaluator { - constructor({ - xref: e, - handler: t, - pageIndex: a, - idFactory: r, - fontCache: n, - builtInCMapCache: i, - standardFontDataCache: s, - globalImageCache: o, - systemFontCache: c, - options: l = null, - }) { - this.xref = e; - this.handler = t; - this.pageIndex = a; - this.idFactory = r; - this.fontCache = n; - this.builtInCMapCache = i; - this.standardFontDataCache = s; - this.globalImageCache = o; - this.systemFontCache = c; - this.options = l || D; - this.parsingType3Font = !1; - this._regionalImageCache = new g.RegionalImageCache(); - this._fetchBuiltInCMapBound = this.fetchBuiltInCMap.bind(this); - F.ImageResizer.setMaxArea(this.options.canvasMaxAreaInBytes); - } - get _pdfFunctionFactory() { - const e = new d.PDFFunctionFactory({ - xref: this.xref, - isEvalSupported: this.options.isEvalSupported, - }); - return (0, r.shadow)(this, "_pdfFunctionFactory", e); - } - clone(e = null) { - const t = Object.create(this); - t.options = Object.assign(Object.create(null), this.options, e); - return t; - } - hasBlendModes(e, t) { - if (!(e instanceof i.Dict)) return !1; - if (e.objId && t.has(e.objId)) return !1; - const a = new i.RefSet(t); - e.objId && a.put(e.objId); - const n = [e], - s = this.xref; - for (; n.length; ) { - const e = n.shift(), - t = e.get("ExtGState"); - if (t instanceof i.Dict) - for (let e of t.getRawValues()) { - if (e instanceof i.Ref) { - if (a.has(e)) continue; - try { - e = s.fetch(e); - } catch (t) { - a.put(e); - (0, r.info)( - `hasBlendModes - ignoring ExtGState: "${t}".`, - ); - continue; - } - } - if (!(e instanceof i.Dict)) continue; - e.objId && a.put(e.objId); - const t = e.get("BM"); - if (t instanceof i.Name) { - if ("Normal" !== t.name) return !0; - } else if (void 0 !== t && Array.isArray(t)) - for (const e of t) - if (e instanceof i.Name && "Normal" !== e.name) - return !0; - } - const o = e.get("XObject"); - if (o instanceof i.Dict) - for (let e of o.getRawValues()) { - if (e instanceof i.Ref) { - if (a.has(e)) continue; - try { - e = s.fetch(e); - } catch (t) { - a.put(e); - (0, r.info)( - `hasBlendModes - ignoring XObject: "${t}".`, - ); - continue; - } - } - if (!(e instanceof m.BaseStream)) continue; - e.dict.objId && a.put(e.dict.objId); - const t = e.dict.get("Resources"); - if (t instanceof i.Dict && (!t.objId || !a.has(t.objId))) { - n.push(t); - t.objId && a.put(t.objId); - } - } - } - for (const e of a) t.put(e); - return !1; - } - async fetchBuiltInCMap(e) { - const t = this.builtInCMapCache.get(e); - if (t) return t; - let a; - if (null !== this.options.cMapUrl) { - const t = `${this.options.cMapUrl}${e}.bcmap`, - n = await fetch(t); - if (!n.ok) - throw new Error( - `fetchBuiltInCMap: failed to fetch file "${t}" with "${n.statusText}".`, - ); - a = { - cMapData: new Uint8Array(await n.arrayBuffer()), - compressionType: r.CMapCompressionType.BINARY, - }; - } else - a = await this.handler.sendWithPromise("FetchBuiltInCMap", { - name: e, - }); - a.compressionType !== r.CMapCompressionType.NONE && - this.builtInCMapCache.set(e, a); - return a; - } - async fetchStandardFontData(e) { - const t = this.standardFontDataCache.get(e); - if (t) return new p.Stream(t); - if ( - this.options.useSystemFonts && - "Symbol" !== e && - "ZapfDingbats" !== e - ) - return null; - const a = (0, c.getFontNameToFileMap)()[e]; - let n; - if (null !== this.options.standardFontDataUrl) { - const e = `${this.options.standardFontDataUrl}${a}`, - t = await fetch(e); - t.ok - ? (n = await t.arrayBuffer()) - : (0, r.warn)( - `fetchStandardFontData: failed to fetch file "${e}" with "${t.statusText}".`, - ); - } else - try { - n = await this.handler.sendWithPromise( - "FetchStandardFontData", - { filename: a }, - ); - } catch (e) { - (0, r.warn)( - `fetchStandardFontData: failed to fetch file "${a}" with "${e}".`, - ); - } - if (!n) return null; - this.standardFontDataCache.set(e, n); - return new p.Stream(n); - } - async buildFormXObject(e, t, a, n, s, o, c) { - const l = t.dict, - h = l.getArray("Matrix"); - let u, - d, - f = l.getArray("BBox"); - f = - Array.isArray(f) && 4 === f.length - ? r.Util.normalizeRect(f) - : null; - l.has("OC") && - (u = await this.parseMarkedContentProps(l.get("OC"), e)); - void 0 !== u && n.addOp(r.OPS.beginMarkedContentProps, ["OC", u]); - const g = l.get("Group"); - if (g) { - d = { - matrix: h, - bbox: f, - smask: a, - isolated: !1, - knockout: !1, - }; - const t = g.get("S"); - let s = null; - if ((0, i.isName)(t, "Transparency")) { - d.isolated = g.get("I") || !1; - d.knockout = g.get("K") || !1; - if (g.has("CS")) { - const t = g.getRaw("CS"), - a = y.ColorSpace.getCached(t, this.xref, c); - s = - a || - (await this.parseColorSpace({ - cs: t, - resources: e, - localColorSpaceCache: c, - })); - } - } - if (a?.backdrop) { - s ||= y.ColorSpace.singletons.rgb; - a.backdrop = s.getRgb(a.backdrop, 0); - } - n.addOp(r.OPS.beginGroup, [d]); - } - const p = g ? [h, null] : [h, f]; - n.addOp(r.OPS.paintFormXObjectBegin, p); - return this.getOperatorList({ - stream: t, - task: s, - resources: l.get("Resources") || e, - operatorList: n, - initialState: o, - }).then(function () { - n.addOp(r.OPS.paintFormXObjectEnd, []); - g && n.addOp(r.OPS.endGroup, [d]); - void 0 !== u && n.addOp(r.OPS.endMarkedContent, []); - }); - } - _sendImgData(e, t, a = !1) { - const r = t ? [t.bitmap || t.data.buffer] : null; - return this.parsingType3Font || a - ? this.handler.send("commonobj", [e, "Image", t], r) - : this.handler.send("obj", [e, this.pageIndex, "Image", t], r); - } - async buildPaintImageXObject({ - resources: e, - image: t, - isInline: a = !1, - operatorList: n, - cacheKey: i, - localImageCache: s, - localColorSpaceCache: o, - }) { - const c = t.dict, - l = c.objId, - h = c.get("W", "Width"), - u = c.get("H", "Height"); - if (!h || "number" != typeof h || !u || "number" != typeof u) { - (0, r.warn)("Image dimensions are missing, or not numbers."); - return; - } - const d = this.options.maxImageSize; - if (-1 !== d && h * u > d) { - const e = - "Image exceeded maximum allowed size and was removed."; - if (this.options.ignoreErrors) { - (0, r.warn)(e); - return; - } - throw new Error(e); - } - let f; - c.has("OC") && - (f = await this.parseMarkedContentProps(c.get("OC"), e)); - let g, p; - if (c.get("IM", "ImageMask") || !1) { - const e = c.get("I", "Interpolate"), - a = (h + 7) >> 3, - o = t.getBytes(a * u), - d = c.getArray("D", "Decode"); - if (this.parsingType3Font) { - g = M.PDFImage.createRawMask({ - imgArray: o, - width: h, - height: u, - imageIsFromDecodeStream: t instanceof w.DecodeStream, - inverseDecode: d?.[0] > 0, - interpolate: e, - }); - g.cached = !!i; - p = [g]; - n.addImageOps(r.OPS.paintImageMaskXObject, p, f); - if (i) { - const e = { - fn: r.OPS.paintImageMaskXObject, - args: p, - optionalContent: f, - }; - s.set(i, l, e); - l && this._regionalImageCache.set(null, l, e); - } - return; - } - g = await M.PDFImage.createMask({ - imgArray: o, - width: h, - height: u, - imageIsFromDecodeStream: t instanceof w.DecodeStream, - inverseDecode: d?.[0] > 0, - interpolate: e, - isOffscreenCanvasSupported: - this.options.isOffscreenCanvasSupported, - }); - if (g.isSingleOpaquePixel) { - n.addImageOps(r.OPS.paintSolidColorImageMask, [], f); - if (i) { - const e = { - fn: r.OPS.paintSolidColorImageMask, - args: [], - optionalContent: f, - }; - s.set(i, l, e); - l && this._regionalImageCache.set(null, l, e); - } - return; - } - const m = `mask_${this.idFactory.createObjId()}`; - n.addDependency(m); - this._sendImgData(m, g); - p = [ - { - data: m, - width: g.width, - height: g.height, - interpolate: g.interpolate, - count: 1, - }, - ]; - n.addImageOps(r.OPS.paintImageMaskXObject, p, f); - if (i) { - const e = { - fn: r.OPS.paintImageMaskXObject, - args: p, - optionalContent: f, - }; - s.set(i, l, e); - l && this._regionalImageCache.set(null, l, e); - } - return; - } - if (a && !c.has("SMask") && !c.has("Mask") && h + u < 200) { - const i = new M.PDFImage({ - xref: this.xref, - res: e, - image: t, - isInline: a, - pdfFunctionFactory: this._pdfFunctionFactory, - localColorSpaceCache: o, - }); - g = await i.createImageData(!0, !1); - n.isOffscreenCanvasSupported = - this.options.isOffscreenCanvasSupported; - n.addImageOps(r.OPS.paintInlineImageXObject, [g], f); - return; - } - let m = `img_${this.idFactory.createObjId()}`, - b = !1; - if (this.parsingType3Font) - m = `${this.idFactory.getDocId()}_type3_${m}`; - else if (l) { - b = this.globalImageCache.shouldCache(l, this.pageIndex); - b && (m = `${this.idFactory.getDocId()}_${m}`); - } - n.addDependency(m); - p = [m, h, u]; - M.PDFImage.buildImage({ - xref: this.xref, - res: e, - image: t, - isInline: a, - pdfFunctionFactory: this._pdfFunctionFactory, - localColorSpaceCache: o, - }) - .then(async (e) => { - g = await e.createImageData( - !1, - this.options.isOffscreenCanvasSupported, - ); - if (i && l && b) { - const e = g.bitmap ? g.width * g.height * 4 : g.data.length; - this.globalImageCache.addByteSize(l, e); - } - return this._sendImgData(m, g, b); - }) - .catch((e) => { - (0, r.warn)(`Unable to decode image "${m}": "${e}".`); - return this._sendImgData(m, null, b); - }); - n.addImageOps(r.OPS.paintImageXObject, p, f); - if (i) { - const e = { - fn: r.OPS.paintImageXObject, - args: p, - optionalContent: f, - }; - s.set(i, l, e); - if (l) { - this._regionalImageCache.set(null, l, e); - if (b) { - (0, r.assert)(!a, "Cannot cache an inline image globally."); - this.globalImageCache.setData(l, { - objId: m, - fn: r.OPS.paintImageXObject, - args: p, - optionalContent: f, - byteSize: 0, - }); - } - } - } - } - handleSMask(e, t, a, r, n, i) { - const s = e.get("G"), - o = { subtype: e.get("S").name, backdrop: e.get("BC") }, - c = e.get("TR"); - if ((0, d.isPDFFunction)(c)) { - const e = this._pdfFunctionFactory.create(c), - t = new Uint8Array(256), - a = new Float32Array(1); - for (let r = 0; r < 256; r++) { - a[0] = r / 255; - e(a, 0, a, 0); - t[r] = (255 * a[0]) | 0; - } - o.transferMap = t; - } - return this.buildFormXObject(t, s, o, a, r, n.state.clone(), i); - } - handleTransferFunction(e) { - let t; - if (Array.isArray(e)) t = e; - else { - if (!(0, d.isPDFFunction)(e)) return null; - t = [e]; - } - const a = []; - let r = 0, - n = 0; - for (const e of t) { - const t = this.xref.fetchIfRef(e); - r++; - if ((0, i.isName)(t, "Identity")) { - a.push(null); - continue; - } - if (!(0, d.isPDFFunction)(t)) return null; - const s = this._pdfFunctionFactory.create(t), - o = new Uint8Array(256), - c = new Float32Array(1); - for (let e = 0; e < 256; e++) { - c[0] = e / 255; - s(c, 0, c, 0); - o[e] = (255 * c[0]) | 0; - } - a.push(o); - n++; - } - return (1 !== r && 4 !== r) || 0 === n ? null : a; - } - handleTilingType(e, t, a, n, s, o, c, h) { - const u = new T.OperatorList(), - d = i.Dict.merge({ - xref: this.xref, - dictArray: [s.get("Resources"), a], - }); - return this.getOperatorList({ - stream: n, - task: c, - resources: d, - operatorList: u, - }) - .then(function () { - const a = u.getIR(), - r = (0, l.getTilingPatternIR)(a, s, t); - o.addDependencies(u.dependencies); - o.addOp(e, r); - s.objId && - h.set(null, s.objId, { operatorListIR: a, dict: s }); - }) - .catch((e) => { - if (!(e instanceof r.AbortException)) { - if (!this.options.ignoreErrors) throw e; - (0, r.warn)(`handleTilingType - ignoring pattern: "${e}".`); - } - }); - } - handleSetFont(e, t, a, r, n, o, c = null, l = null) { - const h = t?.[0] instanceof i.Name ? t[0].name : null; - return this.loadFont(h, a, e, c, l) - .then((t) => - t.font.isType3Font - ? t - .loadType3Data(this, e, n) - .then(function () { - r.addDependencies(t.type3Dependencies); - return t; - }) - .catch( - (e) => - new TranslatedFont({ - loadedName: "g_font_error", - font: new s.ErrorFont( - `Type3 font load error: ${e}`, - ), - dict: t.font, - evaluatorOptions: this.options, - }), - ) - : t, - ) - .then((e) => { - o.font = e.font; - e.send(this.handler); - return e.loadedName; - }); - } - handleText(e, t) { - const a = t.font, - n = a.charsToGlyphs(e); - if (a.data) { - (!!( - t.textRenderingMode & r.TextRenderingMode.ADD_TO_PATH_FLAG - ) || - "Pattern" === t.fillColorSpace.name || - a.disableFontFace || - this.options.disableFontFace) && - PartialEvaluator.buildFontPaths( - a, - n, - this.handler, - this.options, - ); - } - return n; - } - ensureStateFont(e) { - if (e.font) return; - const t = new r.FormatError( - "Missing setFont (Tf) operator before text rendering operator.", - ); - if (!this.options.ignoreErrors) throw t; - (0, r.warn)(`ensureStateFont: "${t}".`); - } - async setGState({ - resources: e, - gState: t, - operatorList: a, - cacheKey: n, - task: s, - stateManager: o, - localGStateCache: c, - localColorSpaceCache: l, - }) { - const h = t.objId; - let u = !0; - const d = []; - let f = Promise.resolve(); - for (const n of t.getKeys()) { - const c = t.get(n); - switch (n) { - case "Type": - break; - case "LW": - case "LC": - case "LJ": - case "ML": - case "D": - case "RI": - case "FL": - case "CA": - case "ca": - d.push([n, c]); - break; - case "Font": - u = !1; - f = f.then(() => - this.handleSetFont(e, null, c[0], a, s, o.state).then( - function (e) { - a.addDependency(e); - d.push([n, [e, c[1]]]); - }, - ), - ); - break; - case "BM": - d.push([n, normalizeBlendMode(c)]); - break; - case "SMask": - if ((0, i.isName)(c, "None")) { - d.push([n, !1]); - break; - } - if (c instanceof i.Dict) { - u = !1; - f = f.then(() => this.handleSMask(c, e, a, s, o, l)); - d.push([n, !0]); - } else (0, r.warn)("Unsupported SMask type"); - break; - case "TR": - const t = this.handleTransferFunction(c); - d.push([n, t]); - break; - case "OP": - case "op": - case "OPM": - case "BG": - case "BG2": - case "UCR": - case "UCR2": - case "TR2": - case "HT": - case "SM": - case "SA": - case "AIS": - case "TK": - (0, r.info)("graphic state operator " + n); - break; - default: - (0, r.info)("Unknown graphic state operator " + n); - } - } - return f.then(function () { - d.length > 0 && a.addOp(r.OPS.setGState, [d]); - u && c.set(n, h, d); - }); - } - loadFont(e, t, a, n = null, o = null) { - const errorFont = async () => - new TranslatedFont({ - loadedName: "g_font_error", - font: new s.ErrorFont(`Font "${e}" is not available.`), - dict: t, - evaluatorOptions: this.options, - }); - let c; - if (t) t instanceof i.Ref && (c = t); - else { - const t = a.get("Font"); - t && (c = t.getRaw(e)); - } - if (c) { - if (this.parsingType3Font && this.type3FontRefs.has(c)) - return errorFont(); - if (this.fontCache.has(c)) return this.fontCache.get(c); - t = this.xref.fetchIfRef(c); - } - if (!(t instanceof i.Dict)) { - if (!this.options.ignoreErrors && !this.parsingType3Font) { - (0, r.warn)(`Font "${e}" is not available.`); - return errorFont(); - } - (0, r.warn)( - `Font "${e}" is not available -- attempting to fallback to a default font.`, - ); - t = n || PartialEvaluator.fallbackFontDict; - } - if (t.cacheKey && this.fontCache.has(t.cacheKey)) - return this.fontCache.get(t.cacheKey); - const l = new r.PromiseCapability(); - let h; - try { - h = this.preEvaluateFont(t); - h.cssFontInfo = o; - } catch (e) { - (0, r.warn)(`loadFont - preEvaluateFont failed: "${e}".`); - return errorFont(); - } - const { descriptor: u, hash: d } = h, - f = c instanceof i.Ref; - let g; - if (d && u instanceof i.Dict) { - const e = (u.fontAliases ||= Object.create(null)); - if (e[d]) { - const t = e[d].aliasRef; - if (f && t && this.fontCache.has(t)) { - this.fontCache.putAlias(c, t); - return this.fontCache.get(c); - } - } else e[d] = { fontID: this.idFactory.createFontId() }; - f && (e[d].aliasRef = c); - g = e[d].fontID; - } else g = this.idFactory.createFontId(); - (0, r.assert)( - g?.startsWith("f"), - 'The "fontID" must be (correctly) defined.', - ); - if (f) this.fontCache.put(c, l.promise); - else { - t.cacheKey = `cacheKey_${g}`; - this.fontCache.put(t.cacheKey, l.promise); - } - t.loadedName = `${this.idFactory.getDocId()}_${g}`; - this.translateFont(h) - .then((e) => { - l.resolve( - new TranslatedFont({ - loadedName: t.loadedName, - font: e, - dict: t, - evaluatorOptions: this.options, - }), - ); - }) - .catch((e) => { - (0, r.warn)(`loadFont - translateFont failed: "${e}".`); - l.resolve( - new TranslatedFont({ - loadedName: t.loadedName, - font: new s.ErrorFont(e instanceof Error ? e.message : e), - dict: t, - evaluatorOptions: this.options, - }), - ); - }); - return l.promise; - } - buildPath(e, t, a, n = !1) { - const i = e.length - 1; - a || (a = []); - if (i < 0 || e.fnArray[i] !== r.OPS.constructPath) { - if (n) { - (0, r.warn)( - `Encountered path operator "${t}" inside of a text object.`, - ); - e.addOp(r.OPS.save, null); - } - let i; - switch (t) { - case r.OPS.rectangle: - const e = a[0] + a[2], - t = a[1] + a[3]; - i = [ - Math.min(a[0], e), - Math.max(a[0], e), - Math.min(a[1], t), - Math.max(a[1], t), - ]; - break; - case r.OPS.moveTo: - case r.OPS.lineTo: - i = [a[0], a[0], a[1], a[1]]; - break; - default: - i = [1 / 0, -1 / 0, 1 / 0, -1 / 0]; - } - e.addOp(r.OPS.constructPath, [[t], a, i]); - n && e.addOp(r.OPS.restore, null); - } else { - const n = e.argsArray[i]; - n[0].push(t); - n[1].push(...a); - const s = n[2]; - switch (t) { - case r.OPS.rectangle: - const e = a[0] + a[2], - t = a[1] + a[3]; - s[0] = Math.min(s[0], a[0], e); - s[1] = Math.max(s[1], a[0], e); - s[2] = Math.min(s[2], a[1], t); - s[3] = Math.max(s[3], a[1], t); - break; - case r.OPS.moveTo: - case r.OPS.lineTo: - s[0] = Math.min(s[0], a[0]); - s[1] = Math.max(s[1], a[0]); - s[2] = Math.min(s[2], a[1]); - s[3] = Math.max(s[3], a[1]); - } - } - } - parseColorSpace({ cs: e, resources: t, localColorSpaceCache: a }) { - return y.ColorSpace.parseAsync({ - cs: e, - xref: this.xref, - resources: t, - pdfFunctionFactory: this._pdfFunctionFactory, - localColorSpaceCache: a, - }).catch((e) => { - if (e instanceof r.AbortException) return null; - if (this.options.ignoreErrors) { - (0, r.warn)(`parseColorSpace - ignoring ColorSpace: "${e}".`); - return null; - } - throw e; - }); - } - parseShading({ - shading: e, - resources: t, - localColorSpaceCache: a, - localShadingPatternCache: r, - }) { - let n = r.get(e); - if (!n) { - const i = l.Pattern.parseShading( - e, - this.xref, - t, - this._pdfFunctionFactory, - a, - ).getIR(); - n = `pattern_${this.idFactory.createObjId()}`; - this.parsingType3Font && - (n = `${this.idFactory.getDocId()}_type3_${n}`); - r.set(e, n); - this.parsingType3Font - ? this.handler.send("commonobj", [n, "Pattern", i]) - : this.handler.send("obj", [n, this.pageIndex, "Pattern", i]); - } - return n; - } - handleColorN(e, t, a, n, s, o, c, h, u, d) { - const f = a.pop(); - if (f instanceof i.Name) { - const g = s.getRaw(f.name), - p = g instanceof i.Ref && u.getByRef(g); - if (p) - try { - const r = n.base ? n.base.getRgb(a, 0) : null, - i = (0, l.getTilingPatternIR)( - p.operatorListIR, - p.dict, - r, - ); - e.addOp(t, i); - return; - } catch {} - const b = this.xref.fetchIfRef(g); - if (b) { - const i = b instanceof m.BaseStream ? b.dict : b, - s = i.get("PatternType"); - if (s === E) { - const r = n.base ? n.base.getRgb(a, 0) : null; - return this.handleTilingType(t, r, o, b, i, e, c, u); - } - if (s === N) { - const a = i.get("Shading"), - r = i.getArray("Matrix"), - n = this.parseShading({ - shading: a, - resources: o, - localColorSpaceCache: h, - localShadingPatternCache: d, - }); - e.addOp(t, ["Shading", n, r]); - return; - } - throw new r.FormatError(`Unknown PatternType: ${s}`); - } - } - throw new r.FormatError(`Unknown PatternName: ${f}`); - } - _parseVisibilityExpression(e, t, a) { - if (++t > 10) { - (0, r.warn)("Visibility expression is too deeply nested"); - return; - } - const n = e.length, - s = this.xref.fetchIfRef(e[0]); - if (!(n < 2) && s instanceof i.Name) { - switch (s.name) { - case "And": - case "Or": - case "Not": - a.push(s.name); - break; - default: - (0, r.warn)( - `Invalid operator ${s.name} in visibility expression`, - ); - return; - } - for (let r = 1; r < n; r++) { - const n = e[r], - s = this.xref.fetchIfRef(n); - if (Array.isArray(s)) { - const e = []; - a.push(e); - this._parseVisibilityExpression(s, t, e); - } else n instanceof i.Ref && a.push(n.toString()); - } - } else (0, r.warn)("Invalid visibility expression"); - } - async parseMarkedContentProps(e, t) { - let a; - if (e instanceof i.Name) { - a = t.get("Properties").get(e.name); - } else { - if (!(e instanceof i.Dict)) - throw new r.FormatError( - "Optional content properties malformed.", - ); - a = e; - } - const n = a.get("Type")?.name; - if ("OCG" === n) return { type: n, id: a.objId }; - if ("OCMD" === n) { - const e = a.get("VE"); - if (Array.isArray(e)) { - const t = []; - this._parseVisibilityExpression(e, 0, t); - if (t.length > 0) return { type: "OCMD", expression: t }; - } - const t = a.get("OCGs"); - if (Array.isArray(t) || t instanceof i.Dict) { - const e = []; - if (Array.isArray(t)) for (const a of t) e.push(a.toString()); - else e.push(t.objId); - return { - type: n, - ids: e, - policy: - a.get("P") instanceof i.Name ? a.get("P").name : null, - expression: null, - }; - } - if (t instanceof i.Ref) return { type: n, id: t.toString() }; - } - return null; - } - getOperatorList({ - stream: e, - task: t, - resources: a, - operatorList: n, - initialState: s = null, - fallbackFontDict: o = null, - }) { - a ||= i.Dict.empty; - s ||= new EvalState(); - if (!n) - throw new Error( - 'getOperatorList: missing "operatorList" parameter', - ); - const c = this, - l = this.xref; - let h = !1; - const u = new g.LocalImageCache(), - d = new g.LocalColorSpaceCache(), - f = new g.LocalGStateCache(), - p = new g.LocalTilingPatternCache(), - b = new Map(), - w = a.get("XObject") || i.Dict.empty, - S = a.get("Pattern") || i.Dict.empty, - x = new StateManager(s), - C = new EvaluatorPreprocessor(e, l, x), - k = new TimeSlotManager(); - function closePendingRestoreOPS(e) { - for (let e = 0, t = C.savedStatesDepth; e < t; e++) - n.addOp(r.OPS.restore, []); - } - return new Promise(function promiseBody(e, s) { - const next = function (t) { - Promise.all([t, n.ready]).then(function () { - try { - promiseBody(e, s); - } catch (e) { - s(e); - } - }, s); - }; - t.ensureNotTerminated(); - k.reset(); - const g = {}; - let v, F, O, T, M, D; - for (; !(v = k.check()); ) { - g.args = null; - if (!C.read(g)) break; - let e = g.args, - s = g.fn; - switch (0 | s) { - case r.OPS.paintXObject: - D = e[0] instanceof i.Name; - M = e[0].name; - if (D) { - const t = u.getByName(M); - if (t) { - n.addImageOps(t.fn, t.args, t.optionalContent); - incrementCachedImageMaskCount(t); - e = null; - continue; - } - } - next( - new Promise(function (e, s) { - if (!D) - throw new r.FormatError( - "XObject must be referred to by name.", - ); - let o = w.getRaw(M); - if (o instanceof i.Ref) { - const t = - u.getByRef(o) || - c._regionalImageCache.getByRef(o); - if (t) { - n.addImageOps(t.fn, t.args, t.optionalContent); - incrementCachedImageMaskCount(t); - e(); - return; - } - const a = c.globalImageCache.getData( - o, - c.pageIndex, - ); - if (a) { - n.addDependency(a.objId); - n.addImageOps(a.fn, a.args, a.optionalContent); - e(); - return; - } - o = l.fetch(o); - } - if (!(o instanceof m.BaseStream)) - throw new r.FormatError( - "XObject should be a stream", - ); - const h = o.dict.get("Subtype"); - if (!(h instanceof i.Name)) - throw new r.FormatError( - "XObject should have a Name subtype", - ); - if ("Form" !== h.name) - if ("Image" !== h.name) { - if ("PS" !== h.name) - throw new r.FormatError( - `Unhandled XObject subtype ${h.name}`, - ); - (0, r.info)("Ignored XObject subtype PS"); - e(); - } else - c.buildPaintImageXObject({ - resources: a, - image: o, - operatorList: n, - cacheKey: M, - localImageCache: u, - localColorSpaceCache: d, - }).then(e, s); - else { - x.save(); - c.buildFormXObject( - a, - o, - null, - n, - t, - x.state.clone(), - d, - ).then(function () { - x.restore(); - e(); - }, s); - } - }).catch(function (e) { - if (!(e instanceof r.AbortException)) { - if (!c.options.ignoreErrors) throw e; - (0, r.warn)( - `getOperatorList - ignoring XObject: "${e}".`, - ); - } - }), - ); - return; - case r.OPS.setFont: - var E = e[1]; - next( - c - .handleSetFont(a, e, null, n, t, x.state, o) - .then(function (e) { - n.addDependency(e); - n.addOp(r.OPS.setFont, [e, E]); - }), - ); - return; - case r.OPS.beginText: - h = !0; - break; - case r.OPS.endText: - h = !1; - break; - case r.OPS.endInlineImage: - var N = e[0].cacheKey; - if (N) { - const t = u.getByName(N); - if (t) { - n.addImageOps(t.fn, t.args, t.optionalContent); - incrementCachedImageMaskCount(t); - e = null; - continue; - } - } - next( - c.buildPaintImageXObject({ - resources: a, - image: e[0], - isInline: !0, - operatorList: n, - cacheKey: N, - localImageCache: u, - localColorSpaceCache: d, - }), - ); - return; - case r.OPS.showText: - if (!x.state.font) { - c.ensureStateFont(x.state); - continue; - } - e[0] = c.handleText(e[0], x.state); - break; - case r.OPS.showSpacedText: - if (!x.state.font) { - c.ensureStateFont(x.state); - continue; - } - var L = [], - $ = x.state; - for (const t of e[0]) - "string" == typeof t - ? L.push(...c.handleText(t, $)) - : "number" == typeof t && L.push(t); - e[0] = L; - s = r.OPS.showText; - break; - case r.OPS.nextLineShowText: - if (!x.state.font) { - c.ensureStateFont(x.state); - continue; - } - n.addOp(r.OPS.nextLine); - e[0] = c.handleText(e[0], x.state); - s = r.OPS.showText; - break; - case r.OPS.nextLineSetSpacingShowText: - if (!x.state.font) { - c.ensureStateFont(x.state); - continue; - } - n.addOp(r.OPS.nextLine); - n.addOp(r.OPS.setWordSpacing, [e.shift()]); - n.addOp(r.OPS.setCharSpacing, [e.shift()]); - e[0] = c.handleText(e[0], x.state); - s = r.OPS.showText; - break; - case r.OPS.setTextRenderingMode: - x.state.textRenderingMode = e[0]; - break; - case r.OPS.setFillColorSpace: { - const t = y.ColorSpace.getCached(e[0], l, d); - if (t) { - x.state.fillColorSpace = t; - continue; - } - next( - c - .parseColorSpace({ - cs: e[0], - resources: a, - localColorSpaceCache: d, - }) - .then(function (e) { - e && (x.state.fillColorSpace = e); - }), - ); - return; - } - case r.OPS.setStrokeColorSpace: { - const t = y.ColorSpace.getCached(e[0], l, d); - if (t) { - x.state.strokeColorSpace = t; - continue; - } - next( - c - .parseColorSpace({ - cs: e[0], - resources: a, - localColorSpaceCache: d, - }) - .then(function (e) { - e && (x.state.strokeColorSpace = e); - }), - ); - return; - } - case r.OPS.setFillColor: - T = x.state.fillColorSpace; - e = T.getRgb(e, 0); - s = r.OPS.setFillRGBColor; - break; - case r.OPS.setStrokeColor: - T = x.state.strokeColorSpace; - e = T.getRgb(e, 0); - s = r.OPS.setStrokeRGBColor; - break; - case r.OPS.setFillGray: - x.state.fillColorSpace = y.ColorSpace.singletons.gray; - e = y.ColorSpace.singletons.gray.getRgb(e, 0); - s = r.OPS.setFillRGBColor; - break; - case r.OPS.setStrokeGray: - x.state.strokeColorSpace = y.ColorSpace.singletons.gray; - e = y.ColorSpace.singletons.gray.getRgb(e, 0); - s = r.OPS.setStrokeRGBColor; - break; - case r.OPS.setFillCMYKColor: - x.state.fillColorSpace = y.ColorSpace.singletons.cmyk; - e = y.ColorSpace.singletons.cmyk.getRgb(e, 0); - s = r.OPS.setFillRGBColor; - break; - case r.OPS.setStrokeCMYKColor: - x.state.strokeColorSpace = y.ColorSpace.singletons.cmyk; - e = y.ColorSpace.singletons.cmyk.getRgb(e, 0); - s = r.OPS.setStrokeRGBColor; - break; - case r.OPS.setFillRGBColor: - x.state.fillColorSpace = y.ColorSpace.singletons.rgb; - e = y.ColorSpace.singletons.rgb.getRgb(e, 0); - break; - case r.OPS.setStrokeRGBColor: - x.state.strokeColorSpace = y.ColorSpace.singletons.rgb; - e = y.ColorSpace.singletons.rgb.getRgb(e, 0); - break; - case r.OPS.setFillColorN: - T = x.state.fillColorSpace; - if ("Pattern" === T.name) { - next( - c.handleColorN( - n, - r.OPS.setFillColorN, - e, - T, - S, - a, - t, - d, - p, - b, - ), - ); - return; - } - e = T.getRgb(e, 0); - s = r.OPS.setFillRGBColor; - break; - case r.OPS.setStrokeColorN: - T = x.state.strokeColorSpace; - if ("Pattern" === T.name) { - next( - c.handleColorN( - n, - r.OPS.setStrokeColorN, - e, - T, - S, - a, - t, - d, - p, - b, - ), - ); - return; - } - e = T.getRgb(e, 0); - s = r.OPS.setStrokeRGBColor; - break; - case r.OPS.shadingFill: - var _ = a.get("Shading"); - if (!_) - throw new r.FormatError("No shading resource found"); - var j = _.get(e[0].name); - if (!j) - throw new r.FormatError("No shading object found"); - e = [ - c.parseShading({ - shading: j, - resources: a, - localColorSpaceCache: d, - localShadingPatternCache: b, - }), - ]; - s = r.OPS.shadingFill; - break; - case r.OPS.setGState: - D = e[0] instanceof i.Name; - M = e[0].name; - if (D) { - const t = f.getByName(M); - if (t) { - t.length > 0 && n.addOp(r.OPS.setGState, [t]); - e = null; - continue; - } - } - next( - new Promise(function (e, s) { - if (!D) - throw new r.FormatError( - "GState must be referred to by name.", - ); - const o = a.get("ExtGState"); - if (!(o instanceof i.Dict)) - throw new r.FormatError( - "ExtGState should be a dictionary.", - ); - const l = o.get(M); - if (!(l instanceof i.Dict)) - throw new r.FormatError( - "GState should be a dictionary.", - ); - c.setGState({ - resources: a, - gState: l, - operatorList: n, - cacheKey: M, - task: t, - stateManager: x, - localGStateCache: f, - localColorSpaceCache: d, - }).then(e, s); - }).catch(function (e) { - if (!(e instanceof r.AbortException)) { - if (!c.options.ignoreErrors) throw e; - (0, r.warn)( - `getOperatorList - ignoring ExtGState: "${e}".`, - ); - } - }), - ); - return; - case r.OPS.moveTo: - case r.OPS.lineTo: - case r.OPS.curveTo: - case r.OPS.curveTo2: - case r.OPS.curveTo3: - case r.OPS.closePath: - case r.OPS.rectangle: - c.buildPath(n, s, e, h); - continue; - case r.OPS.markPoint: - case r.OPS.markPointProps: - case r.OPS.beginCompat: - case r.OPS.endCompat: - continue; - case r.OPS.beginMarkedContentProps: - if (!(e[0] instanceof i.Name)) { - (0, r.warn)( - `Expected name for beginMarkedContentProps arg0=${e[0]}`, - ); - continue; - } - if ("OC" === e[0].name) { - next( - c - .parseMarkedContentProps(e[1], a) - .then((e) => { - n.addOp(r.OPS.beginMarkedContentProps, ["OC", e]); - }) - .catch((e) => { - if (!(e instanceof r.AbortException)) { - if (!c.options.ignoreErrors) throw e; - (0, r.warn)( - `getOperatorList - ignoring beginMarkedContentProps: "${e}".`, - ); - } - }), - ); - return; - } - e = [ - e[0].name, - e[1] instanceof i.Dict ? e[1].get("MCID") : null, - ]; - break; - case r.OPS.beginMarkedContent: - case r.OPS.endMarkedContent: - default: - if (null !== e) { - for ( - F = 0, O = e.length; - F < O && !(e[F] instanceof i.Dict); - F++ - ); - if (F < O) { - (0, r.warn)( - "getOperatorList - ignoring operator: " + s, - ); - continue; - } - } - } - n.addOp(s, e); - } - if (v) next(R); - else { - closePendingRestoreOPS(); - e(); - } - }).catch((e) => { - if (!(e instanceof r.AbortException)) { - if (!this.options.ignoreErrors) throw e; - (0, r.warn)( - `getOperatorList - ignoring errors during "${t.name}" task: "${e}".`, - ); - closePendingRestoreOPS(); - } - }); - } - getTextContent({ - stream: e, - task: t, - resources: a, - stateManager: n = null, - includeMarkedContent: s = !1, - sink: o, - seenStyles: c = new Set(), - viewBox: l, - markedContentData: h = null, - disableNormalization: u = !1, - }) { - a ||= i.Dict.empty; - n ||= new StateManager(new TextState()); - s && (h ||= { level: 0 }); - const d = { items: [], styles: Object.create(null) }, - f = { - initialized: !1, - str: [], - totalWidth: 0, - totalHeight: 0, - width: 0, - height: 0, - vertical: !1, - prevTransform: null, - textAdvanceScale: 0, - spaceInFlowMin: 0, - spaceInFlowMax: 0, - trackingSpaceMin: 1 / 0, - negativeSpaceMax: -1 / 0, - notASpace: -1 / 0, - transform: null, - fontName: null, - hasEOL: !1, - }, - p = [" ", " "]; - let y = 0; - function saveLastChar(e) { - const t = (y + 1) % 2, - a = " " !== p[y] && " " === p[t]; - p[y] = e; - y = t; - return a; - } - function shouldAddWhitepsace() { - return " " !== p[y] && " " === p[(y + 1) % 2]; - } - function resetLastChars() { - p[0] = p[1] = " "; - y = 0; - } - const w = this, - S = this.xref, - x = []; - let C = null; - const k = new g.LocalImageCache(), - v = new g.LocalGStateCache(), - F = new EvaluatorPreprocessor(e, S, n); - let O; - function pushWhitespace({ - width: e = 0, - height: t = 0, - transform: a = f.prevTransform, - fontName: r = f.fontName, - }) { - d.items.push({ - str: " ", - dir: "ltr", - width: e, - height: t, - transform: a, - fontName: r, - hasEOL: !1, - }); - } - function getCurrentTextTransform() { - const e = O.font, - t = [ - O.fontSize * O.textHScale, - 0, - 0, - O.fontSize, - 0, - O.textRise, - ]; - if ( - e.isType3Font && - (O.fontSize <= 1 || e.isCharBBox) && - !(0, r.isArrayEqual)(O.fontMatrix, r.FONT_IDENTITY_MATRIX) - ) { - const a = e.bbox[3] - e.bbox[1]; - a > 0 && (t[3] *= a * O.fontMatrix[3]); - } - return r.Util.transform( - O.ctm, - r.Util.transform(O.textMatrix, t), - ); - } - function ensureTextContentItem() { - if (f.initialized) return f; - const { font: e, loadedName: t } = O; - if (!c.has(t)) { - c.add(t); - d.styles[t] = { - fontFamily: e.fallbackName, - ascent: e.ascent, - descent: e.descent, - vertical: e.vertical, - }; - } - f.fontName = t; - const a = (f.transform = getCurrentTextTransform()); - if (e.vertical) { - f.width = f.totalWidth = Math.hypot(a[0], a[1]); - f.height = f.totalHeight = 0; - f.vertical = !0; - } else { - f.width = f.totalWidth = 0; - f.height = f.totalHeight = Math.hypot(a[2], a[3]); - f.vertical = !1; - } - const r = Math.hypot(O.textLineMatrix[0], O.textLineMatrix[1]), - n = Math.hypot(O.ctm[0], O.ctm[1]); - f.textAdvanceScale = n * r; - const { fontSize: i } = O; - f.trackingSpaceMin = 0.102 * i; - f.notASpace = 0.03 * i; - f.negativeSpaceMax = -0.2 * i; - f.spaceInFlowMin = 0.102 * i; - f.spaceInFlowMax = 0.6 * i; - f.hasEOL = !1; - f.initialized = !0; - return f; - } - function updateAdvanceScale() { - if (!f.initialized) return; - const e = Math.hypot(O.textLineMatrix[0], O.textLineMatrix[1]), - t = Math.hypot(O.ctm[0], O.ctm[1]) * e; - if (t !== f.textAdvanceScale) { - if (f.vertical) { - f.totalHeight += f.height * f.textAdvanceScale; - f.height = 0; - } else { - f.totalWidth += f.width * f.textAdvanceScale; - f.width = 0; - } - f.textAdvanceScale = t; - } - } - function handleSetFont(e, n) { - return w - .loadFont(e, n, a) - .then(function (e) { - return e.font.isType3Font - ? e - .loadType3Data(w, a, t) - .catch(function () {}) - .then(function () { - return e; - }) - : e; - }) - .then(function (e) { - O.loadedName = e.loadedName; - O.font = e.font; - O.fontMatrix = e.font.fontMatrix || r.FONT_IDENTITY_MATRIX; - }); - } - function applyInverseRotation(e, t, a) { - const r = Math.hypot(a[0], a[1]); - return [(a[0] * e + a[1] * t) / r, (a[2] * e + a[3] * t) / r]; - } - function compareWithLastPosition(e) { - const t = getCurrentTextTransform(); - let a = t[4], - r = t[5]; - if (O.font?.vertical) { - if (a < l[0] || a > l[2] || r + e < l[1] || r > l[3]) - return !1; - } else if (a + e < l[0] || a > l[2] || r < l[1] || r > l[3]) - return !1; - if (!O.font || !f.prevTransform) return !0; - let n = f.prevTransform[4], - i = f.prevTransform[5]; - if (n === a && i === r) return !0; - let s = -1; - t[0] && 0 === t[1] && 0 === t[2] - ? (s = t[0] > 0 ? 0 : 180) - : t[1] && - 0 === t[0] && - 0 === t[3] && - (s = t[1] > 0 ? 90 : 270); - switch (s) { - case 0: - break; - case 90: - [a, r] = [r, a]; - [n, i] = [i, n]; - break; - case 180: - [a, r, n, i] = [-a, -r, -n, -i]; - break; - case 270: - [a, r] = [-r, -a]; - [n, i] = [-i, -n]; - break; - default: - [a, r] = applyInverseRotation(a, r, t); - [n, i] = applyInverseRotation(n, i, f.prevTransform); - } - if (O.font.vertical) { - const e = (i - r) / f.textAdvanceScale, - t = a - n, - s = Math.sign(f.height); - if (e < s * f.negativeSpaceMax) { - if (Math.abs(t) > 0.5 * f.width) { - appendEOL(); - return !0; - } - resetLastChars(); - flushTextContentItem(); - return !0; - } - if (Math.abs(t) > f.width) { - appendEOL(); - return !0; - } - e <= s * f.notASpace && resetLastChars(); - if (e <= s * f.trackingSpaceMin) - if (shouldAddWhitepsace()) { - resetLastChars(); - flushTextContentItem(); - pushWhitespace({ height: Math.abs(e) }); - } else f.height += e; - else if (!addFakeSpaces(e, f.prevTransform, s)) - if (0 === f.str.length) { - resetLastChars(); - pushWhitespace({ height: Math.abs(e) }); - } else f.height += e; - Math.abs(t) > 0.25 * f.width && flushTextContentItem(); - return !0; - } - const o = (a - n) / f.textAdvanceScale, - c = r - i, - h = Math.sign(f.width); - if (o < h * f.negativeSpaceMax) { - if (Math.abs(c) > 0.5 * f.height) { - appendEOL(); - return !0; - } - resetLastChars(); - flushTextContentItem(); - return !0; - } - if (Math.abs(c) > f.height) { - appendEOL(); - return !0; - } - o <= h * f.notASpace && resetLastChars(); - if (o <= h * f.trackingSpaceMin) - if (shouldAddWhitepsace()) { - resetLastChars(); - flushTextContentItem(); - pushWhitespace({ width: Math.abs(o) }); - } else f.width += o; - else if (!addFakeSpaces(o, f.prevTransform, h)) - if (0 === f.str.length) { - resetLastChars(); - pushWhitespace({ width: Math.abs(o) }); - } else f.width += o; - Math.abs(c) > 0.25 * f.height && flushTextContentItem(); - return !0; - } - function buildTextContentItem({ chars: e, extraSpacing: t }) { - const a = O.font; - if (!e) { - const e = O.charSpacing + t; - e && - (a.vertical - ? O.translateTextMatrix(0, -e) - : O.translateTextMatrix(e * O.textHScale, 0)); - return; - } - const r = a.charsToGlyphs(e), - n = O.fontMatrix[0] * O.fontSize; - for (let e = 0, i = r.length; e < i; e++) { - const s = r[e], - { category: o } = s; - if (o.isInvisibleFormatMark) continue; - let c = O.charSpacing + (e + 1 === i ? t : 0), - l = s.width; - a.vertical && (l = s.vmetric ? s.vmetric[0] : -l); - let h = l * n; - if (o.isWhitespace) { - if (a.vertical) { - c += -h + O.wordSpacing; - O.translateTextMatrix(0, -c); - } else { - c += h + O.wordSpacing; - O.translateTextMatrix(c * O.textHScale, 0); - } - saveLastChar(" "); - continue; - } - if (!o.isZeroWidthDiacritic && !compareWithLastPosition(h)) { - a.vertical - ? O.translateTextMatrix(0, h) - : O.translateTextMatrix(h * O.textHScale, 0); - continue; - } - const u = ensureTextContentItem(); - o.isZeroWidthDiacritic && (h = 0); - if (a.vertical) { - O.translateTextMatrix(0, h); - h = Math.abs(h); - u.height += h; - } else { - h *= O.textHScale; - O.translateTextMatrix(h, 0); - u.width += h; - } - h && (u.prevTransform = getCurrentTextTransform()); - const d = s.unicode; - saveLastChar(d) && u.str.push(" "); - u.str.push(d); - c && - (a.vertical - ? O.translateTextMatrix(0, -c) - : O.translateTextMatrix(c * O.textHScale, 0)); - } - } - function appendEOL() { - resetLastChars(); - if (f.initialized) { - f.hasEOL = !0; - flushTextContentItem(); - } else - d.items.push({ - str: "", - dir: "ltr", - width: 0, - height: 0, - transform: getCurrentTextTransform(), - fontName: O.loadedName, - hasEOL: !0, - }); - } - function addFakeSpaces(e, t, a) { - if (a * f.spaceInFlowMin <= e && e <= a * f.spaceInFlowMax) { - if (f.initialized) { - resetLastChars(); - f.str.push(" "); - } - return !1; - } - const r = f.fontName; - let n = 0; - if (f.vertical) { - n = e; - e = 0; - } - flushTextContentItem(); - resetLastChars(); - pushWhitespace({ - width: Math.abs(e), - height: Math.abs(n), - transform: t || getCurrentTextTransform(), - fontName: r, - }); - return !0; - } - function flushTextContentItem() { - if (f.initialized && f.str) { - f.vertical - ? (f.totalHeight += f.height * f.textAdvanceScale) - : (f.totalWidth += f.width * f.textAdvanceScale); - d.items.push( - (function runBidiTransform(e) { - let t = e.str.join(""); - u || (t = (0, r.normalizeUnicode)(t)); - const a = (0, b.bidi)(t, -1, e.vertical); - return { - str: a.str, - dir: a.dir, - width: Math.abs(e.totalWidth), - height: Math.abs(e.totalHeight), - transform: e.transform, - fontName: e.fontName, - hasEOL: e.hasEOL, - }; - })(f), - ); - f.initialized = !1; - f.str.length = 0; - } - } - function enqueueChunk(e = !1) { - const t = d.items.length; - if (0 !== t && !(e && t < 10)) { - o.enqueue(d, t); - d.items = []; - d.styles = Object.create(null); - } - } - const T = new TimeSlotManager(); - return new Promise(function promiseBody(e, f) { - const next = function (t) { - enqueueChunk(!0); - Promise.all([t, o.ready]).then(function () { - try { - promiseBody(e, f); - } catch (e) { - f(e); - } - }, f); - }; - t.ensureNotTerminated(); - T.reset(); - const g = {}; - let p, - b = []; - for (; !(p = T.check()); ) { - b.length = 0; - g.args = b; - if (!F.read(g)) break; - const e = O; - O = n.state; - const f = g.fn; - b = g.args; - switch (0 | f) { - case r.OPS.setFont: - var y = b[0].name, - M = b[1]; - if (O.font && y === O.fontName && M === O.fontSize) break; - flushTextContentItem(); - O.fontName = y; - O.fontSize = M; - next(handleSetFont(y, null)); - return; - case r.OPS.setTextRise: - O.textRise = b[0]; - break; - case r.OPS.setHScale: - O.textHScale = b[0] / 100; - break; - case r.OPS.setLeading: - O.leading = b[0]; - break; - case r.OPS.moveText: - O.translateTextLineMatrix(b[0], b[1]); - O.textMatrix = O.textLineMatrix.slice(); - break; - case r.OPS.setLeadingMoveText: - O.leading = -b[1]; - O.translateTextLineMatrix(b[0], b[1]); - O.textMatrix = O.textLineMatrix.slice(); - break; - case r.OPS.nextLine: - O.carriageReturn(); - break; - case r.OPS.setTextMatrix: - O.setTextMatrix(b[0], b[1], b[2], b[3], b[4], b[5]); - O.setTextLineMatrix(b[0], b[1], b[2], b[3], b[4], b[5]); - updateAdvanceScale(); - break; - case r.OPS.setCharSpacing: - O.charSpacing = b[0]; - break; - case r.OPS.setWordSpacing: - O.wordSpacing = b[0]; - break; - case r.OPS.beginText: - O.textMatrix = r.IDENTITY_MATRIX.slice(); - O.textLineMatrix = r.IDENTITY_MATRIX.slice(); - break; - case r.OPS.showSpacedText: - if (!n.state.font) { - w.ensureStateFont(n.state); - continue; - } - const f = ((O.font.vertical ? 1 : -1) * O.fontSize) / 1e3, - g = b[0]; - for (let e = 0, t = g.length; e < t; e++) { - const t = g[e]; - if ("string" == typeof t) x.push(t); - else if ("number" == typeof t && 0 !== t) { - const e = x.join(""); - x.length = 0; - buildTextContentItem({ - chars: e, - extraSpacing: t * f, - }); - } - } - if (x.length > 0) { - const e = x.join(""); - x.length = 0; - buildTextContentItem({ chars: e, extraSpacing: 0 }); - } - break; - case r.OPS.showText: - if (!n.state.font) { - w.ensureStateFont(n.state); - continue; - } - buildTextContentItem({ chars: b[0], extraSpacing: 0 }); - break; - case r.OPS.nextLineShowText: - if (!n.state.font) { - w.ensureStateFont(n.state); - continue; - } - O.carriageReturn(); - buildTextContentItem({ chars: b[0], extraSpacing: 0 }); - break; - case r.OPS.nextLineSetSpacingShowText: - if (!n.state.font) { - w.ensureStateFont(n.state); - continue; - } - O.wordSpacing = b[0]; - O.charSpacing = b[1]; - O.carriageReturn(); - buildTextContentItem({ chars: b[2], extraSpacing: 0 }); - break; - case r.OPS.paintXObject: - flushTextContentItem(); - C || (C = a.get("XObject") || i.Dict.empty); - var D = b[0] instanceof i.Name, - E = b[0].name; - if (D && k.getByName(E)) break; - next( - new Promise(function (e, d) { - if (!D) - throw new r.FormatError( - "XObject must be referred to by name.", - ); - let f = C.getRaw(E); - if (f instanceof i.Ref) { - if (k.getByRef(f)) { - e(); - return; - } - if (w.globalImageCache.getData(f, w.pageIndex)) { - e(); - return; - } - f = S.fetch(f); - } - if (!(f instanceof m.BaseStream)) - throw new r.FormatError( - "XObject should be a stream", - ); - const g = f.dict.get("Subtype"); - if (!(g instanceof i.Name)) - throw new r.FormatError( - "XObject should have a Name subtype", - ); - if ("Form" !== g.name) { - k.set(E, f.dict.objId, !0); - e(); - return; - } - const p = n.state.clone(), - b = new StateManager(p), - y = f.dict.getArray("Matrix"); - Array.isArray(y) && 6 === y.length && b.transform(y); - enqueueChunk(); - const x = { - enqueueInvoked: !1, - enqueue(e, t) { - this.enqueueInvoked = !0; - o.enqueue(e, t); - }, - get desiredSize() { - return o.desiredSize; - }, - get ready() { - return o.ready; - }, - }; - w.getTextContent({ - stream: f, - task: t, - resources: f.dict.get("Resources") || a, - stateManager: b, - includeMarkedContent: s, - sink: x, - seenStyles: c, - viewBox: l, - markedContentData: h, - disableNormalization: u, - }).then(function () { - x.enqueueInvoked || k.set(E, f.dict.objId, !0); - e(); - }, d); - }).catch(function (e) { - if (!(e instanceof r.AbortException)) { - if (!w.options.ignoreErrors) throw e; - (0, r.warn)( - `getTextContent - ignoring XObject: "${e}".`, - ); - } - }), - ); - return; - case r.OPS.setGState: - D = b[0] instanceof i.Name; - E = b[0].name; - if (D && v.getByName(E)) break; - next( - new Promise(function (e, t) { - if (!D) - throw new r.FormatError( - "GState must be referred to by name.", - ); - const n = a.get("ExtGState"); - if (!(n instanceof i.Dict)) - throw new r.FormatError( - "ExtGState should be a dictionary.", - ); - const s = n.get(E); - if (!(s instanceof i.Dict)) - throw new r.FormatError( - "GState should be a dictionary.", - ); - const o = s.get("Font"); - if (o) { - flushTextContentItem(); - O.fontName = null; - O.fontSize = o[1]; - handleSetFont(null, o[0]).then(e, t); - } else { - v.set(E, s.objId, !0); - e(); - } - }).catch(function (e) { - if (!(e instanceof r.AbortException)) { - if (!w.options.ignoreErrors) throw e; - (0, r.warn)( - `getTextContent - ignoring ExtGState: "${e}".`, - ); - } - }), - ); - return; - case r.OPS.beginMarkedContent: - flushTextContentItem(); - if (s) { - h.level++; - d.items.push({ - type: "beginMarkedContent", - tag: b[0] instanceof i.Name ? b[0].name : null, - }); - } - break; - case r.OPS.beginMarkedContentProps: - flushTextContentItem(); - if (s) { - h.level++; - let e = null; - b[1] instanceof i.Dict && (e = b[1].get("MCID")); - d.items.push({ - type: "beginMarkedContentProps", - id: Number.isInteger(e) - ? `${w.idFactory.getPageObjId()}_mc${e}` - : null, - tag: b[0] instanceof i.Name ? b[0].name : null, - }); - } - break; - case r.OPS.endMarkedContent: - flushTextContentItem(); - if (s) { - if (0 === h.level) break; - h.level--; - d.items.push({ type: "endMarkedContent" }); - } - break; - case r.OPS.restore: - !e || - (e.font === O.font && - e.fontSize === O.fontSize && - e.fontName === O.fontName) || - flushTextContentItem(); - } - if (d.items.length >= o.desiredSize) { - p = !0; - break; - } - } - if (p) next(R); - else { - flushTextContentItem(); - enqueueChunk(); - e(); - } - }).catch((e) => { - if (!(e instanceof r.AbortException)) { - if (!this.options.ignoreErrors) throw e; - (0, r.warn)( - `getTextContent - ignoring errors during "${t.name}" task: "${e}".`, - ); - flushTextContentItem(); - enqueueChunk(); - } - }); - } - extractDataStructures(e, t, a) { - const n = this.xref; - let s; - const l = this.readToUnicode( - a.toUnicode || e.get("ToUnicode") || t.get("ToUnicode"), - ); - if (a.composite) { - const t = e.get("CIDSystemInfo"); - t instanceof i.Dict && - (a.cidSystemInfo = { - registry: (0, r.stringToPDFString)(t.get("Registry")), - ordering: (0, r.stringToPDFString)(t.get("Ordering")), - supplement: t.get("Supplement"), - }); - try { - const t = e.get("CIDToGIDMap"); - t instanceof m.BaseStream && (s = t.getBytes()); - } catch (e) { - if (!this.options.ignoreErrors) throw e; - (0, r.warn)( - `extractDataStructures - ignoring CIDToGIDMap data: "${e}".`, - ); - } - } - const h = []; - let u, - d = null; - if (e.has("Encoding")) { - u = e.get("Encoding"); - if (u instanceof i.Dict) { - d = u.get("BaseEncoding"); - d = d instanceof i.Name ? d.name : null; - if (u.has("Differences")) { - const e = u.get("Differences"); - let t = 0; - for (const a of e) { - const e = n.fetchIfRef(a); - if ("number" == typeof e) t = e; - else { - if (!(e instanceof i.Name)) - throw new r.FormatError( - `Invalid entry in 'Differences' array: ${e}`, - ); - h[t++] = e.name; - } - } - } - } else if (u instanceof i.Name) d = u.name; - else { - const e = "Encoding is not a Name nor a Dict"; - if (!this.options.ignoreErrors) throw new r.FormatError(e); - (0, r.warn)(e); - } - "MacRomanEncoding" !== d && - "MacExpertEncoding" !== d && - "WinAnsiEncoding" !== d && - (d = null); - } - const f = !a.file || a.isInternalFont, - g = (0, c.getSymbolsFonts)()[a.name]; - d && f && g && (d = null); - if (d) a.defaultEncoding = (0, o.getEncoding)(d); - else { - const e = !!(a.flags & S.FontFlags.Symbolic), - t = !!(a.flags & S.FontFlags.Nonsymbolic); - u = o.StandardEncoding; - "TrueType" !== a.type || t || (u = o.WinAnsiEncoding); - if (e || g) { - u = o.MacRomanEncoding; - f && - (/Symbol/i.test(a.name) - ? (u = o.SymbolSetEncoding) - : /Dingbats/i.test(a.name) - ? (u = o.ZapfDingbatsEncoding) - : /Wingdings/i.test(a.name) && (u = o.WinAnsiEncoding)); - } - a.defaultEncoding = u; - } - a.differences = h; - a.baseEncodingName = d; - a.hasEncoding = !!d || h.length > 0; - a.dict = e; - return l - .then((e) => { - a.toUnicode = e; - return this.buildToUnicode(a); - }) - .then((e) => { - a.toUnicode = e; - s && (a.cidToGidMap = this.readCidToGidMap(s, e)); - return a; - }); - } - _simpleFontToUnicode(e, t = !1) { - (0, r.assert)(!e.composite, "Must be a simple font."); - const a = [], - n = e.defaultEncoding.slice(), - i = e.baseEncodingName, - s = e.differences; - for (const e in s) { - const t = s[e]; - ".notdef" !== t && (n[e] = t); - } - const c = (0, C.getGlyphsUnicode)(); - for (const r in n) { - let s = n[r]; - if ("" === s) continue; - let l = c[s]; - if (void 0 !== l) { - a[r] = String.fromCharCode(l); - continue; - } - let h = 0; - switch (s[0]) { - case "G": - 3 === s.length && (h = parseInt(s.substring(1), 16)); - break; - case "g": - 5 === s.length && (h = parseInt(s.substring(1), 16)); - break; - case "C": - case "c": - if (s.length >= 3 && s.length <= 4) { - const a = s.substring(1); - if (t) { - h = parseInt(a, 16); - break; - } - h = +a; - if (Number.isNaN(h) && Number.isInteger(parseInt(a, 16))) - return this._simpleFontToUnicode(e, !0); - } - break; - case "u": - l = (0, v.getUnicodeForGlyph)(s, c); - -1 !== l && (h = l); - break; - default: - switch (s) { - case "f_h": - case "f_t": - case "T_h": - a[r] = s.replaceAll("_", ""); - continue; - } - } - if (h > 0 && h <= 1114111 && Number.isInteger(h)) { - if (i && h === +r) { - const e = (0, o.getEncoding)(i); - if (e && (s = e[r])) { - a[r] = String.fromCharCode(c[s]); - continue; - } - } - a[r] = String.fromCodePoint(h); - } - } - return a; - } - async buildToUnicode(e) { - e.hasIncludedToUnicodeMap = e.toUnicode?.length > 0; - if (e.hasIncludedToUnicodeMap) { - !e.composite && - e.hasEncoding && - (e.fallbackToUnicode = this._simpleFontToUnicode(e)); - return e.toUnicode; - } - if (!e.composite) - return new u.ToUnicodeMap(this._simpleFontToUnicode(e)); - if ( - e.composite && - ((e.cMap.builtInCMap && !(e.cMap instanceof n.IdentityCMap)) || - ("Adobe" === e.cidSystemInfo.registry && - ("GB1" === e.cidSystemInfo.ordering || - "CNS1" === e.cidSystemInfo.ordering || - "Japan1" === e.cidSystemInfo.ordering || - "Korea1" === e.cidSystemInfo.ordering))) - ) { - const { registry: t, ordering: a } = e.cidSystemInfo, - s = i.Name.get(`${t}-${a}-UCS2`), - o = await n.CMapFactory.create({ - encoding: s, - fetchBuiltInCMap: this._fetchBuiltInCMapBound, - useCMap: null, - }), - c = [], - l = []; - e.cMap.forEach(function (e, t) { - if (t > 65535) - throw new r.FormatError("Max size of CID is 65,535"); - const a = o.lookup(t); - if (a) { - l.length = 0; - for (let e = 0, t = a.length; e < t; e += 2) - l.push((a.charCodeAt(e) << 8) + a.charCodeAt(e + 1)); - c[e] = String.fromCharCode(...l); - } - }); - return new u.ToUnicodeMap(c); - } - return new u.IdentityToUnicodeMap(e.firstChar, e.lastChar); - } - readToUnicode(e) { - return e - ? e instanceof i.Name - ? n.CMapFactory.create({ - encoding: e, - fetchBuiltInCMap: this._fetchBuiltInCMapBound, - useCMap: null, - }).then(function (e) { - return e instanceof n.IdentityCMap - ? new u.IdentityToUnicodeMap(0, 65535) - : new u.ToUnicodeMap(e.getMap()); - }) - : e instanceof m.BaseStream - ? n.CMapFactory.create({ - encoding: e, - fetchBuiltInCMap: this._fetchBuiltInCMapBound, - useCMap: null, - }).then( - function (e) { - if (e instanceof n.IdentityCMap) - return new u.IdentityToUnicodeMap(0, 65535); - const t = new Array(e.length); - e.forEach(function (e, a) { - if ("number" == typeof a) { - t[e] = String.fromCodePoint(a); - return; - } - const r = []; - for (let e = 0; e < a.length; e += 2) { - const t = - (a.charCodeAt(e) << 8) | a.charCodeAt(e + 1); - if (55296 != (63488 & t)) { - r.push(t); - continue; - } - e += 2; - const n = - (a.charCodeAt(e) << 8) | a.charCodeAt(e + 1); - r.push(((1023 & t) << 10) + (1023 & n) + 65536); - } - t[e] = String.fromCodePoint(...r); - }); - return new u.ToUnicodeMap(t); - }, - (e) => { - if (e instanceof r.AbortException) return null; - if (this.options.ignoreErrors) { - (0, r.warn)( - `readToUnicode - ignoring ToUnicode data: "${e}".`, - ); - return null; - } - throw e; - }, - ) - : Promise.resolve(null) - : Promise.resolve(null); - } - readCidToGidMap(e, t) { - const a = []; - for (let r = 0, n = e.length; r < n; r++) { - const n = (e[r++] << 8) | e[r], - i = r >> 1; - (0 !== n || t.has(i)) && (a[i] = n); - } - return a; - } - extractWidths(e, t, a) { - const r = this.xref; - let n = [], - s = 0; - const o = []; - let c, l, h, u, d, f, g, p; - if (a.composite) { - s = e.has("DW") ? e.get("DW") : 1e3; - p = e.get("W"); - if (p) - for (l = 0, h = p.length; l < h; l++) { - f = r.fetchIfRef(p[l++]); - g = r.fetchIfRef(p[l]); - if (Array.isArray(g)) - for (u = 0, d = g.length; u < d; u++) - n[f++] = r.fetchIfRef(g[u]); - else { - const e = r.fetchIfRef(p[++l]); - for (u = f; u <= g; u++) n[u] = e; - } - } - if (a.vertical) { - let t = e.getArray("DW2") || [880, -1e3]; - c = [t[1], 0.5 * s, t[0]]; - t = e.get("W2"); - if (t) - for (l = 0, h = t.length; l < h; l++) { - f = r.fetchIfRef(t[l++]); - g = r.fetchIfRef(t[l]); - if (Array.isArray(g)) - for (u = 0, d = g.length; u < d; u++) - o[f++] = [ - r.fetchIfRef(g[u++]), - r.fetchIfRef(g[u++]), - r.fetchIfRef(g[u]), - ]; - else { - const e = [ - r.fetchIfRef(t[++l]), - r.fetchIfRef(t[++l]), - r.fetchIfRef(t[++l]), - ]; - for (u = f; u <= g; u++) o[u] = e; - } - } - } - } else { - const o = a.firstChar; - p = e.get("Widths"); - if (p) { - u = o; - for (l = 0, h = p.length; l < h; l++) - n[u++] = r.fetchIfRef(p[l]); - s = parseFloat(t.get("MissingWidth")) || 0; - } else { - const t = e.get("BaseFont"); - if (t instanceof i.Name) { - const e = this.getBaseFontMetrics(t.name); - n = this.buildCharCodeToWidth(e.widths, a); - s = e.defaultWidth; - } - } - } - let m = !0, - b = s; - for (const e in n) { - const t = n[e]; - if (t) - if (b) { - if (b !== t) { - m = !1; - break; - } - } else b = t; - } - m - ? (a.flags |= S.FontFlags.FixedPitch) - : (a.flags &= ~S.FontFlags.FixedPitch); - a.defaultWidth = s; - a.widths = n; - a.defaultVMetrics = c; - a.vmetrics = o; - } - isSerifFont(e) { - const t = e.split("-")[0]; - return t in (0, c.getSerifFonts)() || /serif/gi.test(t); - } - getBaseFontMetrics(e) { - let t = 0, - a = Object.create(null), - r = !1; - let n = (0, c.getStdFontMap)()[e] || e; - const i = (0, k.getMetrics)(); - n in i || (n = this.isSerifFont(e) ? "Times-Roman" : "Helvetica"); - const s = i[n]; - if ("number" == typeof s) { - t = s; - r = !0; - } else a = s(); - return { defaultWidth: t, monospace: r, widths: a }; - } - buildCharCodeToWidth(e, t) { - const a = Object.create(null), - r = t.differences, - n = t.defaultEncoding; - for (let t = 0; t < 256; t++) - t in r && e[r[t]] - ? (a[t] = e[r[t]]) - : t in n && e[n[t]] && (a[t] = e[n[t]]); - return a; - } - preEvaluateFont(e) { - const t = e; - let a = e.get("Subtype"); - if (!(a instanceof i.Name)) - throw new r.FormatError("invalid font Subtype"); - let n, - s, - o = !1; - if ("Type0" === a.name) { - const t = e.get("DescendantFonts"); - if (!t) - throw new r.FormatError("Descendant fonts are not specified"); - if ( - !( - (e = Array.isArray(t) - ? this.xref.fetchIfRef(t[0]) - : t) instanceof i.Dict - ) - ) - throw new r.FormatError( - "Descendant font is not a dictionary.", - ); - a = e.get("Subtype"); - if (!(a instanceof i.Name)) - throw new r.FormatError("invalid font Subtype"); - o = !0; - } - const c = e.get("FirstChar") || 0, - l = e.get("LastChar") || (o ? 65535 : 255), - h = e.get("FontDescriptor"); - if (h) { - n = new O.MurmurHash3_64(); - const a = t.getRaw("Encoding"); - if (a instanceof i.Name) n.update(a.name); - else if (a instanceof i.Ref) n.update(a.toString()); - else if (a instanceof i.Dict) - for (const e of a.getRawValues()) - if (e instanceof i.Name) n.update(e.name); - else if (e instanceof i.Ref) n.update(e.toString()); - else if (Array.isArray(e)) { - const t = e.length, - a = new Array(t); - for (let r = 0; r < t; r++) { - const t = e[r]; - t instanceof i.Name - ? (a[r] = t.name) - : ("number" == typeof t || t instanceof i.Ref) && - (a[r] = t.toString()); - } - n.update(a.join()); - } - n.update(`${c}-${l}`); - s = e.get("ToUnicode") || t.get("ToUnicode"); - if (s instanceof m.BaseStream) { - const e = s.str || s, - t = e.buffer - ? new Uint8Array(e.buffer.buffer, 0, e.bufferLength) - : new Uint8Array( - e.bytes.buffer, - e.start, - e.end - e.start, - ); - n.update(t); - } else s instanceof i.Name && n.update(s.name); - const r = e.get("Widths") || t.get("Widths"); - if (Array.isArray(r)) { - const e = []; - for (const t of r) - ("number" == typeof t || t instanceof i.Ref) && - e.push(t.toString()); - n.update(e.join()); - } - if (o) { - n.update("compositeFont"); - const a = e.get("W") || t.get("W"); - if (Array.isArray(a)) { - const e = []; - for (const t of a) - if ("number" == typeof t || t instanceof i.Ref) - e.push(t.toString()); - else if (Array.isArray(t)) { - const a = []; - for (const e of t) - ("number" == typeof e || e instanceof i.Ref) && - a.push(e.toString()); - e.push(`[${a.join()}]`); - } - n.update(e.join()); - } - const r = e.getRaw("CIDToGIDMap") || t.getRaw("CIDToGIDMap"); - r instanceof i.Name - ? n.update(r.name) - : r instanceof i.Ref - ? n.update(r.toString()) - : r instanceof m.BaseStream && n.update(r.peekBytes()); - } - } - return { - descriptor: h, - dict: e, - baseDict: t, - composite: o, - type: a.name, - firstChar: c, - lastChar: l, - toUnicode: s, - hash: n ? n.hexdigest() : "", - }; - } - async translateFont({ - descriptor: e, - dict: t, - baseDict: a, - composite: o, - type: l, - firstChar: u, - lastChar: d, - toUnicode: f, - cssFontInfo: g, - }) { - const m = "Type3" === l; - let b; - if (!e) { - if (!m) { - let e = t.get("BaseFont"); - if (!(e instanceof i.Name)) - throw new r.FormatError("Base font is not specified"); - e = e.name.replaceAll(/[,_]/g, "-"); - const n = this.getBaseFontMetrics(e), - o = e.split("-")[0], - h = - (this.isSerifFont(o) ? S.FontFlags.Serif : 0) | - (n.monospace ? S.FontFlags.FixedPitch : 0) | - ((0, c.getSymbolsFonts)()[o] - ? S.FontFlags.Symbolic - : S.FontFlags.Nonsymbolic); - b = { - type: l, - name: e, - loadedName: a.loadedName, - systemFontInfo: null, - widths: n.widths, - defaultWidth: n.defaultWidth, - isSimulatedFlags: !0, - flags: h, - firstChar: u, - lastChar: d, - toUnicode: f, - xHeight: 0, - capHeight: 0, - italicAngle: 0, - isType3Font: m, - }; - const g = t.get("Widths"), - p = (0, c.getStandardFontName)(e); - let y = null; - if (p) { - y = await this.fetchStandardFontData(p); - b.isInternalFont = !!y; - } - !b.isInternalFont && - this.options.useSystemFonts && - (b.systemFontInfo = (0, x.getFontSubstitution)( - this.systemFontCache, - this.idFactory, - this.options.standardFontDataUrl, - e, - p, - )); - return this.extractDataStructures(t, t, b).then((t) => { - if (g) { - const e = []; - let a = u; - for (const t of g) e[a++] = this.xref.fetchIfRef(t); - t.widths = e; - } else t.widths = this.buildCharCodeToWidth(n.widths, t); - return new s.Font(e, y, t); - }); - } - (e = new i.Dict(null)).set("FontName", i.Name.get(l)); - e.set("FontBBox", t.getArray("FontBBox") || [0, 0, 0, 0]); - } - let y = e.get("FontName"), - w = t.get("BaseFont"); - "string" == typeof y && (y = i.Name.get(y)); - "string" == typeof w && (w = i.Name.get(w)); - const C = y?.name, - k = w?.name; - if (!m && C !== k) { - (0, r.info)( - `The FontDescriptor's FontName is "${C}" but should be the same as the Font's BaseFont "${k}".`, - ); - C && - k && - (k.startsWith(C) || - (!(0, c.isKnownFontName)(C) && - (0, c.isKnownFontName)(k))) && - (y = null); - } - y ||= w; - if (!(y instanceof i.Name)) - throw new r.FormatError("invalid font name"); - let v, F, O, T, M; - try { - v = e.get("FontFile", "FontFile2", "FontFile3"); - } catch (e) { - if (!this.options.ignoreErrors) throw e; - (0, r.warn)( - `translateFont - fetching "${y.name}" font file: "${e}".`, - ); - v = new p.NullStream(); - } - let D = !1, - E = null, - N = null; - if (v) { - if (v.dict) { - const e = v.dict.get("Subtype"); - e instanceof i.Name && (F = e.name); - O = v.dict.get("Length1"); - T = v.dict.get("Length2"); - M = v.dict.get("Length3"); - } - } else if (g) { - const e = (0, h.getXfaFontName)(y.name); - if (e) { - g.fontFamily = `${g.fontFamily}-PdfJS-XFA`; - g.metrics = e.metrics || null; - E = e.factors || null; - v = await this.fetchStandardFontData(e.name); - D = !!v; - a = t = (0, h.getXfaFontDict)(y.name); - o = !0; - } - } else if (!m) { - const e = (0, c.getStandardFontName)(y.name); - if (e) { - v = await this.fetchStandardFontData(e); - D = !!v; - } - !D && - this.options.useSystemFonts && - (N = (0, x.getFontSubstitution)( - this.systemFontCache, - this.idFactory, - this.options.standardFontDataUrl, - y.name, - e, - )); - } - b = { - type: l, - name: y.name, - subtype: F, - file: v, - length1: O, - length2: T, - length3: M, - isInternalFont: D, - loadedName: a.loadedName, - composite: o, - fixedPitch: !1, - fontMatrix: t.getArray("FontMatrix") || r.FONT_IDENTITY_MATRIX, - firstChar: u, - lastChar: d, - toUnicode: f, - bbox: e.getArray("FontBBox") || t.getArray("FontBBox"), - ascent: e.get("Ascent"), - descent: e.get("Descent"), - xHeight: e.get("XHeight") || 0, - capHeight: e.get("CapHeight") || 0, - flags: e.get("Flags"), - italicAngle: e.get("ItalicAngle") || 0, - isType3Font: m, - cssFontInfo: g, - scaleFactors: E, - systemFontInfo: N, - }; - if (o) { - const e = a.get("Encoding"); - e instanceof i.Name && (b.cidEncoding = e.name); - const t = await n.CMapFactory.create({ - encoding: e, - fetchBuiltInCMap: this._fetchBuiltInCMapBound, - useCMap: null, - }); - b.cMap = t; - b.vertical = b.cMap.vertical; - } - return this.extractDataStructures(t, a, b).then((a) => { - this.extractWidths(t, e, a); - return new s.Font(y.name, v, a); - }); - } - static buildFontPaths(e, t, a, n) { - function buildPath(t) { - const i = `${e.loadedName}_path_${t}`; - try { - if (e.renderer.hasBuiltPath(t)) return; - a.send("commonobj", [i, "FontPath", e.renderer.getPathJs(t)]); - } catch (e) { - if (n.ignoreErrors) { - (0, r.warn)( - `buildFontPaths - ignoring ${i} glyph: "${e}".`, - ); - return; - } - throw e; - } - } - for (const e of t) { - buildPath(e.fontChar); - const t = e.accent; - t?.fontChar && buildPath(t.fontChar); - } - } - static get fallbackFontDict() { - const e = new i.Dict(); - e.set("BaseFont", i.Name.get("Helvetica")); - e.set("Type", i.Name.get("FallbackType")); - e.set("Subtype", i.Name.get("FallbackType")); - e.set("Encoding", i.Name.get("WinAnsiEncoding")); - return (0, r.shadow)(this, "fallbackFontDict", e); - } - } - t.PartialEvaluator = PartialEvaluator; - class TranslatedFont { - constructor({ - loadedName: e, - font: t, - dict: a, - evaluatorOptions: r, - }) { - this.loadedName = e; - this.font = t; - this.dict = a; - this._evaluatorOptions = r || D; - this.type3Loaded = null; - this.type3Dependencies = t.isType3Font ? new Set() : null; - this.sent = !1; - } - send(e) { - if (!this.sent) { - this.sent = !0; - e.send("commonobj", [ - this.loadedName, - "Font", - this.font.exportData( - this._evaluatorOptions.fontExtraProperties, - ), - ]); - } - } - fallback(e) { - if (this.font.data) { - this.font.disableFontFace = !0; - PartialEvaluator.buildFontPaths( - this.font, - this.font.glyphCacheValues, - e, - this._evaluatorOptions, - ); - } - } - loadType3Data(e, t, a) { - if (this.type3Loaded) return this.type3Loaded; - if (!this.font.isType3Font) - throw new Error("Must be a Type3 font."); - const n = e.clone({ ignoreErrors: !1 }); - n.parsingType3Font = !0; - const s = new i.RefSet(e.type3FontRefs); - this.dict.objId && - !s.has(this.dict.objId) && - s.put(this.dict.objId); - n.type3FontRefs = s; - const o = this.font, - c = this.type3Dependencies; - let l = Promise.resolve(); - const h = this.dict.get("CharProcs"), - u = this.dict.get("Resources") || t, - d = Object.create(null), - f = r.Util.normalizeRect(o.bbox || [0, 0, 0, 0]), - g = f[2] - f[0], - p = f[3] - f[1], - m = Math.hypot(g, p); - for (const e of h.getKeys()) - l = l.then(() => { - const t = h.get(e), - i = new T.OperatorList(); - return n - .getOperatorList({ - stream: t, - task: a, - resources: u, - operatorList: i, - }) - .then(() => { - i.fnArray[0] === r.OPS.setCharWidthAndBounds && - this._removeType3ColorOperators(i, m); - d[e] = i.getIR(); - for (const e of i.dependencies) c.add(e); - }) - .catch(function (t) { - (0, r.warn)( - `Type3 font resource "${e}" is not available.`, - ); - const a = new T.OperatorList(); - d[e] = a.getIR(); - }); - }); - this.type3Loaded = l.then(() => { - o.charProcOperatorList = d; - if (this._bbox) { - o.isCharBBox = !0; - o.bbox = this._bbox; - } - }); - return this.type3Loaded; - } - _removeType3ColorOperators(e, t = NaN) { - const a = r.Util.normalizeRect(e.argsArray[0].slice(2)), - n = a[2] - a[0], - i = a[3] - a[1], - s = Math.hypot(n, i); - if (0 === n || 0 === i) { - e.fnArray.splice(0, 1); - e.argsArray.splice(0, 1); - } else if (0 === t || Math.round(s / t) >= 10) { - this._bbox || (this._bbox = [1 / 0, 1 / 0, -1 / 0, -1 / 0]); - this._bbox[0] = Math.min(this._bbox[0], a[0]); - this._bbox[1] = Math.min(this._bbox[1], a[1]); - this._bbox[2] = Math.max(this._bbox[2], a[2]); - this._bbox[3] = Math.max(this._bbox[3], a[3]); - } - let o = 0, - c = e.length; - for (; o < c; ) { - switch (e.fnArray[o]) { - case r.OPS.setCharWidthAndBounds: - break; - case r.OPS.setStrokeColorSpace: - case r.OPS.setFillColorSpace: - case r.OPS.setStrokeColor: - case r.OPS.setStrokeColorN: - case r.OPS.setFillColor: - case r.OPS.setFillColorN: - case r.OPS.setStrokeGray: - case r.OPS.setFillGray: - case r.OPS.setStrokeRGBColor: - case r.OPS.setFillRGBColor: - case r.OPS.setStrokeCMYKColor: - case r.OPS.setFillCMYKColor: - case r.OPS.shadingFill: - case r.OPS.setRenderingIntent: - e.fnArray.splice(o, 1); - e.argsArray.splice(o, 1); - c--; - continue; - case r.OPS.setGState: - const [t] = e.argsArray[o]; - let a = 0, - n = t.length; - for (; a < n; ) { - const [e] = t[a]; - switch (e) { - case "TR": - case "TR2": - case "HT": - case "BG": - case "BG2": - case "UCR": - case "UCR2": - t.splice(a, 1); - n--; - continue; - } - a++; - } - } - o++; - } - } - } - class StateManager { - constructor(e = new EvalState()) { - this.state = e; - this.stateStack = []; - } - save() { - const e = this.state; - this.stateStack.push(this.state); - this.state = e.clone(); - } - restore() { - const e = this.stateStack.pop(); - e && (this.state = e); - } - transform(e) { - this.state.ctm = r.Util.transform(this.state.ctm, e); - } - } - class TextState { - constructor() { - this.ctm = new Float32Array(r.IDENTITY_MATRIX); - this.fontName = null; - this.fontSize = 0; - this.loadedName = null; - this.font = null; - this.fontMatrix = r.FONT_IDENTITY_MATRIX; - this.textMatrix = r.IDENTITY_MATRIX.slice(); - this.textLineMatrix = r.IDENTITY_MATRIX.slice(); - this.charSpacing = 0; - this.wordSpacing = 0; - this.leading = 0; - this.textHScale = 1; - this.textRise = 0; - } - setTextMatrix(e, t, a, r, n, i) { - const s = this.textMatrix; - s[0] = e; - s[1] = t; - s[2] = a; - s[3] = r; - s[4] = n; - s[5] = i; - } - setTextLineMatrix(e, t, a, r, n, i) { - const s = this.textLineMatrix; - s[0] = e; - s[1] = t; - s[2] = a; - s[3] = r; - s[4] = n; - s[5] = i; - } - translateTextMatrix(e, t) { - const a = this.textMatrix; - a[4] = a[0] * e + a[2] * t + a[4]; - a[5] = a[1] * e + a[3] * t + a[5]; - } - translateTextLineMatrix(e, t) { - const a = this.textLineMatrix; - a[4] = a[0] * e + a[2] * t + a[4]; - a[5] = a[1] * e + a[3] * t + a[5]; - } - carriageReturn() { - this.translateTextLineMatrix(0, -this.leading); - this.textMatrix = this.textLineMatrix.slice(); - } - clone() { - const e = Object.create(this); - e.textMatrix = this.textMatrix.slice(); - e.textLineMatrix = this.textLineMatrix.slice(); - e.fontMatrix = this.fontMatrix.slice(); - return e; - } - } - class EvalState { - constructor() { - this.ctm = new Float32Array(r.IDENTITY_MATRIX); - this.font = null; - this.textRenderingMode = r.TextRenderingMode.FILL; - this.fillColorSpace = y.ColorSpace.singletons.gray; - this.strokeColorSpace = y.ColorSpace.singletons.gray; - } - clone() { - return Object.create(this); - } - } - class EvaluatorPreprocessor { - static get opMap() { - return (0, r.shadow)(this, "opMap", { - w: { id: r.OPS.setLineWidth, numArgs: 1, variableArgs: !1 }, - J: { id: r.OPS.setLineCap, numArgs: 1, variableArgs: !1 }, - j: { id: r.OPS.setLineJoin, numArgs: 1, variableArgs: !1 }, - M: { id: r.OPS.setMiterLimit, numArgs: 1, variableArgs: !1 }, - d: { id: r.OPS.setDash, numArgs: 2, variableArgs: !1 }, - ri: { - id: r.OPS.setRenderingIntent, - numArgs: 1, - variableArgs: !1, - }, - i: { id: r.OPS.setFlatness, numArgs: 1, variableArgs: !1 }, - gs: { id: r.OPS.setGState, numArgs: 1, variableArgs: !1 }, - q: { id: r.OPS.save, numArgs: 0, variableArgs: !1 }, - Q: { id: r.OPS.restore, numArgs: 0, variableArgs: !1 }, - cm: { id: r.OPS.transform, numArgs: 6, variableArgs: !1 }, - m: { id: r.OPS.moveTo, numArgs: 2, variableArgs: !1 }, - l: { id: r.OPS.lineTo, numArgs: 2, variableArgs: !1 }, - c: { id: r.OPS.curveTo, numArgs: 6, variableArgs: !1 }, - v: { id: r.OPS.curveTo2, numArgs: 4, variableArgs: !1 }, - y: { id: r.OPS.curveTo3, numArgs: 4, variableArgs: !1 }, - h: { id: r.OPS.closePath, numArgs: 0, variableArgs: !1 }, - re: { id: r.OPS.rectangle, numArgs: 4, variableArgs: !1 }, - S: { id: r.OPS.stroke, numArgs: 0, variableArgs: !1 }, - s: { id: r.OPS.closeStroke, numArgs: 0, variableArgs: !1 }, - f: { id: r.OPS.fill, numArgs: 0, variableArgs: !1 }, - F: { id: r.OPS.fill, numArgs: 0, variableArgs: !1 }, - "f*": { id: r.OPS.eoFill, numArgs: 0, variableArgs: !1 }, - B: { id: r.OPS.fillStroke, numArgs: 0, variableArgs: !1 }, - "B*": { id: r.OPS.eoFillStroke, numArgs: 0, variableArgs: !1 }, - b: { id: r.OPS.closeFillStroke, numArgs: 0, variableArgs: !1 }, - "b*": { - id: r.OPS.closeEOFillStroke, - numArgs: 0, - variableArgs: !1, - }, - n: { id: r.OPS.endPath, numArgs: 0, variableArgs: !1 }, - W: { id: r.OPS.clip, numArgs: 0, variableArgs: !1 }, - "W*": { id: r.OPS.eoClip, numArgs: 0, variableArgs: !1 }, - BT: { id: r.OPS.beginText, numArgs: 0, variableArgs: !1 }, - ET: { id: r.OPS.endText, numArgs: 0, variableArgs: !1 }, - Tc: { id: r.OPS.setCharSpacing, numArgs: 1, variableArgs: !1 }, - Tw: { id: r.OPS.setWordSpacing, numArgs: 1, variableArgs: !1 }, - Tz: { id: r.OPS.setHScale, numArgs: 1, variableArgs: !1 }, - TL: { id: r.OPS.setLeading, numArgs: 1, variableArgs: !1 }, - Tf: { id: r.OPS.setFont, numArgs: 2, variableArgs: !1 }, - Tr: { - id: r.OPS.setTextRenderingMode, - numArgs: 1, - variableArgs: !1, - }, - Ts: { id: r.OPS.setTextRise, numArgs: 1, variableArgs: !1 }, - Td: { id: r.OPS.moveText, numArgs: 2, variableArgs: !1 }, - TD: { - id: r.OPS.setLeadingMoveText, - numArgs: 2, - variableArgs: !1, - }, - Tm: { id: r.OPS.setTextMatrix, numArgs: 6, variableArgs: !1 }, - "T*": { id: r.OPS.nextLine, numArgs: 0, variableArgs: !1 }, - Tj: { id: r.OPS.showText, numArgs: 1, variableArgs: !1 }, - TJ: { id: r.OPS.showSpacedText, numArgs: 1, variableArgs: !1 }, - "'": { - id: r.OPS.nextLineShowText, - numArgs: 1, - variableArgs: !1, - }, - '"': { - id: r.OPS.nextLineSetSpacingShowText, - numArgs: 3, - variableArgs: !1, - }, - d0: { id: r.OPS.setCharWidth, numArgs: 2, variableArgs: !1 }, - d1: { - id: r.OPS.setCharWidthAndBounds, - numArgs: 6, - variableArgs: !1, - }, - CS: { - id: r.OPS.setStrokeColorSpace, - numArgs: 1, - variableArgs: !1, - }, - cs: { - id: r.OPS.setFillColorSpace, - numArgs: 1, - variableArgs: !1, - }, - SC: { id: r.OPS.setStrokeColor, numArgs: 4, variableArgs: !0 }, - SCN: { - id: r.OPS.setStrokeColorN, - numArgs: 33, - variableArgs: !0, - }, - sc: { id: r.OPS.setFillColor, numArgs: 4, variableArgs: !0 }, - scn: { id: r.OPS.setFillColorN, numArgs: 33, variableArgs: !0 }, - G: { id: r.OPS.setStrokeGray, numArgs: 1, variableArgs: !1 }, - g: { id: r.OPS.setFillGray, numArgs: 1, variableArgs: !1 }, - RG: { - id: r.OPS.setStrokeRGBColor, - numArgs: 3, - variableArgs: !1, - }, - rg: { id: r.OPS.setFillRGBColor, numArgs: 3, variableArgs: !1 }, - K: { - id: r.OPS.setStrokeCMYKColor, - numArgs: 4, - variableArgs: !1, - }, - k: { id: r.OPS.setFillCMYKColor, numArgs: 4, variableArgs: !1 }, - sh: { id: r.OPS.shadingFill, numArgs: 1, variableArgs: !1 }, - BI: { - id: r.OPS.beginInlineImage, - numArgs: 0, - variableArgs: !1, - }, - ID: { id: r.OPS.beginImageData, numArgs: 0, variableArgs: !1 }, - EI: { id: r.OPS.endInlineImage, numArgs: 1, variableArgs: !1 }, - Do: { id: r.OPS.paintXObject, numArgs: 1, variableArgs: !1 }, - MP: { id: r.OPS.markPoint, numArgs: 1, variableArgs: !1 }, - DP: { id: r.OPS.markPointProps, numArgs: 2, variableArgs: !1 }, - BMC: { - id: r.OPS.beginMarkedContent, - numArgs: 1, - variableArgs: !1, - }, - BDC: { - id: r.OPS.beginMarkedContentProps, - numArgs: 2, - variableArgs: !1, - }, - EMC: { - id: r.OPS.endMarkedContent, - numArgs: 0, - variableArgs: !1, - }, - BX: { id: r.OPS.beginCompat, numArgs: 0, variableArgs: !1 }, - EX: { id: r.OPS.endCompat, numArgs: 0, variableArgs: !1 }, - BM: null, - BD: null, - true: null, - fa: null, - fal: null, - fals: null, - false: null, - nu: null, - nul: null, - null: null, - }); - } - static MAX_INVALID_PATH_OPS = 10; - constructor(e, t, a = new StateManager()) { - this.parser = new f.Parser({ - lexer: new f.Lexer(e, EvaluatorPreprocessor.opMap), - xref: t, - }); - this.stateManager = a; - this.nonProcessedArgs = []; - this._isPathOp = !1; - this._numInvalidPathOPS = 0; - } - get savedStatesDepth() { - return this.stateManager.stateStack.length; - } - read(e) { - let t = e.args; - for (;;) { - const a = this.parser.getObj(); - if (a instanceof i.Cmd) { - const n = a.cmd, - i = EvaluatorPreprocessor.opMap[n]; - if (!i) { - (0, r.warn)(`Unknown command "${n}".`); - continue; - } - const s = i.id, - o = i.numArgs; - let c = null !== t ? t.length : 0; - this._isPathOp || (this._numInvalidPathOPS = 0); - this._isPathOp = s >= r.OPS.moveTo && s <= r.OPS.endPath; - if (i.variableArgs) - c > o && - (0, r.info)( - `Command ${n}: expected [0, ${o}] args, but received ${c} args.`, - ); - else { - if (c !== o) { - const e = this.nonProcessedArgs; - for (; c > o; ) { - e.push(t.shift()); - c--; - } - for (; c < o && 0 !== e.length; ) { - null === t && (t = []); - t.unshift(e.pop()); - c++; - } - } - if (c < o) { - const e = `command ${n}: expected ${o} args, but received ${c} args.`; - if ( - this._isPathOp && - ++this._numInvalidPathOPS > - EvaluatorPreprocessor.MAX_INVALID_PATH_OPS - ) - throw new r.FormatError(`Invalid ${e}`); - (0, r.warn)(`Skipping ${e}`); - null !== t && (t.length = 0); - continue; - } - } - this.preprocessCommand(s, t); - e.fn = s; - e.args = t; - return !0; - } - if (a === i.EOF) return !1; - if (null !== a) { - null === t && (t = []); - t.push(a); - if (t.length > 33) - throw new r.FormatError("Too many arguments"); - } - } - } - preprocessCommand(e, t) { - switch (0 | e) { - case r.OPS.save: - this.stateManager.save(); - break; - case r.OPS.restore: - this.stateManager.restore(); - break; - case r.OPS.transform: - this.stateManager.transform(t); - } - } - } - t.EvaluatorPreprocessor = EvaluatorPreprocessor; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.IdentityCMap = t.CMapFactory = t.CMap = void 0; - var r = a(2), - n = a(4), - i = a(5), - s = a(15), - o = a(16), - c = a(3), - l = a(8); - const h = [ - "Adobe-GB1-UCS2", - "Adobe-CNS1-UCS2", - "Adobe-Japan1-UCS2", - "Adobe-Korea1-UCS2", - "78-EUC-H", - "78-EUC-V", - "78-H", - "78-RKSJ-H", - "78-RKSJ-V", - "78-V", - "78ms-RKSJ-H", - "78ms-RKSJ-V", - "83pv-RKSJ-H", - "90ms-RKSJ-H", - "90ms-RKSJ-V", - "90msp-RKSJ-H", - "90msp-RKSJ-V", - "90pv-RKSJ-H", - "90pv-RKSJ-V", - "Add-H", - "Add-RKSJ-H", - "Add-RKSJ-V", - "Add-V", - "Adobe-CNS1-0", - "Adobe-CNS1-1", - "Adobe-CNS1-2", - "Adobe-CNS1-3", - "Adobe-CNS1-4", - "Adobe-CNS1-5", - "Adobe-CNS1-6", - "Adobe-GB1-0", - "Adobe-GB1-1", - "Adobe-GB1-2", - "Adobe-GB1-3", - "Adobe-GB1-4", - "Adobe-GB1-5", - "Adobe-Japan1-0", - "Adobe-Japan1-1", - "Adobe-Japan1-2", - "Adobe-Japan1-3", - "Adobe-Japan1-4", - "Adobe-Japan1-5", - "Adobe-Japan1-6", - "Adobe-Korea1-0", - "Adobe-Korea1-1", - "Adobe-Korea1-2", - "B5-H", - "B5-V", - "B5pc-H", - "B5pc-V", - "CNS-EUC-H", - "CNS-EUC-V", - "CNS1-H", - "CNS1-V", - "CNS2-H", - "CNS2-V", - "ETHK-B5-H", - "ETHK-B5-V", - "ETen-B5-H", - "ETen-B5-V", - "ETenms-B5-H", - "ETenms-B5-V", - "EUC-H", - "EUC-V", - "Ext-H", - "Ext-RKSJ-H", - "Ext-RKSJ-V", - "Ext-V", - "GB-EUC-H", - "GB-EUC-V", - "GB-H", - "GB-V", - "GBK-EUC-H", - "GBK-EUC-V", - "GBK2K-H", - "GBK2K-V", - "GBKp-EUC-H", - "GBKp-EUC-V", - "GBT-EUC-H", - "GBT-EUC-V", - "GBT-H", - "GBT-V", - "GBTpc-EUC-H", - "GBTpc-EUC-V", - "GBpc-EUC-H", - "GBpc-EUC-V", - "H", - "HKdla-B5-H", - "HKdla-B5-V", - "HKdlb-B5-H", - "HKdlb-B5-V", - "HKgccs-B5-H", - "HKgccs-B5-V", - "HKm314-B5-H", - "HKm314-B5-V", - "HKm471-B5-H", - "HKm471-B5-V", - "HKscs-B5-H", - "HKscs-B5-V", - "Hankaku", - "Hiragana", - "KSC-EUC-H", - "KSC-EUC-V", - "KSC-H", - "KSC-Johab-H", - "KSC-Johab-V", - "KSC-V", - "KSCms-UHC-H", - "KSCms-UHC-HW-H", - "KSCms-UHC-HW-V", - "KSCms-UHC-V", - "KSCpc-EUC-H", - "KSCpc-EUC-V", - "Katakana", - "NWP-H", - "NWP-V", - "RKSJ-H", - "RKSJ-V", - "Roman", - "UniCNS-UCS2-H", - "UniCNS-UCS2-V", - "UniCNS-UTF16-H", - "UniCNS-UTF16-V", - "UniCNS-UTF32-H", - "UniCNS-UTF32-V", - "UniCNS-UTF8-H", - "UniCNS-UTF8-V", - "UniGB-UCS2-H", - "UniGB-UCS2-V", - "UniGB-UTF16-H", - "UniGB-UTF16-V", - "UniGB-UTF32-H", - "UniGB-UTF32-V", - "UniGB-UTF8-H", - "UniGB-UTF8-V", - "UniJIS-UCS2-H", - "UniJIS-UCS2-HW-H", - "UniJIS-UCS2-HW-V", - "UniJIS-UCS2-V", - "UniJIS-UTF16-H", - "UniJIS-UTF16-V", - "UniJIS-UTF32-H", - "UniJIS-UTF32-V", - "UniJIS-UTF8-H", - "UniJIS-UTF8-V", - "UniJIS2004-UTF16-H", - "UniJIS2004-UTF16-V", - "UniJIS2004-UTF32-H", - "UniJIS2004-UTF32-V", - "UniJIS2004-UTF8-H", - "UniJIS2004-UTF8-V", - "UniJISPro-UCS2-HW-V", - "UniJISPro-UCS2-V", - "UniJISPro-UTF8-V", - "UniJISX0213-UTF32-H", - "UniJISX0213-UTF32-V", - "UniJISX02132004-UTF32-H", - "UniJISX02132004-UTF32-V", - "UniKS-UCS2-H", - "UniKS-UCS2-V", - "UniKS-UTF16-H", - "UniKS-UTF16-V", - "UniKS-UTF32-H", - "UniKS-UTF32-V", - "UniKS-UTF8-H", - "UniKS-UTF8-V", - "V", - "WP-Symbol", - ], - u = 2 ** 24 - 1; - class CMap { - constructor(e = !1) { - this.codespaceRanges = [[], [], [], []]; - this.numCodespaceRanges = 0; - this._map = []; - this.name = ""; - this.vertical = !1; - this.useCMap = null; - this.builtInCMap = e; - } - addCodespaceRange(e, t, a) { - this.codespaceRanges[e - 1].push(t, a); - this.numCodespaceRanges++; - } - mapCidRange(e, t, a) { - if (t - e > u) - throw new Error( - "mapCidRange - ignoring data above MAX_MAP_RANGE.", - ); - for (; e <= t; ) this._map[e++] = a++; - } - mapBfRange(e, t, a) { - if (t - e > u) - throw new Error( - "mapBfRange - ignoring data above MAX_MAP_RANGE.", - ); - const r = a.length - 1; - for (; e <= t; ) { - this._map[e++] = a; - const t = a.charCodeAt(r) + 1; - t > 255 - ? (a = - a.substring(0, r - 1) + - String.fromCharCode(a.charCodeAt(r - 1) + 1) + - "\0") - : (a = a.substring(0, r) + String.fromCharCode(t)); - } - } - mapBfRangeToArray(e, t, a) { - if (t - e > u) - throw new Error( - "mapBfRangeToArray - ignoring data above MAX_MAP_RANGE.", - ); - const r = a.length; - let n = 0; - for (; e <= t && n < r; ) { - this._map[e] = a[n++]; - ++e; - } - } - mapOne(e, t) { - this._map[e] = t; - } - lookup(e) { - return this._map[e]; - } - contains(e) { - return void 0 !== this._map[e]; - } - forEach(e) { - const t = this._map, - a = t.length; - if (a <= 65536) - for (let r = 0; r < a; r++) void 0 !== t[r] && e(r, t[r]); - else for (const a in t) e(a, t[a]); - } - charCodeOf(e) { - const t = this._map; - if (t.length <= 65536) return t.indexOf(e); - for (const a in t) if (t[a] === e) return 0 | a; - return -1; - } - getMap() { - return this._map; - } - readCharCode(e, t, a) { - let r = 0; - const n = this.codespaceRanges; - for (let i = 0, s = n.length; i < s; i++) { - r = ((r << 8) | e.charCodeAt(t + i)) >>> 0; - const s = n[i]; - for (let e = 0, t = s.length; e < t; ) { - const t = s[e++], - n = s[e++]; - if (r >= t && r <= n) { - a.charcode = r; - a.length = i + 1; - return; - } - } - } - a.charcode = 0; - a.length = 1; - } - getCharCodeLength(e) { - const t = this.codespaceRanges; - for (let a = 0, r = t.length; a < r; a++) { - const r = t[a]; - for (let t = 0, n = r.length; t < n; ) { - const n = r[t++], - i = r[t++]; - if (e >= n && e <= i) return a + 1; - } - } - return 1; - } - get length() { - return this._map.length; - } - get isIdentityCMap() { - if ("Identity-H" !== this.name && "Identity-V" !== this.name) - return !1; - if (65536 !== this._map.length) return !1; - for (let e = 0; e < 65536; e++) if (this._map[e] !== e) return !1; - return !0; - } - } - t.CMap = CMap; - class IdentityCMap extends CMap { - constructor(e, t) { - super(); - this.vertical = e; - this.addCodespaceRange(t, 0, 65535); - } - mapCidRange(e, t, a) { - (0, r.unreachable)("should not call mapCidRange"); - } - mapBfRange(e, t, a) { - (0, r.unreachable)("should not call mapBfRange"); - } - mapBfRangeToArray(e, t, a) { - (0, r.unreachable)("should not call mapBfRangeToArray"); - } - mapOne(e, t) { - (0, r.unreachable)("should not call mapCidOne"); - } - lookup(e) { - return Number.isInteger(e) && e <= 65535 ? e : void 0; - } - contains(e) { - return Number.isInteger(e) && e <= 65535; - } - forEach(e) { - for (let t = 0; t <= 65535; t++) e(t, t); - } - charCodeOf(e) { - return Number.isInteger(e) && e <= 65535 ? e : -1; - } - getMap() { - const e = new Array(65536); - for (let t = 0; t <= 65535; t++) e[t] = t; - return e; - } - get length() { - return 65536; - } - get isIdentityCMap() { - (0, r.unreachable)("should not access .isIdentityCMap"); - } - } - t.IdentityCMap = IdentityCMap; - function strToInt(e) { - let t = 0; - for (let a = 0; a < e.length; a++) t = (t << 8) | e.charCodeAt(a); - return t >>> 0; - } - function expectString(e) { - if ("string" != typeof e) - throw new r.FormatError("Malformed CMap: expected string."); - } - function expectInt(e) { - if (!Number.isInteger(e)) - throw new r.FormatError("Malformed CMap: expected int."); - } - function parseBfChar(e, t) { - for (;;) { - let a = t.getObj(); - if (a === n.EOF) break; - if ((0, n.isCmd)(a, "endbfchar")) return; - expectString(a); - const r = strToInt(a); - a = t.getObj(); - expectString(a); - const i = a; - e.mapOne(r, i); - } - } - function parseBfRange(e, t) { - for (;;) { - let a = t.getObj(); - if (a === n.EOF) break; - if ((0, n.isCmd)(a, "endbfrange")) return; - expectString(a); - const r = strToInt(a); - a = t.getObj(); - expectString(a); - const i = strToInt(a); - a = t.getObj(); - if (Number.isInteger(a) || "string" == typeof a) { - const t = Number.isInteger(a) ? String.fromCharCode(a) : a; - e.mapBfRange(r, i, t); - } else { - if (!(0, n.isCmd)(a, "[")) break; - { - a = t.getObj(); - const s = []; - for (; !(0, n.isCmd)(a, "]") && a !== n.EOF; ) { - s.push(a); - a = t.getObj(); - } - e.mapBfRangeToArray(r, i, s); - } - } - } - throw new r.FormatError("Invalid bf range."); - } - function parseCidChar(e, t) { - for (;;) { - let a = t.getObj(); - if (a === n.EOF) break; - if ((0, n.isCmd)(a, "endcidchar")) return; - expectString(a); - const r = strToInt(a); - a = t.getObj(); - expectInt(a); - const i = a; - e.mapOne(r, i); - } - } - function parseCidRange(e, t) { - for (;;) { - let a = t.getObj(); - if (a === n.EOF) break; - if ((0, n.isCmd)(a, "endcidrange")) return; - expectString(a); - const r = strToInt(a); - a = t.getObj(); - expectString(a); - const i = strToInt(a); - a = t.getObj(); - expectInt(a); - const s = a; - e.mapCidRange(r, i, s); - } - } - function parseCodespaceRange(e, t) { - for (;;) { - let a = t.getObj(); - if (a === n.EOF) break; - if ((0, n.isCmd)(a, "endcodespacerange")) return; - if ("string" != typeof a) break; - const r = strToInt(a); - a = t.getObj(); - if ("string" != typeof a) break; - const i = strToInt(a); - e.addCodespaceRange(a.length, r, i); - } - throw new r.FormatError("Invalid codespace range."); - } - function parseWMode(e, t) { - const a = t.getObj(); - Number.isInteger(a) && (e.vertical = !!a); - } - function parseCMapName(e, t) { - const a = t.getObj(); - a instanceof n.Name && (e.name = a.name); - } - async function parseCMap(e, t, a, i) { - let s, o; - e: for (;;) - try { - const a = t.getObj(); - if (a === n.EOF) break; - if (a instanceof n.Name) { - "WMode" === a.name - ? parseWMode(e, t) - : "CMapName" === a.name && parseCMapName(e, t); - s = a; - } else if (a instanceof n.Cmd) - switch (a.cmd) { - case "endcmap": - break e; - case "usecmap": - s instanceof n.Name && (o = s.name); - break; - case "begincodespacerange": - parseCodespaceRange(e, t); - break; - case "beginbfchar": - parseBfChar(e, t); - break; - case "begincidchar": - parseCidChar(e, t); - break; - case "beginbfrange": - parseBfRange(e, t); - break; - case "begincidrange": - parseCidRange(e, t); - } - } catch (e) { - if (e instanceof c.MissingDataException) throw e; - (0, r.warn)("Invalid cMap data: " + e); - continue; - } - !i && o && (i = o); - return i ? extendCMap(e, a, i) : e; - } - async function extendCMap(e, t, a) { - e.useCMap = await createBuiltInCMap(a, t); - if (0 === e.numCodespaceRanges) { - const t = e.useCMap.codespaceRanges; - for (let a = 0; a < t.length; a++) - e.codespaceRanges[a] = t[a].slice(); - e.numCodespaceRanges = e.useCMap.numCodespaceRanges; - } - e.useCMap.forEach(function (t, a) { - e.contains(t) || e.mapOne(t, e.useCMap.lookup(t)); - }); - return e; - } - async function createBuiltInCMap(e, t) { - if ("Identity-H" === e) return new IdentityCMap(!1, 2); - if ("Identity-V" === e) return new IdentityCMap(!0, 2); - if (!h.includes(e)) throw new Error("Unknown CMap name: " + e); - if (!t) - throw new Error("Built-in CMap parameters are not provided."); - const { cMapData: a, compressionType: n } = await t(e), - i = new CMap(!0); - if (n === r.CMapCompressionType.BINARY) - return new s.BinaryCMapReader().process(a, i, (e) => - extendCMap(i, t, e), - ); - if (n === r.CMapCompressionType.NONE) { - const e = new o.Lexer(new l.Stream(a)); - return parseCMap(i, e, t, null); - } - throw new Error(`Invalid CMap "compressionType" value: ${n}`); - } - t.CMapFactory = class CMapFactory { - static async create({ - encoding: e, - fetchBuiltInCMap: t, - useCMap: a, - }) { - if (e instanceof n.Name) return createBuiltInCMap(e.name, t); - if (e instanceof i.BaseStream) { - const r = await parseCMap(new CMap(), new o.Lexer(e), t, a); - return r.isIdentityCMap ? createBuiltInCMap(r.name, t) : r; - } - throw new Error("Encoding required."); - } - }; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.BinaryCMapReader = void 0; - var r = a(2); - function hexToInt(e, t) { - let a = 0; - for (let r = 0; r <= t; r++) a = (a << 8) | e[r]; - return a >>> 0; - } - function hexToStr(e, t) { - return 1 === t - ? String.fromCharCode(e[0], e[1]) - : 3 === t - ? String.fromCharCode(e[0], e[1], e[2], e[3]) - : String.fromCharCode(...e.subarray(0, t + 1)); - } - function addHex(e, t, a) { - let r = 0; - for (let n = a; n >= 0; n--) { - r += e[n] + t[n]; - e[n] = 255 & r; - r >>= 8; - } - } - function incHex(e, t) { - let a = 1; - for (let r = t; r >= 0 && a > 0; r--) { - a += e[r]; - e[r] = 255 & a; - a >>= 8; - } - } - const n = 16; - class BinaryCMapStream { - constructor(e) { - this.buffer = e; - this.pos = 0; - this.end = e.length; - this.tmpBuf = new Uint8Array(19); - } - readByte() { - return this.pos >= this.end ? -1 : this.buffer[this.pos++]; - } - readNumber() { - let e, - t = 0; - do { - const a = this.readByte(); - if (a < 0) throw new r.FormatError("unexpected EOF in bcmap"); - e = !(128 & a); - t = (t << 7) | (127 & a); - } while (!e); - return t; - } - readSigned() { - const e = this.readNumber(); - return 1 & e ? ~(e >>> 1) : e >>> 1; - } - readHex(e, t) { - e.set(this.buffer.subarray(this.pos, this.pos + t + 1)); - this.pos += t + 1; - } - readHexNumber(e, t) { - let a; - const n = this.tmpBuf; - let i = 0; - do { - const e = this.readByte(); - if (e < 0) throw new r.FormatError("unexpected EOF in bcmap"); - a = !(128 & e); - n[i++] = 127 & e; - } while (!a); - let s = t, - o = 0, - c = 0; - for (; s >= 0; ) { - for (; c < 8 && n.length > 0; ) { - o |= n[--i] << c; - c += 7; - } - e[s] = 255 & o; - s--; - o >>= 8; - c -= 8; - } - } - readHexSigned(e, t) { - this.readHexNumber(e, t); - const a = 1 & e[t] ? 255 : 0; - let r = 0; - for (let n = 0; n <= t; n++) { - r = ((1 & r) << 8) | e[n]; - e[n] = (r >> 1) ^ a; - } - } - readString() { - const e = this.readNumber(), - t = new Array(e); - for (let a = 0; a < e; a++) t[a] = this.readNumber(); - return String.fromCharCode(...t); - } - } - t.BinaryCMapReader = class BinaryCMapReader { - async process(e, t, a) { - const r = new BinaryCMapStream(e), - i = r.readByte(); - t.vertical = !!(1 & i); - let s = null; - const o = new Uint8Array(n), - c = new Uint8Array(n), - l = new Uint8Array(n), - h = new Uint8Array(n), - u = new Uint8Array(n); - let d, f; - for (; (f = r.readByte()) >= 0; ) { - const e = f >> 5; - if (7 === e) { - switch (31 & f) { - case 0: - r.readString(); - break; - case 1: - s = r.readString(); - } - continue; - } - const a = !!(16 & f), - i = 15 & f; - if (i + 1 > n) - throw new Error( - "BinaryCMapReader.process: Invalid dataSize.", - ); - const g = 1, - p = r.readNumber(); - switch (e) { - case 0: - r.readHex(o, i); - r.readHexNumber(c, i); - addHex(c, o, i); - t.addCodespaceRange(i + 1, hexToInt(o, i), hexToInt(c, i)); - for (let e = 1; e < p; e++) { - incHex(c, i); - r.readHexNumber(o, i); - addHex(o, c, i); - r.readHexNumber(c, i); - addHex(c, o, i); - t.addCodespaceRange( - i + 1, - hexToInt(o, i), - hexToInt(c, i), - ); - } - break; - case 1: - r.readHex(o, i); - r.readHexNumber(c, i); - addHex(c, o, i); - r.readNumber(); - for (let e = 1; e < p; e++) { - incHex(c, i); - r.readHexNumber(o, i); - addHex(o, c, i); - r.readHexNumber(c, i); - addHex(c, o, i); - r.readNumber(); - } - break; - case 2: - r.readHex(l, i); - d = r.readNumber(); - t.mapOne(hexToInt(l, i), d); - for (let e = 1; e < p; e++) { - incHex(l, i); - if (!a) { - r.readHexNumber(u, i); - addHex(l, u, i); - } - d = r.readSigned() + (d + 1); - t.mapOne(hexToInt(l, i), d); - } - break; - case 3: - r.readHex(o, i); - r.readHexNumber(c, i); - addHex(c, o, i); - d = r.readNumber(); - t.mapCidRange(hexToInt(o, i), hexToInt(c, i), d); - for (let e = 1; e < p; e++) { - incHex(c, i); - if (a) o.set(c); - else { - r.readHexNumber(o, i); - addHex(o, c, i); - } - r.readHexNumber(c, i); - addHex(c, o, i); - d = r.readNumber(); - t.mapCidRange(hexToInt(o, i), hexToInt(c, i), d); - } - break; - case 4: - r.readHex(l, g); - r.readHex(h, i); - t.mapOne(hexToInt(l, g), hexToStr(h, i)); - for (let e = 1; e < p; e++) { - incHex(l, g); - if (!a) { - r.readHexNumber(u, g); - addHex(l, u, g); - } - incHex(h, i); - r.readHexSigned(u, i); - addHex(h, u, i); - t.mapOne(hexToInt(l, g), hexToStr(h, i)); - } - break; - case 5: - r.readHex(o, g); - r.readHexNumber(c, g); - addHex(c, o, g); - r.readHex(h, i); - t.mapBfRange( - hexToInt(o, g), - hexToInt(c, g), - hexToStr(h, i), - ); - for (let e = 1; e < p; e++) { - incHex(c, g); - if (a) o.set(c); - else { - r.readHexNumber(o, g); - addHex(o, c, g); - } - r.readHexNumber(c, g); - addHex(c, o, g); - r.readHex(h, i); - t.mapBfRange( - hexToInt(o, g), - hexToInt(c, g), - hexToStr(h, i), - ); - } - break; - default: - throw new Error( - `BinaryCMapReader.process - unknown type: ${e}`, - ); - } - } - return s ? a(s) : t; - } - }; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.Parser = t.Linearization = t.Lexer = void 0; - var r = a(2), - n = a(4), - i = a(3), - s = a(8), - o = a(17), - c = a(19), - l = a(20), - h = a(22), - u = a(23), - d = a(26), - f = a(29), - g = a(31), - p = a(32), - m = a(33); - class Parser { - constructor({ - lexer: e, - xref: t, - allowStreams: a = !1, - recoveryMode: r = !1, - }) { - this.lexer = e; - this.xref = t; - this.allowStreams = a; - this.recoveryMode = r; - this.imageCache = Object.create(null); - this._imageId = 0; - this.refill(); - } - refill() { - this.buf1 = this.lexer.getObj(); - this.buf2 = this.lexer.getObj(); - } - shift() { - if (this.buf2 instanceof n.Cmd && "ID" === this.buf2.cmd) { - this.buf1 = this.buf2; - this.buf2 = null; - } else { - this.buf1 = this.buf2; - this.buf2 = this.lexer.getObj(); - } - } - tryShift() { - try { - this.shift(); - return !0; - } catch (e) { - if (e instanceof i.MissingDataException) throw e; - return !1; - } - } - getObj(e = null) { - const t = this.buf1; - this.shift(); - if (t instanceof n.Cmd) - switch (t.cmd) { - case "BI": - return this.makeInlineImage(e); - case "[": - const a = []; - for ( - ; - !(0, n.isCmd)(this.buf1, "]") && this.buf1 !== n.EOF; - - ) - a.push(this.getObj(e)); - if (this.buf1 === n.EOF) { - if (this.recoveryMode) return a; - throw new i.ParserEOFException( - "End of file inside array.", - ); - } - this.shift(); - return a; - case "<<": - const s = new n.Dict(this.xref); - for ( - ; - !(0, n.isCmd)(this.buf1, ">>") && this.buf1 !== n.EOF; - - ) { - if (!(this.buf1 instanceof n.Name)) { - (0, r.info)( - "Malformed dictionary: key must be a name object", - ); - this.shift(); - continue; - } - const t = this.buf1.name; - this.shift(); - if (this.buf1 === n.EOF) break; - s.set(t, this.getObj(e)); - } - if (this.buf1 === n.EOF) { - if (this.recoveryMode) return s; - throw new i.ParserEOFException( - "End of file inside dictionary.", - ); - } - if ((0, n.isCmd)(this.buf2, "stream")) - return this.allowStreams ? this.makeStream(s, e) : s; - this.shift(); - return s; - default: - return t; - } - if (Number.isInteger(t)) { - if ( - Number.isInteger(this.buf1) && - (0, n.isCmd)(this.buf2, "R") - ) { - const e = n.Ref.get(t, this.buf1); - this.shift(); - this.shift(); - return e; - } - return t; - } - return "string" == typeof t && e ? e.decryptString(t) : t; - } - findDefaultInlineStreamEnd(e) { - const { knownCommands: t } = this.lexer, - a = e.pos; - let o, - c, - l = 0; - for (; -1 !== (o = e.getByte()); ) - if (0 === l) l = 69 === o ? 1 : 0; - else if (1 === l) l = 73 === o ? 2 : 0; - else if (32 === o || 10 === o || 13 === o) { - c = e.pos; - const a = e.peekBytes(15), - i = a.length; - if (0 === i) break; - for (let e = 0; e < i; e++) { - o = a[e]; - if ( - (0 !== o || 0 === a[e + 1]) && - 10 !== o && - 13 !== o && - (o < 32 || o > 127) - ) { - l = 0; - break; - } - } - if (2 !== l) continue; - if (!t) { - (0, r.warn)( - "findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined.", - ); - continue; - } - const h = new Lexer(new s.Stream(a.slice()), t); - h._hexStringWarn = () => {}; - let u = 0; - for (;;) { - const e = h.getObj(); - if (e === n.EOF) { - l = 0; - break; - } - if (e instanceof n.Cmd) { - const a = t[e.cmd]; - if (!a) { - l = 0; - break; - } - if (a.variableArgs ? u <= a.numArgs : u === a.numArgs) - break; - u = 0; - } else u++; - } - if (2 === l) break; - } else l = 0; - if (-1 === o) { - (0, r.warn)( - "findDefaultInlineStreamEnd: Reached the end of the stream without finding a valid EI marker", - ); - if (c) { - (0, r.warn)( - '... trying to recover by using the last "EI" occurrence.', - ); - e.skip(-(e.pos - c)); - } - } - let h = 4; - e.skip(-h); - o = e.peekByte(); - e.skip(h); - (0, i.isWhiteSpace)(o) || h--; - return e.pos - h - a; - } - findDCTDecodeInlineStreamEnd(e) { - const t = e.pos; - let a, - n, - i = !1; - for (; -1 !== (a = e.getByte()); ) - if (255 === a) { - switch (e.getByte()) { - case 0: - break; - case 255: - e.skip(-1); - break; - case 217: - i = !0; - break; - case 192: - case 193: - case 194: - case 195: - case 197: - case 198: - case 199: - case 201: - case 202: - case 203: - case 205: - case 206: - case 207: - case 196: - case 204: - case 218: - case 219: - case 220: - case 221: - case 222: - case 223: - case 224: - case 225: - case 226: - case 227: - case 228: - case 229: - case 230: - case 231: - case 232: - case 233: - case 234: - case 235: - case 236: - case 237: - case 238: - case 239: - case 254: - n = e.getUint16(); - n > 2 ? e.skip(n - 2) : e.skip(-2); - } - if (i) break; - } - const s = e.pos - t; - if (-1 === a) { - (0, r.warn)( - "Inline DCTDecode image stream: EOI marker not found, searching for /EI/ instead.", - ); - e.skip(-s); - return this.findDefaultInlineStreamEnd(e); - } - this.inlineStreamSkipEI(e); - return s; - } - findASCII85DecodeInlineStreamEnd(e) { - const t = e.pos; - let a; - for (; -1 !== (a = e.getByte()); ) - if (126 === a) { - const t = e.pos; - a = e.peekByte(); - for (; (0, i.isWhiteSpace)(a); ) { - e.skip(); - a = e.peekByte(); - } - if (62 === a) { - e.skip(); - break; - } - if (e.pos > t) { - const t = e.peekBytes(2); - if (69 === t[0] && 73 === t[1]) break; - } - } - const n = e.pos - t; - if (-1 === a) { - (0, r.warn)( - "Inline ASCII85Decode image stream: EOD marker not found, searching for /EI/ instead.", - ); - e.skip(-n); - return this.findDefaultInlineStreamEnd(e); - } - this.inlineStreamSkipEI(e); - return n; - } - findASCIIHexDecodeInlineStreamEnd(e) { - const t = e.pos; - let a; - for (; -1 !== (a = e.getByte()) && 62 !== a; ); - const n = e.pos - t; - if (-1 === a) { - (0, r.warn)( - "Inline ASCIIHexDecode image stream: EOD marker not found, searching for /EI/ instead.", - ); - e.skip(-n); - return this.findDefaultInlineStreamEnd(e); - } - this.inlineStreamSkipEI(e); - return n; - } - inlineStreamSkipEI(e) { - let t, - a = 0; - for (; -1 !== (t = e.getByte()); ) - if (0 === a) a = 69 === t ? 1 : 0; - else if (1 === a) a = 73 === t ? 2 : 0; - else if (2 === a) break; - } - makeInlineImage(e) { - const t = this.lexer, - a = t.stream, - i = Object.create(null); - let s; - for (; !(0, n.isCmd)(this.buf1, "ID") && this.buf1 !== n.EOF; ) { - if (!(this.buf1 instanceof n.Name)) - throw new r.FormatError( - "Dictionary key must be a name object", - ); - const t = this.buf1.name; - this.shift(); - if (this.buf1 === n.EOF) break; - i[t] = this.getObj(e); - } - -1 !== t.beginInlineImagePos && - (s = a.pos - t.beginInlineImagePos); - const o = this.xref.fetchIfRef(i.F || i.Filter); - let c; - if (o instanceof n.Name) c = o.name; - else if (Array.isArray(o)) { - const e = this.xref.fetchIfRef(o[0]); - e instanceof n.Name && (c = e.name); - } - const l = a.pos; - let h, u; - switch (c) { - case "DCT": - case "DCTDecode": - h = this.findDCTDecodeInlineStreamEnd(a); - break; - case "A85": - case "ASCII85Decode": - h = this.findASCII85DecodeInlineStreamEnd(a); - break; - case "AHx": - case "ASCIIHexDecode": - h = this.findASCIIHexDecodeInlineStreamEnd(a); - break; - default: - h = this.findDefaultInlineStreamEnd(a); - } - if (h < 1e3 && s > 0) { - const e = a.pos; - a.pos = t.beginInlineImagePos; - u = (function getInlineImageCacheKey(e) { - const t = [], - a = e.length; - let r = 0; - for (; r < a - 1; ) t.push((e[r++] << 8) | e[r++]); - r < a && t.push(e[r]); - return a + "_" + String.fromCharCode.apply(null, t); - })(a.getBytes(s + h)); - a.pos = e; - const r = this.imageCache[u]; - if (void 0 !== r) { - this.buf2 = n.Cmd.get("EI"); - this.shift(); - r.reset(); - return r; - } - } - const d = new n.Dict(this.xref); - for (const e in i) d.set(e, i[e]); - let f = a.makeSubStream(l, h, d); - e && (f = e.createStream(f, h)); - f = this.filter(f, d, h); - f.dict = d; - if (void 0 !== u) { - f.cacheKey = "inline_img_" + ++this._imageId; - this.imageCache[u] = f; - } - this.buf2 = n.Cmd.get("EI"); - this.shift(); - return f; - } - _findStreamLength(e, t) { - const { stream: a } = this.lexer; - a.pos = e; - const r = t.length; - for (; a.pos < a.end; ) { - const n = a.peekBytes(2048), - i = n.length - r; - if (i <= 0) break; - let s = 0; - for (; s < i; ) { - let i = 0; - for (; i < r && n[s + i] === t[i]; ) i++; - if (i >= r) { - a.pos += s; - return a.pos - e; - } - s++; - } - a.pos += i; - } - return -1; - } - makeStream(e, t) { - const a = this.lexer; - let s = a.stream; - a.skipToNextLine(); - const o = s.pos - 1; - let c = e.get("Length"); - if (!Number.isInteger(c)) { - (0, r.info)(`Bad length "${c && c.toString()}" in stream.`); - c = 0; - } - s.pos = o + c; - a.nextChar(); - if (this.tryShift() && (0, n.isCmd)(this.buf2, "endstream")) - this.shift(); - else { - const e = new Uint8Array([ - 101, 110, 100, 115, 116, 114, 101, 97, 109, - ]); - let t = this._findStreamLength(o, e); - if (t < 0) { - const a = 1; - for (let n = 1; n <= a; n++) { - const a = e.length - n, - c = e.slice(0, a), - l = this._findStreamLength(o, c); - if (l >= 0) { - const e = s.peekBytes(a + 1)[a]; - if (!(0, i.isWhiteSpace)(e)) break; - (0, r.info)( - `Found "${(0, r.bytesToString)(c)}" when searching for endstream command.`, - ); - t = l; - break; - } - } - if (t < 0) - throw new r.FormatError("Missing endstream command."); - } - c = t; - a.nextChar(); - this.shift(); - this.shift(); - } - this.shift(); - s = s.makeSubStream(o, c, e); - t && (s = t.createStream(s, c)); - s = this.filter(s, e, c); - s.dict = e; - return s; - } - filter(e, t, a) { - let i = t.get("F", "Filter"), - s = t.get("DP", "DecodeParms"); - if (i instanceof n.Name) { - Array.isArray(s) && - (0, r.warn)( - "/DecodeParms should not be an Array, when /Filter is a Name.", - ); - return this.makeFilter(e, i.name, a, s); - } - let o = a; - if (Array.isArray(i)) { - const t = i, - a = s; - for (let c = 0, l = t.length; c < l; ++c) { - i = this.xref.fetchIfRef(t[c]); - if (!(i instanceof n.Name)) - throw new r.FormatError(`Bad filter name "${i}"`); - s = null; - Array.isArray(a) && - c in a && - (s = this.xref.fetchIfRef(a[c])); - e = this.makeFilter(e, i.name, o, s); - o = null; - } - } - return e; - } - makeFilter(e, t, a, n) { - if (0 === a) { - (0, r.warn)(`Empty "${t}" stream.`); - return new s.NullStream(); - } - try { - switch (t) { - case "Fl": - case "FlateDecode": - return n - ? new p.PredictorStream(new h.FlateStream(e, a), a, n) - : new h.FlateStream(e, a); - case "LZW": - case "LZWDecode": - let t = 1; - if (n) { - n.has("EarlyChange") && (t = n.get("EarlyChange")); - return new p.PredictorStream( - new g.LZWStream(e, a, t), - a, - n, - ); - } - return new g.LZWStream(e, a, t); - case "DCT": - case "DCTDecode": - return new d.JpegStream(e, a, n); - case "JPX": - case "JPXDecode": - return new f.JpxStream(e, a, n); - case "A85": - case "ASCII85Decode": - return new o.Ascii85Stream(e, a); - case "AHx": - case "ASCIIHexDecode": - return new c.AsciiHexStream(e, a); - case "CCF": - case "CCITTFaxDecode": - return new l.CCITTFaxStream(e, a, n); - case "RL": - case "RunLengthDecode": - return new m.RunLengthStream(e, a); - case "JBIG2Decode": - return new u.Jbig2Stream(e, a, n); - } - (0, r.warn)(`Filter "${t}" is not supported.`); - return e; - } catch (e) { - if (e instanceof i.MissingDataException) throw e; - (0, r.warn)(`Invalid stream: "${e}"`); - return new s.NullStream(); - } - } - } - t.Parser = Parser; - const b = [ - 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, - 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, - 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, - ]; - function toHexDigit(e) { - return e >= 48 && e <= 57 - ? 15 & e - : (e >= 65 && e <= 70) || (e >= 97 && e <= 102) - ? 9 + (15 & e) - : -1; - } - class Lexer { - constructor(e, t = null) { - this.stream = e; - this.nextChar(); - this.strBuf = []; - this.knownCommands = t; - this._hexStringNumWarn = 0; - this.beginInlineImagePos = -1; - } - nextChar() { - return (this.currentChar = this.stream.getByte()); - } - peekChar() { - return this.stream.peekByte(); - } - getNumber() { - let e = this.currentChar, - t = !1, - a = 0, - n = 1; - if (45 === e) { - n = -1; - e = this.nextChar(); - 45 === e && (e = this.nextChar()); - } else 43 === e && (e = this.nextChar()); - if (10 === e || 13 === e) - do { - e = this.nextChar(); - } while (10 === e || 13 === e); - if (46 === e) { - a = 10; - e = this.nextChar(); - } - if (e < 48 || e > 57) { - const t = `Invalid number: ${String.fromCharCode(e)} (charCode ${e})`; - if ((0, i.isWhiteSpace)(e) || -1 === e) { - (0, r.info)(`Lexer.getNumber - "${t}".`); - return 0; - } - throw new r.FormatError(t); - } - let s = e - 48, - o = 0, - c = 1; - for (; (e = this.nextChar()) >= 0; ) - if (e >= 48 && e <= 57) { - const r = e - 48; - if (t) o = 10 * o + r; - else { - 0 !== a && (a *= 10); - s = 10 * s + r; - } - } else if (46 === e) { - if (0 !== a) break; - a = 1; - } else if (45 === e) - (0, r.warn)( - "Badly formatted number: minus sign in the middle", - ); - else { - if (69 !== e && 101 !== e) break; - e = this.peekChar(); - if (43 === e || 45 === e) { - c = 45 === e ? -1 : 1; - this.nextChar(); - } else if (e < 48 || e > 57) break; - t = !0; - } - 0 !== a && (s /= a); - t && (s *= 10 ** (c * o)); - return n * s; - } - getString() { - let e = 1, - t = !1; - const a = this.strBuf; - a.length = 0; - let n = this.nextChar(); - for (;;) { - let i = !1; - switch (0 | n) { - case -1: - (0, r.warn)("Unterminated string"); - t = !0; - break; - case 40: - ++e; - a.push("("); - break; - case 41: - if (0 == --e) { - this.nextChar(); - t = !0; - } else a.push(")"); - break; - case 92: - n = this.nextChar(); - switch (n) { - case -1: - (0, r.warn)("Unterminated string"); - t = !0; - break; - case 110: - a.push("\n"); - break; - case 114: - a.push("\r"); - break; - case 116: - a.push("\t"); - break; - case 98: - a.push("\b"); - break; - case 102: - a.push("\f"); - break; - case 92: - case 40: - case 41: - a.push(String.fromCharCode(n)); - break; - case 48: - case 49: - case 50: - case 51: - case 52: - case 53: - case 54: - case 55: - let e = 15 & n; - n = this.nextChar(); - i = !0; - if (n >= 48 && n <= 55) { - e = (e << 3) + (15 & n); - n = this.nextChar(); - if (n >= 48 && n <= 55) { - i = !1; - e = (e << 3) + (15 & n); - } - } - a.push(String.fromCharCode(e)); - break; - case 13: - 10 === this.peekChar() && this.nextChar(); - break; - case 10: - break; - default: - a.push(String.fromCharCode(n)); - } - break; - default: - a.push(String.fromCharCode(n)); - } - if (t) break; - i || (n = this.nextChar()); - } - return a.join(""); - } - getName() { - let e, t; - const a = this.strBuf; - a.length = 0; - for (; (e = this.nextChar()) >= 0 && !b[e]; ) - if (35 === e) { - e = this.nextChar(); - if (b[e]) { - (0, r.warn)( - "Lexer_getName: NUMBER SIGN (#) should be followed by a hexadecimal number.", - ); - a.push("#"); - break; - } - const n = toHexDigit(e); - if (-1 !== n) { - t = e; - e = this.nextChar(); - const i = toHexDigit(e); - if (-1 === i) { - (0, r.warn)( - `Lexer_getName: Illegal digit (${String.fromCharCode(e)}) in hexadecimal number.`, - ); - a.push("#", String.fromCharCode(t)); - if (b[e]) break; - a.push(String.fromCharCode(e)); - continue; - } - a.push(String.fromCharCode((n << 4) | i)); - } else a.push("#", String.fromCharCode(e)); - } else a.push(String.fromCharCode(e)); - a.length > 127 && - (0, r.warn)( - `Name token is longer than allowed by the spec: ${a.length}`, - ); - return n.Name.get(a.join("")); - } - _hexStringWarn(e) { - 5 != this._hexStringNumWarn++ - ? this._hexStringNumWarn > 5 || - (0, r.warn)(`getHexString - ignoring invalid character: ${e}`) - : (0, r.warn)( - "getHexString - ignoring additional invalid characters.", - ); - } - getHexString() { - const e = this.strBuf; - e.length = 0; - let t, - a, - n = this.currentChar, - i = !0; - this._hexStringNumWarn = 0; - for (;;) { - if (n < 0) { - (0, r.warn)("Unterminated hex string"); - break; - } - if (62 === n) { - this.nextChar(); - break; - } - if (1 !== b[n]) { - if (i) { - t = toHexDigit(n); - if (-1 === t) { - this._hexStringWarn(n); - n = this.nextChar(); - continue; - } - } else { - a = toHexDigit(n); - if (-1 === a) { - this._hexStringWarn(n); - n = this.nextChar(); - continue; - } - e.push(String.fromCharCode((t << 4) | a)); - } - i = !i; - n = this.nextChar(); - } else n = this.nextChar(); - } - return e.join(""); - } - getObj() { - let e = !1, - t = this.currentChar; - for (;;) { - if (t < 0) return n.EOF; - if (e) (10 !== t && 13 !== t) || (e = !1); - else if (37 === t) e = !0; - else if (1 !== b[t]) break; - t = this.nextChar(); - } - switch (0 | t) { - case 48: - case 49: - case 50: - case 51: - case 52: - case 53: - case 54: - case 55: - case 56: - case 57: - case 43: - case 45: - case 46: - return this.getNumber(); - case 40: - return this.getString(); - case 47: - return this.getName(); - case 91: - this.nextChar(); - return n.Cmd.get("["); - case 93: - this.nextChar(); - return n.Cmd.get("]"); - case 60: - t = this.nextChar(); - if (60 === t) { - this.nextChar(); - return n.Cmd.get("<<"); - } - return this.getHexString(); - case 62: - t = this.nextChar(); - if (62 === t) { - this.nextChar(); - return n.Cmd.get(">>"); - } - return n.Cmd.get(">"); - case 123: - this.nextChar(); - return n.Cmd.get("{"); - case 125: - this.nextChar(); - return n.Cmd.get("}"); - case 41: - this.nextChar(); - throw new r.FormatError(`Illegal character: ${t}`); - } - let a = String.fromCharCode(t); - if (t < 32 || t > 127) { - const e = this.peekChar(); - if (e >= 32 && e <= 127) { - this.nextChar(); - return n.Cmd.get(a); - } - } - const i = this.knownCommands; - let s = void 0 !== i?.[a]; - for (; (t = this.nextChar()) >= 0 && !b[t]; ) { - const e = a + String.fromCharCode(t); - if (s && void 0 === i[e]) break; - if (128 === a.length) - throw new r.FormatError( - `Command token too long: ${a.length}`, - ); - a = e; - s = void 0 !== i?.[a]; - } - if ("true" === a) return !0; - if ("false" === a) return !1; - if ("null" === a) return null; - "BI" === a && (this.beginInlineImagePos = this.stream.pos); - return n.Cmd.get(a); - } - skipToNextLine() { - let e = this.currentChar; - for (; e >= 0; ) { - if (13 === e) { - e = this.nextChar(); - 10 === e && this.nextChar(); - break; - } - if (10 === e) { - this.nextChar(); - break; - } - e = this.nextChar(); - } - } - } - t.Lexer = Lexer; - t.Linearization = class Linearization { - static create(e) { - function getInt(e, t, a = !1) { - const r = e.get(t); - if (Number.isInteger(r) && (a ? r >= 0 : r > 0)) return r; - throw new Error( - `The "${t}" parameter in the linearization dictionary is invalid.`, - ); - } - const t = new Parser({ lexer: new Lexer(e), xref: null }), - a = t.getObj(), - r = t.getObj(), - i = t.getObj(), - s = t.getObj(); - let o, c; - if ( - !( - Number.isInteger(a) && - Number.isInteger(r) && - (0, n.isCmd)(i, "obj") && - s instanceof n.Dict && - "number" == typeof (o = s.get("Linearized")) && - o > 0 - ) - ) - return null; - if ((c = getInt(s, "L")) !== e.length) - throw new Error( - 'The "L" parameter in the linearization dictionary does not equal the stream length.', - ); - return { - length: c, - hints: (function getHints(e) { - const t = e.get("H"); - let a; - if (Array.isArray(t) && (2 === (a = t.length) || 4 === a)) { - for (let e = 0; e < a; e++) { - const a = t[e]; - if (!(Number.isInteger(a) && a > 0)) - throw new Error( - `Hint (${e}) in the linearization dictionary is invalid.`, - ); - } - return t; - } - throw new Error( - "Hint array in the linearization dictionary is invalid.", - ); - })(s), - objectNumberFirst: getInt(s, "O"), - endFirst: getInt(s, "E"), - numPages: getInt(s, "N"), - mainXRefEntriesOffset: getInt(s, "T"), - pageFirst: s.has("P") ? getInt(s, "P", !0) : 0, - }; - } - }; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.Ascii85Stream = void 0; - var r = a(18), - n = a(3); - class Ascii85Stream extends r.DecodeStream { - constructor(e, t) { - t && (t *= 0.8); - super(t); - this.str = e; - this.dict = e.dict; - this.input = new Uint8Array(5); - } - readBlock() { - const e = this.str; - let t = e.getByte(); - for (; (0, n.isWhiteSpace)(t); ) t = e.getByte(); - if (-1 === t || 126 === t) { - this.eof = !0; - return; - } - const a = this.bufferLength; - let r, i; - if (122 === t) { - r = this.ensureBuffer(a + 4); - for (i = 0; i < 4; ++i) r[a + i] = 0; - this.bufferLength += 4; - } else { - const s = this.input; - s[0] = t; - for (i = 1; i < 5; ++i) { - t = e.getByte(); - for (; (0, n.isWhiteSpace)(t); ) t = e.getByte(); - s[i] = t; - if (-1 === t || 126 === t) break; - } - r = this.ensureBuffer(a + i - 1); - this.bufferLength += i - 1; - if (i < 5) { - for (; i < 5; ++i) s[i] = 117; - this.eof = !0; - } - let o = 0; - for (i = 0; i < 5; ++i) o = 85 * o + (s[i] - 33); - for (i = 3; i >= 0; --i) { - r[a + i] = 255 & o; - o >>= 8; - } - } - } - } - t.Ascii85Stream = Ascii85Stream; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.StreamsSequenceStream = t.DecodeStream = void 0; - var r = a(5), - n = a(8); - const i = new Uint8Array(0); - class DecodeStream extends r.BaseStream { - constructor(e) { - super(); - this._rawMinBufferLength = e || 0; - this.pos = 0; - this.bufferLength = 0; - this.eof = !1; - this.buffer = i; - this.minBufferLength = 512; - if (e) - for (; this.minBufferLength < e; ) this.minBufferLength *= 2; - } - get isEmpty() { - for (; !this.eof && 0 === this.bufferLength; ) this.readBlock(); - return 0 === this.bufferLength; - } - ensureBuffer(e) { - const t = this.buffer; - if (e <= t.byteLength) return t; - let a = this.minBufferLength; - for (; a < e; ) a *= 2; - const r = new Uint8Array(a); - r.set(t); - return (this.buffer = r); - } - getByte() { - const e = this.pos; - for (; this.bufferLength <= e; ) { - if (this.eof) return -1; - this.readBlock(); - } - return this.buffer[this.pos++]; - } - getBytes(e) { - const t = this.pos; - let a; - if (e) { - this.ensureBuffer(t + e); - a = t + e; - for (; !this.eof && this.bufferLength < a; ) this.readBlock(); - const r = this.bufferLength; - a > r && (a = r); - } else { - for (; !this.eof; ) this.readBlock(); - a = this.bufferLength; - } - this.pos = a; - return this.buffer.subarray(t, a); - } - reset() { - this.pos = 0; - } - makeSubStream(e, t, a = null) { - if (void 0 === t) for (; !this.eof; ) this.readBlock(); - else { - const a = e + t; - for (; this.bufferLength <= a && !this.eof; ) this.readBlock(); - } - return new n.Stream(this.buffer, e, t, a); - } - getBaseStreams() { - return this.str ? this.str.getBaseStreams() : null; - } - } - t.DecodeStream = DecodeStream; - t.StreamsSequenceStream = class StreamsSequenceStream extends ( - DecodeStream - ) { - constructor(e, t = null) { - let a = 0; - for (const t of e) - a += - t instanceof DecodeStream ? t._rawMinBufferLength : t.length; - super(a); - this.streams = e; - this._onError = t; - } - readBlock() { - const e = this.streams; - if (0 === e.length) { - this.eof = !0; - return; - } - const t = e.shift(); - let a; - try { - a = t.getBytes(); - } catch (e) { - if (this._onError) { - this._onError(e, t.dict?.objId); - return; - } - throw e; - } - const r = this.bufferLength, - n = r + a.length; - this.ensureBuffer(n).set(a, r); - this.bufferLength = n; - } - getBaseStreams() { - const e = []; - for (const t of this.streams) { - const a = t.getBaseStreams(); - a && e.push(...a); - } - return e.length > 0 ? e : null; - } - }; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.AsciiHexStream = void 0; - var r = a(18); - class AsciiHexStream extends r.DecodeStream { - constructor(e, t) { - t && (t *= 0.5); - super(t); - this.str = e; - this.dict = e.dict; - this.firstDigit = -1; - } - readBlock() { - const e = this.str.getBytes(8e3); - if (!e.length) { - this.eof = !0; - return; - } - const t = (e.length + 1) >> 1, - a = this.ensureBuffer(this.bufferLength + t); - let r = this.bufferLength, - n = this.firstDigit; - for (const t of e) { - let e; - if (t >= 48 && t <= 57) e = 15 & t; - else { - if (!((t >= 65 && t <= 70) || (t >= 97 && t <= 102))) { - if (62 === t) { - this.eof = !0; - break; - } - continue; - } - e = 9 + (15 & t); - } - if (n < 0) n = e; - else { - a[r++] = (n << 4) | e; - n = -1; - } - } - if (n >= 0 && this.eof) { - a[r++] = n << 4; - n = -1; - } - this.firstDigit = n; - this.bufferLength = r; - } - } - t.AsciiHexStream = AsciiHexStream; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.CCITTFaxStream = void 0; - var r = a(21), - n = a(18), - i = a(4); - class CCITTFaxStream extends n.DecodeStream { - constructor(e, t, a) { - super(t); - this.str = e; - this.dict = e.dict; - a instanceof i.Dict || (a = i.Dict.empty); - const n = { next: () => e.getByte() }; - this.ccittFaxDecoder = new r.CCITTFaxDecoder(n, { - K: a.get("K"), - EndOfLine: a.get("EndOfLine"), - EncodedByteAlign: a.get("EncodedByteAlign"), - Columns: a.get("Columns"), - Rows: a.get("Rows"), - EndOfBlock: a.get("EndOfBlock"), - BlackIs1: a.get("BlackIs1"), - }); - } - readBlock() { - for (; !this.eof; ) { - const e = this.ccittFaxDecoder.readNextChar(); - if (-1 === e) { - this.eof = !0; - return; - } - this.ensureBuffer(this.bufferLength + 1); - this.buffer[this.bufferLength++] = e; - } - } - } - t.CCITTFaxStream = CCITTFaxStream; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.CCITTFaxDecoder = void 0; - var r = a(2); - const n = -1, - i = [ - [-1, -1], - [-1, -1], - [7, 8], - [7, 7], - [6, 6], - [6, 6], - [6, 5], - [6, 5], - [4, 0], - [4, 0], - [4, 0], - [4, 0], - [4, 0], - [4, 0], - [4, 0], - [4, 0], - [3, 1], - [3, 1], - [3, 1], - [3, 1], - [3, 1], - [3, 1], - [3, 1], - [3, 1], - [3, 1], - [3, 1], - [3, 1], - [3, 1], - [3, 1], - [3, 1], - [3, 1], - [3, 1], - [3, 4], - [3, 4], - [3, 4], - [3, 4], - [3, 4], - [3, 4], - [3, 4], - [3, 4], - [3, 4], - [3, 4], - [3, 4], - [3, 4], - [3, 4], - [3, 4], - [3, 4], - [3, 4], - [3, 3], - [3, 3], - [3, 3], - [3, 3], - [3, 3], - [3, 3], - [3, 3], - [3, 3], - [3, 3], - [3, 3], - [3, 3], - [3, 3], - [3, 3], - [3, 3], - [3, 3], - [3, 3], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - [1, 2], - ], - s = [ - [-1, -1], - [12, -2], - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [11, 1792], - [11, 1792], - [12, 1984], - [12, 2048], - [12, 2112], - [12, 2176], - [12, 2240], - [12, 2304], - [11, 1856], - [11, 1856], - [11, 1920], - [11, 1920], - [12, 2368], - [12, 2432], - [12, 2496], - [12, 2560], - ], - o = [ - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [8, 29], - [8, 29], - [8, 30], - [8, 30], - [8, 45], - [8, 45], - [8, 46], - [8, 46], - [7, 22], - [7, 22], - [7, 22], - [7, 22], - [7, 23], - [7, 23], - [7, 23], - [7, 23], - [8, 47], - [8, 47], - [8, 48], - [8, 48], - [6, 13], - [6, 13], - [6, 13], - [6, 13], - [6, 13], - [6, 13], - [6, 13], - [6, 13], - [7, 20], - [7, 20], - [7, 20], - [7, 20], - [8, 33], - [8, 33], - [8, 34], - [8, 34], - [8, 35], - [8, 35], - [8, 36], - [8, 36], - [8, 37], - [8, 37], - [8, 38], - [8, 38], - [7, 19], - [7, 19], - [7, 19], - [7, 19], - [8, 31], - [8, 31], - [8, 32], - [8, 32], - [6, 1], - [6, 1], - [6, 1], - [6, 1], - [6, 1], - [6, 1], - [6, 1], - [6, 1], - [6, 12], - [6, 12], - [6, 12], - [6, 12], - [6, 12], - [6, 12], - [6, 12], - [6, 12], - [8, 53], - [8, 53], - [8, 54], - [8, 54], - [7, 26], - [7, 26], - [7, 26], - [7, 26], - [8, 39], - [8, 39], - [8, 40], - [8, 40], - [8, 41], - [8, 41], - [8, 42], - [8, 42], - [8, 43], - [8, 43], - [8, 44], - [8, 44], - [7, 21], - [7, 21], - [7, 21], - [7, 21], - [7, 28], - [7, 28], - [7, 28], - [7, 28], - [8, 61], - [8, 61], - [8, 62], - [8, 62], - [8, 63], - [8, 63], - [8, 0], - [8, 0], - [8, 320], - [8, 320], - [8, 384], - [8, 384], - [5, 10], - [5, 10], - [5, 10], - [5, 10], - [5, 10], - [5, 10], - [5, 10], - [5, 10], - [5, 10], - [5, 10], - [5, 10], - [5, 10], - [5, 10], - [5, 10], - [5, 10], - [5, 10], - [5, 11], - [5, 11], - [5, 11], - [5, 11], - [5, 11], - [5, 11], - [5, 11], - [5, 11], - [5, 11], - [5, 11], - [5, 11], - [5, 11], - [5, 11], - [5, 11], - [5, 11], - [5, 11], - [7, 27], - [7, 27], - [7, 27], - [7, 27], - [8, 59], - [8, 59], - [8, 60], - [8, 60], - [9, 1472], - [9, 1536], - [9, 1600], - [9, 1728], - [7, 18], - [7, 18], - [7, 18], - [7, 18], - [7, 24], - [7, 24], - [7, 24], - [7, 24], - [8, 49], - [8, 49], - [8, 50], - [8, 50], - [8, 51], - [8, 51], - [8, 52], - [8, 52], - [7, 25], - [7, 25], - [7, 25], - [7, 25], - [8, 55], - [8, 55], - [8, 56], - [8, 56], - [8, 57], - [8, 57], - [8, 58], - [8, 58], - [6, 192], - [6, 192], - [6, 192], - [6, 192], - [6, 192], - [6, 192], - [6, 192], - [6, 192], - [6, 1664], - [6, 1664], - [6, 1664], - [6, 1664], - [6, 1664], - [6, 1664], - [6, 1664], - [6, 1664], - [8, 448], - [8, 448], - [8, 512], - [8, 512], - [9, 704], - [9, 768], - [8, 640], - [8, 640], - [8, 576], - [8, 576], - [9, 832], - [9, 896], - [9, 960], - [9, 1024], - [9, 1088], - [9, 1152], - [9, 1216], - [9, 1280], - [9, 1344], - [9, 1408], - [7, 256], - [7, 256], - [7, 256], - [7, 256], - [4, 2], - [4, 2], - [4, 2], - [4, 2], - [4, 2], - [4, 2], - [4, 2], - [4, 2], - [4, 2], - [4, 2], - [4, 2], - [4, 2], - [4, 2], - [4, 2], - [4, 2], - [4, 2], - [4, 2], - [4, 2], - [4, 2], - [4, 2], - [4, 2], - [4, 2], - [4, 2], - [4, 2], - [4, 2], - [4, 2], - [4, 2], - [4, 2], - [4, 2], - [4, 2], - [4, 2], - [4, 2], - [4, 3], - [4, 3], - [4, 3], - [4, 3], - [4, 3], - [4, 3], - [4, 3], - [4, 3], - [4, 3], - [4, 3], - [4, 3], - [4, 3], - [4, 3], - [4, 3], - [4, 3], - [4, 3], - [4, 3], - [4, 3], - [4, 3], - [4, 3], - [4, 3], - [4, 3], - [4, 3], - [4, 3], - [4, 3], - [4, 3], - [4, 3], - [4, 3], - [4, 3], - [4, 3], - [4, 3], - [4, 3], - [5, 128], - [5, 128], - [5, 128], - [5, 128], - [5, 128], - [5, 128], - [5, 128], - [5, 128], - [5, 128], - [5, 128], - [5, 128], - [5, 128], - [5, 128], - [5, 128], - [5, 128], - [5, 128], - [5, 8], - [5, 8], - [5, 8], - [5, 8], - [5, 8], - [5, 8], - [5, 8], - [5, 8], - [5, 8], - [5, 8], - [5, 8], - [5, 8], - [5, 8], - [5, 8], - [5, 8], - [5, 8], - [5, 9], - [5, 9], - [5, 9], - [5, 9], - [5, 9], - [5, 9], - [5, 9], - [5, 9], - [5, 9], - [5, 9], - [5, 9], - [5, 9], - [5, 9], - [5, 9], - [5, 9], - [5, 9], - [6, 16], - [6, 16], - [6, 16], - [6, 16], - [6, 16], - [6, 16], - [6, 16], - [6, 16], - [6, 17], - [6, 17], - [6, 17], - [6, 17], - [6, 17], - [6, 17], - [6, 17], - [6, 17], - [4, 4], - [4, 4], - [4, 4], - [4, 4], - [4, 4], - [4, 4], - [4, 4], - [4, 4], - [4, 4], - [4, 4], - [4, 4], - [4, 4], - [4, 4], - [4, 4], - [4, 4], - [4, 4], - [4, 4], - [4, 4], - [4, 4], - [4, 4], - [4, 4], - [4, 4], - [4, 4], - [4, 4], - [4, 4], - [4, 4], - [4, 4], - [4, 4], - [4, 4], - [4, 4], - [4, 4], - [4, 4], - [4, 5], - [4, 5], - [4, 5], - [4, 5], - [4, 5], - [4, 5], - [4, 5], - [4, 5], - [4, 5], - [4, 5], - [4, 5], - [4, 5], - [4, 5], - [4, 5], - [4, 5], - [4, 5], - [4, 5], - [4, 5], - [4, 5], - [4, 5], - [4, 5], - [4, 5], - [4, 5], - [4, 5], - [4, 5], - [4, 5], - [4, 5], - [4, 5], - [4, 5], - [4, 5], - [4, 5], - [4, 5], - [6, 14], - [6, 14], - [6, 14], - [6, 14], - [6, 14], - [6, 14], - [6, 14], - [6, 14], - [6, 15], - [6, 15], - [6, 15], - [6, 15], - [6, 15], - [6, 15], - [6, 15], - [6, 15], - [5, 64], - [5, 64], - [5, 64], - [5, 64], - [5, 64], - [5, 64], - [5, 64], - [5, 64], - [5, 64], - [5, 64], - [5, 64], - [5, 64], - [5, 64], - [5, 64], - [5, 64], - [5, 64], - [4, 6], - [4, 6], - [4, 6], - [4, 6], - [4, 6], - [4, 6], - [4, 6], - [4, 6], - [4, 6], - [4, 6], - [4, 6], - [4, 6], - [4, 6], - [4, 6], - [4, 6], - [4, 6], - [4, 6], - [4, 6], - [4, 6], - [4, 6], - [4, 6], - [4, 6], - [4, 6], - [4, 6], - [4, 6], - [4, 6], - [4, 6], - [4, 6], - [4, 6], - [4, 6], - [4, 6], - [4, 6], - [4, 7], - [4, 7], - [4, 7], - [4, 7], - [4, 7], - [4, 7], - [4, 7], - [4, 7], - [4, 7], - [4, 7], - [4, 7], - [4, 7], - [4, 7], - [4, 7], - [4, 7], - [4, 7], - [4, 7], - [4, 7], - [4, 7], - [4, 7], - [4, 7], - [4, 7], - [4, 7], - [4, 7], - [4, 7], - [4, 7], - [4, 7], - [4, 7], - [4, 7], - [4, 7], - [4, 7], - [4, 7], - ], - c = [ - [-1, -1], - [-1, -1], - [12, -2], - [12, -2], - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [11, 1792], - [11, 1792], - [11, 1792], - [11, 1792], - [12, 1984], - [12, 1984], - [12, 2048], - [12, 2048], - [12, 2112], - [12, 2112], - [12, 2176], - [12, 2176], - [12, 2240], - [12, 2240], - [12, 2304], - [12, 2304], - [11, 1856], - [11, 1856], - [11, 1856], - [11, 1856], - [11, 1920], - [11, 1920], - [11, 1920], - [11, 1920], - [12, 2368], - [12, 2368], - [12, 2432], - [12, 2432], - [12, 2496], - [12, 2496], - [12, 2560], - [12, 2560], - [10, 18], - [10, 18], - [10, 18], - [10, 18], - [10, 18], - [10, 18], - [10, 18], - [10, 18], - [12, 52], - [12, 52], - [13, 640], - [13, 704], - [13, 768], - [13, 832], - [12, 55], - [12, 55], - [12, 56], - [12, 56], - [13, 1280], - [13, 1344], - [13, 1408], - [13, 1472], - [12, 59], - [12, 59], - [12, 60], - [12, 60], - [13, 1536], - [13, 1600], - [11, 24], - [11, 24], - [11, 24], - [11, 24], - [11, 25], - [11, 25], - [11, 25], - [11, 25], - [13, 1664], - [13, 1728], - [12, 320], - [12, 320], - [12, 384], - [12, 384], - [12, 448], - [12, 448], - [13, 512], - [13, 576], - [12, 53], - [12, 53], - [12, 54], - [12, 54], - [13, 896], - [13, 960], - [13, 1024], - [13, 1088], - [13, 1152], - [13, 1216], - [10, 64], - [10, 64], - [10, 64], - [10, 64], - [10, 64], - [10, 64], - [10, 64], - [10, 64], - ], - l = [ - [8, 13], - [8, 13], - [8, 13], - [8, 13], - [8, 13], - [8, 13], - [8, 13], - [8, 13], - [8, 13], - [8, 13], - [8, 13], - [8, 13], - [8, 13], - [8, 13], - [8, 13], - [8, 13], - [11, 23], - [11, 23], - [12, 50], - [12, 51], - [12, 44], - [12, 45], - [12, 46], - [12, 47], - [12, 57], - [12, 58], - [12, 61], - [12, 256], - [10, 16], - [10, 16], - [10, 16], - [10, 16], - [10, 17], - [10, 17], - [10, 17], - [10, 17], - [12, 48], - [12, 49], - [12, 62], - [12, 63], - [12, 30], - [12, 31], - [12, 32], - [12, 33], - [12, 40], - [12, 41], - [11, 22], - [11, 22], - [8, 14], - [8, 14], - [8, 14], - [8, 14], - [8, 14], - [8, 14], - [8, 14], - [8, 14], - [8, 14], - [8, 14], - [8, 14], - [8, 14], - [8, 14], - [8, 14], - [8, 14], - [8, 14], - [7, 10], - [7, 10], - [7, 10], - [7, 10], - [7, 10], - [7, 10], - [7, 10], - [7, 10], - [7, 10], - [7, 10], - [7, 10], - [7, 10], - [7, 10], - [7, 10], - [7, 10], - [7, 10], - [7, 10], - [7, 10], - [7, 10], - [7, 10], - [7, 10], - [7, 10], - [7, 10], - [7, 10], - [7, 10], - [7, 10], - [7, 10], - [7, 10], - [7, 10], - [7, 10], - [7, 10], - [7, 10], - [7, 11], - [7, 11], - [7, 11], - [7, 11], - [7, 11], - [7, 11], - [7, 11], - [7, 11], - [7, 11], - [7, 11], - [7, 11], - [7, 11], - [7, 11], - [7, 11], - [7, 11], - [7, 11], - [7, 11], - [7, 11], - [7, 11], - [7, 11], - [7, 11], - [7, 11], - [7, 11], - [7, 11], - [7, 11], - [7, 11], - [7, 11], - [7, 11], - [7, 11], - [7, 11], - [7, 11], - [7, 11], - [9, 15], - [9, 15], - [9, 15], - [9, 15], - [9, 15], - [9, 15], - [9, 15], - [9, 15], - [12, 128], - [12, 192], - [12, 26], - [12, 27], - [12, 28], - [12, 29], - [11, 19], - [11, 19], - [11, 20], - [11, 20], - [12, 34], - [12, 35], - [12, 36], - [12, 37], - [12, 38], - [12, 39], - [11, 21], - [11, 21], - [12, 42], - [12, 43], - [10, 0], - [10, 0], - [10, 0], - [10, 0], - [7, 12], - [7, 12], - [7, 12], - [7, 12], - [7, 12], - [7, 12], - [7, 12], - [7, 12], - [7, 12], - [7, 12], - [7, 12], - [7, 12], - [7, 12], - [7, 12], - [7, 12], - [7, 12], - [7, 12], - [7, 12], - [7, 12], - [7, 12], - [7, 12], - [7, 12], - [7, 12], - [7, 12], - [7, 12], - [7, 12], - [7, 12], - [7, 12], - [7, 12], - [7, 12], - [7, 12], - [7, 12], - ], - h = [ - [-1, -1], - [-1, -1], - [-1, -1], - [-1, -1], - [6, 9], - [6, 8], - [5, 7], - [5, 7], - [4, 6], - [4, 6], - [4, 6], - [4, 6], - [4, 5], - [4, 5], - [4, 5], - [4, 5], - [3, 1], - [3, 1], - [3, 1], - [3, 1], - [3, 1], - [3, 1], - [3, 1], - [3, 1], - [3, 4], - [3, 4], - [3, 4], - [3, 4], - [3, 4], - [3, 4], - [3, 4], - [3, 4], - [2, 3], - [2, 3], - [2, 3], - [2, 3], - [2, 3], - [2, 3], - [2, 3], - [2, 3], - [2, 3], - [2, 3], - [2, 3], - [2, 3], - [2, 3], - [2, 3], - [2, 3], - [2, 3], - [2, 2], - [2, 2], - [2, 2], - [2, 2], - [2, 2], - [2, 2], - [2, 2], - [2, 2], - [2, 2], - [2, 2], - [2, 2], - [2, 2], - [2, 2], - [2, 2], - [2, 2], - [2, 2], - ]; - t.CCITTFaxDecoder = class CCITTFaxDecoder { - constructor(e, t = {}) { - if (!e || "function" != typeof e.next) - throw new Error( - 'CCITTFaxDecoder - invalid "source" parameter.', - ); - this.source = e; - this.eof = !1; - this.encoding = t.K || 0; - this.eoline = t.EndOfLine || !1; - this.byteAlign = t.EncodedByteAlign || !1; - this.columns = t.Columns || 1728; - this.rows = t.Rows || 0; - this.eoblock = t.EndOfBlock ?? !0; - this.black = t.BlackIs1 || !1; - this.codingLine = new Uint32Array(this.columns + 1); - this.refLine = new Uint32Array(this.columns + 2); - this.codingLine[0] = this.columns; - this.codingPos = 0; - this.row = 0; - this.nextLine2D = this.encoding < 0; - this.inputBits = 0; - this.inputBuf = 0; - this.outputBits = 0; - this.rowsDone = !1; - let a; - for (; 0 === (a = this._lookBits(12)); ) this._eatBits(1); - 1 === a && this._eatBits(12); - if (this.encoding > 0) { - this.nextLine2D = !this._lookBits(1); - this._eatBits(1); - } - } - readNextChar() { - if (this.eof) return -1; - const e = this.refLine, - t = this.codingLine, - a = this.columns; - let i, s, o, c, l; - if (0 === this.outputBits) { - this.rowsDone && (this.eof = !0); - if (this.eof) return -1; - this.err = !1; - let o, l, h; - if (this.nextLine2D) { - for (c = 0; t[c] < a; ++c) e[c] = t[c]; - e[c++] = a; - e[c] = a; - t[0] = 0; - this.codingPos = 0; - i = 0; - s = 0; - for (; t[this.codingPos] < a; ) { - o = this._getTwoDimCode(); - switch (o) { - case 0: - this._addPixels(e[i + 1], s); - e[i + 1] < a && (i += 2); - break; - case 1: - o = l = 0; - if (s) { - do { - o += h = this._getBlackCode(); - } while (h >= 64); - do { - l += h = this._getWhiteCode(); - } while (h >= 64); - } else { - do { - o += h = this._getWhiteCode(); - } while (h >= 64); - do { - l += h = this._getBlackCode(); - } while (h >= 64); - } - this._addPixels(t[this.codingPos] + o, s); - t[this.codingPos] < a && - this._addPixels(t[this.codingPos] + l, 1 ^ s); - for (; e[i] <= t[this.codingPos] && e[i] < a; ) i += 2; - break; - case 7: - this._addPixels(e[i] + 3, s); - s ^= 1; - if (t[this.codingPos] < a) { - ++i; - for (; e[i] <= t[this.codingPos] && e[i] < a; ) - i += 2; - } - break; - case 5: - this._addPixels(e[i] + 2, s); - s ^= 1; - if (t[this.codingPos] < a) { - ++i; - for (; e[i] <= t[this.codingPos] && e[i] < a; ) - i += 2; - } - break; - case 3: - this._addPixels(e[i] + 1, s); - s ^= 1; - if (t[this.codingPos] < a) { - ++i; - for (; e[i] <= t[this.codingPos] && e[i] < a; ) - i += 2; - } - break; - case 2: - this._addPixels(e[i], s); - s ^= 1; - if (t[this.codingPos] < a) { - ++i; - for (; e[i] <= t[this.codingPos] && e[i] < a; ) - i += 2; - } - break; - case 8: - this._addPixelsNeg(e[i] - 3, s); - s ^= 1; - if (t[this.codingPos] < a) { - i > 0 ? --i : ++i; - for (; e[i] <= t[this.codingPos] && e[i] < a; ) - i += 2; - } - break; - case 6: - this._addPixelsNeg(e[i] - 2, s); - s ^= 1; - if (t[this.codingPos] < a) { - i > 0 ? --i : ++i; - for (; e[i] <= t[this.codingPos] && e[i] < a; ) - i += 2; - } - break; - case 4: - this._addPixelsNeg(e[i] - 1, s); - s ^= 1; - if (t[this.codingPos] < a) { - i > 0 ? --i : ++i; - for (; e[i] <= t[this.codingPos] && e[i] < a; ) - i += 2; - } - break; - case n: - this._addPixels(a, 0); - this.eof = !0; - break; - default: - (0, r.info)("bad 2d code"); - this._addPixels(a, 0); - this.err = !0; - } - } - } else { - t[0] = 0; - this.codingPos = 0; - s = 0; - for (; t[this.codingPos] < a; ) { - o = 0; - if (s) - do { - o += h = this._getBlackCode(); - } while (h >= 64); - else - do { - o += h = this._getWhiteCode(); - } while (h >= 64); - this._addPixels(t[this.codingPos] + o, s); - s ^= 1; - } - } - let u = !1; - this.byteAlign && (this.inputBits &= -8); - if (this.eoblock || this.row !== this.rows - 1) { - o = this._lookBits(12); - if (this.eoline) - for (; o !== n && 1 !== o; ) { - this._eatBits(1); - o = this._lookBits(12); - } - else - for (; 0 === o; ) { - this._eatBits(1); - o = this._lookBits(12); - } - if (1 === o) { - this._eatBits(12); - u = !0; - } else o === n && (this.eof = !0); - } else this.rowsDone = !0; - if (!this.eof && this.encoding > 0 && !this.rowsDone) { - this.nextLine2D = !this._lookBits(1); - this._eatBits(1); - } - if (this.eoblock && u && this.byteAlign) { - o = this._lookBits(12); - if (1 === o) { - this._eatBits(12); - if (this.encoding > 0) { - this._lookBits(1); - this._eatBits(1); - } - if (this.encoding >= 0) - for (c = 0; c < 4; ++c) { - o = this._lookBits(12); - 1 !== o && (0, r.info)("bad rtc code: " + o); - this._eatBits(12); - if (this.encoding > 0) { - this._lookBits(1); - this._eatBits(1); - } - } - this.eof = !0; - } - } else if (this.err && this.eoline) { - for (;;) { - o = this._lookBits(13); - if (o === n) { - this.eof = !0; - return -1; - } - if (o >> 1 == 1) break; - this._eatBits(1); - } - this._eatBits(12); - if (this.encoding > 0) { - this._eatBits(1); - this.nextLine2D = !(1 & o); - } - } - this.outputBits = - t[0] > 0 ? t[(this.codingPos = 0)] : t[(this.codingPos = 1)]; - this.row++; - } - if (this.outputBits >= 8) { - l = 1 & this.codingPos ? 0 : 255; - this.outputBits -= 8; - if (0 === this.outputBits && t[this.codingPos] < a) { - this.codingPos++; - this.outputBits = t[this.codingPos] - t[this.codingPos - 1]; - } - } else { - o = 8; - l = 0; - do { - if ("number" != typeof this.outputBits) - throw new r.FormatError( - 'Invalid /CCITTFaxDecode data, "outputBits" must be a number.', - ); - if (this.outputBits > o) { - l <<= o; - 1 & this.codingPos || (l |= 255 >> (8 - o)); - this.outputBits -= o; - o = 0; - } else { - l <<= this.outputBits; - 1 & this.codingPos || (l |= 255 >> (8 - this.outputBits)); - o -= this.outputBits; - this.outputBits = 0; - if (t[this.codingPos] < a) { - this.codingPos++; - this.outputBits = - t[this.codingPos] - t[this.codingPos - 1]; - } else if (o > 0) { - l <<= o; - o = 0; - } - } - } while (o); - } - this.black && (l ^= 255); - return l; - } - _addPixels(e, t) { - const a = this.codingLine; - let n = this.codingPos; - if (e > a[n]) { - if (e > this.columns) { - (0, r.info)("row is wrong length"); - this.err = !0; - e = this.columns; - } - (1 & n) ^ t && ++n; - a[n] = e; - } - this.codingPos = n; - } - _addPixelsNeg(e, t) { - const a = this.codingLine; - let n = this.codingPos; - if (e > a[n]) { - if (e > this.columns) { - (0, r.info)("row is wrong length"); - this.err = !0; - e = this.columns; - } - (1 & n) ^ t && ++n; - a[n] = e; - } else if (e < a[n]) { - if (e < 0) { - (0, r.info)("invalid code"); - this.err = !0; - e = 0; - } - for (; n > 0 && e < a[n - 1]; ) --n; - a[n] = e; - } - this.codingPos = n; - } - _findTableCode(e, t, a, r) { - const i = r || 0; - for (let r = e; r <= t; ++r) { - let e = this._lookBits(r); - if (e === n) return [!0, 1, !1]; - r < t && (e <<= t - r); - if (!i || e >= i) { - const t = a[e - i]; - if (t[0] === r) { - this._eatBits(r); - return [!0, t[1], !0]; - } - } - } - return [!1, 0, !1]; - } - _getTwoDimCode() { - let e, - t = 0; - if (this.eoblock) { - t = this._lookBits(7); - e = i[t]; - if (e?.[0] > 0) { - this._eatBits(e[0]); - return e[1]; - } - } else { - const e = this._findTableCode(1, 7, i); - if (e[0] && e[2]) return e[1]; - } - (0, r.info)("Bad two dim code"); - return n; - } - _getWhiteCode() { - let e, - t = 0; - if (this.eoblock) { - t = this._lookBits(12); - if (t === n) return 1; - e = t >> 5 == 0 ? s[t] : o[t >> 3]; - if (e[0] > 0) { - this._eatBits(e[0]); - return e[1]; - } - } else { - let e = this._findTableCode(1, 9, o); - if (e[0]) return e[1]; - e = this._findTableCode(11, 12, s); - if (e[0]) return e[1]; - } - (0, r.info)("bad white code"); - this._eatBits(1); - return 1; - } - _getBlackCode() { - let e, t; - if (this.eoblock) { - e = this._lookBits(13); - if (e === n) return 1; - t = - e >> 7 == 0 - ? c[e] - : e >> 9 == 0 && e >> 7 != 0 - ? l[(e >> 1) - 64] - : h[e >> 7]; - if (t[0] > 0) { - this._eatBits(t[0]); - return t[1]; - } - } else { - let e = this._findTableCode(2, 6, h); - if (e[0]) return e[1]; - e = this._findTableCode(7, 12, l, 64); - if (e[0]) return e[1]; - e = this._findTableCode(10, 13, c); - if (e[0]) return e[1]; - } - (0, r.info)("bad black code"); - this._eatBits(1); - return 1; - } - _lookBits(e) { - let t; - for (; this.inputBits < e; ) { - if (-1 === (t = this.source.next())) - return 0 === this.inputBits - ? n - : (this.inputBuf << (e - this.inputBits)) & - (65535 >> (16 - e)); - this.inputBuf = (this.inputBuf << 8) | t; - this.inputBits += 8; - } - return ( - (this.inputBuf >> (this.inputBits - e)) & (65535 >> (16 - e)) - ); - } - _eatBits(e) { - (this.inputBits -= e) < 0 && (this.inputBits = 0); - } - }; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.FlateStream = void 0; - var r = a(18), - n = a(2); - const i = new Int32Array([ - 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15, - ]), - s = new Int32Array([ - 3, 4, 5, 6, 7, 8, 9, 10, 65547, 65549, 65551, 65553, 131091, - 131095, 131099, 131103, 196643, 196651, 196659, 196667, 262211, - 262227, 262243, 262259, 327811, 327843, 327875, 327907, 258, 258, - 258, - ]), - o = new Int32Array([ - 1, 2, 3, 4, 65541, 65543, 131081, 131085, 196625, 196633, 262177, - 262193, 327745, 327777, 393345, 393409, 459009, 459137, 524801, - 525057, 590849, 591361, 657409, 658433, 724993, 727041, 794625, - 798721, 868353, 876545, - ]), - c = [ - new Int32Array([ - 459008, 524368, 524304, 524568, 459024, 524400, 524336, 590016, - 459016, 524384, 524320, 589984, 524288, 524416, 524352, 590048, - 459012, 524376, 524312, 589968, 459028, 524408, 524344, 590032, - 459020, 524392, 524328, 59e4, 524296, 524424, 524360, 590064, - 459010, 524372, 524308, 524572, 459026, 524404, 524340, 590024, - 459018, 524388, 524324, 589992, 524292, 524420, 524356, 590056, - 459014, 524380, 524316, 589976, 459030, 524412, 524348, 590040, - 459022, 524396, 524332, 590008, 524300, 524428, 524364, 590072, - 459009, 524370, 524306, 524570, 459025, 524402, 524338, 590020, - 459017, 524386, 524322, 589988, 524290, 524418, 524354, 590052, - 459013, 524378, 524314, 589972, 459029, 524410, 524346, 590036, - 459021, 524394, 524330, 590004, 524298, 524426, 524362, 590068, - 459011, 524374, 524310, 524574, 459027, 524406, 524342, 590028, - 459019, 524390, 524326, 589996, 524294, 524422, 524358, 590060, - 459015, 524382, 524318, 589980, 459031, 524414, 524350, 590044, - 459023, 524398, 524334, 590012, 524302, 524430, 524366, 590076, - 459008, 524369, 524305, 524569, 459024, 524401, 524337, 590018, - 459016, 524385, 524321, 589986, 524289, 524417, 524353, 590050, - 459012, 524377, 524313, 589970, 459028, 524409, 524345, 590034, - 459020, 524393, 524329, 590002, 524297, 524425, 524361, 590066, - 459010, 524373, 524309, 524573, 459026, 524405, 524341, 590026, - 459018, 524389, 524325, 589994, 524293, 524421, 524357, 590058, - 459014, 524381, 524317, 589978, 459030, 524413, 524349, 590042, - 459022, 524397, 524333, 590010, 524301, 524429, 524365, 590074, - 459009, 524371, 524307, 524571, 459025, 524403, 524339, 590022, - 459017, 524387, 524323, 589990, 524291, 524419, 524355, 590054, - 459013, 524379, 524315, 589974, 459029, 524411, 524347, 590038, - 459021, 524395, 524331, 590006, 524299, 524427, 524363, 590070, - 459011, 524375, 524311, 524575, 459027, 524407, 524343, 590030, - 459019, 524391, 524327, 589998, 524295, 524423, 524359, 590062, - 459015, 524383, 524319, 589982, 459031, 524415, 524351, 590046, - 459023, 524399, 524335, 590014, 524303, 524431, 524367, 590078, - 459008, 524368, 524304, 524568, 459024, 524400, 524336, 590017, - 459016, 524384, 524320, 589985, 524288, 524416, 524352, 590049, - 459012, 524376, 524312, 589969, 459028, 524408, 524344, 590033, - 459020, 524392, 524328, 590001, 524296, 524424, 524360, 590065, - 459010, 524372, 524308, 524572, 459026, 524404, 524340, 590025, - 459018, 524388, 524324, 589993, 524292, 524420, 524356, 590057, - 459014, 524380, 524316, 589977, 459030, 524412, 524348, 590041, - 459022, 524396, 524332, 590009, 524300, 524428, 524364, 590073, - 459009, 524370, 524306, 524570, 459025, 524402, 524338, 590021, - 459017, 524386, 524322, 589989, 524290, 524418, 524354, 590053, - 459013, 524378, 524314, 589973, 459029, 524410, 524346, 590037, - 459021, 524394, 524330, 590005, 524298, 524426, 524362, 590069, - 459011, 524374, 524310, 524574, 459027, 524406, 524342, 590029, - 459019, 524390, 524326, 589997, 524294, 524422, 524358, 590061, - 459015, 524382, 524318, 589981, 459031, 524414, 524350, 590045, - 459023, 524398, 524334, 590013, 524302, 524430, 524366, 590077, - 459008, 524369, 524305, 524569, 459024, 524401, 524337, 590019, - 459016, 524385, 524321, 589987, 524289, 524417, 524353, 590051, - 459012, 524377, 524313, 589971, 459028, 524409, 524345, 590035, - 459020, 524393, 524329, 590003, 524297, 524425, 524361, 590067, - 459010, 524373, 524309, 524573, 459026, 524405, 524341, 590027, - 459018, 524389, 524325, 589995, 524293, 524421, 524357, 590059, - 459014, 524381, 524317, 589979, 459030, 524413, 524349, 590043, - 459022, 524397, 524333, 590011, 524301, 524429, 524365, 590075, - 459009, 524371, 524307, 524571, 459025, 524403, 524339, 590023, - 459017, 524387, 524323, 589991, 524291, 524419, 524355, 590055, - 459013, 524379, 524315, 589975, 459029, 524411, 524347, 590039, - 459021, 524395, 524331, 590007, 524299, 524427, 524363, 590071, - 459011, 524375, 524311, 524575, 459027, 524407, 524343, 590031, - 459019, 524391, 524327, 589999, 524295, 524423, 524359, 590063, - 459015, 524383, 524319, 589983, 459031, 524415, 524351, 590047, - 459023, 524399, 524335, 590015, 524303, 524431, 524367, 590079, - ]), - 9, - ], - l = [ - new Int32Array([ - 327680, 327696, 327688, 327704, 327684, 327700, 327692, 327708, - 327682, 327698, 327690, 327706, 327686, 327702, 327694, 0, - 327681, 327697, 327689, 327705, 327685, 327701, 327693, 327709, - 327683, 327699, 327691, 327707, 327687, 327703, 327695, 0, - ]), - 5, - ]; - class FlateStream extends r.DecodeStream { - constructor(e, t) { - super(t); - this.str = e; - this.dict = e.dict; - const a = e.getByte(), - r = e.getByte(); - if (-1 === a || -1 === r) - throw new n.FormatError( - `Invalid header in flate stream: ${a}, ${r}`, - ); - if (8 != (15 & a)) - throw new n.FormatError( - `Unknown compression method in flate stream: ${a}, ${r}`, - ); - if (((a << 8) + r) % 31 != 0) - throw new n.FormatError( - `Bad FCHECK in flate stream: ${a}, ${r}`, - ); - if (32 & r) - throw new n.FormatError( - `FDICT bit set in flate stream: ${a}, ${r}`, - ); - this.codeSize = 0; - this.codeBuf = 0; - } - getBits(e) { - const t = this.str; - let a, - r = this.codeSize, - i = this.codeBuf; - for (; r < e; ) { - if (-1 === (a = t.getByte())) - throw new n.FormatError("Bad encoding in flate stream"); - i |= a << r; - r += 8; - } - a = i & ((1 << e) - 1); - this.codeBuf = i >> e; - this.codeSize = r -= e; - return a; - } - getCode(e) { - const t = this.str, - a = e[0], - r = e[1]; - let i, - s = this.codeSize, - o = this.codeBuf; - for (; s < r && -1 !== (i = t.getByte()); ) { - o |= i << s; - s += 8; - } - const c = a[o & ((1 << r) - 1)], - l = c >> 16, - h = 65535 & c; - if (l < 1 || s < l) - throw new n.FormatError("Bad encoding in flate stream"); - this.codeBuf = o >> l; - this.codeSize = s - l; - return h; - } - generateHuffmanTable(e) { - const t = e.length; - let a, - r = 0; - for (a = 0; a < t; ++a) e[a] > r && (r = e[a]); - const n = 1 << r, - i = new Int32Array(n); - for (let s = 1, o = 0, c = 2; s <= r; ++s, o <<= 1, c <<= 1) - for (let r = 0; r < t; ++r) - if (e[r] === s) { - let e = 0, - t = o; - for (a = 0; a < s; ++a) { - e = (e << 1) | (1 & t); - t >>= 1; - } - for (a = e; a < n; a += c) i[a] = (s << 16) | r; - ++o; - } - return [i, r]; - } - readBlock() { - let e, t; - const a = this.str; - let r, - h, - u = this.getBits(3); - 1 & u && (this.eof = !0); - u >>= 1; - if (0 === u) { - let t; - if (-1 === (t = a.getByte())) - throw new n.FormatError("Bad block header in flate stream"); - let r = t; - if (-1 === (t = a.getByte())) - throw new n.FormatError("Bad block header in flate stream"); - r |= t << 8; - if (-1 === (t = a.getByte())) - throw new n.FormatError("Bad block header in flate stream"); - let i = t; - if (-1 === (t = a.getByte())) - throw new n.FormatError("Bad block header in flate stream"); - i |= t << 8; - if (i !== (65535 & ~r) && (0 !== r || 0 !== i)) - throw new n.FormatError( - "Bad uncompressed block length in flate stream", - ); - this.codeBuf = 0; - this.codeSize = 0; - const s = this.bufferLength, - o = s + r; - e = this.ensureBuffer(o); - this.bufferLength = o; - if (0 === r) -1 === a.peekByte() && (this.eof = !0); - else { - const t = a.getBytes(r); - e.set(t, s); - t.length < r && (this.eof = !0); - } - return; - } - if (1 === u) { - r = c; - h = l; - } else { - if (2 !== u) - throw new n.FormatError("Unknown block type in flate stream"); - { - const e = this.getBits(5) + 257, - a = this.getBits(5) + 1, - n = this.getBits(4) + 4, - s = new Uint8Array(i.length); - let o; - for (o = 0; o < n; ++o) s[i[o]] = this.getBits(3); - const c = this.generateHuffmanTable(s); - t = 0; - o = 0; - const l = e + a, - u = new Uint8Array(l); - let d, f, g; - for (; o < l; ) { - const e = this.getCode(c); - if (16 === e) { - d = 2; - f = 3; - g = t; - } else if (17 === e) { - d = 3; - f = 3; - g = t = 0; - } else { - if (18 !== e) { - u[o++] = t = e; - continue; - } - d = 7; - f = 11; - g = t = 0; - } - let a = this.getBits(d) + f; - for (; a-- > 0; ) u[o++] = g; - } - r = this.generateHuffmanTable(u.subarray(0, e)); - h = this.generateHuffmanTable(u.subarray(e, l)); - } - } - e = this.buffer; - let d = e ? e.length : 0, - f = this.bufferLength; - for (;;) { - let a = this.getCode(r); - if (a < 256) { - if (f + 1 >= d) { - e = this.ensureBuffer(f + 1); - d = e.length; - } - e[f++] = a; - continue; - } - if (256 === a) { - this.bufferLength = f; - return; - } - a -= 257; - a = s[a]; - let n = a >> 16; - n > 0 && (n = this.getBits(n)); - t = (65535 & a) + n; - a = this.getCode(h); - a = o[a]; - n = a >> 16; - n > 0 && (n = this.getBits(n)); - const i = (65535 & a) + n; - if (f + t >= d) { - e = this.ensureBuffer(f + t); - d = e.length; - } - for (let a = 0; a < t; ++a, ++f) e[f] = e[f - i]; - } - } - } - t.FlateStream = FlateStream; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.Jbig2Stream = void 0; - var r = a(5), - n = a(18), - i = a(4), - s = a(24), - o = a(2); - class Jbig2Stream extends n.DecodeStream { - constructor(e, t, a) { - super(t); - this.stream = e; - this.dict = e.dict; - this.maybeLength = t; - this.params = a; - } - get bytes() { - return (0, o.shadow)( - this, - "bytes", - this.stream.getBytes(this.maybeLength), - ); - } - ensureBuffer(e) {} - readBlock() { - if (this.eof) return; - const e = new s.Jbig2Image(), - t = []; - if (this.params instanceof i.Dict) { - const e = this.params.get("JBIG2Globals"); - if (e instanceof r.BaseStream) { - const a = e.getBytes(); - t.push({ data: a, start: 0, end: a.length }); - } - } - t.push({ data: this.bytes, start: 0, end: this.bytes.length }); - const a = e.parseChunks(t), - n = a.length; - for (let e = 0; e < n; e++) a[e] ^= 255; - this.buffer = a; - this.bufferLength = n; - this.eof = !0; - } - } - t.Jbig2Stream = Jbig2Stream; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.Jbig2Image = void 0; - var r = a(2), - n = a(3), - i = a(25), - s = a(21); - class Jbig2Error extends r.BaseException { - constructor(e) { - super(`JBIG2 error: ${e}`, "Jbig2Error"); - } - } - class ContextCache { - getContexts(e) { - return e in this ? this[e] : (this[e] = new Int8Array(65536)); - } - } - class DecodingContext { - constructor(e, t, a) { - this.data = e; - this.start = t; - this.end = a; - } - get decoder() { - const e = new i.ArithmeticDecoder( - this.data, - this.start, - this.end, - ); - return (0, r.shadow)(this, "decoder", e); - } - get contextCache() { - const e = new ContextCache(); - return (0, r.shadow)(this, "contextCache", e); - } - } - const o = 2 ** 31 - 1, - c = -(2 ** 31); - function decodeInteger(e, t, a) { - const r = e.getContexts(t); - let n = 1; - function readBits(e) { - let t = 0; - for (let i = 0; i < e; i++) { - const e = a.readBit(r, n); - n = n < 256 ? (n << 1) | e : (511 & ((n << 1) | e)) | 256; - t = (t << 1) | e; - } - return t >>> 0; - } - const i = readBits(1), - s = readBits(1) - ? readBits(1) - ? readBits(1) - ? readBits(1) - ? readBits(1) - ? readBits(32) + 4436 - : readBits(12) + 340 - : readBits(8) + 84 - : readBits(6) + 20 - : readBits(4) + 4 - : readBits(2); - let l; - 0 === i ? (l = s) : s > 0 && (l = -s); - return l >= c && l <= o ? l : null; - } - function decodeIAID(e, t, a) { - const r = e.getContexts("IAID"); - let n = 1; - for (let e = 0; e < a; e++) { - n = (n << 1) | t.readBit(r, n); - } - return a < 31 ? n & ((1 << a) - 1) : 2147483647 & n; - } - const l = [ - "SymbolDictionary", - null, - null, - null, - "IntermediateTextRegion", - null, - "ImmediateTextRegion", - "ImmediateLosslessTextRegion", - null, - null, - null, - null, - null, - null, - null, - null, - "PatternDictionary", - null, - null, - null, - "IntermediateHalftoneRegion", - null, - "ImmediateHalftoneRegion", - "ImmediateLosslessHalftoneRegion", - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - "IntermediateGenericRegion", - null, - "ImmediateGenericRegion", - "ImmediateLosslessGenericRegion", - "IntermediateGenericRefinementRegion", - null, - "ImmediateGenericRefinementRegion", - "ImmediateLosslessGenericRefinementRegion", - null, - null, - null, - null, - "PageInformation", - "EndOfPage", - "EndOfStripe", - "EndOfFile", - "Profiles", - "Tables", - null, - null, - null, - null, - null, - null, - null, - null, - "Extension", - ], - h = [ - [ - { x: -1, y: -2 }, - { x: 0, y: -2 }, - { x: 1, y: -2 }, - { x: -2, y: -1 }, - { x: -1, y: -1 }, - { x: 0, y: -1 }, - { x: 1, y: -1 }, - { x: 2, y: -1 }, - { x: -4, y: 0 }, - { x: -3, y: 0 }, - { x: -2, y: 0 }, - { x: -1, y: 0 }, - ], - [ - { x: -1, y: -2 }, - { x: 0, y: -2 }, - { x: 1, y: -2 }, - { x: 2, y: -2 }, - { x: -2, y: -1 }, - { x: -1, y: -1 }, - { x: 0, y: -1 }, - { x: 1, y: -1 }, - { x: 2, y: -1 }, - { x: -3, y: 0 }, - { x: -2, y: 0 }, - { x: -1, y: 0 }, - ], - [ - { x: -1, y: -2 }, - { x: 0, y: -2 }, - { x: 1, y: -2 }, - { x: -2, y: -1 }, - { x: -1, y: -1 }, - { x: 0, y: -1 }, - { x: 1, y: -1 }, - { x: -2, y: 0 }, - { x: -1, y: 0 }, - ], - [ - { x: -3, y: -1 }, - { x: -2, y: -1 }, - { x: -1, y: -1 }, - { x: 0, y: -1 }, - { x: 1, y: -1 }, - { x: -4, y: 0 }, - { x: -3, y: 0 }, - { x: -2, y: 0 }, - { x: -1, y: 0 }, - ], - ], - u = [ - { - coding: [ - { x: 0, y: -1 }, - { x: 1, y: -1 }, - { x: -1, y: 0 }, - ], - reference: [ - { x: 0, y: -1 }, - { x: 1, y: -1 }, - { x: -1, y: 0 }, - { x: 0, y: 0 }, - { x: 1, y: 0 }, - { x: -1, y: 1 }, - { x: 0, y: 1 }, - { x: 1, y: 1 }, - ], - }, - { - coding: [ - { x: -1, y: -1 }, - { x: 0, y: -1 }, - { x: 1, y: -1 }, - { x: -1, y: 0 }, - ], - reference: [ - { x: 0, y: -1 }, - { x: -1, y: 0 }, - { x: 0, y: 0 }, - { x: 1, y: 0 }, - { x: 0, y: 1 }, - { x: 1, y: 1 }, - ], - }, - ], - d = [39717, 1941, 229, 405], - f = [32, 8]; - function decodeBitmap(e, t, a, r, n, i, s, o) { - if (e) { - return decodeMMRBitmap( - new Reader(o.data, o.start, o.end), - t, - a, - !1, - ); - } - if ( - 0 === r && - !i && - !n && - 4 === s.length && - 3 === s[0].x && - -1 === s[0].y && - -3 === s[1].x && - -1 === s[1].y && - 2 === s[2].x && - -2 === s[2].y && - -2 === s[3].x && - -2 === s[3].y - ) - return (function decodeBitmapTemplate0(e, t, a) { - const r = a.decoder, - n = a.contextCache.getContexts("GB"), - i = []; - let s, o, c, l, h, u, d; - for (o = 0; o < t; o++) { - h = i[o] = new Uint8Array(e); - u = o < 1 ? h : i[o - 1]; - d = o < 2 ? h : i[o - 2]; - s = - (d[0] << 13) | - (d[1] << 12) | - (d[2] << 11) | - (u[0] << 7) | - (u[1] << 6) | - (u[2] << 5) | - (u[3] << 4); - for (c = 0; c < e; c++) { - h[c] = l = r.readBit(n, s); - s = - ((31735 & s) << 1) | - (c + 3 < e ? d[c + 3] << 11 : 0) | - (c + 4 < e ? u[c + 4] << 4 : 0) | - l; - } - } - return i; - })(t, a, o); - const c = !!i, - l = h[r].concat(s); - l.sort(function (e, t) { - return e.y - t.y || e.x - t.x; - }); - const u = l.length, - f = new Int8Array(u), - g = new Int8Array(u), - p = []; - let m, - b, - y = 0, - w = 0, - S = 0, - x = 0; - for (b = 0; b < u; b++) { - f[b] = l[b].x; - g[b] = l[b].y; - w = Math.min(w, l[b].x); - S = Math.max(S, l[b].x); - x = Math.min(x, l[b].y); - b < u - 1 && l[b].y === l[b + 1].y && l[b].x === l[b + 1].x - 1 - ? (y |= 1 << (u - 1 - b)) - : p.push(b); - } - const C = p.length, - k = new Int8Array(C), - v = new Int8Array(C), - F = new Uint16Array(C); - for (m = 0; m < C; m++) { - b = p[m]; - k[m] = l[b].x; - v[m] = l[b].y; - F[m] = 1 << (u - 1 - b); - } - const O = -w, - T = -x, - M = t - S, - D = d[r]; - let E = new Uint8Array(t); - const N = [], - R = o.decoder, - L = o.contextCache.getContexts("GB"); - let $, - _, - j, - U, - X, - H = 0, - q = 0; - for (let e = 0; e < a; e++) { - if (n) { - H ^= R.readBit(L, D); - if (H) { - N.push(E); - continue; - } - } - E = new Uint8Array(E); - N.push(E); - for ($ = 0; $ < t; $++) { - if (c && i[e][$]) { - E[$] = 0; - continue; - } - if ($ >= O && $ < M && e >= T) { - q = (q << 1) & y; - for (b = 0; b < C; b++) { - _ = e + v[b]; - j = $ + k[b]; - U = N[_][j]; - if (U) { - U = F[b]; - q |= U; - } - } - } else { - q = 0; - X = u - 1; - for (b = 0; b < u; b++, X--) { - j = $ + f[b]; - if (j >= 0 && j < t) { - _ = e + g[b]; - if (_ >= 0) { - U = N[_][j]; - U && (q |= U << X); - } - } - } - } - const a = R.readBit(L, q); - E[$] = a; - } - } - return N; - } - function decodeRefinement(e, t, a, r, n, i, s, o, c) { - let l = u[a].coding; - 0 === a && (l = l.concat([o[0]])); - const h = l.length, - d = new Int32Array(h), - g = new Int32Array(h); - let p; - for (p = 0; p < h; p++) { - d[p] = l[p].x; - g[p] = l[p].y; - } - let m = u[a].reference; - 0 === a && (m = m.concat([o[1]])); - const b = m.length, - y = new Int32Array(b), - w = new Int32Array(b); - for (p = 0; p < b; p++) { - y[p] = m[p].x; - w[p] = m[p].y; - } - const S = r[0].length, - x = r.length, - C = f[a], - k = [], - v = c.decoder, - F = c.contextCache.getContexts("GR"); - let O = 0; - for (let a = 0; a < t; a++) { - if (s) { - O ^= v.readBit(F, C); - if (O) throw new Jbig2Error("prediction is not supported"); - } - const t = new Uint8Array(e); - k.push(t); - for (let s = 0; s < e; s++) { - let o, - c, - l = 0; - for (p = 0; p < h; p++) { - o = a + g[p]; - c = s + d[p]; - o < 0 || c < 0 || c >= e - ? (l <<= 1) - : (l = (l << 1) | k[o][c]); - } - for (p = 0; p < b; p++) { - o = a + w[p] - i; - c = s + y[p] - n; - o < 0 || o >= x || c < 0 || c >= S - ? (l <<= 1) - : (l = (l << 1) | r[o][c]); - } - const u = v.readBit(F, l); - t[s] = u; - } - } - return k; - } - function decodeTextRegion( - e, - t, - a, - r, - n, - i, - s, - o, - c, - l, - h, - u, - d, - f, - g, - p, - m, - b, - y, - ) { - if (e && t) - throw new Jbig2Error("refinement with Huffman is not supported"); - const w = []; - let S, x; - for (S = 0; S < r; S++) { - x = new Uint8Array(a); - if (n) for (let e = 0; e < a; e++) x[e] = n; - w.push(x); - } - const C = m.decoder, - k = m.contextCache; - let v = e ? -f.tableDeltaT.decode(y) : -decodeInteger(k, "IADT", C), - F = 0; - S = 0; - for (; S < i; ) { - v += e ? f.tableDeltaT.decode(y) : decodeInteger(k, "IADT", C); - F += e ? f.tableFirstS.decode(y) : decodeInteger(k, "IAFS", C); - let r = F; - for (;;) { - let n = 0; - s > 1 && (n = e ? y.readBits(b) : decodeInteger(k, "IAIT", C)); - const i = s * v + n, - F = e ? f.symbolIDTable.decode(y) : decodeIAID(k, C, c), - O = t && (e ? y.readBit() : decodeInteger(k, "IARI", C)); - let T = o[F], - M = T[0].length, - D = T.length; - if (O) { - const e = decodeInteger(k, "IARDW", C), - t = decodeInteger(k, "IARDH", C); - M += e; - D += t; - T = decodeRefinement( - M, - D, - g, - T, - (e >> 1) + decodeInteger(k, "IARDX", C), - (t >> 1) + decodeInteger(k, "IARDY", C), - !1, - p, - m, - ); - } - const E = i - (1 & u ? 0 : D - 1), - N = r - (2 & u ? M - 1 : 0); - let R, L, $; - if (l) { - for (R = 0; R < D; R++) { - x = w[N + R]; - if (!x) continue; - $ = T[R]; - const e = Math.min(a - E, M); - switch (d) { - case 0: - for (L = 0; L < e; L++) x[E + L] |= $[L]; - break; - case 2: - for (L = 0; L < e; L++) x[E + L] ^= $[L]; - break; - default: - throw new Jbig2Error(`operator ${d} is not supported`); - } - } - r += D - 1; - } else { - for (L = 0; L < D; L++) { - x = w[E + L]; - if (x) { - $ = T[L]; - switch (d) { - case 0: - for (R = 0; R < M; R++) x[N + R] |= $[R]; - break; - case 2: - for (R = 0; R < M; R++) x[N + R] ^= $[R]; - break; - default: - throw new Jbig2Error( - `operator ${d} is not supported`, - ); - } - } - } - r += M - 1; - } - S++; - const _ = e - ? f.tableDeltaS.decode(y) - : decodeInteger(k, "IADS", C); - if (null === _) break; - r += _ + h; - } - } - return w; - } - function readSegmentHeader(e, t) { - const a = {}; - a.number = (0, n.readUint32)(e, t); - const r = e[t + 4], - i = 63 & r; - if (!l[i]) throw new Jbig2Error("invalid segment type: " + i); - a.type = i; - a.typeName = l[i]; - a.deferredNonRetain = !!(128 & r); - const s = !!(64 & r), - o = e[t + 5]; - let c = (o >> 5) & 7; - const h = [31 & o]; - let u = t + 6; - if (7 === o) { - c = 536870911 & (0, n.readUint32)(e, u - 1); - u += 3; - let t = (c + 7) >> 3; - h[0] = e[u++]; - for (; --t > 0; ) h.push(e[u++]); - } else if (5 === o || 6 === o) - throw new Jbig2Error("invalid referred-to flags"); - a.retainBits = h; - let d = 4; - a.number <= 256 ? (d = 1) : a.number <= 65536 && (d = 2); - const f = []; - let p, m; - for (p = 0; p < c; p++) { - let t; - t = - 1 === d - ? e[u] - : 2 === d - ? (0, n.readUint16)(e, u) - : (0, n.readUint32)(e, u); - f.push(t); - u += d; - } - a.referredTo = f; - if (s) { - a.pageAssociation = (0, n.readUint32)(e, u); - u += 4; - } else a.pageAssociation = e[u++]; - a.length = (0, n.readUint32)(e, u); - u += 4; - if (4294967295 === a.length) { - if (38 !== i) - throw new Jbig2Error("invalid unknown segment length"); - { - const t = readRegionSegmentInformation(e, u), - r = !!(1 & e[u + g]), - n = 6, - i = new Uint8Array(n); - if (!r) { - i[0] = 255; - i[1] = 172; - } - i[2] = (t.height >>> 24) & 255; - i[3] = (t.height >> 16) & 255; - i[4] = (t.height >> 8) & 255; - i[5] = 255 & t.height; - for (p = u, m = e.length; p < m; p++) { - let t = 0; - for (; t < n && i[t] === e[p + t]; ) t++; - if (t === n) { - a.length = p + n; - break; - } - } - if (4294967295 === a.length) - throw new Jbig2Error("segment end was not found"); - } - } - a.headerEnd = u; - return a; - } - function readSegments(e, t, a, r) { - const n = []; - let i = a; - for (; i < r; ) { - const a = readSegmentHeader(t, i); - i = a.headerEnd; - const r = { header: a, data: t }; - if (!e.randomAccess) { - r.start = i; - i += a.length; - r.end = i; - } - n.push(r); - if (51 === a.type) break; - } - if (e.randomAccess) - for (let e = 0, t = n.length; e < t; e++) { - n[e].start = i; - i += n[e].header.length; - n[e].end = i; - } - return n; - } - function readRegionSegmentInformation(e, t) { - return { - width: (0, n.readUint32)(e, t), - height: (0, n.readUint32)(e, t + 4), - x: (0, n.readUint32)(e, t + 8), - y: (0, n.readUint32)(e, t + 12), - combinationOperator: 7 & e[t + 16], - }; - } - const g = 17; - function processSegment(e, t) { - const a = e.header, - r = e.data, - i = e.end; - let s, - o, - c, - l, - h = e.start; - switch (a.type) { - case 0: - const e = {}, - t = (0, n.readUint16)(r, h); - e.huffman = !!(1 & t); - e.refinement = !!(2 & t); - e.huffmanDHSelector = (t >> 2) & 3; - e.huffmanDWSelector = (t >> 4) & 3; - e.bitmapSizeSelector = (t >> 6) & 1; - e.aggregationInstancesSelector = (t >> 7) & 1; - e.bitmapCodingContextUsed = !!(256 & t); - e.bitmapCodingContextRetained = !!(512 & t); - e.template = (t >> 10) & 3; - e.refinementTemplate = (t >> 12) & 1; - h += 2; - if (!e.huffman) { - l = 0 === e.template ? 4 : 1; - o = []; - for (c = 0; c < l; c++) { - o.push({ - x: (0, n.readInt8)(r, h), - y: (0, n.readInt8)(r, h + 1), - }); - h += 2; - } - e.at = o; - } - if (e.refinement && !e.refinementTemplate) { - o = []; - for (c = 0; c < 2; c++) { - o.push({ - x: (0, n.readInt8)(r, h), - y: (0, n.readInt8)(r, h + 1), - }); - h += 2; - } - e.refinementAt = o; - } - e.numberOfExportedSymbols = (0, n.readUint32)(r, h); - h += 4; - e.numberOfNewSymbols = (0, n.readUint32)(r, h); - h += 4; - s = [e, a.number, a.referredTo, r, h, i]; - break; - case 6: - case 7: - const u = {}; - u.info = readRegionSegmentInformation(r, h); - h += g; - const d = (0, n.readUint16)(r, h); - h += 2; - u.huffman = !!(1 & d); - u.refinement = !!(2 & d); - u.logStripSize = (d >> 2) & 3; - u.stripSize = 1 << u.logStripSize; - u.referenceCorner = (d >> 4) & 3; - u.transposed = !!(64 & d); - u.combinationOperator = (d >> 7) & 3; - u.defaultPixelValue = (d >> 9) & 1; - u.dsOffset = (d << 17) >> 27; - u.refinementTemplate = (d >> 15) & 1; - if (u.huffman) { - const e = (0, n.readUint16)(r, h); - h += 2; - u.huffmanFS = 3 & e; - u.huffmanDS = (e >> 2) & 3; - u.huffmanDT = (e >> 4) & 3; - u.huffmanRefinementDW = (e >> 6) & 3; - u.huffmanRefinementDH = (e >> 8) & 3; - u.huffmanRefinementDX = (e >> 10) & 3; - u.huffmanRefinementDY = (e >> 12) & 3; - u.huffmanRefinementSizeSelector = !!(16384 & e); - } - if (u.refinement && !u.refinementTemplate) { - o = []; - for (c = 0; c < 2; c++) { - o.push({ - x: (0, n.readInt8)(r, h), - y: (0, n.readInt8)(r, h + 1), - }); - h += 2; - } - u.refinementAt = o; - } - u.numberOfSymbolInstances = (0, n.readUint32)(r, h); - h += 4; - s = [u, a.referredTo, r, h, i]; - break; - case 16: - const f = {}, - p = r[h++]; - f.mmr = !!(1 & p); - f.template = (p >> 1) & 3; - f.patternWidth = r[h++]; - f.patternHeight = r[h++]; - f.maxPatternIndex = (0, n.readUint32)(r, h); - h += 4; - s = [f, a.number, r, h, i]; - break; - case 22: - case 23: - const m = {}; - m.info = readRegionSegmentInformation(r, h); - h += g; - const b = r[h++]; - m.mmr = !!(1 & b); - m.template = (b >> 1) & 3; - m.enableSkip = !!(8 & b); - m.combinationOperator = (b >> 4) & 7; - m.defaultPixelValue = (b >> 7) & 1; - m.gridWidth = (0, n.readUint32)(r, h); - h += 4; - m.gridHeight = (0, n.readUint32)(r, h); - h += 4; - m.gridOffsetX = 4294967295 & (0, n.readUint32)(r, h); - h += 4; - m.gridOffsetY = 4294967295 & (0, n.readUint32)(r, h); - h += 4; - m.gridVectorX = (0, n.readUint16)(r, h); - h += 2; - m.gridVectorY = (0, n.readUint16)(r, h); - h += 2; - s = [m, a.referredTo, r, h, i]; - break; - case 38: - case 39: - const y = {}; - y.info = readRegionSegmentInformation(r, h); - h += g; - const w = r[h++]; - y.mmr = !!(1 & w); - y.template = (w >> 1) & 3; - y.prediction = !!(8 & w); - if (!y.mmr) { - l = 0 === y.template ? 4 : 1; - o = []; - for (c = 0; c < l; c++) { - o.push({ - x: (0, n.readInt8)(r, h), - y: (0, n.readInt8)(r, h + 1), - }); - h += 2; - } - y.at = o; - } - s = [y, r, h, i]; - break; - case 48: - const S = { - width: (0, n.readUint32)(r, h), - height: (0, n.readUint32)(r, h + 4), - resolutionX: (0, n.readUint32)(r, h + 8), - resolutionY: (0, n.readUint32)(r, h + 12), - }; - 4294967295 === S.height && delete S.height; - const x = r[h + 16]; - (0, n.readUint16)(r, h + 17); - S.lossless = !!(1 & x); - S.refinement = !!(2 & x); - S.defaultPixelValue = (x >> 2) & 1; - S.combinationOperator = (x >> 3) & 3; - S.requiresBuffer = !!(32 & x); - S.combinationOperatorOverride = !!(64 & x); - s = [S]; - break; - case 49: - case 50: - case 51: - case 62: - break; - case 53: - s = [a.number, r, h, i]; - break; - default: - throw new Jbig2Error( - `segment type ${a.typeName}(${a.type}) is not implemented`, - ); - } - const u = "on" + a.typeName; - u in t && t[u].apply(t, s); - } - function processSegments(e, t) { - for (let a = 0, r = e.length; a < r; a++) processSegment(e[a], t); - } - class SimpleSegmentVisitor { - onPageInformation(e) { - this.currentPageInfo = e; - const t = (e.width + 7) >> 3, - a = new Uint8ClampedArray(t * e.height); - e.defaultPixelValue && a.fill(255); - this.buffer = a; - } - drawBitmap(e, t) { - const a = this.currentPageInfo, - r = e.width, - n = e.height, - i = (a.width + 7) >> 3, - s = a.combinationOperatorOverride - ? e.combinationOperator - : a.combinationOperator, - o = this.buffer, - c = 128 >> (7 & e.x); - let l, - h, - u, - d, - f = e.y * i + (e.x >> 3); - switch (s) { - case 0: - for (l = 0; l < n; l++) { - u = c; - d = f; - for (h = 0; h < r; h++) { - t[l][h] && (o[d] |= u); - u >>= 1; - if (!u) { - u = 128; - d++; - } - } - f += i; - } - break; - case 2: - for (l = 0; l < n; l++) { - u = c; - d = f; - for (h = 0; h < r; h++) { - t[l][h] && (o[d] ^= u); - u >>= 1; - if (!u) { - u = 128; - d++; - } - } - f += i; - } - break; - default: - throw new Jbig2Error(`operator ${s} is not supported`); - } - } - onImmediateGenericRegion(e, t, a, r) { - const n = e.info, - i = new DecodingContext(t, a, r), - s = decodeBitmap( - e.mmr, - n.width, - n.height, - e.template, - e.prediction, - null, - e.at, - i, - ); - this.drawBitmap(n, s); - } - onImmediateLosslessGenericRegion() { - this.onImmediateGenericRegion(...arguments); - } - onSymbolDictionary(e, t, a, r, i, s) { - let o, c; - if (e.huffman) { - o = (function getSymbolDictionaryHuffmanTables(e, t, a) { - let r, - n, - i, - s, - o = 0; - switch (e.huffmanDHSelector) { - case 0: - case 1: - r = getStandardTable(e.huffmanDHSelector + 4); - break; - case 3: - r = getCustomHuffmanTable(o, t, a); - o++; - break; - default: - throw new Jbig2Error("invalid Huffman DH selector"); - } - switch (e.huffmanDWSelector) { - case 0: - case 1: - n = getStandardTable(e.huffmanDWSelector + 2); - break; - case 3: - n = getCustomHuffmanTable(o, t, a); - o++; - break; - default: - throw new Jbig2Error("invalid Huffman DW selector"); - } - if (e.bitmapSizeSelector) { - i = getCustomHuffmanTable(o, t, a); - o++; - } else i = getStandardTable(1); - s = e.aggregationInstancesSelector - ? getCustomHuffmanTable(o, t, a) - : getStandardTable(1); - return { - tableDeltaHeight: r, - tableDeltaWidth: n, - tableBitmapSize: i, - tableAggregateInstances: s, - }; - })(e, a, this.customTables); - c = new Reader(r, i, s); - } - let l = this.symbols; - l || (this.symbols = l = {}); - const h = []; - for (const e of a) { - const t = l[e]; - t && h.push(...t); - } - const u = new DecodingContext(r, i, s); - l[t] = (function decodeSymbolDictionary( - e, - t, - a, - r, - i, - s, - o, - c, - l, - h, - u, - d, - ) { - if (e && t) - throw new Jbig2Error( - "symbol refinement with Huffman is not supported", - ); - const f = []; - let g = 0, - p = (0, n.log2)(a.length + r); - const m = u.decoder, - b = u.contextCache; - let y, w; - if (e) { - y = getStandardTable(1); - w = []; - p = Math.max(p, 1); - } - for (; f.length < r; ) { - g += e - ? s.tableDeltaHeight.decode(d) - : decodeInteger(b, "IADH", m); - let r = 0, - n = 0; - const i = e ? w.length : 0; - for (;;) { - const i = e - ? s.tableDeltaWidth.decode(d) - : decodeInteger(b, "IADW", m); - if (null === i) break; - r += i; - n += r; - let y; - if (t) { - const n = decodeInteger(b, "IAAI", m); - if (n > 1) - y = decodeTextRegion( - e, - t, - r, - g, - 0, - n, - 1, - a.concat(f), - p, - 0, - 0, - 1, - 0, - s, - l, - h, - u, - 0, - d, - ); - else { - const e = decodeIAID(b, m, p), - t = decodeInteger(b, "IARDX", m), - n = decodeInteger(b, "IARDY", m); - y = decodeRefinement( - r, - g, - l, - e < a.length ? a[e] : f[e - a.length], - t, - n, - !1, - h, - u, - ); - } - f.push(y); - } else if (e) w.push(r); - else { - y = decodeBitmap(!1, r, g, o, !1, null, c, u); - f.push(y); - } - } - if (e && !t) { - const e = s.tableBitmapSize.decode(d); - d.byteAlign(); - let t; - if (0 === e) t = readUncompressedBitmap(d, n, g); - else { - const a = d.end, - r = d.position + e; - d.end = r; - t = decodeMMRBitmap(d, n, g, !1); - d.end = a; - d.position = r; - } - const a = w.length; - if (i === a - 1) f.push(t); - else { - let e, - r, - n, - s, - o, - c = 0; - for (e = i; e < a; e++) { - s = w[e]; - n = c + s; - o = []; - for (r = 0; r < g; r++) o.push(t[r].subarray(c, n)); - f.push(o); - c = n; - } - } - } - } - const S = [], - x = []; - let C, - k, - v = !1; - const F = a.length + r; - for (; x.length < F; ) { - let t = e ? y.decode(d) : decodeInteger(b, "IAEX", m); - for (; t--; ) x.push(v); - v = !v; - } - for (C = 0, k = a.length; C < k; C++) x[C] && S.push(a[C]); - for (let e = 0; e < r; C++, e++) x[C] && S.push(f[e]); - return S; - })( - e.huffman, - e.refinement, - h, - e.numberOfNewSymbols, - e.numberOfExportedSymbols, - o, - e.template, - e.at, - e.refinementTemplate, - e.refinementAt, - u, - c, - ); - } - onImmediateTextRegion(e, t, a, r, i) { - const s = e.info; - let o, c; - const l = this.symbols, - h = []; - for (const e of t) { - const t = l[e]; - t && h.push(...t); - } - const u = (0, n.log2)(h.length); - if (e.huffman) { - c = new Reader(a, r, i); - o = (function getTextRegionHuffmanTables(e, t, a, r, n) { - const i = []; - for (let e = 0; e <= 34; e++) { - const t = n.readBits(4); - i.push(new HuffmanLine([e, t, 0, 0])); - } - const s = new HuffmanTable(i, !1); - i.length = 0; - for (let e = 0; e < r; ) { - const t = s.decode(n); - if (t >= 32) { - let a, r, s; - switch (t) { - case 32: - if (0 === e) - throw new Jbig2Error( - "no previous value in symbol ID table", - ); - r = n.readBits(2) + 3; - a = i[e - 1].prefixLength; - break; - case 33: - r = n.readBits(3) + 3; - a = 0; - break; - case 34: - r = n.readBits(7) + 11; - a = 0; - break; - default: - throw new Jbig2Error( - "invalid code length in symbol ID table", - ); - } - for (s = 0; s < r; s++) { - i.push(new HuffmanLine([e, a, 0, 0])); - e++; - } - } else { - i.push(new HuffmanLine([e, t, 0, 0])); - e++; - } - } - n.byteAlign(); - const o = new HuffmanTable(i, !1); - let c, - l, - h, - u = 0; - switch (e.huffmanFS) { - case 0: - case 1: - c = getStandardTable(e.huffmanFS + 6); - break; - case 3: - c = getCustomHuffmanTable(u, t, a); - u++; - break; - default: - throw new Jbig2Error("invalid Huffman FS selector"); - } - switch (e.huffmanDS) { - case 0: - case 1: - case 2: - l = getStandardTable(e.huffmanDS + 8); - break; - case 3: - l = getCustomHuffmanTable(u, t, a); - u++; - break; - default: - throw new Jbig2Error("invalid Huffman DS selector"); - } - switch (e.huffmanDT) { - case 0: - case 1: - case 2: - h = getStandardTable(e.huffmanDT + 11); - break; - case 3: - h = getCustomHuffmanTable(u, t, a); - u++; - break; - default: - throw new Jbig2Error("invalid Huffman DT selector"); - } - if (e.refinement) - throw new Jbig2Error( - "refinement with Huffman is not supported", - ); - return { - symbolIDTable: o, - tableFirstS: c, - tableDeltaS: l, - tableDeltaT: h, - }; - })(e, t, this.customTables, h.length, c); - } - const d = new DecodingContext(a, r, i), - f = decodeTextRegion( - e.huffman, - e.refinement, - s.width, - s.height, - e.defaultPixelValue, - e.numberOfSymbolInstances, - e.stripSize, - h, - u, - e.transposed, - e.dsOffset, - e.referenceCorner, - e.combinationOperator, - o, - e.refinementTemplate, - e.refinementAt, - d, - e.logStripSize, - c, - ); - this.drawBitmap(s, f); - } - onImmediateLosslessTextRegion() { - this.onImmediateTextRegion(...arguments); - } - onPatternDictionary(e, t, a, r, n) { - let i = this.patterns; - i || (this.patterns = i = {}); - const s = new DecodingContext(a, r, n); - i[t] = (function decodePatternDictionary(e, t, a, r, n, i) { - const s = []; - if (!e) { - s.push({ x: -t, y: 0 }); - 0 === n && - s.push({ x: -3, y: -1 }, { x: 2, y: -2 }, { x: -2, y: -2 }); - } - const o = decodeBitmap(e, (r + 1) * t, a, n, !1, null, s, i), - c = []; - for (let e = 0; e <= r; e++) { - const r = [], - n = t * e, - i = n + t; - for (let e = 0; e < a; e++) r.push(o[e].subarray(n, i)); - c.push(r); - } - return c; - })( - e.mmr, - e.patternWidth, - e.patternHeight, - e.maxPatternIndex, - e.template, - s, - ); - } - onImmediateHalftoneRegion(e, t, a, r, i) { - const s = this.patterns[t[0]], - o = e.info, - c = new DecodingContext(a, r, i), - l = (function decodeHalftoneRegion( - e, - t, - a, - r, - i, - s, - o, - c, - l, - h, - u, - d, - f, - g, - p, - ) { - if (o) throw new Jbig2Error("skip is not supported"); - if (0 !== c) - throw new Jbig2Error( - `operator "${c}" is not supported in halftone region`, - ); - const m = []; - let b, y, w; - for (b = 0; b < i; b++) { - w = new Uint8Array(r); - if (s) for (y = 0; y < r; y++) w[y] = s; - m.push(w); - } - const S = t.length, - x = t[0], - C = x[0].length, - k = x.length, - v = (0, n.log2)(S), - F = []; - if (!e) { - F.push({ x: a <= 1 ? 3 : 2, y: -1 }); - 0 === a && - F.push( - { x: -3, y: -1 }, - { x: 2, y: -2 }, - { x: -2, y: -2 }, - ); - } - const O = []; - let T, M, D, E, N, R, L, $, _, j, U; - e && (T = new Reader(p.data, p.start, p.end)); - for (b = v - 1; b >= 0; b--) { - M = e - ? decodeMMRBitmap(T, l, h, !0) - : decodeBitmap(!1, l, h, a, !1, null, F, p); - O[b] = M; - } - for (D = 0; D < h; D++) - for (E = 0; E < l; E++) { - N = 0; - R = 0; - for (y = v - 1; y >= 0; y--) { - N ^= O[y][D][E]; - R |= N << y; - } - L = t[R]; - $ = (u + D * g + E * f) >> 8; - _ = (d + D * f - E * g) >> 8; - if ($ >= 0 && $ + C <= r && _ >= 0 && _ + k <= i) - for (b = 0; b < k; b++) { - U = m[_ + b]; - j = L[b]; - for (y = 0; y < C; y++) U[$ + y] |= j[y]; - } - else { - let e, t; - for (b = 0; b < k; b++) { - t = _ + b; - if (!(t < 0 || t >= i)) { - U = m[t]; - j = L[b]; - for (y = 0; y < C; y++) { - e = $ + y; - e >= 0 && e < r && (U[e] |= j[y]); - } - } - } - } - } - return m; - })( - e.mmr, - s, - e.template, - o.width, - o.height, - e.defaultPixelValue, - e.enableSkip, - e.combinationOperator, - e.gridWidth, - e.gridHeight, - e.gridOffsetX, - e.gridOffsetY, - e.gridVectorX, - e.gridVectorY, - c, - ); - this.drawBitmap(o, l); - } - onImmediateLosslessHalftoneRegion() { - this.onImmediateHalftoneRegion(...arguments); - } - onTables(e, t, a, r) { - let i = this.customTables; - i || (this.customTables = i = {}); - i[e] = (function decodeTablesSegment(e, t, a) { - const r = e[t], - i = 4294967295 & (0, n.readUint32)(e, t + 1), - s = 4294967295 & (0, n.readUint32)(e, t + 5), - o = new Reader(e, t + 9, a), - c = 1 + ((r >> 1) & 7), - l = 1 + ((r >> 4) & 7), - h = []; - let u, - d, - f = i; - do { - u = o.readBits(c); - d = o.readBits(l); - h.push(new HuffmanLine([f, u, d, 0])); - f += 1 << d; - } while (f < s); - u = o.readBits(c); - h.push(new HuffmanLine([i - 1, u, 32, 0, "lower"])); - u = o.readBits(c); - h.push(new HuffmanLine([s, u, 32, 0])); - if (1 & r) { - u = o.readBits(c); - h.push(new HuffmanLine([u, 0])); - } - return new HuffmanTable(h, !1); - })(t, a, r); - } - } - class HuffmanLine { - constructor(e) { - if (2 === e.length) { - this.isOOB = !0; - this.rangeLow = 0; - this.prefixLength = e[0]; - this.rangeLength = 0; - this.prefixCode = e[1]; - this.isLowerRange = !1; - } else { - this.isOOB = !1; - this.rangeLow = e[0]; - this.prefixLength = e[1]; - this.rangeLength = e[2]; - this.prefixCode = e[3]; - this.isLowerRange = "lower" === e[4]; - } - } - } - class HuffmanTreeNode { - constructor(e) { - this.children = []; - if (e) { - this.isLeaf = !0; - this.rangeLength = e.rangeLength; - this.rangeLow = e.rangeLow; - this.isLowerRange = e.isLowerRange; - this.isOOB = e.isOOB; - } else this.isLeaf = !1; - } - buildTree(e, t) { - const a = (e.prefixCode >> t) & 1; - if (t <= 0) this.children[a] = new HuffmanTreeNode(e); - else { - let r = this.children[a]; - r || (this.children[a] = r = new HuffmanTreeNode(null)); - r.buildTree(e, t - 1); - } - } - decodeNode(e) { - if (this.isLeaf) { - if (this.isOOB) return null; - const t = e.readBits(this.rangeLength); - return this.rangeLow + (this.isLowerRange ? -t : t); - } - const t = this.children[e.readBit()]; - if (!t) throw new Jbig2Error("invalid Huffman data"); - return t.decodeNode(e); - } - } - class HuffmanTable { - constructor(e, t) { - t || this.assignPrefixCodes(e); - this.rootNode = new HuffmanTreeNode(null); - for (let t = 0, a = e.length; t < a; t++) { - const a = e[t]; - a.prefixLength > 0 && - this.rootNode.buildTree(a, a.prefixLength - 1); - } - } - decode(e) { - return this.rootNode.decodeNode(e); - } - assignPrefixCodes(e) { - const t = e.length; - let a = 0; - for (let r = 0; r < t; r++) a = Math.max(a, e[r].prefixLength); - const r = new Uint32Array(a + 1); - for (let a = 0; a < t; a++) r[e[a].prefixLength]++; - let n, - i, - s, - o = 1, - c = 0; - r[0] = 0; - for (; o <= a; ) { - c = (c + r[o - 1]) << 1; - n = c; - i = 0; - for (; i < t; ) { - s = e[i]; - if (s.prefixLength === o) { - s.prefixCode = n; - n++; - } - i++; - } - o++; - } - } - } - const p = {}; - function getStandardTable(e) { - let t, - a = p[e]; - if (a) return a; - switch (e) { - case 1: - t = [ - [0, 1, 4, 0], - [16, 2, 8, 2], - [272, 3, 16, 6], - [65808, 3, 32, 7], - ]; - break; - case 2: - t = [ - [0, 1, 0, 0], - [1, 2, 0, 2], - [2, 3, 0, 6], - [3, 4, 3, 14], - [11, 5, 6, 30], - [75, 6, 32, 62], - [6, 63], - ]; - break; - case 3: - t = [ - [-256, 8, 8, 254], - [0, 1, 0, 0], - [1, 2, 0, 2], - [2, 3, 0, 6], - [3, 4, 3, 14], - [11, 5, 6, 30], - [-257, 8, 32, 255, "lower"], - [75, 7, 32, 126], - [6, 62], - ]; - break; - case 4: - t = [ - [1, 1, 0, 0], - [2, 2, 0, 2], - [3, 3, 0, 6], - [4, 4, 3, 14], - [12, 5, 6, 30], - [76, 5, 32, 31], - ]; - break; - case 5: - t = [ - [-255, 7, 8, 126], - [1, 1, 0, 0], - [2, 2, 0, 2], - [3, 3, 0, 6], - [4, 4, 3, 14], - [12, 5, 6, 30], - [-256, 7, 32, 127, "lower"], - [76, 6, 32, 62], - ]; - break; - case 6: - t = [ - [-2048, 5, 10, 28], - [-1024, 4, 9, 8], - [-512, 4, 8, 9], - [-256, 4, 7, 10], - [-128, 5, 6, 29], - [-64, 5, 5, 30], - [-32, 4, 5, 11], - [0, 2, 7, 0], - [128, 3, 7, 2], - [256, 3, 8, 3], - [512, 4, 9, 12], - [1024, 4, 10, 13], - [-2049, 6, 32, 62, "lower"], - [2048, 6, 32, 63], - ]; - break; - case 7: - t = [ - [-1024, 4, 9, 8], - [-512, 3, 8, 0], - [-256, 4, 7, 9], - [-128, 5, 6, 26], - [-64, 5, 5, 27], - [-32, 4, 5, 10], - [0, 4, 5, 11], - [32, 5, 5, 28], - [64, 5, 6, 29], - [128, 4, 7, 12], - [256, 3, 8, 1], - [512, 3, 9, 2], - [1024, 3, 10, 3], - [-1025, 5, 32, 30, "lower"], - [2048, 5, 32, 31], - ]; - break; - case 8: - t = [ - [-15, 8, 3, 252], - [-7, 9, 1, 508], - [-5, 8, 1, 253], - [-3, 9, 0, 509], - [-2, 7, 0, 124], - [-1, 4, 0, 10], - [0, 2, 1, 0], - [2, 5, 0, 26], - [3, 6, 0, 58], - [4, 3, 4, 4], - [20, 6, 1, 59], - [22, 4, 4, 11], - [38, 4, 5, 12], - [70, 5, 6, 27], - [134, 5, 7, 28], - [262, 6, 7, 60], - [390, 7, 8, 125], - [646, 6, 10, 61], - [-16, 9, 32, 510, "lower"], - [1670, 9, 32, 511], - [2, 1], - ]; - break; - case 9: - t = [ - [-31, 8, 4, 252], - [-15, 9, 2, 508], - [-11, 8, 2, 253], - [-7, 9, 1, 509], - [-5, 7, 1, 124], - [-3, 4, 1, 10], - [-1, 3, 1, 2], - [1, 3, 1, 3], - [3, 5, 1, 26], - [5, 6, 1, 58], - [7, 3, 5, 4], - [39, 6, 2, 59], - [43, 4, 5, 11], - [75, 4, 6, 12], - [139, 5, 7, 27], - [267, 5, 8, 28], - [523, 6, 8, 60], - [779, 7, 9, 125], - [1291, 6, 11, 61], - [-32, 9, 32, 510, "lower"], - [3339, 9, 32, 511], - [2, 0], - ]; - break; - case 10: - t = [ - [-21, 7, 4, 122], - [-5, 8, 0, 252], - [-4, 7, 0, 123], - [-3, 5, 0, 24], - [-2, 2, 2, 0], - [2, 5, 0, 25], - [3, 6, 0, 54], - [4, 7, 0, 124], - [5, 8, 0, 253], - [6, 2, 6, 1], - [70, 5, 5, 26], - [102, 6, 5, 55], - [134, 6, 6, 56], - [198, 6, 7, 57], - [326, 6, 8, 58], - [582, 6, 9, 59], - [1094, 6, 10, 60], - [2118, 7, 11, 125], - [-22, 8, 32, 254, "lower"], - [4166, 8, 32, 255], - [2, 2], - ]; - break; - case 11: - t = [ - [1, 1, 0, 0], - [2, 2, 1, 2], - [4, 4, 0, 12], - [5, 4, 1, 13], - [7, 5, 1, 28], - [9, 5, 2, 29], - [13, 6, 2, 60], - [17, 7, 2, 122], - [21, 7, 3, 123], - [29, 7, 4, 124], - [45, 7, 5, 125], - [77, 7, 6, 126], - [141, 7, 32, 127], - ]; - break; - case 12: - t = [ - [1, 1, 0, 0], - [2, 2, 0, 2], - [3, 3, 1, 6], - [5, 5, 0, 28], - [6, 5, 1, 29], - [8, 6, 1, 60], - [10, 7, 0, 122], - [11, 7, 1, 123], - [13, 7, 2, 124], - [17, 7, 3, 125], - [25, 7, 4, 126], - [41, 8, 5, 254], - [73, 8, 32, 255], - ]; - break; - case 13: - t = [ - [1, 1, 0, 0], - [2, 3, 0, 4], - [3, 4, 0, 12], - [4, 5, 0, 28], - [5, 4, 1, 13], - [7, 3, 3, 5], - [15, 6, 1, 58], - [17, 6, 2, 59], - [21, 6, 3, 60], - [29, 6, 4, 61], - [45, 6, 5, 62], - [77, 7, 6, 126], - [141, 7, 32, 127], - ]; - break; - case 14: - t = [ - [-2, 3, 0, 4], - [-1, 3, 0, 5], - [0, 1, 0, 0], - [1, 3, 0, 6], - [2, 3, 0, 7], - ]; - break; - case 15: - t = [ - [-24, 7, 4, 124], - [-8, 6, 2, 60], - [-4, 5, 1, 28], - [-2, 4, 0, 12], - [-1, 3, 0, 4], - [0, 1, 0, 0], - [1, 3, 0, 5], - [2, 4, 0, 13], - [3, 5, 1, 29], - [5, 6, 2, 61], - [9, 7, 4, 125], - [-25, 7, 32, 126, "lower"], - [25, 7, 32, 127], - ]; - break; - default: - throw new Jbig2Error(`standard table B.${e} does not exist`); - } - for (let e = 0, a = t.length; e < a; e++) - t[e] = new HuffmanLine(t[e]); - a = new HuffmanTable(t, !0); - p[e] = a; - return a; - } - class Reader { - constructor(e, t, a) { - this.data = e; - this.start = t; - this.end = a; - this.position = t; - this.shift = -1; - this.currentByte = 0; - } - readBit() { - if (this.shift < 0) { - if (this.position >= this.end) - throw new Jbig2Error("end of data while reading bit"); - this.currentByte = this.data[this.position++]; - this.shift = 7; - } - const e = (this.currentByte >> this.shift) & 1; - this.shift--; - return e; - } - readBits(e) { - let t, - a = 0; - for (t = e - 1; t >= 0; t--) a |= this.readBit() << t; - return a; - } - byteAlign() { - this.shift = -1; - } - next() { - return this.position >= this.end - ? -1 - : this.data[this.position++]; - } - } - function getCustomHuffmanTable(e, t, a) { - let r = 0; - for (let n = 0, i = t.length; n < i; n++) { - const i = a[t[n]]; - if (i) { - if (e === r) return i; - r++; - } - } - throw new Jbig2Error("can't find custom Huffman table"); - } - function readUncompressedBitmap(e, t, a) { - const r = []; - for (let n = 0; n < a; n++) { - const a = new Uint8Array(t); - r.push(a); - for (let r = 0; r < t; r++) a[r] = e.readBit(); - e.byteAlign(); - } - return r; - } - function decodeMMRBitmap(e, t, a, r) { - const n = { - K: -1, - Columns: t, - Rows: a, - BlackIs1: !0, - EndOfBlock: r, - }, - i = new s.CCITTFaxDecoder(e, n), - o = []; - let c, - l = !1; - for (let e = 0; e < a; e++) { - const e = new Uint8Array(t); - o.push(e); - let a = -1; - for (let r = 0; r < t; r++) { - if (a < 0) { - c = i.readNextChar(); - if (-1 === c) { - c = 0; - l = !0; - } - a = 7; - } - e[r] = (c >> a) & 1; - a--; - } - } - if (r && !l) { - const e = 5; - for (let t = 0; t < e && -1 !== i.readNextChar(); t++); - } - return o; - } - t.Jbig2Image = class Jbig2Image { - parseChunks(e) { - return (function parseJbig2Chunks(e) { - const t = new SimpleSegmentVisitor(); - for (let a = 0, r = e.length; a < r; a++) { - const r = e[a]; - processSegments(readSegments({}, r.data, r.start, r.end), t); - } - return t.buffer; - })(e); - } - parse(e) { - throw new Error("Not implemented: Jbig2Image.parse"); - } - }; - }, - (e, t) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.ArithmeticDecoder = void 0; - const a = [ - { qe: 22017, nmps: 1, nlps: 1, switchFlag: 1 }, - { qe: 13313, nmps: 2, nlps: 6, switchFlag: 0 }, - { qe: 6145, nmps: 3, nlps: 9, switchFlag: 0 }, - { qe: 2753, nmps: 4, nlps: 12, switchFlag: 0 }, - { qe: 1313, nmps: 5, nlps: 29, switchFlag: 0 }, - { qe: 545, nmps: 38, nlps: 33, switchFlag: 0 }, - { qe: 22017, nmps: 7, nlps: 6, switchFlag: 1 }, - { qe: 21505, nmps: 8, nlps: 14, switchFlag: 0 }, - { qe: 18433, nmps: 9, nlps: 14, switchFlag: 0 }, - { qe: 14337, nmps: 10, nlps: 14, switchFlag: 0 }, - { qe: 12289, nmps: 11, nlps: 17, switchFlag: 0 }, - { qe: 9217, nmps: 12, nlps: 18, switchFlag: 0 }, - { qe: 7169, nmps: 13, nlps: 20, switchFlag: 0 }, - { qe: 5633, nmps: 29, nlps: 21, switchFlag: 0 }, - { qe: 22017, nmps: 15, nlps: 14, switchFlag: 1 }, - { qe: 21505, nmps: 16, nlps: 14, switchFlag: 0 }, - { qe: 20737, nmps: 17, nlps: 15, switchFlag: 0 }, - { qe: 18433, nmps: 18, nlps: 16, switchFlag: 0 }, - { qe: 14337, nmps: 19, nlps: 17, switchFlag: 0 }, - { qe: 13313, nmps: 20, nlps: 18, switchFlag: 0 }, - { qe: 12289, nmps: 21, nlps: 19, switchFlag: 0 }, - { qe: 10241, nmps: 22, nlps: 19, switchFlag: 0 }, - { qe: 9217, nmps: 23, nlps: 20, switchFlag: 0 }, - { qe: 8705, nmps: 24, nlps: 21, switchFlag: 0 }, - { qe: 7169, nmps: 25, nlps: 22, switchFlag: 0 }, - { qe: 6145, nmps: 26, nlps: 23, switchFlag: 0 }, - { qe: 5633, nmps: 27, nlps: 24, switchFlag: 0 }, - { qe: 5121, nmps: 28, nlps: 25, switchFlag: 0 }, - { qe: 4609, nmps: 29, nlps: 26, switchFlag: 0 }, - { qe: 4353, nmps: 30, nlps: 27, switchFlag: 0 }, - { qe: 2753, nmps: 31, nlps: 28, switchFlag: 0 }, - { qe: 2497, nmps: 32, nlps: 29, switchFlag: 0 }, - { qe: 2209, nmps: 33, nlps: 30, switchFlag: 0 }, - { qe: 1313, nmps: 34, nlps: 31, switchFlag: 0 }, - { qe: 1089, nmps: 35, nlps: 32, switchFlag: 0 }, - { qe: 673, nmps: 36, nlps: 33, switchFlag: 0 }, - { qe: 545, nmps: 37, nlps: 34, switchFlag: 0 }, - { qe: 321, nmps: 38, nlps: 35, switchFlag: 0 }, - { qe: 273, nmps: 39, nlps: 36, switchFlag: 0 }, - { qe: 133, nmps: 40, nlps: 37, switchFlag: 0 }, - { qe: 73, nmps: 41, nlps: 38, switchFlag: 0 }, - { qe: 37, nmps: 42, nlps: 39, switchFlag: 0 }, - { qe: 21, nmps: 43, nlps: 40, switchFlag: 0 }, - { qe: 9, nmps: 44, nlps: 41, switchFlag: 0 }, - { qe: 5, nmps: 45, nlps: 42, switchFlag: 0 }, - { qe: 1, nmps: 45, nlps: 43, switchFlag: 0 }, - { qe: 22017, nmps: 46, nlps: 46, switchFlag: 0 }, - ]; - t.ArithmeticDecoder = class ArithmeticDecoder { - constructor(e, t, a) { - this.data = e; - this.bp = t; - this.dataEnd = a; - this.chigh = e[t]; - this.clow = 0; - this.byteIn(); - this.chigh = - ((this.chigh << 7) & 65535) | ((this.clow >> 9) & 127); - this.clow = (this.clow << 7) & 65535; - this.ct -= 7; - this.a = 32768; - } - byteIn() { - const e = this.data; - let t = this.bp; - if (255 === e[t]) - if (e[t + 1] > 143) { - this.clow += 65280; - this.ct = 8; - } else { - t++; - this.clow += e[t] << 9; - this.ct = 7; - this.bp = t; - } - else { - t++; - this.clow += t < this.dataEnd ? e[t] << 8 : 65280; - this.ct = 8; - this.bp = t; - } - if (this.clow > 65535) { - this.chigh += this.clow >> 16; - this.clow &= 65535; - } - } - readBit(e, t) { - let r = e[t] >> 1, - n = 1 & e[t]; - const i = a[r], - s = i.qe; - let o, - c = this.a - s; - if (this.chigh < s) - if (c < s) { - c = s; - o = n; - r = i.nmps; - } else { - c = s; - o = 1 ^ n; - 1 === i.switchFlag && (n = o); - r = i.nlps; - } - else { - this.chigh -= s; - if (0 != (32768 & c)) { - this.a = c; - return n; - } - if (c < s) { - o = 1 ^ n; - 1 === i.switchFlag && (n = o); - r = i.nlps; - } else { - o = n; - r = i.nmps; - } - } - do { - 0 === this.ct && this.byteIn(); - c <<= 1; - this.chigh = - ((this.chigh << 1) & 65535) | ((this.clow >> 15) & 1); - this.clow = (this.clow << 1) & 65535; - this.ct--; - } while (0 == (32768 & c)); - this.a = c; - e[t] = (r << 1) | n; - return o; - } - }; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.JpegStream = void 0; - var r = a(18), - n = a(4), - i = a(27), - s = a(2); - class JpegStream extends r.DecodeStream { - constructor(e, t, a) { - let r; - for (; -1 !== (r = e.getByte()); ) - if (255 === r) { - e.skip(-1); - break; - } - super(t); - this.stream = e; - this.dict = e.dict; - this.maybeLength = t; - this.params = a; - } - get bytes() { - return (0, s.shadow)( - this, - "bytes", - this.stream.getBytes(this.maybeLength), - ); - } - ensureBuffer(e) {} - readBlock() { - if (this.eof) return; - const e = { decodeTransform: void 0, colorTransform: void 0 }, - t = this.dict.getArray("D", "Decode"); - if ((this.forceRGBA || this.forceRGB) && Array.isArray(t)) { - const a = this.dict.get("BPC", "BitsPerComponent") || 8, - r = t.length, - n = new Int32Array(r); - let i = !1; - const s = (1 << a) - 1; - for (let e = 0; e < r; e += 2) { - n[e] = (256 * (t[e + 1] - t[e])) | 0; - n[e + 1] = (t[e] * s) | 0; - (256 === n[e] && 0 === n[e + 1]) || (i = !0); - } - i && (e.decodeTransform = n); - } - if (this.params instanceof n.Dict) { - const t = this.params.get("ColorTransform"); - Number.isInteger(t) && (e.colorTransform = t); - } - const a = new i.JpegImage(e); - a.parse(this.bytes); - const r = a.getData({ - width: this.drawWidth, - height: this.drawHeight, - forceRGBA: this.forceRGBA, - forceRGB: this.forceRGB, - isSourcePDF: !0, - }); - this.buffer = r; - this.bufferLength = r.length; - this.eof = !0; - } - } - t.JpegStream = JpegStream; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.JpegImage = void 0; - var r = a(2), - n = a(28), - i = a(3); - class JpegError extends r.BaseException { - constructor(e) { - super(`JPEG error: ${e}`, "JpegError"); - } - } - class DNLMarkerError extends r.BaseException { - constructor(e, t) { - super(e, "DNLMarkerError"); - this.scanLines = t; - } - } - class EOIMarkerError extends r.BaseException { - constructor(e) { - super(e, "EOIMarkerError"); - } - } - const s = new Uint8Array([ - 0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, - 26, 33, 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, - 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51, 58, 59, 52, - 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63, - ]), - o = 4017, - c = 799, - l = 3406, - h = 2276, - u = 1567, - d = 3784, - f = 5793, - g = 2896; - function buildHuffmanTable(e, t) { - let a, - r, - n = 0, - i = 16; - for (; i > 0 && !e[i - 1]; ) i--; - const s = [{ children: [], index: 0 }]; - let o, - c = s[0]; - for (a = 0; a < i; a++) { - for (r = 0; r < e[a]; r++) { - c = s.pop(); - c.children[c.index] = t[n]; - for (; c.index > 0; ) c = s.pop(); - c.index++; - s.push(c); - for (; s.length <= a; ) { - s.push((o = { children: [], index: 0 })); - c.children[c.index] = o.children; - c = o; - } - n++; - } - if (a + 1 < i) { - s.push((o = { children: [], index: 0 })); - c.children[c.index] = o.children; - c = o; - } - } - return s[0].children; - } - function getBlockBufferOffset(e, t, a) { - return 64 * ((e.blocksPerLine + 1) * t + a); - } - function decodeScan(e, t, a, n, o, c, l, h, u, d = !1) { - const f = a.mcusPerLine, - g = a.progressive, - p = t; - let m = 0, - b = 0; - function readBit() { - if (b > 0) { - b--; - return (m >> b) & 1; - } - m = e[t++]; - if (255 === m) { - const r = e[t++]; - if (r) { - if (220 === r && d) { - t += 2; - const r = (0, i.readUint16)(e, t); - t += 2; - if (r > 0 && r !== a.scanLines) - throw new DNLMarkerError( - "Found DNL marker (0xFFDC) while parsing scan data", - r, - ); - } else if (217 === r) { - if (d) { - const e = x * (8 === a.precision ? 8 : 0); - if (e > 0 && Math.round(a.scanLines / e) >= 5) - throw new DNLMarkerError( - "Found EOI marker (0xFFD9) while parsing scan data, possibly caused by incorrect `scanLines` parameter", - e, - ); - } - throw new EOIMarkerError( - "Found EOI marker (0xFFD9) while parsing scan data", - ); - } - throw new JpegError( - `unexpected marker ${((m << 8) | r).toString(16)}`, - ); - } - } - b = 7; - return m >>> 7; - } - function decodeHuffman(e) { - let t = e; - for (;;) { - t = t[readBit()]; - switch (typeof t) { - case "number": - return t; - case "object": - continue; - } - throw new JpegError("invalid huffman sequence"); - } - } - function receive(e) { - let t = 0; - for (; e > 0; ) { - t = (t << 1) | readBit(); - e--; - } - return t; - } - function receiveAndExtend(e) { - if (1 === e) return 1 === readBit() ? 1 : -1; - const t = receive(e); - return t >= 1 << (e - 1) ? t : t + (-1 << e) + 1; - } - let y = 0; - let w, - S = 0; - let x = 0; - function decodeMcu(e, t, a, r, n) { - const i = a % f; - x = ((a / f) | 0) * e.v + r; - const s = i * e.h + n; - t(e, getBlockBufferOffset(e, x, s)); - } - function decodeBlock(e, t, a) { - x = (a / e.blocksPerLine) | 0; - const r = a % e.blocksPerLine; - t(e, getBlockBufferOffset(e, x, r)); - } - const C = n.length; - let k, v, F, O, T, M; - M = g - ? 0 === c - ? 0 === h - ? function decodeDCFirst(e, t) { - const a = decodeHuffman(e.huffmanTableDC), - r = 0 === a ? 0 : receiveAndExtend(a) << u; - e.blockData[t] = e.pred += r; - } - : function decodeDCSuccessive(e, t) { - e.blockData[t] |= readBit() << u; - } - : 0 === h - ? function decodeACFirst(e, t) { - if (y > 0) { - y--; - return; - } - let a = c; - const r = l; - for (; a <= r; ) { - const r = decodeHuffman(e.huffmanTableAC), - n = 15 & r, - i = r >> 4; - if (0 === n) { - if (i < 15) { - y = receive(i) + (1 << i) - 1; - break; - } - a += 16; - continue; - } - a += i; - const o = s[a]; - e.blockData[t + o] = receiveAndExtend(n) * (1 << u); - a++; - } - } - : function decodeACSuccessive(e, t) { - let a = c; - const r = l; - let n, - i, - o = 0; - for (; a <= r; ) { - const r = t + s[a], - c = e.blockData[r] < 0 ? -1 : 1; - switch (S) { - case 0: - i = decodeHuffman(e.huffmanTableAC); - n = 15 & i; - o = i >> 4; - if (0 === n) - if (o < 15) { - y = receive(o) + (1 << o); - S = 4; - } else { - o = 16; - S = 1; - } - else { - if (1 !== n) - throw new JpegError("invalid ACn encoding"); - w = receiveAndExtend(n); - S = o ? 2 : 3; - } - continue; - case 1: - case 2: - if (e.blockData[r]) - e.blockData[r] += c * (readBit() << u); - else { - o--; - 0 === o && (S = 2 === S ? 3 : 0); - } - break; - case 3: - if (e.blockData[r]) - e.blockData[r] += c * (readBit() << u); - else { - e.blockData[r] = w << u; - S = 0; - } - break; - case 4: - e.blockData[r] && - (e.blockData[r] += c * (readBit() << u)); - } - a++; - } - if (4 === S) { - y--; - 0 === y && (S = 0); - } - } - : function decodeBaseline(e, t) { - const a = decodeHuffman(e.huffmanTableDC), - r = 0 === a ? 0 : receiveAndExtend(a); - e.blockData[t] = e.pred += r; - let n = 1; - for (; n < 64; ) { - const a = decodeHuffman(e.huffmanTableAC), - r = 15 & a, - i = a >> 4; - if (0 === r) { - if (i < 15) break; - n += 16; - continue; - } - n += i; - const o = s[n]; - e.blockData[t + o] = receiveAndExtend(r); - n++; - } - }; - let D, - E = 0; - const N = - 1 === C - ? n[0].blocksPerLine * n[0].blocksPerColumn - : f * a.mcusPerColumn; - let R, L; - for (; E <= N; ) { - const a = o ? Math.min(N - E, o) : N; - if (a > 0) { - for (v = 0; v < C; v++) n[v].pred = 0; - y = 0; - if (1 === C) { - k = n[0]; - for (T = 0; T < a; T++) { - decodeBlock(k, M, E); - E++; - } - } else - for (T = 0; T < a; T++) { - for (v = 0; v < C; v++) { - k = n[v]; - R = k.h; - L = k.v; - for (F = 0; F < L; F++) - for (O = 0; O < R; O++) decodeMcu(k, M, E, F, O); - } - E++; - } - } - b = 0; - D = findNextFileMarker(e, t); - if (!D) break; - if (D.invalid) { - const e = a > 0 ? "unexpected" : "excessive"; - (0, r.warn)( - `decodeScan - ${e} MCU data, current marker is: ${D.invalid}`, - ); - t = D.offset; - } - if (!(D.marker >= 65488 && D.marker <= 65495)) break; - t += 2; - } - return t - p; - } - function quantizeAndInverse(e, t, a) { - const r = e.quantizationTable, - n = e.blockData; - let i, s, p, m, b, y, w, S, x, C, k, v, F, O, T, M, D; - if (!r) throw new JpegError("missing required Quantization Table."); - for (let e = 0; e < 64; e += 8) { - x = n[t + e]; - C = n[t + e + 1]; - k = n[t + e + 2]; - v = n[t + e + 3]; - F = n[t + e + 4]; - O = n[t + e + 5]; - T = n[t + e + 6]; - M = n[t + e + 7]; - x *= r[e]; - if (0 != (C | k | v | F | O | T | M)) { - C *= r[e + 1]; - k *= r[e + 2]; - v *= r[e + 3]; - F *= r[e + 4]; - O *= r[e + 5]; - T *= r[e + 6]; - M *= r[e + 7]; - i = (f * x + 128) >> 8; - s = (f * F + 128) >> 8; - p = k; - m = T; - b = (g * (C - M) + 128) >> 8; - S = (g * (C + M) + 128) >> 8; - y = v << 4; - w = O << 4; - i = (i + s + 1) >> 1; - s = i - s; - D = (p * d + m * u + 128) >> 8; - p = (p * u - m * d + 128) >> 8; - m = D; - b = (b + w + 1) >> 1; - w = b - w; - S = (S + y + 1) >> 1; - y = S - y; - i = (i + m + 1) >> 1; - m = i - m; - s = (s + p + 1) >> 1; - p = s - p; - D = (b * h + S * l + 2048) >> 12; - b = (b * l - S * h + 2048) >> 12; - S = D; - D = (y * c + w * o + 2048) >> 12; - y = (y * o - w * c + 2048) >> 12; - w = D; - a[e] = i + S; - a[e + 7] = i - S; - a[e + 1] = s + w; - a[e + 6] = s - w; - a[e + 2] = p + y; - a[e + 5] = p - y; - a[e + 3] = m + b; - a[e + 4] = m - b; - } else { - D = (f * x + 512) >> 10; - a[e] = D; - a[e + 1] = D; - a[e + 2] = D; - a[e + 3] = D; - a[e + 4] = D; - a[e + 5] = D; - a[e + 6] = D; - a[e + 7] = D; - } - } - for (let e = 0; e < 8; ++e) { - x = a[e]; - C = a[e + 8]; - k = a[e + 16]; - v = a[e + 24]; - F = a[e + 32]; - O = a[e + 40]; - T = a[e + 48]; - M = a[e + 56]; - if (0 != (C | k | v | F | O | T | M)) { - i = (f * x + 2048) >> 12; - s = (f * F + 2048) >> 12; - p = k; - m = T; - b = (g * (C - M) + 2048) >> 12; - S = (g * (C + M) + 2048) >> 12; - y = v; - w = O; - i = 4112 + ((i + s + 1) >> 1); - s = i - s; - D = (p * d + m * u + 2048) >> 12; - p = (p * u - m * d + 2048) >> 12; - m = D; - b = (b + w + 1) >> 1; - w = b - w; - S = (S + y + 1) >> 1; - y = S - y; - i = (i + m + 1) >> 1; - m = i - m; - s = (s + p + 1) >> 1; - p = s - p; - D = (b * h + S * l + 2048) >> 12; - b = (b * l - S * h + 2048) >> 12; - S = D; - D = (y * c + w * o + 2048) >> 12; - y = (y * o - w * c + 2048) >> 12; - w = D; - x = i + S; - M = i - S; - C = s + w; - T = s - w; - k = p + y; - O = p - y; - v = m + b; - F = m - b; - x < 16 ? (x = 0) : x >= 4080 ? (x = 255) : (x >>= 4); - C < 16 ? (C = 0) : C >= 4080 ? (C = 255) : (C >>= 4); - k < 16 ? (k = 0) : k >= 4080 ? (k = 255) : (k >>= 4); - v < 16 ? (v = 0) : v >= 4080 ? (v = 255) : (v >>= 4); - F < 16 ? (F = 0) : F >= 4080 ? (F = 255) : (F >>= 4); - O < 16 ? (O = 0) : O >= 4080 ? (O = 255) : (O >>= 4); - T < 16 ? (T = 0) : T >= 4080 ? (T = 255) : (T >>= 4); - M < 16 ? (M = 0) : M >= 4080 ? (M = 255) : (M >>= 4); - n[t + e] = x; - n[t + e + 8] = C; - n[t + e + 16] = k; - n[t + e + 24] = v; - n[t + e + 32] = F; - n[t + e + 40] = O; - n[t + e + 48] = T; - n[t + e + 56] = M; - } else { - D = (f * x + 8192) >> 14; - D = D < -2040 ? 0 : D >= 2024 ? 255 : (D + 2056) >> 4; - n[t + e] = D; - n[t + e + 8] = D; - n[t + e + 16] = D; - n[t + e + 24] = D; - n[t + e + 32] = D; - n[t + e + 40] = D; - n[t + e + 48] = D; - n[t + e + 56] = D; - } - } - } - function buildComponentData(e, t) { - const a = t.blocksPerLine, - r = t.blocksPerColumn, - n = new Int16Array(64); - for (let e = 0; e < r; e++) - for (let r = 0; r < a; r++) { - quantizeAndInverse(t, getBlockBufferOffset(t, e, r), n); - } - return t.blockData; - } - function findNextFileMarker(e, t, a = t) { - const r = e.length - 1; - let n = a < t ? a : t; - if (t >= r) return null; - const s = (0, i.readUint16)(e, t); - if (s >= 65472 && s <= 65534) - return { invalid: null, marker: s, offset: t }; - let o = (0, i.readUint16)(e, n); - for (; !(o >= 65472 && o <= 65534); ) { - if (++n >= r) return null; - o = (0, i.readUint16)(e, n); - } - return { invalid: s.toString(16), marker: o, offset: n }; - } - t.JpegImage = class JpegImage { - constructor({ - decodeTransform: e = null, - colorTransform: t = -1, - } = {}) { - this._decodeTransform = e; - this._colorTransform = t; - } - parse(e, { dnlScanLines: t = null } = {}) { - function readDataBlock() { - const t = (0, i.readUint16)(e, o); - o += 2; - let a = o + t - 2; - const n = findNextFileMarker(e, a, o); - if (n?.invalid) { - (0, r.warn)( - "readDataBlock - incorrect length, current marker is: " + - n.invalid, - ); - a = n.offset; - } - const s = e.subarray(o, a); - o += s.length; - return s; - } - function prepareComponents(e) { - const t = Math.ceil(e.samplesPerLine / 8 / e.maxH), - a = Math.ceil(e.scanLines / 8 / e.maxV); - for (const r of e.components) { - const n = Math.ceil( - (Math.ceil(e.samplesPerLine / 8) * r.h) / e.maxH, - ), - i = Math.ceil((Math.ceil(e.scanLines / 8) * r.v) / e.maxV), - s = t * r.h, - o = 64 * (a * r.v) * (s + 1); - r.blockData = new Int16Array(o); - r.blocksPerLine = n; - r.blocksPerColumn = i; - } - e.mcusPerLine = t; - e.mcusPerColumn = a; - } - let a, - n, - o = 0, - c = null, - l = null, - h = 0; - const u = [], - d = [], - f = []; - let g = (0, i.readUint16)(e, o); - o += 2; - if (65496 !== g) throw new JpegError("SOI not found"); - g = (0, i.readUint16)(e, o); - o += 2; - e: for (; 65497 !== g; ) { - let p, m, b; - switch (g) { - case 65504: - case 65505: - case 65506: - case 65507: - case 65508: - case 65509: - case 65510: - case 65511: - case 65512: - case 65513: - case 65514: - case 65515: - case 65516: - case 65517: - case 65518: - case 65519: - case 65534: - const y = readDataBlock(); - 65504 === g && - 74 === y[0] && - 70 === y[1] && - 73 === y[2] && - 70 === y[3] && - 0 === y[4] && - (c = { - version: { major: y[5], minor: y[6] }, - densityUnits: y[7], - xDensity: (y[8] << 8) | y[9], - yDensity: (y[10] << 8) | y[11], - thumbWidth: y[12], - thumbHeight: y[13], - thumbData: y.subarray(14, 14 + 3 * y[12] * y[13]), - }); - 65518 === g && - 65 === y[0] && - 100 === y[1] && - 111 === y[2] && - 98 === y[3] && - 101 === y[4] && - (l = { - version: (y[5] << 8) | y[6], - flags0: (y[7] << 8) | y[8], - flags1: (y[9] << 8) | y[10], - transformCode: y[11], - }); - break; - case 65499: - const w = (0, i.readUint16)(e, o); - o += 2; - const S = w + o - 2; - let x; - for (; o < S; ) { - const t = e[o++], - a = new Uint16Array(64); - if (t >> 4 == 0) - for (m = 0; m < 64; m++) { - x = s[m]; - a[x] = e[o++]; - } - else { - if (t >> 4 != 1) - throw new JpegError("DQT - invalid table spec"); - for (m = 0; m < 64; m++) { - x = s[m]; - a[x] = (0, i.readUint16)(e, o); - o += 2; - } - } - u[15 & t] = a; - } - break; - case 65472: - case 65473: - case 65474: - if (a) - throw new JpegError("Only single frame JPEGs supported"); - o += 2; - a = {}; - a.extended = 65473 === g; - a.progressive = 65474 === g; - a.precision = e[o++]; - const C = (0, i.readUint16)(e, o); - o += 2; - a.scanLines = t || C; - a.samplesPerLine = (0, i.readUint16)(e, o); - o += 2; - a.components = []; - a.componentIds = {}; - const k = e[o++]; - let v = 0, - F = 0; - for (p = 0; p < k; p++) { - const t = e[o], - r = e[o + 1] >> 4, - n = 15 & e[o + 1]; - v < r && (v = r); - F < n && (F = n); - const i = e[o + 2]; - b = a.components.push({ - h: r, - v: n, - quantizationId: i, - quantizationTable: null, - }); - a.componentIds[t] = b - 1; - o += 3; - } - a.maxH = v; - a.maxV = F; - prepareComponents(a); - break; - case 65476: - const O = (0, i.readUint16)(e, o); - o += 2; - for (p = 2; p < O; ) { - const t = e[o++], - a = new Uint8Array(16); - let r = 0; - for (m = 0; m < 16; m++, o++) r += a[m] = e[o]; - const n = new Uint8Array(r); - for (m = 0; m < r; m++, o++) n[m] = e[o]; - p += 17 + r; - (t >> 4 == 0 ? f : d)[15 & t] = buildHuffmanTable(a, n); - } - break; - case 65501: - o += 2; - n = (0, i.readUint16)(e, o); - o += 2; - break; - case 65498: - const T = 1 == ++h && !t; - o += 2; - const M = e[o++], - D = []; - for (p = 0; p < M; p++) { - const t = e[o++], - r = a.componentIds[t], - n = a.components[r]; - n.index = t; - const i = e[o++]; - n.huffmanTableDC = f[i >> 4]; - n.huffmanTableAC = d[15 & i]; - D.push(n); - } - const E = e[o++], - N = e[o++], - R = e[o++]; - try { - const t = decodeScan( - e, - o, - a, - D, - n, - E, - N, - R >> 4, - 15 & R, - T, - ); - o += t; - } catch (t) { - if (t instanceof DNLMarkerError) { - (0, r.warn)( - `${t.message} -- attempting to re-parse the JPEG image.`, - ); - return this.parse(e, { dnlScanLines: t.scanLines }); - } - if (t instanceof EOIMarkerError) { - (0, r.warn)( - `${t.message} -- ignoring the rest of the image data.`, - ); - break e; - } - throw t; - } - break; - case 65500: - o += 4; - break; - case 65535: - 255 !== e[o] && o--; - break; - default: - const L = findNextFileMarker(e, o - 2, o - 3); - if (L?.invalid) { - (0, r.warn)( - "JpegImage.parse - unexpected data, current marker is: " + - L.invalid, - ); - o = L.offset; - break; - } - if (!L || o >= e.length - 1) { - (0, r.warn)( - "JpegImage.parse - reached the end of the image data without finding an EOI marker (0xFFD9).", - ); - break e; - } - throw new JpegError( - "JpegImage.parse - unknown marker: " + g.toString(16), - ); - } - g = (0, i.readUint16)(e, o); - o += 2; - } - this.width = a.samplesPerLine; - this.height = a.scanLines; - this.jfif = c; - this.adobe = l; - this.components = []; - for (const e of a.components) { - const t = u[e.quantizationId]; - t && (e.quantizationTable = t); - this.components.push({ - index: e.index, - output: buildComponentData(0, e), - scaleX: e.h / a.maxH, - scaleY: e.v / a.maxV, - blocksPerLine: e.blocksPerLine, - blocksPerColumn: e.blocksPerColumn, - }); - } - this.numComponents = this.components.length; - } - _getLinearizedBlockData(e, t, a = !1) { - const r = this.width / e, - n = this.height / t; - let i, - s, - o, - c, - l, - h, - u, - d, - f, - g, - p, - m = 0; - const b = this.components.length, - y = e * t * b, - w = new Uint8ClampedArray(y), - S = new Uint32Array(e), - x = 4294967288; - let C; - for (u = 0; u < b; u++) { - i = this.components[u]; - s = i.scaleX * r; - o = i.scaleY * n; - m = u; - p = i.output; - c = (i.blocksPerLine + 1) << 3; - if (s !== C) { - for (l = 0; l < e; l++) { - d = 0 | (l * s); - S[l] = ((d & x) << 3) | (7 & d); - } - C = s; - } - for (h = 0; h < t; h++) { - d = 0 | (h * o); - g = (c * (d & x)) | ((7 & d) << 3); - for (l = 0; l < e; l++) { - w[m] = p[g + S[l]]; - m += b; - } - } - } - let k = this._decodeTransform; - a || - 4 !== b || - k || - (k = new Int32Array([ - -256, 255, -256, 255, -256, 255, -256, 255, - ])); - if (k) - for (u = 0; u < y; ) - for (d = 0, f = 0; d < b; d++, u++, f += 2) - w[u] = ((w[u] * k[f]) >> 8) + k[f + 1]; - return w; - } - get _isColorConversionNeeded() { - return this.adobe - ? !!this.adobe.transformCode - : 3 === this.numComponents - ? 0 !== this._colorTransform && - (82 !== this.components[0].index || - 71 !== this.components[1].index || - 66 !== this.components[2].index) - : 1 === this._colorTransform; - } - _convertYccToRgb(e) { - let t, a, r; - for (let n = 0, i = e.length; n < i; n += 3) { - t = e[n]; - a = e[n + 1]; - r = e[n + 2]; - e[n] = t - 179.456 + 1.402 * r; - e[n + 1] = t + 135.459 - 0.344 * a - 0.714 * r; - e[n + 2] = t - 226.816 + 1.772 * a; - } - return e; - } - _convertYccToRgba(e, t) { - for (let a = 0, r = 0, n = e.length; a < n; a += 3, r += 4) { - const n = e[a], - i = e[a + 1], - s = e[a + 2]; - t[r] = n - 179.456 + 1.402 * s; - t[r + 1] = n + 135.459 - 0.344 * i - 0.714 * s; - t[r + 2] = n - 226.816 + 1.772 * i; - t[r + 3] = 255; - } - return t; - } - _convertYcckToRgb(e) { - let t, - a, - r, - n, - i = 0; - for (let s = 0, o = e.length; s < o; s += 4) { - t = e[s]; - a = e[s + 1]; - r = e[s + 2]; - n = e[s + 3]; - e[i++] = - a * - (-660635669420364e-19 * a + - 0.000437130475926232 * r - - 54080610064599e-18 * t + - 0.00048449797120281 * n - - 0.154362151871126) - - 122.67195406894 + - r * - (-0.000957964378445773 * r + - 0.000817076911346625 * t - - 0.00477271405408747 * n + - 1.53380253221734) + - t * - (0.000961250184130688 * t - - 0.00266257332283933 * n + - 0.48357088451265) + - n * (-0.000336197177618394 * n + 0.484791561490776); - e[i++] = - 107.268039397724 + - a * - (219927104525741e-19 * a - - 0.000640992018297945 * r + - 0.000659397001245577 * t + - 0.000426105652938837 * n - - 0.176491792462875) + - r * - (-0.000778269941513683 * r + - 0.00130872261408275 * t + - 0.000770482631801132 * n - - 0.151051492775562) + - t * - (0.00126935368114843 * t - - 0.00265090189010898 * n + - 0.25802910206845) + - n * (-0.000318913117588328 * n - 0.213742400323665); - e[i++] = - a * - (-0.000570115196973677 * a - - 263409051004589e-19 * r + - 0.0020741088115012 * t - - 0.00288260236853442 * n + - 0.814272968359295) - - 20.810012546947 + - r * - (-153496057440975e-19 * r - - 0.000132689043961446 * t + - 0.000560833691242812 * n - - 0.195152027534049) + - t * - (0.00174418132927582 * t - - 0.00255243321439347 * n + - 0.116935020465145) + - n * (-0.000343531996510555 * n + 0.24165260232407); - } - return e.subarray(0, i); - } - _convertYcckToRgba(e) { - for (let t = 0, a = e.length; t < a; t += 4) { - const a = e[t], - r = e[t + 1], - n = e[t + 2], - i = e[t + 3]; - e[t] = - r * - (-660635669420364e-19 * r + - 0.000437130475926232 * n - - 54080610064599e-18 * a + - 0.00048449797120281 * i - - 0.154362151871126) - - 122.67195406894 + - n * - (-0.000957964378445773 * n + - 0.000817076911346625 * a - - 0.00477271405408747 * i + - 1.53380253221734) + - a * - (0.000961250184130688 * a - - 0.00266257332283933 * i + - 0.48357088451265) + - i * (-0.000336197177618394 * i + 0.484791561490776); - e[t + 1] = - 107.268039397724 + - r * - (219927104525741e-19 * r - - 0.000640992018297945 * n + - 0.000659397001245577 * a + - 0.000426105652938837 * i - - 0.176491792462875) + - n * - (-0.000778269941513683 * n + - 0.00130872261408275 * a + - 0.000770482631801132 * i - - 0.151051492775562) + - a * - (0.00126935368114843 * a - - 0.00265090189010898 * i + - 0.25802910206845) + - i * (-0.000318913117588328 * i - 0.213742400323665); - e[t + 2] = - r * - (-0.000570115196973677 * r - - 263409051004589e-19 * n + - 0.0020741088115012 * a - - 0.00288260236853442 * i + - 0.814272968359295) - - 20.810012546947 + - n * - (-153496057440975e-19 * n - - 0.000132689043961446 * a + - 0.000560833691242812 * i - - 0.195152027534049) + - a * - (0.00174418132927582 * a - - 0.00255243321439347 * i + - 0.116935020465145) + - i * (-0.000343531996510555 * i + 0.24165260232407); - e[t + 3] = 255; - } - return e; - } - _convertYcckToCmyk(e) { - let t, a, r; - for (let n = 0, i = e.length; n < i; n += 4) { - t = e[n]; - a = e[n + 1]; - r = e[n + 2]; - e[n] = 434.456 - t - 1.402 * r; - e[n + 1] = 119.541 - t + 0.344 * a + 0.714 * r; - e[n + 2] = 481.816 - t - 1.772 * a; - } - return e; - } - _convertCmykToRgb(e) { - let t, - a, - r, - n, - i = 0; - for (let s = 0, o = e.length; s < o; s += 4) { - t = e[s]; - a = e[s + 1]; - r = e[s + 2]; - n = e[s + 3]; - e[i++] = - 255 + - t * - (-6747147073602441e-20 * t + - 0.0008379262121013727 * a + - 0.0002894718188643294 * r + - 0.003264231057537806 * n - - 1.1185611867203937) + - a * - (26374107616089405e-21 * a - - 8626949158638572e-20 * r - - 0.0002748769067499491 * n - - 0.02155688794978967) + - r * - (-3878099212869363e-20 * r - - 0.0003267808279485286 * n + - 0.0686742238595345) - - n * (0.0003361971776183937 * n + 0.7430659151342254); - e[i++] = - 255 + - t * - (0.00013596372813588848 * t + - 0.000924537132573585 * a + - 0.00010567359618683593 * r + - 0.0004791864687436512 * n - - 0.3109689587515875) + - a * - (-0.00023545346108370344 * a + - 0.0002702845253534714 * r + - 0.0020200308977307156 * n - - 0.7488052167015494) + - r * - (6834815998235662e-20 * r + - 0.00015168452363460973 * n - - 0.09751927774728933) - - n * (0.0003189131175883281 * n + 0.7364883807733168); - e[i++] = - 255 + - t * - (13598650411385307e-21 * t + - 0.00012423956175490851 * a + - 0.0004751985097583589 * r - - 36729317476630422e-22 * n - - 0.05562186980264034) + - a * - (0.00016141380598724676 * a + - 0.0009692239130725186 * r + - 0.0007782692450036253 * n - - 0.44015232367526463) + - r * - (5.068882914068769e-7 * r + - 0.0017778369011375071 * n - - 0.7591454649749609) - - n * (0.0003435319965105553 * n + 0.7063770186160144); - } - return e.subarray(0, i); - } - _convertCmykToRgba(e) { - for (let t = 0, a = e.length; t < a; t += 4) { - const a = e[t], - r = e[t + 1], - n = e[t + 2], - i = e[t + 3]; - e[t] = - 255 + - a * - (-6747147073602441e-20 * a + - 0.0008379262121013727 * r + - 0.0002894718188643294 * n + - 0.003264231057537806 * i - - 1.1185611867203937) + - r * - (26374107616089405e-21 * r - - 8626949158638572e-20 * n - - 0.0002748769067499491 * i - - 0.02155688794978967) + - n * - (-3878099212869363e-20 * n - - 0.0003267808279485286 * i + - 0.0686742238595345) - - i * (0.0003361971776183937 * i + 0.7430659151342254); - e[t + 1] = - 255 + - a * - (0.00013596372813588848 * a + - 0.000924537132573585 * r + - 0.00010567359618683593 * n + - 0.0004791864687436512 * i - - 0.3109689587515875) + - r * - (-0.00023545346108370344 * r + - 0.0002702845253534714 * n + - 0.0020200308977307156 * i - - 0.7488052167015494) + - n * - (6834815998235662e-20 * n + - 0.00015168452363460973 * i - - 0.09751927774728933) - - i * (0.0003189131175883281 * i + 0.7364883807733168); - e[t + 2] = - 255 + - a * - (13598650411385307e-21 * a + - 0.00012423956175490851 * r + - 0.0004751985097583589 * n - - 36729317476630422e-22 * i - - 0.05562186980264034) + - r * - (0.00016141380598724676 * r + - 0.0009692239130725186 * n + - 0.0007782692450036253 * i - - 0.44015232367526463) + - n * - (5.068882914068769e-7 * n + - 0.0017778369011375071 * i - - 0.7591454649749609) - - i * (0.0003435319965105553 * i + 0.7063770186160144); - e[t + 3] = 255; - } - return e; - } - getData({ - width: e, - height: t, - forceRGBA: a = !1, - forceRGB: r = !1, - isSourcePDF: i = !1, - }) { - if (this.numComponents > 4) - throw new JpegError("Unsupported color mode"); - const s = this._getLinearizedBlockData(e, t, i); - if (1 === this.numComponents && (a || r)) { - const e = s.length * (a ? 4 : 3), - t = new Uint8ClampedArray(e); - let r = 0; - if (a) (0, n.grayToRGBA)(s, new Uint32Array(t.buffer)); - else - for (const e of s) { - t[r++] = e; - t[r++] = e; - t[r++] = e; - } - return t; - } - if (3 === this.numComponents && this._isColorConversionNeeded) { - if (a) { - const e = new Uint8ClampedArray((s.length / 3) * 4); - return this._convertYccToRgba(s, e); - } - return this._convertYccToRgb(s); - } - if (4 === this.numComponents) { - if (this._isColorConversionNeeded) - return a - ? this._convertYcckToRgba(s) - : r - ? this._convertYcckToRgb(s) - : this._convertYcckToCmyk(s); - if (a) return this._convertCmykToRgba(s); - if (r) return this._convertCmykToRgb(s); - } - return s; - } - }; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.convertBlackAndWhiteToRGBA = convertBlackAndWhiteToRGBA; - t.convertToRGBA = function convertToRGBA(e) { - switch (e.kind) { - case r.ImageKind.GRAYSCALE_1BPP: - return convertBlackAndWhiteToRGBA(e); - case r.ImageKind.RGB_24BPP: - return (function convertRGBToRGBA({ - src: e, - srcPos: t = 0, - dest: a, - destPos: n = 0, - width: i, - height: s, - }) { - let o = 0; - const c = e.length >> 2, - l = new Uint32Array(e.buffer, t, c); - if (r.FeatureTest.isLittleEndian) { - for (; o < c - 2; o += 3, n += 4) { - const e = l[o], - t = l[o + 1], - r = l[o + 2]; - a[n] = 4278190080 | e; - a[n + 1] = (e >>> 24) | (t << 8) | 4278190080; - a[n + 2] = (t >>> 16) | (r << 16) | 4278190080; - a[n + 3] = (r >>> 8) | 4278190080; - } - for (let t = 4 * o, r = e.length; t < r; t += 3) - a[n++] = - e[t] | (e[t + 1] << 8) | (e[t + 2] << 16) | 4278190080; - } else { - for (; o < c - 2; o += 3, n += 4) { - const e = l[o], - t = l[o + 1], - r = l[o + 2]; - a[n] = 255 | e; - a[n + 1] = (e << 24) | (t >>> 8) | 255; - a[n + 2] = (t << 16) | (r >>> 16) | 255; - a[n + 3] = (r << 8) | 255; - } - for (let t = 4 * o, r = e.length; t < r; t += 3) - a[n++] = - (e[t] << 24) | (e[t + 1] << 16) | (e[t + 2] << 8) | 255; - } - return { srcPos: t, destPos: n }; - })(e); - } - return null; - }; - t.grayToRGBA = function grayToRGBA(e, t) { - if (r.FeatureTest.isLittleEndian) - for (let a = 0, r = e.length; a < r; a++) - t[a] = (65793 * e[a]) | 4278190080; - else - for (let a = 0, r = e.length; a < r; a++) - t[a] = (16843008 * e[a]) | 255; - }; - var r = a(2); - function convertBlackAndWhiteToRGBA({ - src: e, - srcPos: t = 0, - dest: a, - width: n, - height: i, - nonBlackColor: s = 4294967295, - inverseDecode: o = !1, - }) { - const c = r.FeatureTest.isLittleEndian ? 4278190080 : 255, - [l, h] = o ? [s, c] : [c, s], - u = n >> 3, - d = 7 & n, - f = e.length; - a = new Uint32Array(a.buffer); - let g = 0; - for (let r = 0; r < i; r++) { - for (const r = t + u; t < r; t++) { - const r = t < f ? e[t] : 255; - a[g++] = 128 & r ? h : l; - a[g++] = 64 & r ? h : l; - a[g++] = 32 & r ? h : l; - a[g++] = 16 & r ? h : l; - a[g++] = 8 & r ? h : l; - a[g++] = 4 & r ? h : l; - a[g++] = 2 & r ? h : l; - a[g++] = 1 & r ? h : l; - } - if (0 === d) continue; - const r = t < f ? e[t++] : 255; - for (let e = 0; e < d; e++) a[g++] = r & (1 << (7 - e)) ? h : l; - } - return { srcPos: t, destPos: g }; - } - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.JpxStream = void 0; - var r = a(18), - n = a(30), - i = a(2); - class JpxStream extends r.DecodeStream { - constructor(e, t, a) { - super(t); - this.stream = e; - this.dict = e.dict; - this.maybeLength = t; - this.params = a; - } - get bytes() { - return (0, i.shadow)( - this, - "bytes", - this.stream.getBytes(this.maybeLength), - ); - } - ensureBuffer(e) {} - readBlock() { - if (this.eof) return; - const e = new n.JpxImage(); - e.parse(this.bytes); - const t = e.width, - a = e.height, - r = e.componentsCount, - i = e.tiles.length; - if (1 === i) this.buffer = e.tiles[0].items; - else { - const n = new Uint8ClampedArray(t * a * r); - for (let a = 0; a < i; a++) { - const i = e.tiles[a], - s = i.width, - o = i.height, - c = i.left, - l = i.top, - h = i.items; - let u = 0, - d = (t * l + c) * r; - const f = t * r, - g = s * r; - for (let e = 0; e < o; e++) { - const e = h.subarray(u, u + g); - n.set(e, d); - u += g; - d += f; - } - } - this.buffer = n; - } - this.bufferLength = this.buffer.length; - this.eof = !0; - } - } - t.JpxStream = JpxStream; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.JpxImage = void 0; - var r = a(2), - n = a(3), - i = a(25); - class JpxError extends r.BaseException { - constructor(e) { - super(`JPX error: ${e}`, "JpxError"); - } - } - const s = { LL: 0, LH: 1, HL: 1, HH: 2 }; - t.JpxImage = class JpxImage { - constructor() { - this.failOnCorruptedImage = !1; - } - parse(e) { - if (65359 === (0, n.readUint16)(e, 0)) { - this.parseCodestream(e, 0, e.length); - return; - } - const t = e.length; - let a = 0; - for (; a < t; ) { - let i = 8, - s = (0, n.readUint32)(e, a); - const o = (0, n.readUint32)(e, a + 4); - a += i; - if (1 === s) { - s = - 4294967296 * (0, n.readUint32)(e, a) + - (0, n.readUint32)(e, a + 4); - a += 8; - i += 8; - } - 0 === s && (s = t - a + i); - if (s < i) throw new JpxError("Invalid box field size"); - const c = s - i; - let l = !0; - switch (o) { - case 1785737832: - l = !1; - break; - case 1668246642: - const t = e[a]; - if (1 === t) { - const t = (0, n.readUint32)(e, a + 3); - switch (t) { - case 16: - case 17: - case 18: - break; - default: - (0, r.warn)("Unknown colorspace " + t); - } - } else 2 === t && (0, r.info)("ICC profile not supported"); - break; - case 1785737827: - this.parseCodestream(e, a, a + c); - break; - case 1783636e3: - 218793738 !== (0, n.readUint32)(e, a) && - (0, r.warn)("Invalid JP2 signature"); - break; - case 1783634458: - case 1718909296: - case 1920099697: - case 1919251232: - case 1768449138: - break; - default: - const i = String.fromCharCode( - (o >> 24) & 255, - (o >> 16) & 255, - (o >> 8) & 255, - 255 & o, - ); - (0, r.warn)(`Unsupported header type ${o} (${i}).`); - } - l && (a += c); - } - } - parseImageProperties(e) { - let t = e.getByte(); - for (; t >= 0; ) { - const a = t; - t = e.getByte(); - if (65361 === ((a << 8) | t)) { - e.skip(4); - const t = e.getInt32() >>> 0, - a = e.getInt32() >>> 0, - r = e.getInt32() >>> 0, - n = e.getInt32() >>> 0; - e.skip(16); - const i = e.getUint16(); - this.width = t - r; - this.height = a - n; - this.componentsCount = i; - this.bitsPerComponent = 8; - return; - } - } - throw new JpxError("No size marker found in JPX stream"); - } - parseCodestream(e, t, a) { - const i = {}; - let s = !1; - try { - let o = t; - for (; o + 1 < a; ) { - const t = (0, n.readUint16)(e, o); - o += 2; - let a, - c, - l, - h, - u, - d, - f = 0; - switch (t) { - case 65359: - i.mainHeader = !0; - break; - case 65497: - break; - case 65361: - f = (0, n.readUint16)(e, o); - const g = {}; - g.Xsiz = (0, n.readUint32)(e, o + 4); - g.Ysiz = (0, n.readUint32)(e, o + 8); - g.XOsiz = (0, n.readUint32)(e, o + 12); - g.YOsiz = (0, n.readUint32)(e, o + 16); - g.XTsiz = (0, n.readUint32)(e, o + 20); - g.YTsiz = (0, n.readUint32)(e, o + 24); - g.XTOsiz = (0, n.readUint32)(e, o + 28); - g.YTOsiz = (0, n.readUint32)(e, o + 32); - const p = (0, n.readUint16)(e, o + 36); - g.Csiz = p; - const m = []; - a = o + 38; - for (let t = 0; t < p; t++) { - const t = { - precision: 1 + (127 & e[a]), - isSigned: !!(128 & e[a]), - XRsiz: e[a + 1], - YRsiz: e[a + 2], - }; - a += 3; - calculateComponentDimensions(t, g); - m.push(t); - } - i.SIZ = g; - i.components = m; - calculateTileGrids(i, m); - i.QCC = []; - i.COC = []; - break; - case 65372: - f = (0, n.readUint16)(e, o); - const b = {}; - a = o + 2; - c = e[a++]; - switch (31 & c) { - case 0: - h = 8; - u = !0; - break; - case 1: - h = 16; - u = !1; - break; - case 2: - h = 16; - u = !0; - break; - default: - throw new Error("Invalid SQcd value " + c); - } - b.noQuantization = 8 === h; - b.scalarExpounded = u; - b.guardBits = c >> 5; - l = []; - for (; a < f + o; ) { - const t = {}; - if (8 === h) { - t.epsilon = e[a++] >> 3; - t.mu = 0; - } else { - t.epsilon = e[a] >> 3; - t.mu = ((7 & e[a]) << 8) | e[a + 1]; - a += 2; - } - l.push(t); - } - b.SPqcds = l; - if (i.mainHeader) i.QCD = b; - else { - i.currentTile.QCD = b; - i.currentTile.QCC = []; - } - break; - case 65373: - f = (0, n.readUint16)(e, o); - const y = {}; - a = o + 2; - let w; - if (i.SIZ.Csiz < 257) w = e[a++]; - else { - w = (0, n.readUint16)(e, a); - a += 2; - } - c = e[a++]; - switch (31 & c) { - case 0: - h = 8; - u = !0; - break; - case 1: - h = 16; - u = !1; - break; - case 2: - h = 16; - u = !0; - break; - default: - throw new Error("Invalid SQcd value " + c); - } - y.noQuantization = 8 === h; - y.scalarExpounded = u; - y.guardBits = c >> 5; - l = []; - for (; a < f + o; ) { - const t = {}; - if (8 === h) { - t.epsilon = e[a++] >> 3; - t.mu = 0; - } else { - t.epsilon = e[a] >> 3; - t.mu = ((7 & e[a]) << 8) | e[a + 1]; - a += 2; - } - l.push(t); - } - y.SPqcds = l; - i.mainHeader - ? (i.QCC[w] = y) - : (i.currentTile.QCC[w] = y); - break; - case 65362: - f = (0, n.readUint16)(e, o); - const S = {}; - a = o + 2; - const x = e[a++]; - S.entropyCoderWithCustomPrecincts = !!(1 & x); - S.sopMarkerUsed = !!(2 & x); - S.ephMarkerUsed = !!(4 & x); - S.progressionOrder = e[a++]; - S.layersCount = (0, n.readUint16)(e, a); - a += 2; - S.multipleComponentTransform = e[a++]; - S.decompositionLevelsCount = e[a++]; - S.xcb = 2 + (15 & e[a++]); - S.ycb = 2 + (15 & e[a++]); - const C = e[a++]; - S.selectiveArithmeticCodingBypass = !!(1 & C); - S.resetContextProbabilities = !!(2 & C); - S.terminationOnEachCodingPass = !!(4 & C); - S.verticallyStripe = !!(8 & C); - S.predictableTermination = !!(16 & C); - S.segmentationSymbolUsed = !!(32 & C); - S.reversibleTransformation = e[a++]; - if (S.entropyCoderWithCustomPrecincts) { - const t = []; - for (; a < f + o; ) { - const r = e[a++]; - t.push({ PPx: 15 & r, PPy: r >> 4 }); - } - S.precinctsSizes = t; - } - const k = []; - S.selectiveArithmeticCodingBypass && - k.push("selectiveArithmeticCodingBypass"); - S.terminationOnEachCodingPass && - k.push("terminationOnEachCodingPass"); - S.verticallyStripe && k.push("verticallyStripe"); - S.predictableTermination && - k.push("predictableTermination"); - if (k.length > 0) { - s = !0; - (0, r.warn)( - `JPX: Unsupported COD options (${k.join(", ")}).`, - ); - } - if (i.mainHeader) i.COD = S; - else { - i.currentTile.COD = S; - i.currentTile.COC = []; - } - break; - case 65424: - f = (0, n.readUint16)(e, o); - d = {}; - d.index = (0, n.readUint16)(e, o + 2); - d.length = (0, n.readUint32)(e, o + 4); - d.dataEnd = d.length + o - 2; - d.partIndex = e[o + 8]; - d.partsCount = e[o + 9]; - i.mainHeader = !1; - if (0 === d.partIndex) { - d.COD = i.COD; - d.COC = i.COC.slice(0); - d.QCD = i.QCD; - d.QCC = i.QCC.slice(0); - } - i.currentTile = d; - break; - case 65427: - d = i.currentTile; - if (0 === d.partIndex) { - initializeTile(i, d.index); - buildPackets(i); - } - f = d.dataEnd - o; - parseTilePackets(i, e, o, f); - break; - case 65363: - (0, r.warn)( - "JPX: Codestream code 0xFF53 (COC) is not implemented.", - ); - case 65365: - case 65367: - case 65368: - case 65380: - f = (0, n.readUint16)(e, o); - break; - default: - throw new Error( - "Unknown codestream code: " + t.toString(16), - ); - } - o += f; - } - } catch (e) { - if (s || this.failOnCorruptedImage) - throw new JpxError(e.message); - (0, r.warn)(`JPX: Trying to recover from: "${e.message}".`); - } - this.tiles = (function transformComponents(e) { - const t = e.SIZ, - a = e.components, - r = t.Csiz, - n = []; - for (let t = 0, i = e.tiles.length; t < i; t++) { - const i = e.tiles[t], - s = []; - for (let t = 0; t < r; t++) s[t] = transformTile(e, i, t); - const o = s[0], - c = new Uint8ClampedArray(o.items.length * r), - l = { - left: o.left, - top: o.top, - width: o.width, - height: o.height, - items: c, - }; - let h, - u, - d, - f, - g, - p, - m, - b = 0; - if ( - i.codingStyleDefaultParameters.multipleComponentTransform - ) { - const e = 4 === r, - t = s[0].items, - n = s[1].items, - o = s[2].items, - l = e ? s[3].items : null; - h = a[0].precision - 8; - u = 0.5 + (128 << h); - const y = i.components[0], - w = r - 3; - f = t.length; - if (y.codingStyleParameters.reversibleTransformation) - for (d = 0; d < f; d++, b += w) { - g = t[d] + u; - p = n[d]; - m = o[d]; - const e = g - ((m + p) >> 2); - c[b++] = (e + m) >> h; - c[b++] = e >> h; - c[b++] = (e + p) >> h; - } - else - for (d = 0; d < f; d++, b += w) { - g = t[d] + u; - p = n[d]; - m = o[d]; - c[b++] = (g + 1.402 * m) >> h; - c[b++] = (g - 0.34413 * p - 0.71414 * m) >> h; - c[b++] = (g + 1.772 * p) >> h; - } - if (e) - for (d = 0, b = 3; d < f; d++, b += 4) - c[b] = (l[d] + u) >> h; - } else - for (let e = 0; e < r; e++) { - const t = s[e].items; - h = a[e].precision - 8; - u = 0.5 + (128 << h); - for (b = e, d = 0, f = t.length; d < f; d++) { - c[b] = (t[d] + u) >> h; - b += r; - } - } - n.push(l); - } - return n; - })(i); - this.width = i.SIZ.Xsiz - i.SIZ.XOsiz; - this.height = i.SIZ.Ysiz - i.SIZ.YOsiz; - this.componentsCount = i.SIZ.Csiz; - } - }; - function calculateComponentDimensions(e, t) { - e.x0 = Math.ceil(t.XOsiz / e.XRsiz); - e.x1 = Math.ceil(t.Xsiz / e.XRsiz); - e.y0 = Math.ceil(t.YOsiz / e.YRsiz); - e.y1 = Math.ceil(t.Ysiz / e.YRsiz); - e.width = e.x1 - e.x0; - e.height = e.y1 - e.y0; - } - function calculateTileGrids(e, t) { - const a = e.SIZ, - r = []; - let n; - const i = Math.ceil((a.Xsiz - a.XTOsiz) / a.XTsiz), - s = Math.ceil((a.Ysiz - a.YTOsiz) / a.YTsiz); - for (let e = 0; e < s; e++) - for (let t = 0; t < i; t++) { - n = {}; - n.tx0 = Math.max(a.XTOsiz + t * a.XTsiz, a.XOsiz); - n.ty0 = Math.max(a.YTOsiz + e * a.YTsiz, a.YOsiz); - n.tx1 = Math.min(a.XTOsiz + (t + 1) * a.XTsiz, a.Xsiz); - n.ty1 = Math.min(a.YTOsiz + (e + 1) * a.YTsiz, a.Ysiz); - n.width = n.tx1 - n.tx0; - n.height = n.ty1 - n.ty0; - n.components = []; - r.push(n); - } - e.tiles = r; - for (let e = 0, i = a.Csiz; e < i; e++) { - const a = t[e]; - for (let t = 0, i = r.length; t < i; t++) { - const i = {}; - n = r[t]; - i.tcx0 = Math.ceil(n.tx0 / a.XRsiz); - i.tcy0 = Math.ceil(n.ty0 / a.YRsiz); - i.tcx1 = Math.ceil(n.tx1 / a.XRsiz); - i.tcy1 = Math.ceil(n.ty1 / a.YRsiz); - i.width = i.tcx1 - i.tcx0; - i.height = i.tcy1 - i.tcy0; - n.components[e] = i; - } - } - } - function getBlocksDimensions(e, t, a) { - const r = t.codingStyleParameters, - n = {}; - if (r.entropyCoderWithCustomPrecincts) { - n.PPx = r.precinctsSizes[a].PPx; - n.PPy = r.precinctsSizes[a].PPy; - } else { - n.PPx = 15; - n.PPy = 15; - } - n.xcb_ = - a > 0 ? Math.min(r.xcb, n.PPx - 1) : Math.min(r.xcb, n.PPx); - n.ycb_ = - a > 0 ? Math.min(r.ycb, n.PPy - 1) : Math.min(r.ycb, n.PPy); - return n; - } - function buildPrecincts(e, t, a) { - const r = 1 << a.PPx, - n = 1 << a.PPy, - i = 0 === t.resLevel, - s = 1 << (a.PPx + (i ? 0 : -1)), - o = 1 << (a.PPy + (i ? 0 : -1)), - c = - t.trx1 > t.trx0 - ? Math.ceil(t.trx1 / r) - Math.floor(t.trx0 / r) - : 0, - l = - t.try1 > t.try0 - ? Math.ceil(t.try1 / n) - Math.floor(t.try0 / n) - : 0, - h = c * l; - t.precinctParameters = { - precinctWidth: r, - precinctHeight: n, - numprecinctswide: c, - numprecinctshigh: l, - numprecincts: h, - precinctWidthInSubband: s, - precinctHeightInSubband: o, - }; - } - function buildCodeblocks(e, t, a) { - const r = a.xcb_, - n = a.ycb_, - i = 1 << r, - s = 1 << n, - o = t.tbx0 >> r, - c = t.tby0 >> n, - l = (t.tbx1 + i - 1) >> r, - h = (t.tby1 + s - 1) >> n, - u = t.resolution.precinctParameters, - d = [], - f = []; - let g, p, m, b; - for (p = c; p < h; p++) - for (g = o; g < l; g++) { - m = { - cbx: g, - cby: p, - tbx0: i * g, - tby0: s * p, - tbx1: i * (g + 1), - tby1: s * (p + 1), - }; - m.tbx0_ = Math.max(t.tbx0, m.tbx0); - m.tby0_ = Math.max(t.tby0, m.tby0); - m.tbx1_ = Math.min(t.tbx1, m.tbx1); - m.tby1_ = Math.min(t.tby1, m.tby1); - b = - Math.floor((m.tbx0_ - t.tbx0) / u.precinctWidthInSubband) + - Math.floor((m.tby0_ - t.tby0) / u.precinctHeightInSubband) * - u.numprecinctswide; - m.precinctNumber = b; - m.subbandType = t.type; - m.Lblock = 3; - if (m.tbx1_ <= m.tbx0_ || m.tby1_ <= m.tby0_) continue; - d.push(m); - let e = f[b]; - if (void 0 !== e) { - g < e.cbxMin - ? (e.cbxMin = g) - : g > e.cbxMax && (e.cbxMax = g); - p < e.cbyMin - ? (e.cbxMin = p) - : p > e.cbyMax && (e.cbyMax = p); - } else - f[b] = e = { cbxMin: g, cbyMin: p, cbxMax: g, cbyMax: p }; - m.precinct = e; - } - t.codeblockParameters = { - codeblockWidth: r, - codeblockHeight: n, - numcodeblockwide: l - o + 1, - numcodeblockhigh: h - c + 1, - }; - t.codeblocks = d; - t.precincts = f; - } - function createPacket(e, t, a) { - const r = [], - n = e.subbands; - for (let e = 0, a = n.length; e < a; e++) { - const a = n[e].codeblocks; - for (let e = 0, n = a.length; e < n; e++) { - const n = a[e]; - n.precinctNumber === t && r.push(n); - } - } - return { layerNumber: a, codeblocks: r }; - } - function LayerResolutionComponentPositionIterator(e) { - const t = e.SIZ, - a = e.currentTile.index, - r = e.tiles[a], - n = r.codingStyleDefaultParameters.layersCount, - i = t.Csiz; - let s = 0; - for (let e = 0; e < i; e++) - s = Math.max( - s, - r.components[e].codingStyleParameters.decompositionLevelsCount, - ); - let o = 0, - c = 0, - l = 0, - h = 0; - this.nextPacket = function JpxImage_nextPacket() { - for (; o < n; o++) { - for (; c <= s; c++) { - for (; l < i; l++) { - const e = r.components[l]; - if (c > e.codingStyleParameters.decompositionLevelsCount) - continue; - const t = e.resolutions[c], - a = t.precinctParameters.numprecincts; - for (; h < a; ) { - const e = createPacket(t, h, o); - h++; - return e; - } - h = 0; - } - l = 0; - } - c = 0; - } - throw new JpxError("Out of packets"); - }; - } - function ResolutionLayerComponentPositionIterator(e) { - const t = e.SIZ, - a = e.currentTile.index, - r = e.tiles[a], - n = r.codingStyleDefaultParameters.layersCount, - i = t.Csiz; - let s = 0; - for (let e = 0; e < i; e++) - s = Math.max( - s, - r.components[e].codingStyleParameters.decompositionLevelsCount, - ); - let o = 0, - c = 0, - l = 0, - h = 0; - this.nextPacket = function JpxImage_nextPacket() { - for (; o <= s; o++) { - for (; c < n; c++) { - for (; l < i; l++) { - const e = r.components[l]; - if (o > e.codingStyleParameters.decompositionLevelsCount) - continue; - const t = e.resolutions[o], - a = t.precinctParameters.numprecincts; - for (; h < a; ) { - const e = createPacket(t, h, c); - h++; - return e; - } - h = 0; - } - l = 0; - } - c = 0; - } - throw new JpxError("Out of packets"); - }; - } - function ResolutionPositionComponentLayerIterator(e) { - const t = e.SIZ, - a = e.currentTile.index, - r = e.tiles[a], - n = r.codingStyleDefaultParameters.layersCount, - i = t.Csiz; - let s, - o, - c, - l, - h = 0; - for (c = 0; c < i; c++) { - const e = r.components[c]; - h = Math.max(h, e.codingStyleParameters.decompositionLevelsCount); - } - const u = new Int32Array(h + 1); - for (o = 0; o <= h; ++o) { - let e = 0; - for (c = 0; c < i; ++c) { - const t = r.components[c].resolutions; - o < t.length && - (e = Math.max(e, t[o].precinctParameters.numprecincts)); - } - u[o] = e; - } - s = 0; - o = 0; - c = 0; - l = 0; - this.nextPacket = function JpxImage_nextPacket() { - for (; o <= h; o++) { - for (; l < u[o]; l++) { - for (; c < i; c++) { - const e = r.components[c]; - if (o > e.codingStyleParameters.decompositionLevelsCount) - continue; - const t = e.resolutions[o], - a = t.precinctParameters.numprecincts; - if (!(l >= a)) { - for (; s < n; ) { - const e = createPacket(t, l, s); - s++; - return e; - } - s = 0; - } - } - c = 0; - } - l = 0; - } - throw new JpxError("Out of packets"); - }; - } - function PositionComponentResolutionLayerIterator(e) { - const t = e.SIZ, - a = e.currentTile.index, - r = e.tiles[a], - n = r.codingStyleDefaultParameters.layersCount, - i = t.Csiz, - s = getPrecinctSizesInImageScale(r), - o = s; - let c = 0, - l = 0, - h = 0, - u = 0, - d = 0; - this.nextPacket = function JpxImage_nextPacket() { - for (; d < o.maxNumHigh; d++) { - for (; u < o.maxNumWide; u++) { - for (; h < i; h++) { - const e = r.components[h], - t = e.codingStyleParameters.decompositionLevelsCount; - for (; l <= t; l++) { - const t = e.resolutions[l], - a = s.components[h].resolutions[l], - r = getPrecinctIndexIfExist(u, d, a, o, t); - if (null !== r) { - for (; c < n; ) { - const e = createPacket(t, r, c); - c++; - return e; - } - c = 0; - } - } - l = 0; - } - h = 0; - } - u = 0; - } - throw new JpxError("Out of packets"); - }; - } - function ComponentPositionResolutionLayerIterator(e) { - const t = e.SIZ, - a = e.currentTile.index, - r = e.tiles[a], - n = r.codingStyleDefaultParameters.layersCount, - i = t.Csiz, - s = getPrecinctSizesInImageScale(r); - let o = 0, - c = 0, - l = 0, - h = 0, - u = 0; - this.nextPacket = function JpxImage_nextPacket() { - for (; l < i; ++l) { - const e = r.components[l], - t = s.components[l], - a = e.codingStyleParameters.decompositionLevelsCount; - for (; u < t.maxNumHigh; u++) { - for (; h < t.maxNumWide; h++) { - for (; c <= a; c++) { - const a = e.resolutions[c], - r = t.resolutions[c], - i = getPrecinctIndexIfExist(h, u, r, t, a); - if (null !== i) { - for (; o < n; ) { - const e = createPacket(a, i, o); - o++; - return e; - } - o = 0; - } - } - c = 0; - } - h = 0; - } - u = 0; - } - throw new JpxError("Out of packets"); - }; - } - function getPrecinctIndexIfExist(e, t, a, r, n) { - const i = e * r.minWidth, - s = t * r.minHeight; - if (i % a.width != 0 || s % a.height != 0) return null; - const o = (s / a.width) * n.precinctParameters.numprecinctswide; - return i / a.height + o; - } - function getPrecinctSizesInImageScale(e) { - const t = e.components.length; - let a = Number.MAX_VALUE, - r = Number.MAX_VALUE, - n = 0, - i = 0; - const s = new Array(t); - for (let o = 0; o < t; o++) { - const t = e.components[o], - c = t.codingStyleParameters.decompositionLevelsCount, - l = new Array(c + 1); - let h = Number.MAX_VALUE, - u = Number.MAX_VALUE, - d = 0, - f = 0, - g = 1; - for (let e = c; e >= 0; --e) { - const a = t.resolutions[e], - r = g * a.precinctParameters.precinctWidth, - n = g * a.precinctParameters.precinctHeight; - h = Math.min(h, r); - u = Math.min(u, n); - d = Math.max(d, a.precinctParameters.numprecinctswide); - f = Math.max(f, a.precinctParameters.numprecinctshigh); - l[e] = { width: r, height: n }; - g <<= 1; - } - a = Math.min(a, h); - r = Math.min(r, u); - n = Math.max(n, d); - i = Math.max(i, f); - s[o] = { - resolutions: l, - minWidth: h, - minHeight: u, - maxNumWide: d, - maxNumHigh: f, - }; - } - return { - components: s, - minWidth: a, - minHeight: r, - maxNumWide: n, - maxNumHigh: i, - }; - } - function buildPackets(e) { - const t = e.SIZ, - a = e.currentTile.index, - r = e.tiles[a], - n = t.Csiz; - for (let e = 0; e < n; e++) { - const t = r.components[e], - a = t.codingStyleParameters.decompositionLevelsCount, - n = [], - i = []; - for (let e = 0; e <= a; e++) { - const r = getBlocksDimensions(0, t, e), - s = {}, - o = 1 << (a - e); - s.trx0 = Math.ceil(t.tcx0 / o); - s.try0 = Math.ceil(t.tcy0 / o); - s.trx1 = Math.ceil(t.tcx1 / o); - s.try1 = Math.ceil(t.tcy1 / o); - s.resLevel = e; - buildPrecincts(0, s, r); - n.push(s); - let c; - if (0 === e) { - c = {}; - c.type = "LL"; - c.tbx0 = Math.ceil(t.tcx0 / o); - c.tby0 = Math.ceil(t.tcy0 / o); - c.tbx1 = Math.ceil(t.tcx1 / o); - c.tby1 = Math.ceil(t.tcy1 / o); - c.resolution = s; - buildCodeblocks(0, c, r); - i.push(c); - s.subbands = [c]; - } else { - const n = 1 << (a - e + 1), - o = []; - c = {}; - c.type = "HL"; - c.tbx0 = Math.ceil(t.tcx0 / n - 0.5); - c.tby0 = Math.ceil(t.tcy0 / n); - c.tbx1 = Math.ceil(t.tcx1 / n - 0.5); - c.tby1 = Math.ceil(t.tcy1 / n); - c.resolution = s; - buildCodeblocks(0, c, r); - i.push(c); - o.push(c); - c = {}; - c.type = "LH"; - c.tbx0 = Math.ceil(t.tcx0 / n); - c.tby0 = Math.ceil(t.tcy0 / n - 0.5); - c.tbx1 = Math.ceil(t.tcx1 / n); - c.tby1 = Math.ceil(t.tcy1 / n - 0.5); - c.resolution = s; - buildCodeblocks(0, c, r); - i.push(c); - o.push(c); - c = {}; - c.type = "HH"; - c.tbx0 = Math.ceil(t.tcx0 / n - 0.5); - c.tby0 = Math.ceil(t.tcy0 / n - 0.5); - c.tbx1 = Math.ceil(t.tcx1 / n - 0.5); - c.tby1 = Math.ceil(t.tcy1 / n - 0.5); - c.resolution = s; - buildCodeblocks(0, c, r); - i.push(c); - o.push(c); - s.subbands = o; - } - } - t.resolutions = n; - t.subbands = i; - } - const i = r.codingStyleDefaultParameters.progressionOrder; - switch (i) { - case 0: - r.packetsIterator = - new LayerResolutionComponentPositionIterator(e); - break; - case 1: - r.packetsIterator = - new ResolutionLayerComponentPositionIterator(e); - break; - case 2: - r.packetsIterator = - new ResolutionPositionComponentLayerIterator(e); - break; - case 3: - r.packetsIterator = - new PositionComponentResolutionLayerIterator(e); - break; - case 4: - r.packetsIterator = - new ComponentPositionResolutionLayerIterator(e); - break; - default: - throw new JpxError(`Unsupported progression order ${i}`); - } - } - function parseTilePackets(e, t, a, r) { - let i, - s = 0, - o = 0, - c = !1; - function readBits(e) { - for (; o < e; ) { - const e = t[a + s]; - s++; - if (c) { - i = (i << 7) | e; - o += 7; - c = !1; - } else { - i = (i << 8) | e; - o += 8; - } - 255 === e && (c = !0); - } - o -= e; - return (i >>> o) & ((1 << e) - 1); - } - function skipMarkerIfEqual(e) { - if (255 === t[a + s - 1] && t[a + s] === e) { - skipBytes(1); - return !0; - } - if (255 === t[a + s] && t[a + s + 1] === e) { - skipBytes(2); - return !0; - } - return !1; - } - function skipBytes(e) { - s += e; - } - function alignToByte() { - o = 0; - if (c) { - s++; - c = !1; - } - } - function readCodingpasses() { - if (0 === readBits(1)) return 1; - if (0 === readBits(1)) return 2; - let e = readBits(2); - if (e < 3) return e + 3; - e = readBits(5); - if (e < 31) return e + 6; - e = readBits(7); - return e + 37; - } - const l = e.currentTile.index, - h = e.tiles[l], - u = e.COD.sopMarkerUsed, - d = e.COD.ephMarkerUsed, - f = h.packetsIterator; - for (; s < r; ) { - alignToByte(); - u && skipMarkerIfEqual(145) && skipBytes(4); - const e = f.nextPacket(); - if (!readBits(1)) continue; - const r = e.layerNumber, - i = []; - let o; - for (let t = 0, a = e.codeblocks.length; t < a; t++) { - o = e.codeblocks[t]; - let a = o.precinct; - const s = o.cbx - a.cbxMin, - c = o.cby - a.cbyMin; - let l, - h, - u = !1, - d = !1; - if (void 0 !== o.included) u = !!readBits(1); - else { - a = o.precinct; - let e; - if (void 0 !== a.inclusionTree) e = a.inclusionTree; - else { - const t = a.cbxMax - a.cbxMin + 1, - n = a.cbyMax - a.cbyMin + 1; - e = new InclusionTree(t, n, r); - h = new TagTree(t, n); - a.inclusionTree = e; - a.zeroBitPlanesTree = h; - for (let e = 0; e < r; e++) - if (0 !== readBits(1)) - throw new JpxError("Invalid tag tree"); - } - if (e.reset(s, c, r)) - for (;;) { - if (!readBits(1)) { - e.incrementValue(r); - break; - } - l = !e.nextLevel(); - if (l) { - o.included = !0; - u = d = !0; - break; - } - } - } - if (!u) continue; - if (d) { - h = a.zeroBitPlanesTree; - h.reset(s, c); - for (;;) - if (readBits(1)) { - l = !h.nextLevel(); - if (l) break; - } else h.incrementValue(); - o.zeroBitPlanes = h.value; - } - const f = readCodingpasses(); - for (; readBits(1); ) o.Lblock++; - const g = (0, n.log2)(f), - p = readBits((f < 1 << g ? g - 1 : g) + o.Lblock); - i.push({ codeblock: o, codingpasses: f, dataLength: p }); - } - alignToByte(); - d && skipMarkerIfEqual(146); - for (; i.length > 0; ) { - const e = i.shift(); - o = e.codeblock; - void 0 === o.data && (o.data = []); - o.data.push({ - data: t, - start: a + s, - end: a + s + e.dataLength, - codingpasses: e.codingpasses, - }); - s += e.dataLength; - } - } - return s; - } - function copyCoefficients(e, t, a, r, n, s, o, c, l) { - const h = r.tbx0, - u = r.tby0, - d = r.tbx1 - r.tbx0, - f = r.codeblocks, - g = "H" === r.type.charAt(0) ? 1 : 0, - p = "H" === r.type.charAt(1) ? t : 0; - for (let a = 0, m = f.length; a < m; ++a) { - const m = f[a], - b = m.tbx1_ - m.tbx0_, - y = m.tby1_ - m.tby0_; - if (0 === b || 0 === y) continue; - if (void 0 === m.data) continue; - const w = new BitModel(b, y, m.subbandType, m.zeroBitPlanes, s); - let S = 2; - const x = m.data; - let C, - k, - v, - F = 0, - O = 0; - for (C = 0, k = x.length; C < k; C++) { - v = x[C]; - F += v.end - v.start; - O += v.codingpasses; - } - const T = new Uint8Array(F); - let M = 0; - for (C = 0, k = x.length; C < k; C++) { - v = x[C]; - const e = v.data.subarray(v.start, v.end); - T.set(e, M); - M += e.length; - } - const D = new i.ArithmeticDecoder(T, 0, F); - w.setDecoder(D); - for (C = 0; C < O; C++) { - switch (S) { - case 0: - w.runSignificancePropagationPass(); - break; - case 1: - w.runMagnitudeRefinementPass(); - break; - case 2: - w.runCleanupPass(); - c && w.checkSegmentationSymbol(); - } - l && w.reset(); - S = (S + 1) % 3; - } - let E = m.tbx0_ - h + (m.tby0_ - u) * d; - const N = w.coefficentsSign, - R = w.coefficentsMagnitude, - L = w.bitsDecoded, - $ = o ? 0 : 0.5; - let _, j, U; - M = 0; - const X = "LL" !== r.type; - for (C = 0; C < y; C++) { - const a = 2 * ((E / d) | 0) * (t - d) + g + p; - for (_ = 0; _ < b; _++) { - j = R[M]; - if (0 !== j) { - j = (j + $) * n; - 0 !== N[M] && (j = -j); - U = L[M]; - e[X ? a + (E << 1) : E] = - o && U >= s ? j : j * (1 << (s - U)); - } - E++; - M++; - } - E += d - b; - } - } - } - function transformTile(e, t, a) { - const r = t.components[a], - n = r.codingStyleParameters, - i = r.quantizationParameters, - o = n.decompositionLevelsCount, - c = i.SPqcds, - l = i.scalarExpounded, - h = i.guardBits, - u = n.segmentationSymbolUsed, - d = n.resetContextProbabilities, - f = e.components[a].precision, - g = n.reversibleTransformation, - p = g ? new ReversibleTransform() : new IrreversibleTransform(), - m = []; - let b = 0; - for (let e = 0; e <= o; e++) { - const t = r.resolutions[e], - a = t.trx1 - t.trx0, - n = t.try1 - t.try0, - i = new Float32Array(a * n); - for (let r = 0, n = t.subbands.length; r < n; r++) { - let n, o; - if (l) { - n = c[b].mu; - o = c[b].epsilon; - b++; - } else { - n = c[0].mu; - o = c[0].epsilon + (e > 0 ? 1 - e : 0); - } - const p = t.subbands[r], - m = s[p.type]; - copyCoefficients( - i, - a, - 0, - p, - g ? 1 : 2 ** (f + m - o) * (1 + n / 2048), - h + o - 1, - g, - u, - d, - ); - } - m.push({ width: a, height: n, items: i }); - } - const y = p.calculate(m, r.tcx0, r.tcy0); - return { - left: r.tcx0, - top: r.tcy0, - width: y.width, - height: y.height, - items: y.items, - }; - } - function initializeTile(e, t) { - const a = e.SIZ.Csiz, - r = e.tiles[t]; - for (let t = 0; t < a; t++) { - const a = r.components[t], - n = - void 0 !== e.currentTile.QCC[t] - ? e.currentTile.QCC[t] - : e.currentTile.QCD; - a.quantizationParameters = n; - const i = - void 0 !== e.currentTile.COC[t] - ? e.currentTile.COC[t] - : e.currentTile.COD; - a.codingStyleParameters = i; - } - r.codingStyleDefaultParameters = e.currentTile.COD; - } - class TagTree { - constructor(e, t) { - const a = (0, n.log2)(Math.max(e, t)) + 1; - this.levels = []; - for (let r = 0; r < a; r++) { - const a = { width: e, height: t, items: [] }; - this.levels.push(a); - e = Math.ceil(e / 2); - t = Math.ceil(t / 2); - } - } - reset(e, t) { - let a, - r = 0, - n = 0; - for (; r < this.levels.length; ) { - a = this.levels[r]; - const i = e + t * a.width; - if (void 0 !== a.items[i]) { - n = a.items[i]; - break; - } - a.index = i; - e >>= 1; - t >>= 1; - r++; - } - r--; - a = this.levels[r]; - a.items[a.index] = n; - this.currentLevel = r; - delete this.value; - } - incrementValue() { - const e = this.levels[this.currentLevel]; - e.items[e.index]++; - } - nextLevel() { - let e = this.currentLevel, - t = this.levels[e]; - const a = t.items[t.index]; - e--; - if (e < 0) { - this.value = a; - return !1; - } - this.currentLevel = e; - t = this.levels[e]; - t.items[t.index] = a; - return !0; - } - } - class InclusionTree { - constructor(e, t, a) { - const r = (0, n.log2)(Math.max(e, t)) + 1; - this.levels = []; - for (let n = 0; n < r; n++) { - const r = new Uint8Array(e * t); - for (let e = 0, t = r.length; e < t; e++) r[e] = a; - const n = { width: e, height: t, items: r }; - this.levels.push(n); - e = Math.ceil(e / 2); - t = Math.ceil(t / 2); - } - } - reset(e, t, a) { - let r = 0; - for (; r < this.levels.length; ) { - const n = this.levels[r], - i = e + t * n.width; - n.index = i; - const s = n.items[i]; - if (255 === s) break; - if (s > a) { - this.currentLevel = r; - this.propagateValues(); - return !1; - } - e >>= 1; - t >>= 1; - r++; - } - this.currentLevel = r - 1; - return !0; - } - incrementValue(e) { - const t = this.levels[this.currentLevel]; - t.items[t.index] = e + 1; - this.propagateValues(); - } - propagateValues() { - let e = this.currentLevel, - t = this.levels[e]; - const a = t.items[t.index]; - for (; --e >= 0; ) { - t = this.levels[e]; - t.items[t.index] = a; - } - } - nextLevel() { - let e = this.currentLevel, - t = this.levels[e]; - const a = t.items[t.index]; - t.items[t.index] = 255; - e--; - if (e < 0) return !1; - this.currentLevel = e; - t = this.levels[e]; - t.items[t.index] = a; - return !0; - } - } - class BitModel { - static UNIFORM_CONTEXT = 17; - static RUNLENGTH_CONTEXT = 18; - static LLAndLHContextsLabel = new Uint8Array([ - 0, 5, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 1, 6, 8, 0, 3, 7, - 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, - 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, - 8, 0, 3, 7, 8, 0, 4, 7, 8, - ]); - static HLContextLabel = new Uint8Array([ - 0, 3, 4, 0, 5, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 1, 3, 4, 0, 6, 7, - 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, - 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, - 4, 0, 6, 7, 7, 0, 8, 8, 8, - ]); - static HHContextLabel = new Uint8Array([ - 0, 1, 2, 0, 1, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 3, 4, 5, 0, 4, 5, - 5, 0, 5, 5, 5, 0, 0, 0, 0, 0, 6, 7, 7, 0, 7, 7, 7, 0, 7, 7, 7, 0, - 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 0, 0, 0, 0, 8, 8, - 8, 0, 8, 8, 8, 0, 8, 8, 8, - ]); - constructor(e, t, a, r, n) { - this.width = e; - this.height = t; - let i; - i = - "HH" === a - ? BitModel.HHContextLabel - : "HL" === a - ? BitModel.HLContextLabel - : BitModel.LLAndLHContextsLabel; - this.contextLabelTable = i; - const s = e * t; - this.neighborsSignificance = new Uint8Array(s); - this.coefficentsSign = new Uint8Array(s); - let o; - o = - n > 14 - ? new Uint32Array(s) - : n > 6 - ? new Uint16Array(s) - : new Uint8Array(s); - this.coefficentsMagnitude = o; - this.processingFlags = new Uint8Array(s); - const c = new Uint8Array(s); - if (0 !== r) for (let e = 0; e < s; e++) c[e] = r; - this.bitsDecoded = c; - this.reset(); - } - setDecoder(e) { - this.decoder = e; - } - reset() { - this.contexts = new Int8Array(19); - this.contexts[0] = 8; - this.contexts[BitModel.UNIFORM_CONTEXT] = 92; - this.contexts[BitModel.RUNLENGTH_CONTEXT] = 6; - } - setNeighborsSignificance(e, t, a) { - const r = this.neighborsSignificance, - n = this.width, - i = this.height, - s = t > 0, - o = t + 1 < n; - let c; - if (e > 0) { - c = a - n; - s && (r[c - 1] += 16); - o && (r[c + 1] += 16); - r[c] += 4; - } - if (e + 1 < i) { - c = a + n; - s && (r[c - 1] += 16); - o && (r[c + 1] += 16); - r[c] += 4; - } - s && (r[a - 1] += 1); - o && (r[a + 1] += 1); - r[a] |= 128; - } - runSignificancePropagationPass() { - const e = this.decoder, - t = this.width, - a = this.height, - r = this.coefficentsMagnitude, - n = this.coefficentsSign, - i = this.neighborsSignificance, - s = this.processingFlags, - o = this.contexts, - c = this.contextLabelTable, - l = this.bitsDecoded; - for (let h = 0; h < a; h += 4) - for (let u = 0; u < t; u++) { - let d = h * t + u; - for (let f = 0; f < 4; f++, d += t) { - const t = h + f; - if (t >= a) break; - s[d] &= -2; - if (r[d] || !i[d]) continue; - const g = c[i[d]]; - if (e.readBit(o, g)) { - const e = this.decodeSignBit(t, u, d); - n[d] = e; - r[d] = 1; - this.setNeighborsSignificance(t, u, d); - s[d] |= 2; - } - l[d]++; - s[d] |= 1; - } - } - } - decodeSignBit(e, t, a) { - const r = this.width, - n = this.height, - i = this.coefficentsMagnitude, - s = this.coefficentsSign; - let o, c, l, h, u, d; - h = t > 0 && 0 !== i[a - 1]; - if (t + 1 < r && 0 !== i[a + 1]) { - l = s[a + 1]; - if (h) { - c = s[a - 1]; - o = 1 - l - c; - } else o = 1 - l - l; - } else if (h) { - c = s[a - 1]; - o = 1 - c - c; - } else o = 0; - const f = 3 * o; - h = e > 0 && 0 !== i[a - r]; - if (e + 1 < n && 0 !== i[a + r]) { - l = s[a + r]; - if (h) { - c = s[a - r]; - o = 1 - l - c + f; - } else o = 1 - l - l + f; - } else if (h) { - c = s[a - r]; - o = 1 - c - c + f; - } else o = f; - if (o >= 0) { - u = 9 + o; - d = this.decoder.readBit(this.contexts, u); - } else { - u = 9 - o; - d = 1 ^ this.decoder.readBit(this.contexts, u); - } - return d; - } - runMagnitudeRefinementPass() { - const e = this.decoder, - t = this.width, - a = this.height, - r = this.coefficentsMagnitude, - n = this.neighborsSignificance, - i = this.contexts, - s = this.bitsDecoded, - o = this.processingFlags, - c = t * a, - l = 4 * t; - for (let a, h = 0; h < c; h = a) { - a = Math.min(c, h + l); - for (let c = 0; c < t; c++) - for (let l = h + c; l < a; l += t) { - if (!r[l] || 0 != (1 & o[l])) continue; - let t = 16; - if (0 != (2 & o[l])) { - o[l] ^= 2; - t = 0 === (127 & n[l]) ? 15 : 14; - } - const a = e.readBit(i, t); - r[l] = (r[l] << 1) | a; - s[l]++; - o[l] |= 1; - } - } - } - runCleanupPass() { - const e = this.decoder, - t = this.width, - a = this.height, - r = this.neighborsSignificance, - n = this.coefficentsMagnitude, - i = this.coefficentsSign, - s = this.contexts, - o = this.contextLabelTable, - c = this.bitsDecoded, - l = this.processingFlags, - h = t, - u = 2 * t, - d = 3 * t; - let f; - for (let g = 0; g < a; g = f) { - f = Math.min(g + 4, a); - const p = g * t, - m = g + 3 < a; - for (let a = 0; a < t; a++) { - const b = p + a; - let y, - w = 0, - S = b, - x = g; - if ( - m && - 0 === l[b] && - 0 === l[b + h] && - 0 === l[b + u] && - 0 === l[b + d] && - 0 === r[b] && - 0 === r[b + h] && - 0 === r[b + u] && - 0 === r[b + d] - ) { - if (!e.readBit(s, BitModel.RUNLENGTH_CONTEXT)) { - c[b]++; - c[b + h]++; - c[b + u]++; - c[b + d]++; - continue; - } - w = - (e.readBit(s, BitModel.UNIFORM_CONTEXT) << 1) | - e.readBit(s, BitModel.UNIFORM_CONTEXT); - if (0 !== w) { - x = g + w; - S += w * t; - } - y = this.decodeSignBit(x, a, S); - i[S] = y; - n[S] = 1; - this.setNeighborsSignificance(x, a, S); - l[S] |= 2; - S = b; - for (let e = g; e <= x; e++, S += t) c[S]++; - w++; - } - for (x = g + w; x < f; x++, S += t) { - if (n[S] || 0 != (1 & l[S])) continue; - const t = o[r[S]]; - if (1 === e.readBit(s, t)) { - y = this.decodeSignBit(x, a, S); - i[S] = y; - n[S] = 1; - this.setNeighborsSignificance(x, a, S); - l[S] |= 2; - } - c[S]++; - } - } - } - } - checkSegmentationSymbol() { - const e = this.decoder, - t = this.contexts; - if ( - 10 !== - ((e.readBit(t, BitModel.UNIFORM_CONTEXT) << 3) | - (e.readBit(t, BitModel.UNIFORM_CONTEXT) << 2) | - (e.readBit(t, BitModel.UNIFORM_CONTEXT) << 1) | - e.readBit(t, BitModel.UNIFORM_CONTEXT)) - ) - throw new JpxError("Invalid segmentation symbol"); - } - } - class Transform { - constructor() { - this.constructor === Transform && - (0, r.unreachable)("Cannot initialize Transform."); - } - calculate(e, t, a) { - let r = e[0]; - for (let n = 1, i = e.length; n < i; n++) - r = this.iterate(r, e[n], t, a); - return r; - } - extend(e, t, a) { - let r = t - 1, - n = t + 1, - i = t + a - 2, - s = t + a; - e[r--] = e[n++]; - e[s++] = e[i--]; - e[r--] = e[n++]; - e[s++] = e[i--]; - e[r--] = e[n++]; - e[s++] = e[i--]; - e[r] = e[n]; - e[s] = e[i]; - } - filter(e, t, a) { - (0, r.unreachable)("Abstract method `filter` called"); - } - iterate(e, t, a, r) { - const n = e.width, - i = e.height; - let s = e.items; - const o = t.width, - c = t.height, - l = t.items; - let h, u, d, f, g, p; - for (d = 0, h = 0; h < i; h++) { - f = 2 * h * o; - for (u = 0; u < n; u++, d++, f += 2) l[f] = s[d]; - } - s = e.items = null; - const m = new Float32Array(o + 8); - if (1 === o) { - if (0 != (1 & a)) - for (p = 0, d = 0; p < c; p++, d += o) l[d] *= 0.5; - } else - for (p = 0, d = 0; p < c; p++, d += o) { - m.set(l.subarray(d, d + o), 4); - this.extend(m, 4, o); - this.filter(m, 4, o); - l.set(m.subarray(4, 4 + o), d); - } - let b = 16; - const y = []; - for (h = 0; h < b; h++) y.push(new Float32Array(c + 8)); - let w, - S = 0; - e = 4 + c; - if (1 === c) { - if (0 != (1 & r)) for (g = 0; g < o; g++) l[g] *= 0.5; - } else - for (g = 0; g < o; g++) { - if (0 === S) { - b = Math.min(o - g, b); - for (d = g, f = 4; f < e; d += o, f++) - for (w = 0; w < b; w++) y[w][f] = l[d + w]; - S = b; - } - S--; - const t = y[S]; - this.extend(t, 4, c); - this.filter(t, 4, c); - if (0 === S) { - d = g - b + 1; - for (f = 4; f < e; d += o, f++) - for (w = 0; w < b; w++) l[d + w] = y[w][f]; - } - } - return { width: o, height: c, items: l }; - } - } - class IrreversibleTransform extends Transform { - filter(e, t, a) { - const r = a >> 1; - let n, i, s, o; - const c = -1.586134342059924, - l = -0.052980118572961, - h = 0.882911075530934, - u = 0.443506852043971, - d = 1.230174104914001; - n = (t |= 0) - 3; - for (i = r + 4; i--; n += 2) e[n] *= 0.8128930661159609; - n = t - 2; - s = u * e[n - 1]; - for (i = r + 3; i--; n += 2) { - o = u * e[n + 1]; - e[n] = d * e[n] - s - o; - if (!i--) break; - n += 2; - s = u * e[n + 1]; - e[n] = d * e[n] - s - o; - } - n = t - 1; - s = h * e[n - 1]; - for (i = r + 2; i--; n += 2) { - o = h * e[n + 1]; - e[n] -= s + o; - if (!i--) break; - n += 2; - s = h * e[n + 1]; - e[n] -= s + o; - } - n = t; - s = l * e[n - 1]; - for (i = r + 1; i--; n += 2) { - o = l * e[n + 1]; - e[n] -= s + o; - if (!i--) break; - n += 2; - s = l * e[n + 1]; - e[n] -= s + o; - } - if (0 !== r) { - n = t + 1; - s = c * e[n - 1]; - for (i = r; i--; n += 2) { - o = c * e[n + 1]; - e[n] -= s + o; - if (!i--) break; - n += 2; - s = c * e[n + 1]; - e[n] -= s + o; - } - } - } - } - class ReversibleTransform extends Transform { - filter(e, t, a) { - const r = a >> 1; - let n, i; - for (n = t |= 0, i = r + 1; i--; n += 2) - e[n] -= (e[n - 1] + e[n + 1] + 2) >> 2; - for (n = t + 1, i = r; i--; n += 2) - e[n] += (e[n - 1] + e[n + 1]) >> 1; - } - } - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.LZWStream = void 0; - var r = a(18); - class LZWStream extends r.DecodeStream { - constructor(e, t, a) { - super(t); - this.str = e; - this.dict = e.dict; - this.cachedData = 0; - this.bitsCached = 0; - const r = 4096, - n = { - earlyChange: a, - codeLength: 9, - nextCode: 258, - dictionaryValues: new Uint8Array(r), - dictionaryLengths: new Uint16Array(r), - dictionaryPrevCodes: new Uint16Array(r), - currentSequence: new Uint8Array(r), - currentSequenceLength: 0, - }; - for (let e = 0; e < 256; ++e) { - n.dictionaryValues[e] = e; - n.dictionaryLengths[e] = 1; - } - this.lzwState = n; - } - readBits(e) { - let t = this.bitsCached, - a = this.cachedData; - for (; t < e; ) { - const e = this.str.getByte(); - if (-1 === e) { - this.eof = !0; - return null; - } - a = (a << 8) | e; - t += 8; - } - this.bitsCached = t -= e; - this.cachedData = a; - this.lastCode = null; - return (a >>> t) & ((1 << e) - 1); - } - readBlock() { - let e, - t, - a, - r = 1024; - const n = this.lzwState; - if (!n) return; - const i = n.earlyChange; - let s = n.nextCode; - const o = n.dictionaryValues, - c = n.dictionaryLengths, - l = n.dictionaryPrevCodes; - let h = n.codeLength, - u = n.prevCode; - const d = n.currentSequence; - let f = n.currentSequenceLength, - g = 0, - p = this.bufferLength, - m = this.ensureBuffer(this.bufferLength + r); - for (e = 0; e < 512; e++) { - const e = this.readBits(h), - n = f > 0; - if (e < 256) { - d[0] = e; - f = 1; - } else { - if (!(e >= 258)) { - if (256 === e) { - h = 9; - s = 258; - f = 0; - continue; - } - this.eof = !0; - delete this.lzwState; - break; - } - if (e < s) { - f = c[e]; - for (t = f - 1, a = e; t >= 0; t--) { - d[t] = o[a]; - a = l[a]; - } - } else d[f++] = d[0]; - } - if (n) { - l[s] = u; - c[s] = c[u] + 1; - o[s] = d[0]; - s++; - h = - (s + i) & (s + i - 1) - ? h - : 0 | - Math.min(Math.log(s + i) / 0.6931471805599453 + 1, 12); - } - u = e; - g += f; - if (r < g) { - do { - r += 512; - } while (r < g); - m = this.ensureBuffer(this.bufferLength + r); - } - for (t = 0; t < f; t++) m[p++] = d[t]; - } - n.nextCode = s; - n.codeLength = h; - n.prevCode = u; - n.currentSequenceLength = f; - this.bufferLength = p; - } - } - t.LZWStream = LZWStream; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.PredictorStream = void 0; - var r = a(18), - n = a(4), - i = a(2); - class PredictorStream extends r.DecodeStream { - constructor(e, t, a) { - super(t); - if (!(a instanceof n.Dict)) return e; - const r = (this.predictor = a.get("Predictor") || 1); - if (r <= 1) return e; - if (2 !== r && (r < 10 || r > 15)) - throw new i.FormatError(`Unsupported predictor: ${r}`); - this.readBlock = 2 === r ? this.readBlockTiff : this.readBlockPng; - this.str = e; - this.dict = e.dict; - const s = (this.colors = a.get("Colors") || 1), - o = (this.bits = a.get("BPC", "BitsPerComponent") || 8), - c = (this.columns = a.get("Columns") || 1); - this.pixBytes = (s * o + 7) >> 3; - this.rowBytes = (c * s * o + 7) >> 3; - return this; - } - readBlockTiff() { - const e = this.rowBytes, - t = this.bufferLength, - a = this.ensureBuffer(t + e), - r = this.bits, - n = this.colors, - i = this.str.getBytes(e); - this.eof = !i.length; - if (this.eof) return; - let s, - o = 0, - c = 0, - l = 0, - h = 0, - u = t; - if (1 === r && 1 === n) - for (s = 0; s < e; ++s) { - let e = i[s] ^ o; - e ^= e >> 1; - e ^= e >> 2; - e ^= e >> 4; - o = (1 & e) << 7; - a[u++] = e; - } - else if (8 === r) { - for (s = 0; s < n; ++s) a[u++] = i[s]; - for (; s < e; ++s) { - a[u] = a[u - n] + i[s]; - u++; - } - } else if (16 === r) { - const t = 2 * n; - for (s = 0; s < t; ++s) a[u++] = i[s]; - for (; s < e; s += 2) { - const e = - ((255 & i[s]) << 8) + - (255 & i[s + 1]) + - ((255 & a[u - t]) << 8) + - (255 & a[u - t + 1]); - a[u++] = (e >> 8) & 255; - a[u++] = 255 & e; - } - } else { - const e = new Uint8Array(n + 1), - u = (1 << r) - 1; - let d = 0, - f = t; - const g = this.columns; - for (s = 0; s < g; ++s) - for (let t = 0; t < n; ++t) { - if (l < r) { - o = (o << 8) | (255 & i[d++]); - l += 8; - } - e[t] = (e[t] + (o >> (l - r))) & u; - l -= r; - c = (c << r) | e[t]; - h += r; - if (h >= 8) { - a[f++] = (c >> (h - 8)) & 255; - h -= 8; - } - } - h > 0 && (a[f++] = (c << (8 - h)) + (o & ((1 << (8 - h)) - 1))); - } - this.bufferLength += e; - } - readBlockPng() { - const e = this.rowBytes, - t = this.pixBytes, - a = this.str.getByte(), - r = this.str.getBytes(e); - this.eof = !r.length; - if (this.eof) return; - const n = this.bufferLength, - s = this.ensureBuffer(n + e); - let o = s.subarray(n - e, n); - 0 === o.length && (o = new Uint8Array(e)); - let c, - l, - h, - u = n; - switch (a) { - case 0: - for (c = 0; c < e; ++c) s[u++] = r[c]; - break; - case 1: - for (c = 0; c < t; ++c) s[u++] = r[c]; - for (; c < e; ++c) { - s[u] = (s[u - t] + r[c]) & 255; - u++; - } - break; - case 2: - for (c = 0; c < e; ++c) s[u++] = (o[c] + r[c]) & 255; - break; - case 3: - for (c = 0; c < t; ++c) s[u++] = (o[c] >> 1) + r[c]; - for (; c < e; ++c) { - s[u] = (((o[c] + s[u - t]) >> 1) + r[c]) & 255; - u++; - } - break; - case 4: - for (c = 0; c < t; ++c) { - l = o[c]; - h = r[c]; - s[u++] = l + h; - } - for (; c < e; ++c) { - l = o[c]; - const e = o[c - t], - a = s[u - t], - n = a + l - e; - let i = n - a; - i < 0 && (i = -i); - let d = n - l; - d < 0 && (d = -d); - let f = n - e; - f < 0 && (f = -f); - h = r[c]; - s[u++] = i <= d && i <= f ? a + h : d <= f ? l + h : e + h; - } - break; - default: - throw new i.FormatError(`Unsupported predictor: ${a}`); - } - this.bufferLength += e; - } - } - t.PredictorStream = PredictorStream; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.RunLengthStream = void 0; - var r = a(18); - class RunLengthStream extends r.DecodeStream { - constructor(e, t) { - super(t); - this.str = e; - this.dict = e.dict; - } - readBlock() { - const e = this.str.getBytes(2); - if (!e || e.length < 2 || 128 === e[0]) { - this.eof = !0; - return; - } - let t, - a = this.bufferLength, - r = e[0]; - if (r < 128) { - t = this.ensureBuffer(a + r + 1); - t[a++] = e[1]; - if (r > 0) { - const e = this.str.getBytes(r); - t.set(e, a); - a += r; - } - } else { - r = 257 - r; - const n = e[1]; - t = this.ensureBuffer(a + r + 1); - for (let e = 0; e < r; e++) t[a++] = n; - } - this.bufferLength = a; - } - } - t.RunLengthStream = RunLengthStream; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.Font = t.ErrorFont = void 0; - var r = a(2), - n = a(35), - i = a(38), - s = a(40), - o = a(39), - c = a(37), - l = a(41), - h = a(42), - u = a(43), - d = a(44), - f = a(45), - g = a(46), - p = a(14), - m = a(47), - b = a(3), - y = a(8), - w = a(48); - const S = [ - [57344, 63743], - [1048576, 1114109], - ], - x = 1e3, - C = [ - "ascent", - "bbox", - "black", - "bold", - "charProcOperatorList", - "composite", - "cssFontInfo", - "data", - "defaultVMetrics", - "defaultWidth", - "descent", - "fallbackName", - "fontMatrix", - "isInvalidPDFjsFont", - "isType3Font", - "italic", - "loadedName", - "mimetype", - "missingFile", - "name", - "remeasure", - "subtype", - "systemFontInfo", - "type", - "vertical", - ], - k = [ - "cMap", - "defaultEncoding", - "differences", - "isMonospace", - "isSerifFont", - "isSymbolicFont", - "seacMap", - "toFontChar", - "toUnicode", - "vmetrics", - "widths", - ]; - function adjustWidths(e) { - if (!e.fontMatrix) return; - if (e.fontMatrix[0] === r.FONT_IDENTITY_MATRIX[0]) return; - const t = 0.001 / e.fontMatrix[0], - a = e.widths; - for (const e in a) a[e] *= t; - e.defaultWidth *= t; - } - function amendFallbackToUnicode(e) { - if (!e.fallbackToUnicode) return; - if (e.toUnicode instanceof h.IdentityToUnicodeMap) return; - const t = []; - for (const a in e.fallbackToUnicode) - e.toUnicode.has(a) || (t[a] = e.fallbackToUnicode[a]); - t.length > 0 && e.toUnicode.amend(t); - } - class Glyph { - constructor(e, t, a, r, n, i, s, o, c) { - this.originalCharCode = e; - this.fontChar = t; - this.unicode = a; - this.accent = r; - this.width = n; - this.vmetric = i; - this.operatorListId = s; - this.isSpace = o; - this.isInFont = c; - } - get category() { - return (0, r.shadow)( - this, - "category", - (0, s.getCharUnicodeCategory)(this.unicode), - !0, - ); - } - } - function int16(e, t) { - return (e << 8) + t; - } - function writeSignedInt16(e, t, a) { - e[t + 1] = a; - e[t] = a >>> 8; - } - function signedInt16(e, t) { - const a = (e << 8) + t; - return 32768 & a ? a - 65536 : a; - } - function string16(e) { - return String.fromCharCode((e >> 8) & 255, 255 & e); - } - function safeString16(e) { - e > 32767 ? (e = 32767) : e < -32768 && (e = -32768); - return String.fromCharCode((e >> 8) & 255, 255 & e); - } - function isTrueTypeCollectionFile(e) { - const t = e.peekBytes(4); - return "ttcf" === (0, r.bytesToString)(t); - } - function getFontFileType(e, { type: t, subtype: a, composite: n }) { - let i, s; - if ( - (function isTrueTypeFile(e) { - const t = e.peekBytes(4); - return ( - 65536 === (0, b.readUint32)(t, 0) || - "true" === (0, r.bytesToString)(t) - ); - })(e) || - isTrueTypeCollectionFile(e) - ) - i = n ? "CIDFontType2" : "TrueType"; - else if ( - (function isOpenTypeFile(e) { - const t = e.peekBytes(4); - return "OTTO" === (0, r.bytesToString)(t); - })(e) - ) - i = n ? "CIDFontType2" : "OpenType"; - else if ( - (function isType1File(e) { - const t = e.peekBytes(2); - return ( - (37 === t[0] && 33 === t[1]) || (128 === t[0] && 1 === t[1]) - ); - })(e) - ) - i = n ? "CIDFontType0" : "MMType1" === t ? "MMType1" : "Type1"; - else if ( - (function isCFFFile(e) { - const t = e.peekBytes(4); - return t[0] >= 1 && t[3] >= 1 && t[3] <= 4; - })(e) - ) - if (n) { - i = "CIDFontType0"; - s = "CIDFontType0C"; - } else { - i = "MMType1" === t ? "MMType1" : "Type1"; - s = "Type1C"; - } - else { - (0, r.warn)( - "getFontFileType: Unable to detect correct font file Type/Subtype.", - ); - i = t; - s = a; - } - return [i, s]; - } - function applyStandardFontGlyphMap(e, t) { - for (const a in t) e[+a] = t[a]; - } - function buildToFontChar(e, t, a) { - const r = []; - let n; - for (let a = 0, i = e.length; a < i; a++) { - n = (0, s.getUnicodeForGlyph)(e[a], t); - -1 !== n && (r[a] = n); - } - for (const e in a) { - n = (0, s.getUnicodeForGlyph)(a[e], t); - -1 !== n && (r[+e] = n); - } - return r; - } - function isMacNameRecord(e) { - return 1 === e.platform && 0 === e.encoding && 0 === e.language; - } - function isWinNameRecord(e) { - return 3 === e.platform && 1 === e.encoding && 1033 === e.language; - } - function convertCidString(e, t, a = !1) { - switch (t.length) { - case 1: - return t.charCodeAt(0); - case 2: - return (t.charCodeAt(0) << 8) | t.charCodeAt(1); - } - const n = `Unsupported CID string (charCode ${e}): "${t}".`; - if (a) throw new r.FormatError(n); - (0, r.warn)(n); - return t; - } - function adjustMapping(e, t, a, n) { - const i = Object.create(null), - s = new Map(), - o = [], - c = new Set(); - let l = 0; - let h = S[l][0], - u = S[l][1]; - for (let f in e) { - f |= 0; - let g = e[f]; - if (!t(g)) continue; - if (h > u) { - l++; - if (l >= S.length) { - (0, r.warn)("Ran out of space in font private use area."); - break; - } - h = S[l][0]; - u = S[l][1]; - } - const p = h++; - 0 === g && (g = a); - let m = n.get(f); - "string" == typeof m && (m = m.codePointAt(0)); - if ( - m && - !((d = m), - (S[0][0] <= d && d <= S[0][1]) || - (S[1][0] <= d && d <= S[1][1])) && - !c.has(g) - ) { - s.set(m, g); - c.add(g); - } - i[p] = g; - o[f] = p; - } - var d; - return { - toFontChar: o, - charCodeToGlyphId: i, - toUnicodeExtraMap: s, - nextAvailableFontCharCode: h, - }; - } - function createCmapTable(e, t, a) { - const n = (function getRanges(e, t, a) { - const r = []; - for (const t in e) - e[t] >= a || r.push({ fontCharCode: 0 | t, glyphId: e[t] }); - if (t) - for (const [e, n] of t) - n >= a || r.push({ fontCharCode: e, glyphId: n }); - 0 === r.length && r.push({ fontCharCode: 0, glyphId: 0 }); - r.sort(function fontGetRangesSort(e, t) { - return e.fontCharCode - t.fontCharCode; - }); - const n = [], - i = r.length; - for (let e = 0; e < i; ) { - const t = r[e].fontCharCode, - a = [r[e].glyphId]; - ++e; - let s = t; - for (; e < i && s + 1 === r[e].fontCharCode; ) { - a.push(r[e].glyphId); - ++s; - ++e; - if (65535 === s) break; - } - n.push([t, s, a]); - } - return n; - })(e, t, a), - i = n.at(-1)[1] > 65535 ? 2 : 1; - let s, - o, - c, - l, - h = "\0\0" + string16(i) + "\0\0" + (0, r.string32)(4 + 8 * i); - for (s = n.length - 1; s >= 0 && !(n[s][0] <= 65535); --s); - const u = s + 1; - n[s][0] < 65535 && 65535 === n[s][1] && (n[s][1] = 65534); - const d = n[s][1] < 65535 ? 1 : 0, - f = u + d, - g = m.OpenTypeFileBuilder.getSearchParams(f, 2); - let p, - b, - y, - w, - S = "", - x = "", - C = "", - k = "", - v = "", - F = 0; - for (s = 0, o = u; s < o; s++) { - p = n[s]; - b = p[0]; - y = p[1]; - S += string16(b); - x += string16(y); - w = p[2]; - let e = !0; - for (c = 1, l = w.length; c < l; ++c) - if (w[c] !== w[c - 1] + 1) { - e = !1; - break; - } - if (e) { - C += string16((w[0] - b) & 65535); - k += string16(0); - } else { - const e = 2 * (f - s) + 2 * F; - F += y - b + 1; - C += string16(0); - k += string16(e); - for (c = 0, l = w.length; c < l; ++c) v += string16(w[c]); - } - } - if (d > 0) { - x += "ÿÿ"; - S += "ÿÿ"; - C += "\0"; - k += "\0\0"; - } - const O = - "\0\0" + - string16(2 * f) + - string16(g.range) + - string16(g.entry) + - string16(g.rangeShift) + - x + - "\0\0" + - S + - C + - k + - v; - let T = "", - M = ""; - if (i > 1) { - h += "\0\0\n" + (0, r.string32)(4 + 8 * i + 4 + O.length); - T = ""; - for (s = 0, o = n.length; s < o; s++) { - p = n[s]; - b = p[0]; - w = p[2]; - let e = w[0]; - for (c = 1, l = w.length; c < l; ++c) - if (w[c] !== w[c - 1] + 1) { - y = p[0] + c - 1; - T += - (0, r.string32)(b) + - (0, r.string32)(y) + - (0, r.string32)(e); - b = y + 1; - e = w[c]; - } - T += - (0, r.string32)(b) + - (0, r.string32)(p[1]) + - (0, r.string32)(e); - } - M = - "\0\f\0\0" + - (0, r.string32)(T.length + 16) + - "\0\0\0\0" + - (0, r.string32)(T.length / 12); - } - return h + "\0" + string16(O.length + 4) + O + M + T; - } - function createOS2Table(e, t, a) { - a ||= { unitsPerEm: 0, yMax: 0, yMin: 0, ascent: 0, descent: 0 }; - let n = 0, - i = 0, - o = 0, - c = 0, - l = null, - h = 0, - u = -1; - if (t) { - for (let e in t) { - e |= 0; - (l > e || !l) && (l = e); - h < e && (h = e); - u = (0, s.getUnicodeRangeFor)(e, u); - if (u < 32) n |= 1 << u; - else if (u < 64) i |= 1 << (u - 32); - else if (u < 96) o |= 1 << (u - 64); - else { - if (!(u < 123)) - throw new r.FormatError( - "Unicode ranges Bits > 123 are reserved for internal usage", - ); - c |= 1 << (u - 96); - } - } - h > 65535 && (h = 65535); - } else { - l = 0; - h = 255; - } - const d = e.bbox || [0, 0, 0, 0], - f = - a.unitsPerEm || 1 / (e.fontMatrix || r.FONT_IDENTITY_MATRIX)[0], - g = e.ascentScaled ? 1 : f / x, - p = a.ascent || Math.round(g * (e.ascent || d[3])); - let m = a.descent || Math.round(g * (e.descent || d[1])); - m > 0 && e.descent > 0 && d[1] < 0 && (m = -m); - const b = a.yMax || p, - y = -a.yMin || -m; - return ( - "\0$ô\0\0\0Š»\0\0\0ŒŠ»\0\0ß\x001\0\0\0\0" + - String.fromCharCode(e.fixedPitch ? 9 : 0) + - "\0\0\0\0\0\0" + - (0, r.string32)(n) + - (0, r.string32)(i) + - (0, r.string32)(o) + - (0, r.string32)(c) + - "*21*" + - string16(e.italicAngle ? 1 : 0) + - string16(l || e.firstChar) + - string16(h || e.lastChar) + - string16(p) + - string16(m) + - "\0d" + - string16(b) + - string16(y) + - "\0\0\0\0\0\0\0\0" + - string16(e.xHeight) + - string16(e.capHeight) + - string16(0) + - string16(l || e.firstChar) + - "\0" - ); - } - function createPostTable(e) { - const t = Math.floor(65536 * e.italicAngle); - return ( - "\0\0\0" + - (0, r.string32)(t) + - "\0\0\0\0" + - (0, r.string32)(e.fixedPitch ? 1 : 0) + - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - ); - } - function createPostscriptName(e) { - return e.replaceAll(/[^\x21-\x7E]|[[\](){}<>/%]/g, "").slice(0, 63); - } - function createNameTable(e, t) { - t || (t = [[], []]); - const a = [ - t[0][0] || "Original licence", - t[0][1] || e, - t[0][2] || "Unknown", - t[0][3] || "uniqueID", - t[0][4] || e, - t[0][5] || "Version 0.11", - t[0][6] || createPostscriptName(e), - t[0][7] || "Unknown", - t[0][8] || "Unknown", - t[0][9] || "Unknown", - ], - r = []; - let n, i, s, o, c; - for (n = 0, i = a.length; n < i; n++) { - c = t[1][n] || a[n]; - const e = []; - for (s = 0, o = c.length; s < o; s++) - e.push(string16(c.charCodeAt(s))); - r.push(e.join("")); - } - const l = [a, r], - h = ["\0", "\0"], - u = ["\0\0", "\0"], - d = ["\0\0", "\t"], - f = a.length * h.length; - let g = "\0\0" + string16(f) + string16(12 * f + 6), - p = 0; - for (n = 0, i = h.length; n < i; n++) { - const e = l[n]; - for (s = 0, o = e.length; s < o; s++) { - c = e[s]; - g += - h[n] + - u[n] + - d[n] + - string16(s) + - string16(c.length) + - string16(p); - p += c.length; - } - } - g += a.join("") + r.join(""); - return g; - } - t.Font = class Font { - constructor(e, t, a) { - this.name = e; - this.psName = null; - this.mimetype = null; - this.disableFontFace = !1; - this.loadedName = a.loadedName; - this.isType3Font = a.isType3Font; - this.missingFile = !1; - this.cssFontInfo = a.cssFontInfo; - this._charsCache = Object.create(null); - this._glyphCache = Object.create(null); - let n = !!(a.flags & i.FontFlags.Serif); - if (!n && !a.isSimulatedFlags) { - const t = e.replaceAll(/[,_]/g, "-").split("-")[0], - a = (0, l.getSerifFonts)(); - for (const e of t.split("+")) - if (a[e]) { - n = !0; - break; - } - } - this.isSerifFont = n; - this.isSymbolicFont = !!(a.flags & i.FontFlags.Symbolic); - this.isMonospace = !!(a.flags & i.FontFlags.FixedPitch); - let { type: s, subtype: o } = a; - this.type = s; - this.subtype = o; - this.systemFontInfo = a.systemFontInfo; - const c = e.match(/^InvalidPDFjsFont_(.*)_\d+$/); - this.isInvalidPDFjsFont = !!c; - this.isInvalidPDFjsFont - ? (this.fallbackName = c[1]) - : this.isMonospace - ? (this.fallbackName = "monospace") - : this.isSerifFont - ? (this.fallbackName = "serif") - : (this.fallbackName = "sans-serif"); - if (this.systemFontInfo?.guessFallback) { - this.systemFontInfo.guessFallback = !1; - this.systemFontInfo.css += `,${this.fallbackName}`; - } - this.differences = a.differences; - this.widths = a.widths; - this.defaultWidth = a.defaultWidth; - this.composite = a.composite; - this.cMap = a.cMap; - this.capHeight = a.capHeight / x; - this.ascent = a.ascent / x; - this.descent = a.descent / x; - this.lineHeight = this.ascent - this.descent; - this.fontMatrix = a.fontMatrix; - this.bbox = a.bbox; - this.defaultEncoding = a.defaultEncoding; - this.toUnicode = a.toUnicode; - this.toFontChar = []; - if ("Type3" === a.type) { - for (let e = 0; e < 256; e++) - this.toFontChar[e] = - this.differences[e] || a.defaultEncoding[e]; - return; - } - this.cidEncoding = a.cidEncoding || ""; - this.vertical = !!a.vertical; - if (this.vertical) { - this.vmetrics = a.vmetrics; - this.defaultVMetrics = a.defaultVMetrics; - } - if (!t || t.isEmpty) { - t && - (0, r.warn)( - 'Font file is empty in "' + - e + - '" (' + - this.loadedName + - ")", - ); - this.fallbackToSystemFont(a); - return; - } - [s, o] = getFontFileType(t, a); - (s === this.type && o === this.subtype) || - (0, r.info)( - `Inconsistent font file Type/SubType, expected: ${this.type}/${this.subtype} but found: ${s}/${o}.`, - ); - let h; - try { - switch (s) { - case "MMType1": - (0, r.info)( - "MMType1 font (" + e + "), falling back to Type1.", - ); - case "Type1": - case "CIDFontType0": - this.mimetype = "font/opentype"; - const n = - "Type1C" === o || "CIDFontType0C" === o - ? new u.CFFFont(t, a) - : new w.Type1Font(e, t, a); - adjustWidths(a); - h = this.convert(e, n, a); - break; - case "OpenType": - case "TrueType": - case "CIDFontType2": - this.mimetype = "font/opentype"; - h = this.checkAndRepair(e, t, a); - if (this.isOpenType) { - adjustWidths(a); - s = "OpenType"; - } - break; - default: - throw new r.FormatError(`Font ${s} is not supported`); - } - } catch (e) { - (0, r.warn)(e); - this.fallbackToSystemFont(a); - return; - } - amendFallbackToUnicode(a); - this.data = h; - this.type = s; - this.subtype = o; - this.fontMatrix = a.fontMatrix; - this.widths = a.widths; - this.defaultWidth = a.defaultWidth; - this.toUnicode = a.toUnicode; - this.seacMap = a.seacMap; - } - get renderer() { - const e = d.FontRendererFactory.create( - this, - i.SEAC_ANALYSIS_ENABLED, - ); - return (0, r.shadow)(this, "renderer", e); - } - exportData(e = !1) { - const t = e ? [...C, ...k] : C, - a = Object.create(null); - let r, n; - for (r of t) { - n = this[r]; - void 0 !== n && (a[r] = n); - } - return a; - } - fallbackToSystemFont(e) { - this.missingFile = !0; - const { name: t, type: a } = this; - let r = (0, i.normalizeFontName)(t); - const n = (0, l.getStdFontMap)(), - u = (0, l.getNonStdFontMap)(), - d = !!n[r], - g = !(!u[r] || !n[u[r]]); - r = n[r] || u[r] || r; - const p = (0, f.getFontBasicMetrics)()[r]; - if (p) { - isNaN(this.ascent) && (this.ascent = p.ascent / x); - isNaN(this.descent) && (this.descent = p.descent / x); - isNaN(this.capHeight) && (this.capHeight = p.capHeight / x); - } - this.bold = /bold/gi.test(r); - this.italic = /oblique|italic/gi.test(r); - this.black = /Black/g.test(t); - const m = /Narrow/g.test(t); - this.remeasure = (!d || m) && Object.keys(this.widths).length > 0; - if ( - (d || g) && - "CIDFontType2" === a && - this.cidEncoding.startsWith("Identity-") - ) { - const a = e.cidToGidMap, - r = []; - applyStandardFontGlyphMap( - r, - (0, l.getGlyphMapForStandardFonts)(), - ); - /Arial-?Black/i.test(t) - ? applyStandardFontGlyphMap( - r, - (0, l.getSupplementalGlyphMapForArialBlack)(), - ) - : /Calibri/i.test(t) && - applyStandardFontGlyphMap( - r, - (0, l.getSupplementalGlyphMapForCalibri)(), - ); - if (a) { - for (const e in r) { - const t = r[e]; - void 0 !== a[t] && (r[+e] = a[t]); - } - a.length !== this.toUnicode.length && - e.hasIncludedToUnicodeMap && - this.toUnicode instanceof h.IdentityToUnicodeMap && - this.toUnicode.forEach(function (e, t) { - const n = r[e]; - void 0 === a[n] && (r[+e] = t); - }); - } - this.toUnicode instanceof h.IdentityToUnicodeMap || - this.toUnicode.forEach(function (e, t) { - r[+e] = t; - }); - this.toFontChar = r; - this.toUnicode = new h.ToUnicodeMap(r); - } else if (/Symbol/i.test(r)) - this.toFontChar = buildToFontChar( - c.SymbolSetEncoding, - (0, o.getGlyphsUnicode)(), - this.differences, - ); - else if (/Dingbats/i.test(r)) - this.toFontChar = buildToFontChar( - c.ZapfDingbatsEncoding, - (0, o.getDingbatsGlyphsUnicode)(), - this.differences, - ); - else if (d) { - const e = buildToFontChar( - this.defaultEncoding, - (0, o.getGlyphsUnicode)(), - this.differences, - ); - "CIDFontType2" !== a || - this.cidEncoding.startsWith("Identity-") || - this.toUnicode instanceof h.IdentityToUnicodeMap || - this.toUnicode.forEach(function (t, a) { - e[+t] = a; - }); - this.toFontChar = e; - } else { - const e = (0, o.getGlyphsUnicode)(), - a = []; - this.toUnicode.forEach((t, r) => { - if (!this.composite) { - const a = this.differences[t] || this.defaultEncoding[t], - n = (0, s.getUnicodeForGlyph)(a, e); - -1 !== n && (r = n); - } - a[+t] = r; - }); - this.composite && - this.toUnicode instanceof h.IdentityToUnicodeMap && - /Tahoma|Verdana/i.test(t) && - applyStandardFontGlyphMap( - a, - (0, l.getGlyphMapForStandardFonts)(), - ); - this.toFontChar = a; - } - amendFallbackToUnicode(e); - this.loadedName = r.split("-")[0]; - } - checkAndRepair(e, t, a) { - const s = [ - "OS/2", - "cmap", - "head", - "hhea", - "hmtx", - "maxp", - "name", - "post", - "loca", - "glyf", - "fpgm", - "prep", - "cvt ", - "CFF ", - ]; - function readTables(e, t) { - const a = Object.create(null); - a["OS/2"] = null; - a.cmap = null; - a.head = null; - a.hhea = null; - a.hmtx = null; - a.maxp = null; - a.name = null; - a.post = null; - for (let r = 0; r < t; r++) { - const t = readTableEntry(e); - s.includes(t.tag) && 0 !== t.length && (a[t.tag] = t); - } - return a; - } - function readTableEntry(e) { - const t = e.getString(4), - a = e.getInt32() >>> 0, - r = e.getInt32() >>> 0, - n = e.getInt32() >>> 0, - i = e.pos; - e.pos = e.start || 0; - e.skip(r); - const s = e.getBytes(n); - e.pos = i; - if ("head" === t) { - s[8] = s[9] = s[10] = s[11] = 0; - s[17] |= 32; - } - return { tag: t, checksum: a, length: n, offset: r, data: s }; - } - function readOpenTypeHeader(e) { - return { - version: e.getString(4), - numTables: e.getUint16(), - searchRange: e.getUint16(), - entrySelector: e.getUint16(), - rangeShift: e.getUint16(), - }; - } - function sanitizeGlyph(e, t, a, r, n, i) { - const s = { length: 0, sizeOfInstructions: 0 }; - if (t < 0 || t >= e.length || a > e.length || a - t <= 12) - return s; - const o = e.subarray(t, a), - c = signedInt16(o[2], o[3]), - l = signedInt16(o[4], o[5]), - h = signedInt16(o[6], o[7]), - u = signedInt16(o[8], o[9]); - if (c > h) { - writeSignedInt16(o, 2, h); - writeSignedInt16(o, 6, c); - } - if (l > u) { - writeSignedInt16(o, 4, u); - writeSignedInt16(o, 8, l); - } - const d = signedInt16(o[0], o[1]); - if (d < 0) { - if (d < -1) return s; - r.set(o, n); - s.length = o.length; - return s; - } - let f, - g = 10, - p = 0; - for (f = 0; f < d; f++) { - p = ((o[g] << 8) | o[g + 1]) + 1; - g += 2; - } - const m = g, - b = (o[g] << 8) | o[g + 1]; - s.sizeOfInstructions = b; - g += 2 + b; - const y = g; - let w = 0; - for (f = 0; f < p; f++) { - const e = o[g++]; - 192 & e && (o[g - 1] = 63 & e); - let t = 2; - 2 & e ? (t = 1) : 16 & e && (t = 0); - let a = 2; - 4 & e ? (a = 1) : 32 & e && (a = 0); - const r = t + a; - w += r; - if (8 & e) { - const e = o[g++]; - 0 === e && (o[g - 1] ^= 8); - f += e; - w += e * r; - } - } - if (0 === w) return s; - let S = g + w; - if (S > o.length) return s; - if (!i && b > 0) { - r.set(o.subarray(0, m), n); - r.set([0, 0], n + m); - r.set(o.subarray(y, S), n + m + 2); - S -= b; - o.length - S > 3 && (S = (S + 3) & -4); - s.length = S; - return s; - } - if (o.length - S > 3) { - S = (S + 3) & -4; - r.set(o.subarray(0, S), n); - s.length = S; - return s; - } - r.set(o, n); - s.length = o.length; - return s; - } - function readNameTable(e) { - const a = (t.start || 0) + e.offset; - t.pos = a; - const r = [[], []], - n = [], - i = e.length, - s = a + i; - if (0 !== t.getUint16() || i < 6) return [r, n]; - const o = t.getUint16(), - c = t.getUint16(); - let l, h; - for (l = 0; l < o && t.pos + 12 <= s; l++) { - const e = { - platform: t.getUint16(), - encoding: t.getUint16(), - language: t.getUint16(), - name: t.getUint16(), - length: t.getUint16(), - offset: t.getUint16(), - }; - (isMacNameRecord(e) || isWinNameRecord(e)) && n.push(e); - } - for (l = 0, h = n.length; l < h; l++) { - const e = n[l]; - if (e.length <= 0) continue; - const i = a + c + e.offset; - if (i + e.length > s) continue; - t.pos = i; - const o = e.name; - if (e.encoding) { - let a = ""; - for (let r = 0, n = e.length; r < n; r += 2) - a += String.fromCharCode(t.getUint16()); - r[1][o] = a; - } else r[0][o] = t.getString(e.length); - } - return [r, n]; - } - const l = [ - 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5, -1, -1, - -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1, 1, -1, - -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1, 0, 0, -999, - -999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2, 0, 0, - -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1, -1, -1, -1, -1, - -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1, -1, -1, -1, -1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -999, -999, -999, -999, - -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1, -999, -2, -2, 0, 0, - -1, -2, -2, 0, 0, 0, -1, -1, -1, -2, - ]; - function sanitizeTTProgram(e, t) { - let a, - n, - i, - s, - o, - c = e.data, - h = 0, - u = 0, - d = 0; - const f = [], - g = [], - p = []; - let m = t.tooComplexToFollowFunctions, - b = !1, - y = 0, - w = 0; - for (let e = c.length; h < e; ) { - const e = c[h++]; - if (64 === e) { - n = c[h++]; - if (b || w) h += n; - else for (a = 0; a < n; a++) f.push(c[h++]); - } else if (65 === e) { - n = c[h++]; - if (b || w) h += 2 * n; - else - for (a = 0; a < n; a++) { - i = c[h++]; - f.push((i << 8) | c[h++]); - } - } else if (176 == (248 & e)) { - n = e - 176 + 1; - if (b || w) h += n; - else for (a = 0; a < n; a++) f.push(c[h++]); - } else if (184 == (248 & e)) { - n = e - 184 + 1; - if (b || w) h += 2 * n; - else - for (a = 0; a < n; a++) { - i = c[h++]; - f.push((i << 8) | c[h++]); - } - } else if (43 !== e || m) - if (44 !== e || m) { - if (45 === e) - if (b) { - b = !1; - u = h; - } else { - o = g.pop(); - if (!o) { - (0, r.warn)("TT: ENDF bad stack"); - t.hintsValid = !1; - return; - } - s = p.pop(); - c = o.data; - h = o.i; - t.functionsStackDeltas[s] = f.length - o.stackTop; - } - else if (137 === e) { - if (b || w) { - (0, r.warn)("TT: nested IDEFs not allowed"); - m = !0; - } - b = !0; - d = h; - } else if (88 === e) ++y; - else if (27 === e) w = y; - else if (89 === e) { - w === y && (w = 0); - --y; - } else if (28 === e && !b && !w) { - const e = f.at(-1); - e > 0 && (h += e - 1); - } - } else { - if (b || w) { - (0, r.warn)("TT: nested FDEFs not allowed"); - m = !0; - } - b = !0; - d = h; - s = f.pop(); - t.functionsDefined[s] = { data: c, i: h }; - } - else if (!b && !w) { - s = f.at(-1); - if (isNaN(s)) - (0, r.info)("TT: CALL empty stack (or invalid entry)."); - else { - t.functionsUsed[s] = !0; - if (s in t.functionsStackDeltas) { - const e = f.length + t.functionsStackDeltas[s]; - if (e < 0) { - (0, r.warn)( - "TT: CALL invalid functions stack delta.", - ); - t.hintsValid = !1; - return; - } - f.length = e; - } else if (s in t.functionsDefined && !p.includes(s)) { - g.push({ data: c, i: h, stackTop: f.length - 1 }); - p.push(s); - o = t.functionsDefined[s]; - if (!o) { - (0, r.warn)("TT: CALL non-existent function"); - t.hintsValid = !1; - return; - } - c = o.data; - h = o.i; - } - } - } - if (!b && !w) { - let t = 0; - e <= 142 - ? (t = l[e]) - : e >= 192 && e <= 223 - ? (t = -1) - : e >= 224 && (t = -2); - if (e >= 113 && e <= 117) { - n = f.pop(); - isNaN(n) || (t = 2 * -n); - } - for (; t < 0 && f.length > 0; ) { - f.pop(); - t++; - } - for (; t > 0; ) { - f.push(NaN); - t--; - } - } - } - t.tooComplexToFollowFunctions = m; - const S = [c]; - h > c.length && S.push(new Uint8Array(h - c.length)); - if (d > u) { - (0, r.warn)("TT: complementing a missing function tail"); - S.push(new Uint8Array([34, 45])); - } - !(function foldTTTable(e, t) { - if (t.length > 1) { - let a, - r, - n = 0; - for (a = 0, r = t.length; a < r; a++) n += t[a].length; - n = (n + 3) & -4; - const i = new Uint8Array(n); - let s = 0; - for (a = 0, r = t.length; a < r; a++) { - i.set(t[a], s); - s += t[a].length; - } - e.data = i; - e.length = n; - } - })(e, S); - } - let d, f, b, w; - if ( - isTrueTypeCollectionFile( - (t = new y.Stream(new Uint8Array(t.getBytes()))), - ) - ) { - const e = (function readTrueTypeCollectionData(e, t) { - const { numFonts: a, offsetTable: n } = - (function readTrueTypeCollectionHeader(e) { - const t = e.getString(4); - (0, r.assert)( - "ttcf" === t, - "Must be a TrueType Collection font.", - ); - const a = e.getUint16(), - n = e.getUint16(), - i = e.getInt32() >>> 0, - s = []; - for (let t = 0; t < i; t++) s.push(e.getInt32() >>> 0); - const o = { - ttcTag: t, - majorVersion: a, - minorVersion: n, - numFonts: i, - offsetTable: s, - }; - switch (a) { - case 1: - return o; - case 2: - o.dsigTag = e.getInt32() >>> 0; - o.dsigLength = e.getInt32() >>> 0; - o.dsigOffset = e.getInt32() >>> 0; - return o; - } - throw new r.FormatError( - `Invalid TrueType Collection majorVersion: ${a}.`, - ); - })(e), - i = t.split("+"); - let s; - for (let o = 0; o < a; o++) { - e.pos = (e.start || 0) + n[o]; - const a = readOpenTypeHeader(e), - c = readTables(e, a.numTables); - if (!c.name) - throw new r.FormatError( - 'TrueType Collection font must contain a "name" table.', - ); - const [l] = readNameTable(c.name); - for (let e = 0, r = l.length; e < r; e++) - for (let r = 0, n = l[e].length; r < n; r++) { - const n = l[e][r]?.replaceAll(/\s/g, ""); - if (n) { - if (n === t) return { header: a, tables: c }; - if (!(i.length < 2)) - for (const e of i) - n === e && - (s = { name: e, header: a, tables: c }); - } - } - } - if (s) { - (0, r.warn)( - `TrueType Collection does not contain "${t}" font, falling back to "${s.name}" font instead.`, - ); - return { header: s.header, tables: s.tables }; - } - throw new r.FormatError( - `TrueType Collection does not contain "${t}" font.`, - ); - })(t, this.name); - d = e.header; - f = e.tables; - } else { - d = readOpenTypeHeader(t); - f = readTables(t, d.numTables); - } - const S = !f["CFF "]; - if (S) { - if (!f.loca) - throw new r.FormatError('Required "loca" table is not found'); - if (!f.glyf) { - (0, r.warn)( - 'Required "glyf" table is not found -- trying to recover.', - ); - f.glyf = { tag: "glyf", data: new Uint8Array(0) }; - } - this.isOpenType = !1; - } else { - const t = - a.composite && - (a.cidToGidMap?.length > 0 || - !(a.cMap instanceof p.IdentityCMap)); - if ( - ("OTTO" === d.version && !t) || - !f.head || - !f.hhea || - !f.maxp || - !f.post - ) { - w = new y.Stream(f["CFF "].data); - b = new u.CFFFont(w, a); - adjustWidths(a); - return this.convert(e, b, a); - } - delete f.glyf; - delete f.loca; - delete f.fpgm; - delete f.prep; - delete f["cvt "]; - this.isOpenType = !0; - } - if (!f.maxp) - throw new r.FormatError('Required "maxp" table is not found'); - t.pos = (t.start || 0) + f.maxp.offset; - const x = t.getInt32(), - C = t.getUint16(); - if (a.scaleFactors?.length === C && S) { - const { scaleFactors: e } = a, - t = int16(f.head.data[50], f.head.data[51]), - r = new g.GlyfTable({ - glyfTable: f.glyf.data, - isGlyphLocationsLong: t, - locaTable: f.loca.data, - numGlyphs: C, - }); - r.scale(e); - const { glyf: n, loca: i, isLocationLong: s } = r.write(); - f.glyf.data = n; - f.loca.data = i; - if (s !== !!t) { - f.head.data[50] = 0; - f.head.data[51] = s ? 1 : 0; - } - const o = f.hmtx.data; - for (let t = 0; t < C; t++) { - const a = 4 * t, - r = Math.round(e[t] * int16(o[a], o[a + 1])); - o[a] = (r >> 8) & 255; - o[a + 1] = 255 & r; - writeSignedInt16( - o, - a + 2, - Math.round(e[t] * signedInt16(o[a + 2], o[a + 3])), - ); - } - } - let k = C + 1, - v = !0; - if (k > 65535) { - v = !1; - k = C; - (0, r.warn)( - "Not enough space in glyfs to duplicate first glyph.", - ); - } - let F = 0, - O = 0; - if (x >= 65536 && f.maxp.length >= 22) { - t.pos += 8; - if (t.getUint16() > 2) { - f.maxp.data[14] = 0; - f.maxp.data[15] = 2; - } - t.pos += 4; - F = t.getUint16(); - t.pos += 4; - O = t.getUint16(); - } - f.maxp.data[4] = k >> 8; - f.maxp.data[5] = 255 & k; - const T = (function sanitizeTTPrograms(e, t, a, n) { - const i = { - functionsDefined: [], - functionsUsed: [], - functionsStackDeltas: [], - tooComplexToFollowFunctions: !1, - hintsValid: !0, - }; - e && sanitizeTTProgram(e, i); - t && sanitizeTTProgram(t, i); - e && - (function checkInvalidFunctions(e, t) { - if (!e.tooComplexToFollowFunctions) - if (e.functionsDefined.length > t) { - (0, r.warn)("TT: more functions defined than expected"); - e.hintsValid = !1; - } else - for ( - let a = 0, n = e.functionsUsed.length; - a < n; - a++ - ) { - if (a > t) { - (0, r.warn)("TT: invalid function id: " + a); - e.hintsValid = !1; - return; - } - if (e.functionsUsed[a] && !e.functionsDefined[a]) { - (0, r.warn)("TT: undefined function: " + a); - e.hintsValid = !1; - return; - } - } - })(i, n); - if (a && 1 & a.length) { - const e = new Uint8Array(a.length + 1); - e.set(a.data); - a.data = e; - } - return i.hintsValid; - })(f.fpgm, f.prep, f["cvt "], F); - if (!T) { - delete f.fpgm; - delete f.prep; - delete f["cvt "]; - } - !(function sanitizeMetrics(e, t, a, n, i, s) { - if (!t) { - a && (a.data = null); - return; - } - e.pos = (e.start || 0) + t.offset; - e.pos += 4; - e.pos += 2; - e.pos += 2; - e.pos += 2; - e.pos += 2; - e.pos += 2; - e.pos += 2; - e.pos += 2; - e.pos += 2; - e.pos += 2; - const o = e.getUint16(); - e.pos += 8; - e.pos += 2; - let c = e.getUint16(); - if (0 !== o) { - if (!(2 & int16(n.data[44], n.data[45]))) { - t.data[22] = 0; - t.data[23] = 0; - } - } - if (c > i) { - (0, r.info)( - `The numOfMetrics (${c}) should not be greater than the numGlyphs (${i}).`, - ); - c = i; - t.data[34] = (65280 & c) >> 8; - t.data[35] = 255 & c; - } - const l = i - c - ((a.length - 4 * c) >> 1); - if (l > 0) { - const e = new Uint8Array(a.length + 2 * l); - e.set(a.data); - if (s) { - e[a.length] = a.data[2]; - e[a.length + 1] = a.data[3]; - } - a.data = e; - } - })(t, f.hhea, f.hmtx, f.head, k, v); - if (!f.head) - throw new r.FormatError('Required "head" table is not found'); - !(function sanitizeHead(e, t, a) { - const n = e.data, - i = (function int32(e, t, a, r) { - return (e << 24) + (t << 16) + (a << 8) + r; - })(n[0], n[1], n[2], n[3]); - if (i >> 16 != 1) { - (0, r.info)( - "Attempting to fix invalid version in head table: " + i, - ); - n[0] = 0; - n[1] = 1; - n[2] = 0; - n[3] = 0; - } - const s = int16(n[50], n[51]); - if (s < 0 || s > 1) { - (0, r.info)( - "Attempting to fix invalid indexToLocFormat in head table: " + - s, - ); - const e = t + 1; - if (a === e << 1) { - n[50] = 0; - n[51] = 0; - } else { - if (a !== e << 2) - throw new r.FormatError( - "Could not fix indexToLocFormat: " + s, - ); - n[50] = 0; - n[51] = 1; - } - } - })(f.head, C, S ? f.loca.length : 0); - let M = Object.create(null); - if (S) { - const e = int16(f.head.data[50], f.head.data[51]), - t = (function sanitizeGlyphLocations(e, t, a, r, n, i, s) { - let o, c, l; - if (r) { - o = 4; - c = function fontItemDecodeLong(e, t) { - return ( - (e[t] << 24) | - (e[t + 1] << 16) | - (e[t + 2] << 8) | - e[t + 3] - ); - }; - l = function fontItemEncodeLong(e, t, a) { - e[t] = (a >>> 24) & 255; - e[t + 1] = (a >> 16) & 255; - e[t + 2] = (a >> 8) & 255; - e[t + 3] = 255 & a; - }; - } else { - o = 2; - c = function fontItemDecode(e, t) { - return (e[t] << 9) | (e[t + 1] << 1); - }; - l = function fontItemEncode(e, t, a) { - e[t] = (a >> 9) & 255; - e[t + 1] = (a >> 1) & 255; - }; - } - const h = i ? a + 1 : a, - u = o * (1 + h), - d = new Uint8Array(u); - d.set(e.data.subarray(0, u)); - e.data = d; - const f = t.data, - g = f.length, - p = new Uint8Array(g); - let m, b; - const y = []; - for (m = 0, b = 0; m < a + 1; m++, b += o) { - let e = c(d, b); - e > g && (e = g); - y.push({ index: m, offset: e, endOffset: 0 }); - } - y.sort((e, t) => e.offset - t.offset); - for (m = 0; m < a; m++) y[m].endOffset = y[m + 1].offset; - y.sort((e, t) => e.index - t.index); - for (m = 0; m < a; m++) { - const { offset: e, endOffset: t } = y[m]; - if (0 !== e || 0 !== t) break; - const a = y[m + 1].offset; - if (0 !== a) { - y[m].endOffset = a; - break; - } - } - const w = Object.create(null); - let S = 0; - l(d, 0, S); - for (m = 0, b = o; m < a; m++, b += o) { - const e = sanitizeGlyph( - f, - y[m].offset, - y[m].endOffset, - p, - S, - n, - ), - t = e.length; - 0 === t && (w[m] = !0); - e.sizeOfInstructions > s && (s = e.sizeOfInstructions); - S += t; - l(d, b, S); - } - if (0 === S) { - const e = new Uint8Array([ - 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, - ]); - for (m = 0, b = o; m < h; m++, b += o) l(d, b, e.length); - t.data = e; - } else if (i) { - const a = c(d, o); - if (p.length > a + S) t.data = p.subarray(0, a + S); - else { - t.data = new Uint8Array(a + S); - t.data.set(p.subarray(0, S)); - } - t.data.set(p.subarray(0, a), S); - l(e.data, d.length - o, S + a); - } else t.data = p.subarray(0, S); - return { missingGlyphs: w, maxSizeOfInstructions: s }; - })(f.loca, f.glyf, C, e, T, v, O); - M = t.missingGlyphs; - if (x >= 65536 && f.maxp.length >= 22) { - f.maxp.data[26] = t.maxSizeOfInstructions >> 8; - f.maxp.data[27] = 255 & t.maxSizeOfInstructions; - } - } - if (!f.hhea) - throw new r.FormatError('Required "hhea" table is not found'); - if (0 === f.hhea.data[10] && 0 === f.hhea.data[11]) { - f.hhea.data[10] = 255; - f.hhea.data[11] = 255; - } - const D = { - unitsPerEm: int16(f.head.data[18], f.head.data[19]), - yMax: signedInt16(f.head.data[42], f.head.data[43]), - yMin: signedInt16(f.head.data[38], f.head.data[39]), - ascent: signedInt16(f.hhea.data[4], f.hhea.data[5]), - descent: signedInt16(f.hhea.data[6], f.hhea.data[7]), - lineGap: signedInt16(f.hhea.data[8], f.hhea.data[9]), - }; - this.ascent = D.ascent / D.unitsPerEm; - this.descent = D.descent / D.unitsPerEm; - this.lineGap = D.lineGap / D.unitsPerEm; - if (this.cssFontInfo?.lineHeight) { - this.lineHeight = this.cssFontInfo.metrics.lineHeight; - this.lineGap = this.cssFontInfo.metrics.lineGap; - } else - this.lineHeight = this.ascent - this.descent + this.lineGap; - f.post && - (function readPostScriptTable(e, a, n) { - const s = (t.start || 0) + e.offset; - t.pos = s; - const o = s + e.length, - c = t.getInt32(); - t.skip(28); - let l, - h, - u = !0; - switch (c) { - case 65536: - l = i.MacStandardGlyphOrdering; - break; - case 131072: - const e = t.getUint16(); - if (e !== n) { - u = !1; - break; - } - const s = []; - for (h = 0; h < e; ++h) { - const e = t.getUint16(); - if (e >= 32768) { - u = !1; - break; - } - s.push(e); - } - if (!u) break; - const d = [], - f = []; - for (; t.pos < o; ) { - const e = t.getByte(); - f.length = e; - for (h = 0; h < e; ++h) - f[h] = String.fromCharCode(t.getByte()); - d.push(f.join("")); - } - l = []; - for (h = 0; h < e; ++h) { - const e = s[h]; - e < 258 - ? l.push(i.MacStandardGlyphOrdering[e]) - : l.push(d[e - 258]); - } - break; - case 196608: - break; - default: - (0, r.warn)( - "Unknown/unsupported post table version " + c, - ); - u = !1; - a.defaultEncoding && (l = a.defaultEncoding); - } - a.glyphNames = l; - return u; - })(f.post, a, C); - f.post = { tag: "post", data: createPostTable(a) }; - const E = []; - function hasGlyph(e) { - return !M[e]; - } - if (a.composite) { - const e = a.cidToGidMap || [], - t = 0 === e.length; - a.cMap.forEach(function (a, n) { - "string" == typeof n && (n = convertCidString(a, n, !0)); - if (n > 65535) - throw new r.FormatError("Max size of CID is 65,535"); - let i = -1; - t ? (i = n) : void 0 !== e[n] && (i = e[n]); - i >= 0 && i < C && hasGlyph(i) && (E[a] = i); - }); - } else { - const e = (function readCmapTable(e, t, a, n) { - if (!e) { - (0, r.warn)("No cmap table available."); - return { - platformId: -1, - encodingId: -1, - mappings: [], - hasShortCmap: !1, - }; - } - let i, - s = (t.start || 0) + e.offset; - t.pos = s; - t.skip(2); - const o = t.getUint16(); - let c, - l = !1; - for (let e = 0; e < o; e++) { - const r = t.getUint16(), - i = t.getUint16(), - s = t.getInt32() >>> 0; - let h = !1; - if (c?.platformId !== r || c?.encodingId !== i) { - if (0 !== r || (0 !== i && 1 !== i && 3 !== i)) - if (1 === r && 0 === i) h = !0; - else if (3 !== r || 1 !== i || (!n && c)) { - if (a && 3 === r && 0 === i) { - h = !0; - let a = !0; - if (e < o - 1) { - const e = t.peekBytes(2); - int16(e[0], e[1]) < r && (a = !1); - } - a && (l = !0); - } - } else { - h = !0; - a || (l = !0); - } - else h = !0; - h && (c = { platformId: r, encodingId: i, offset: s }); - if (l) break; - } - } - c && (t.pos = s + c.offset); - if (!c || -1 === t.peekByte()) { - (0, r.warn)("Could not find a preferred cmap table."); - return { - platformId: -1, - encodingId: -1, - mappings: [], - hasShortCmap: !1, - }; - } - const h = t.getUint16(); - let u = !1; - const d = []; - let f, g; - if (0 === h) { - t.skip(4); - for (f = 0; f < 256; f++) { - const e = t.getByte(); - e && d.push({ charCode: f, glyphId: e }); - } - u = !0; - } else if (2 === h) { - t.skip(4); - const e = []; - let a = 0; - for (let r = 0; r < 256; r++) { - const r = t.getUint16() >> 3; - e.push(r); - a = Math.max(r, a); - } - const r = []; - for (let e = 0; e <= a; e++) - r.push({ - firstCode: t.getUint16(), - entryCount: t.getUint16(), - idDelta: signedInt16(t.getByte(), t.getByte()), - idRangePos: t.pos + t.getUint16(), - }); - for (let a = 0; a < 256; a++) - if (0 === e[a]) { - t.pos = r[0].idRangePos + 2 * a; - g = t.getUint16(); - d.push({ charCode: a, glyphId: g }); - } else { - const n = r[e[a]]; - for (f = 0; f < n.entryCount; f++) { - const e = (a << 8) + f + n.firstCode; - t.pos = n.idRangePos + 2 * f; - g = t.getUint16(); - 0 !== g && (g = (g + n.idDelta) % 65536); - d.push({ charCode: e, glyphId: g }); - } - } - } else if (4 === h) { - t.skip(4); - const e = t.getUint16() >> 1; - t.skip(6); - const a = []; - let r; - for (r = 0; r < e; r++) a.push({ end: t.getUint16() }); - t.skip(2); - for (r = 0; r < e; r++) a[r].start = t.getUint16(); - for (r = 0; r < e; r++) a[r].delta = t.getUint16(); - let n, - o = 0; - for (r = 0; r < e; r++) { - i = a[r]; - const s = t.getUint16(); - if (s) { - n = (s >> 1) - (e - r); - i.offsetIndex = n; - o = Math.max(o, n + i.end - i.start + 1); - } else i.offsetIndex = -1; - } - const c = []; - for (f = 0; f < o; f++) c.push(t.getUint16()); - for (r = 0; r < e; r++) { - i = a[r]; - s = i.start; - const e = i.end, - t = i.delta; - n = i.offsetIndex; - for (f = s; f <= e; f++) - if (65535 !== f) { - g = n < 0 ? f : c[n + f - s]; - g = (g + t) & 65535; - d.push({ charCode: f, glyphId: g }); - } - } - } else if (6 === h) { - t.skip(4); - const e = t.getUint16(), - a = t.getUint16(); - for (f = 0; f < a; f++) { - g = t.getUint16(); - const a = e + f; - d.push({ charCode: a, glyphId: g }); - } - } else { - if (12 !== h) { - (0, r.warn)("cmap table has unsupported format: " + h); - return { - platformId: -1, - encodingId: -1, - mappings: [], - hasShortCmap: !1, - }; - } - { - t.skip(10); - const e = t.getInt32() >>> 0; - for (f = 0; f < e; f++) { - const e = t.getInt32() >>> 0, - a = t.getInt32() >>> 0; - let r = t.getInt32() >>> 0; - for (let t = e; t <= a; t++) - d.push({ charCode: t, glyphId: r++ }); - } - } - } - d.sort(function (e, t) { - return e.charCode - t.charCode; - }); - for (let e = 1; e < d.length; e++) - if (d[e - 1].charCode === d[e].charCode) { - d.splice(e, 1); - e--; - } - return { - platformId: c.platformId, - encodingId: c.encodingId, - mappings: d, - hasShortCmap: u, - }; - })(f.cmap, t, this.isSymbolicFont, a.hasEncoding), - n = e.platformId, - s = e.encodingId, - l = e.mappings; - let u = [], - d = !1; - !a.hasEncoding || - ("MacRomanEncoding" !== a.baseEncodingName && - "WinAnsiEncoding" !== a.baseEncodingName) || - (u = (0, c.getEncoding)(a.baseEncodingName)); - if ( - a.hasEncoding && - !this.isSymbolicFont && - ((3 === n && 1 === s) || (1 === n && 0 === s)) - ) { - const e = (0, o.getGlyphsUnicode)(); - for (let t = 0; t < 256; t++) { - let r; - r = - void 0 !== this.differences[t] - ? this.differences[t] - : u.length && "" !== u[t] - ? u[t] - : c.StandardEncoding[t]; - if (!r) continue; - const o = (0, i.recoverGlyphName)(r, e); - let d; - 3 === n && 1 === s - ? (d = e[o]) - : 1 === n && - 0 === s && - (d = c.MacRomanEncoding.indexOf(o)); - if (void 0 === d) { - if ( - !a.glyphNames && - a.hasIncludedToUnicodeMap && - !(this.toUnicode instanceof h.IdentityToUnicodeMap) - ) { - const e = this.toUnicode.get(t); - e && (d = e.codePointAt(0)); - } - if (void 0 === d) continue; - } - for (const e of l) - if (e.charCode === d) { - E[t] = e.glyphId; - break; - } - } - } else if (0 === n) { - for (const e of l) E[e.charCode] = e.glyphId; - d = !0; - } else - for (const e of l) { - let t = e.charCode; - 3 === n && t >= 61440 && t <= 61695 && (t &= 255); - E[t] = e.glyphId; - } - if (a.glyphNames && (u.length || this.differences.length)) - for (let e = 0; e < 256; ++e) { - if (!d && void 0 !== E[e]) continue; - const t = this.differences[e] || u[e]; - if (!t) continue; - const r = a.glyphNames.indexOf(t); - r > 0 && hasGlyph(r) && (E[e] = r); - } - } - 0 === E.length && (E[0] = 0); - let N = k - 1; - v || (N = 0); - if (!a.cssFontInfo) { - const e = adjustMapping(E, hasGlyph, N, this.toUnicode); - this.toFontChar = e.toFontChar; - f.cmap = { - tag: "cmap", - data: createCmapTable( - e.charCodeToGlyphId, - e.toUnicodeExtraMap, - k, - ), - }; - (f["OS/2"] && - (function validateOS2Table(e, t) { - t.pos = (t.start || 0) + e.offset; - const a = t.getUint16(); - t.skip(60); - const r = t.getUint16(); - if (a < 4 && 768 & r) return !1; - if (t.getUint16() > t.getUint16()) return !1; - t.skip(6); - if (0 === t.getUint16()) return !1; - e.data[8] = e.data[9] = 0; - return !0; - })(f["OS/2"], t)) || - (f["OS/2"] = { - tag: "OS/2", - data: createOS2Table(a, e.charCodeToGlyphId, D), - }); - } - if (!S) - try { - w = new y.Stream(f["CFF "].data); - b = new n.CFFParser(w, a, i.SEAC_ANALYSIS_ENABLED).parse(); - b.duplicateFirstGlyph(); - const e = new n.CFFCompiler(b); - f["CFF "].data = e.compile(); - } catch { - (0, r.warn)("Failed to compile font " + a.loadedName); - } - if (f.name) { - const [t, r] = readNameTable(f.name); - f.name.data = createNameTable(e, t); - this.psName = t[0][6] || null; - a.composite || - (function adjustTrueTypeToUnicode(e, t, a) { - if (e.isInternalFont) return; - if (e.hasIncludedToUnicodeMap) return; - if (e.hasEncoding) return; - if (e.toUnicode instanceof h.IdentityToUnicodeMap) return; - if (!t) return; - if (0 === a.length) return; - if (e.defaultEncoding === c.WinAnsiEncoding) return; - for (const e of a) if (!isWinNameRecord(e)) return; - const r = c.WinAnsiEncoding, - n = [], - i = (0, o.getGlyphsUnicode)(); - for (const e in r) { - const t = r[e]; - if ("" === t) continue; - const a = i[t]; - void 0 !== a && (n[e] = String.fromCharCode(a)); - } - n.length > 0 && e.toUnicode.amend(n); - })(a, this.isSymbolicFont, r); - } else f.name = { tag: "name", data: createNameTable(this.name) }; - const R = new m.OpenTypeFileBuilder(d.version); - for (const e in f) R.addTable(e, f[e].data); - return R.toArray(); - } - convert(e, t, a) { - a.fixedPitch = !1; - a.builtInEncoding && - (function adjustType1ToUnicode(e, t) { - if (e.isInternalFont) return; - if (e.hasIncludedToUnicodeMap) return; - if (t === e.defaultEncoding) return; - if (e.toUnicode instanceof h.IdentityToUnicodeMap) return; - const a = [], - r = (0, o.getGlyphsUnicode)(); - for (const n in t) { - if ( - e.hasEncoding && - (e.baseEncodingName || void 0 !== e.differences[n]) - ) - continue; - const i = t[n], - o = (0, s.getUnicodeForGlyph)(i, r); - -1 !== o && (a[n] = String.fromCharCode(o)); - } - a.length > 0 && e.toUnicode.amend(a); - })(a, a.builtInEncoding); - let n = 1; - t instanceof u.CFFFont && (n = t.numGlyphs - 1); - const l = t.getGlyphMapping(a); - let d = null, - f = l, - g = null; - if (!a.cssFontInfo) { - d = adjustMapping(l, t.hasGlyphId.bind(t), n, this.toUnicode); - this.toFontChar = d.toFontChar; - f = d.charCodeToGlyphId; - g = d.toUnicodeExtraMap; - } - const p = t.numGlyphs; - function getCharCodes(e, t) { - let a = null; - for (const r in e) t === e[r] && (a ||= []).push(0 | r); - return a; - } - function createCharCode(e, t) { - for (const a in e) if (t === e[a]) return 0 | a; - d.charCodeToGlyphId[d.nextAvailableFontCharCode] = t; - return d.nextAvailableFontCharCode++; - } - const b = t.seacs; - if (d && i.SEAC_ANALYSIS_ENABLED && b?.length) { - const e = a.fontMatrix || r.FONT_IDENTITY_MATRIX, - n = t.getCharset(), - i = Object.create(null); - for (let t in b) { - t |= 0; - const a = b[t], - r = c.StandardEncoding[a[2]], - s = c.StandardEncoding[a[3]], - o = n.indexOf(r), - h = n.indexOf(s); - if (o < 0 || h < 0) continue; - const u = { - x: a[0] * e[0] + a[1] * e[2] + e[4], - y: a[0] * e[1] + a[1] * e[3] + e[5], - }, - f = getCharCodes(l, t); - if (f) - for (const e of f) { - const t = d.charCodeToGlyphId, - a = createCharCode(t, o), - r = createCharCode(t, h); - i[e] = { - baseFontCharCode: a, - accentFontCharCode: r, - accentOffset: u, - }; - } - } - a.seacMap = i; - } - const y = 1 / (a.fontMatrix || r.FONT_IDENTITY_MATRIX)[0], - w = new m.OpenTypeFileBuilder("OTTO"); - w.addTable("CFF ", t.data); - w.addTable("OS/2", createOS2Table(a, f)); - w.addTable("cmap", createCmapTable(f, g, p)); - w.addTable( - "head", - "\0\0\0\0\0\0\0\0\0\0_<õ\0\0" + - safeString16(y) + - "\0\0\0\0ž\v~'\0\0\0\0ž\v~'\0\0" + - safeString16(a.descent) + - "ÿ" + - safeString16(a.ascent) + - string16(a.italicAngle ? 2 : 0) + - "\0\0\0\0\0\0\0", - ); - w.addTable( - "hhea", - "\0\0\0" + - safeString16(a.ascent) + - safeString16(a.descent) + - "\0\0ÿÿ\0\0\0\0\0\0" + - safeString16(a.capHeight) + - safeString16(Math.tan(a.italicAngle) * a.xHeight) + - "\0\0\0\0\0\0\0\0\0\0\0\0" + - string16(p), - ); - w.addTable( - "hmtx", - (function fontFieldsHmtx() { - const e = t.charstrings, - a = t.cff ? t.cff.widths : null; - let r = "\0\0\0\0"; - for (let t = 1, n = p; t < n; t++) { - let n = 0; - if (e) { - const a = e[t - 1]; - n = "width" in a ? a.width : 0; - } else a && (n = Math.ceil(a[t] || 0)); - r += string16(n) + string16(0); - } - return r; - })(), - ); - w.addTable("maxp", "\0\0P\0" + string16(p)); - w.addTable("name", createNameTable(e)); - w.addTable("post", createPostTable(a)); - return w.toArray(); - } - get spaceWidth() { - const e = ["space", "minus", "one", "i", "I"]; - let t; - for (const a of e) { - if (a in this.widths) { - t = this.widths[a]; - break; - } - const e = (0, o.getGlyphsUnicode)()[a]; - let r = 0; - if (this.composite && this.cMap.contains(e)) { - r = this.cMap.lookup(e); - "string" == typeof r && (r = convertCidString(e, r)); - } - !r && this.toUnicode && (r = this.toUnicode.charCodeOf(e)); - r <= 0 && (r = e); - t = this.widths[r]; - if (t) break; - } - return (0, r.shadow)(this, "spaceWidth", t || this.defaultWidth); - } - _charToGlyph(e, t = !1) { - let a, - n, - i, - o = this._glyphCache[e]; - if (o?.isSpace === t) return o; - let c = e; - if (this.cMap?.contains(e)) { - c = this.cMap.lookup(e); - "string" == typeof c && (c = convertCidString(e, c)); - } - n = this.widths[c]; - "number" != typeof n && (n = this.defaultWidth); - const l = this.vmetrics?.[c]; - let h = this.toUnicode.get(e) || e; - "number" == typeof h && (h = String.fromCharCode(h)); - let u = void 0 !== this.toFontChar[e]; - a = this.toFontChar[e] || e; - if (this.missingFile) { - const t = this.differences[e] || this.defaultEncoding[e]; - (".notdef" !== t && "" !== t) || - "Type1" !== this.type || - (a = 32); - a = (0, s.mapSpecialUnicodeValues)(a); - } - this.isType3Font && (i = a); - let d = null; - if (this.seacMap?.[e]) { - u = !0; - const t = this.seacMap[e]; - a = t.baseFontCharCode; - d = { - fontChar: String.fromCodePoint(t.accentFontCharCode), - offset: t.accentOffset, - }; - } - let f = ""; - "number" == typeof a && - (a <= 1114111 - ? (f = String.fromCodePoint(a)) - : (0, r.warn)(`charToGlyph - invalid fontCharCode: ${a}`)); - o = new Glyph(e, f, h, d, n, l, i, t, u); - return (this._glyphCache[e] = o); - } - charsToGlyphs(e) { - let t = this._charsCache[e]; - if (t) return t; - t = []; - if (this.cMap) { - const a = Object.create(null), - r = e.length; - let n = 0; - for (; n < r; ) { - this.cMap.readCharCode(e, n, a); - const { charcode: r, length: i } = a; - n += i; - const s = this._charToGlyph( - r, - 1 === i && 32 === e.charCodeAt(n - 1), - ); - t.push(s); - } - } else - for (let a = 0, r = e.length; a < r; ++a) { - const r = e.charCodeAt(a), - n = this._charToGlyph(r, 32 === r); - t.push(n); - } - return (this._charsCache[e] = t); - } - getCharPositions(e) { - const t = []; - if (this.cMap) { - const a = Object.create(null); - let r = 0; - for (; r < e.length; ) { - this.cMap.readCharCode(e, r, a); - const n = a.length; - t.push([r, r + n]); - r += n; - } - } else - for (let a = 0, r = e.length; a < r; ++a) t.push([a, a + 1]); - return t; - } - get glyphCacheValues() { - return Object.values(this._glyphCache); - } - encodeString(e) { - const t = [], - a = [], - hasCurrentBufErrors = () => t.length % 2 == 1, - r = - this.toUnicode instanceof h.IdentityToUnicodeMap - ? (e) => this.toUnicode.charCodeOf(e) - : (e) => this.toUnicode.charCodeOf(String.fromCodePoint(e)); - for (let n = 0, i = e.length; n < i; n++) { - const i = e.codePointAt(n); - i > 55295 && (i < 57344 || i > 65533) && n++; - if (this.toUnicode) { - const e = r(i); - if (-1 !== e) { - if (hasCurrentBufErrors()) { - t.push(a.join("")); - a.length = 0; - } - for ( - let t = - (this.cMap ? this.cMap.getCharCodeLength(e) : 1) - 1; - t >= 0; - t-- - ) - a.push(String.fromCharCode((e >> (8 * t)) & 255)); - continue; - } - } - if (!hasCurrentBufErrors()) { - t.push(a.join("")); - a.length = 0; - } - a.push(String.fromCodePoint(i)); - } - t.push(a.join("")); - return t; - } - }; - t.ErrorFont = class ErrorFont { - constructor(e) { - this.error = e; - this.loadedName = "g_font_error"; - this.missingFile = !0; - } - charsToGlyphs() { - return []; - } - encodeString(e) { - return [e]; - } - exportData(e = !1) { - return { error: this.error }; - } - }; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.CFFTopDict = - t.CFFStrings = - t.CFFStandardStrings = - t.CFFPrivateDict = - t.CFFParser = - t.CFFIndex = - t.CFFHeader = - t.CFFFDSelect = - t.CFFCompiler = - t.CFFCharset = - t.CFF = - void 0; - var r = a(2), - n = a(36), - i = a(37); - const s = [ - ".notdef", - "space", - "exclam", - "quotedbl", - "numbersign", - "dollar", - "percent", - "ampersand", - "quoteright", - "parenleft", - "parenright", - "asterisk", - "plus", - "comma", - "hyphen", - "period", - "slash", - "zero", - "one", - "two", - "three", - "four", - "five", - "six", - "seven", - "eight", - "nine", - "colon", - "semicolon", - "less", - "equal", - "greater", - "question", - "at", - "A", - "B", - "C", - "D", - "E", - "F", - "G", - "H", - "I", - "J", - "K", - "L", - "M", - "N", - "O", - "P", - "Q", - "R", - "S", - "T", - "U", - "V", - "W", - "X", - "Y", - "Z", - "bracketleft", - "backslash", - "bracketright", - "asciicircum", - "underscore", - "quoteleft", - "a", - "b", - "c", - "d", - "e", - "f", - "g", - "h", - "i", - "j", - "k", - "l", - "m", - "n", - "o", - "p", - "q", - "r", - "s", - "t", - "u", - "v", - "w", - "x", - "y", - "z", - "braceleft", - "bar", - "braceright", - "asciitilde", - "exclamdown", - "cent", - "sterling", - "fraction", - "yen", - "florin", - "section", - "currency", - "quotesingle", - "quotedblleft", - "guillemotleft", - "guilsinglleft", - "guilsinglright", - "fi", - "fl", - "endash", - "dagger", - "daggerdbl", - "periodcentered", - "paragraph", - "bullet", - "quotesinglbase", - "quotedblbase", - "quotedblright", - "guillemotright", - "ellipsis", - "perthousand", - "questiondown", - "grave", - "acute", - "circumflex", - "tilde", - "macron", - "breve", - "dotaccent", - "dieresis", - "ring", - "cedilla", - "hungarumlaut", - "ogonek", - "caron", - "emdash", - "AE", - "ordfeminine", - "Lslash", - "Oslash", - "OE", - "ordmasculine", - "ae", - "dotlessi", - "lslash", - "oslash", - "oe", - "germandbls", - "onesuperior", - "logicalnot", - "mu", - "trademark", - "Eth", - "onehalf", - "plusminus", - "Thorn", - "onequarter", - "divide", - "brokenbar", - "degree", - "thorn", - "threequarters", - "twosuperior", - "registered", - "minus", - "eth", - "multiply", - "threesuperior", - "copyright", - "Aacute", - "Acircumflex", - "Adieresis", - "Agrave", - "Aring", - "Atilde", - "Ccedilla", - "Eacute", - "Ecircumflex", - "Edieresis", - "Egrave", - "Iacute", - "Icircumflex", - "Idieresis", - "Igrave", - "Ntilde", - "Oacute", - "Ocircumflex", - "Odieresis", - "Ograve", - "Otilde", - "Scaron", - "Uacute", - "Ucircumflex", - "Udieresis", - "Ugrave", - "Yacute", - "Ydieresis", - "Zcaron", - "aacute", - "acircumflex", - "adieresis", - "agrave", - "aring", - "atilde", - "ccedilla", - "eacute", - "ecircumflex", - "edieresis", - "egrave", - "iacute", - "icircumflex", - "idieresis", - "igrave", - "ntilde", - "oacute", - "ocircumflex", - "odieresis", - "ograve", - "otilde", - "scaron", - "uacute", - "ucircumflex", - "udieresis", - "ugrave", - "yacute", - "ydieresis", - "zcaron", - "exclamsmall", - "Hungarumlautsmall", - "dollaroldstyle", - "dollarsuperior", - "ampersandsmall", - "Acutesmall", - "parenleftsuperior", - "parenrightsuperior", - "twodotenleader", - "onedotenleader", - "zerooldstyle", - "oneoldstyle", - "twooldstyle", - "threeoldstyle", - "fouroldstyle", - "fiveoldstyle", - "sixoldstyle", - "sevenoldstyle", - "eightoldstyle", - "nineoldstyle", - "commasuperior", - "threequartersemdash", - "periodsuperior", - "questionsmall", - "asuperior", - "bsuperior", - "centsuperior", - "dsuperior", - "esuperior", - "isuperior", - "lsuperior", - "msuperior", - "nsuperior", - "osuperior", - "rsuperior", - "ssuperior", - "tsuperior", - "ff", - "ffi", - "ffl", - "parenleftinferior", - "parenrightinferior", - "Circumflexsmall", - "hyphensuperior", - "Gravesmall", - "Asmall", - "Bsmall", - "Csmall", - "Dsmall", - "Esmall", - "Fsmall", - "Gsmall", - "Hsmall", - "Ismall", - "Jsmall", - "Ksmall", - "Lsmall", - "Msmall", - "Nsmall", - "Osmall", - "Psmall", - "Qsmall", - "Rsmall", - "Ssmall", - "Tsmall", - "Usmall", - "Vsmall", - "Wsmall", - "Xsmall", - "Ysmall", - "Zsmall", - "colonmonetary", - "onefitted", - "rupiah", - "Tildesmall", - "exclamdownsmall", - "centoldstyle", - "Lslashsmall", - "Scaronsmall", - "Zcaronsmall", - "Dieresissmall", - "Brevesmall", - "Caronsmall", - "Dotaccentsmall", - "Macronsmall", - "figuredash", - "hypheninferior", - "Ogoneksmall", - "Ringsmall", - "Cedillasmall", - "questiondownsmall", - "oneeighth", - "threeeighths", - "fiveeighths", - "seveneighths", - "onethird", - "twothirds", - "zerosuperior", - "foursuperior", - "fivesuperior", - "sixsuperior", - "sevensuperior", - "eightsuperior", - "ninesuperior", - "zeroinferior", - "oneinferior", - "twoinferior", - "threeinferior", - "fourinferior", - "fiveinferior", - "sixinferior", - "seveninferior", - "eightinferior", - "nineinferior", - "centinferior", - "dollarinferior", - "periodinferior", - "commainferior", - "Agravesmall", - "Aacutesmall", - "Acircumflexsmall", - "Atildesmall", - "Adieresissmall", - "Aringsmall", - "AEsmall", - "Ccedillasmall", - "Egravesmall", - "Eacutesmall", - "Ecircumflexsmall", - "Edieresissmall", - "Igravesmall", - "Iacutesmall", - "Icircumflexsmall", - "Idieresissmall", - "Ethsmall", - "Ntildesmall", - "Ogravesmall", - "Oacutesmall", - "Ocircumflexsmall", - "Otildesmall", - "Odieresissmall", - "OEsmall", - "Oslashsmall", - "Ugravesmall", - "Uacutesmall", - "Ucircumflexsmall", - "Udieresissmall", - "Yacutesmall", - "Thornsmall", - "Ydieresissmall", - "001.000", - "001.001", - "001.002", - "001.003", - "Black", - "Bold", - "Book", - "Light", - "Medium", - "Regular", - "Roman", - "Semibold", - ]; - t.CFFStandardStrings = s; - const o = 391, - c = [ - null, - { id: "hstem", min: 2, stackClearing: !0, stem: !0 }, - null, - { id: "vstem", min: 2, stackClearing: !0, stem: !0 }, - { id: "vmoveto", min: 1, stackClearing: !0 }, - { id: "rlineto", min: 2, resetStack: !0 }, - { id: "hlineto", min: 1, resetStack: !0 }, - { id: "vlineto", min: 1, resetStack: !0 }, - { id: "rrcurveto", min: 6, resetStack: !0 }, - null, - { id: "callsubr", min: 1, undefStack: !0 }, - { id: "return", min: 0, undefStack: !0 }, - null, - null, - { id: "endchar", min: 0, stackClearing: !0 }, - null, - null, - null, - { id: "hstemhm", min: 2, stackClearing: !0, stem: !0 }, - { id: "hintmask", min: 0, stackClearing: !0 }, - { id: "cntrmask", min: 0, stackClearing: !0 }, - { id: "rmoveto", min: 2, stackClearing: !0 }, - { id: "hmoveto", min: 1, stackClearing: !0 }, - { id: "vstemhm", min: 2, stackClearing: !0, stem: !0 }, - { id: "rcurveline", min: 8, resetStack: !0 }, - { id: "rlinecurve", min: 8, resetStack: !0 }, - { id: "vvcurveto", min: 4, resetStack: !0 }, - { id: "hhcurveto", min: 4, resetStack: !0 }, - null, - { id: "callgsubr", min: 1, undefStack: !0 }, - { id: "vhcurveto", min: 4, resetStack: !0 }, - { id: "hvcurveto", min: 4, resetStack: !0 }, - ], - l = [ - null, - null, - null, - { id: "and", min: 2, stackDelta: -1 }, - { id: "or", min: 2, stackDelta: -1 }, - { id: "not", min: 1, stackDelta: 0 }, - null, - null, - null, - { id: "abs", min: 1, stackDelta: 0 }, - { - id: "add", - min: 2, - stackDelta: -1, - stackFn(e, t) { - e[t - 2] = e[t - 2] + e[t - 1]; - }, - }, - { - id: "sub", - min: 2, - stackDelta: -1, - stackFn(e, t) { - e[t - 2] = e[t - 2] - e[t - 1]; - }, - }, - { - id: "div", - min: 2, - stackDelta: -1, - stackFn(e, t) { - e[t - 2] = e[t - 2] / e[t - 1]; - }, - }, - null, - { - id: "neg", - min: 1, - stackDelta: 0, - stackFn(e, t) { - e[t - 1] = -e[t - 1]; - }, - }, - { id: "eq", min: 2, stackDelta: -1 }, - null, - null, - { id: "drop", min: 1, stackDelta: -1 }, - null, - { id: "put", min: 2, stackDelta: -2 }, - { id: "get", min: 1, stackDelta: 0 }, - { id: "ifelse", min: 4, stackDelta: -3 }, - { id: "random", min: 0, stackDelta: 1 }, - { - id: "mul", - min: 2, - stackDelta: -1, - stackFn(e, t) { - e[t - 2] = e[t - 2] * e[t - 1]; - }, - }, - null, - { id: "sqrt", min: 1, stackDelta: 0 }, - { id: "dup", min: 1, stackDelta: 1 }, - { id: "exch", min: 2, stackDelta: 0 }, - { id: "index", min: 2, stackDelta: 0 }, - { id: "roll", min: 3, stackDelta: -2 }, - null, - null, - null, - { id: "hflex", min: 7, resetStack: !0 }, - { id: "flex", min: 13, resetStack: !0 }, - { id: "hflex1", min: 9, resetStack: !0 }, - { id: "flex1", min: 11, resetStack: !0 }, - ]; - t.CFFParser = class CFFParser { - constructor(e, t, a) { - this.bytes = e.getBytes(); - this.properties = t; - this.seacAnalysisEnabled = !!a; - } - parse() { - const e = this.properties, - t = new CFF(); - this.cff = t; - const a = this.parseHeader(), - r = this.parseIndex(a.endPos), - n = this.parseIndex(r.endPos), - i = this.parseIndex(n.endPos), - s = this.parseIndex(i.endPos), - o = this.parseDict(n.obj.get(0)), - c = this.createDict(CFFTopDict, o, t.strings); - t.header = a.obj; - t.names = this.parseNameIndex(r.obj); - t.strings = this.parseStringIndex(i.obj); - t.topDict = c; - t.globalSubrIndex = s.obj; - this.parsePrivateDict(t.topDict); - t.isCIDFont = c.hasName("ROS"); - const l = c.getByName("CharStrings"), - h = this.parseIndex(l).obj, - u = c.getByName("FontMatrix"); - u && (e.fontMatrix = u); - const d = c.getByName("FontBBox"); - if (d) { - e.ascent = Math.max(d[3], d[1]); - e.descent = Math.min(d[1], d[3]); - e.ascentScaled = !0; - } - let f, g; - if (t.isCIDFont) { - const e = this.parseIndex(c.getByName("FDArray")).obj; - for (let a = 0, r = e.count; a < r; ++a) { - const r = e.get(a), - n = this.createDict( - CFFTopDict, - this.parseDict(r), - t.strings, - ); - this.parsePrivateDict(n); - t.fdArray.push(n); - } - g = null; - f = this.parseCharsets( - c.getByName("charset"), - h.count, - t.strings, - !0, - ); - t.fdSelect = this.parseFDSelect( - c.getByName("FDSelect"), - h.count, - ); - } else { - f = this.parseCharsets( - c.getByName("charset"), - h.count, - t.strings, - !1, - ); - g = this.parseEncoding( - c.getByName("Encoding"), - e, - t.strings, - f.charset, - ); - } - t.charset = f; - t.encoding = g; - const p = this.parseCharStrings({ - charStrings: h, - localSubrIndex: c.privateDict.subrsIndex, - globalSubrIndex: s.obj, - fdSelect: t.fdSelect, - fdArray: t.fdArray, - privateDict: c.privateDict, - }); - t.charStrings = p.charStrings; - t.seacs = p.seacs; - t.widths = p.widths; - return t; - } - parseHeader() { - let e = this.bytes; - const t = e.length; - let a = 0; - for (; a < t && 1 !== e[a]; ) ++a; - if (a >= t) throw new r.FormatError("Invalid CFF header"); - if (0 !== a) { - (0, r.info)("cff data is shifted"); - e = e.subarray(a); - this.bytes = e; - } - const n = e[0], - i = e[1], - s = e[2], - o = e[3]; - return { obj: new CFFHeader(n, i, s, o), endPos: s }; - } - parseDict(e) { - let t = 0; - function parseOperand() { - let a = e[t++]; - if (30 === a) - return (function parseFloatOperand() { - let a = ""; - const r = 15, - n = [ - "0", - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - ".", - "E", - "E-", - null, - "-", - ], - i = e.length; - for (; t < i; ) { - const i = e[t++], - s = i >> 4, - o = 15 & i; - if (s === r) break; - a += n[s]; - if (o === r) break; - a += n[o]; - } - return parseFloat(a); - })(); - if (28 === a) { - a = e[t++]; - a = ((a << 24) | (e[t++] << 16)) >> 16; - return a; - } - if (29 === a) { - a = e[t++]; - a = (a << 8) | e[t++]; - a = (a << 8) | e[t++]; - a = (a << 8) | e[t++]; - return a; - } - if (a >= 32 && a <= 246) return a - 139; - if (a >= 247 && a <= 250) return 256 * (a - 247) + e[t++] + 108; - if (a >= 251 && a <= 254) - return -256 * (a - 251) - e[t++] - 108; - (0, r.warn)( - 'CFFParser_parseDict: "' + a + '" is a reserved command.', - ); - return NaN; - } - let a = []; - const n = []; - t = 0; - const i = e.length; - for (; t < i; ) { - let r = e[t]; - if (r <= 21) { - 12 === r && (r = (r << 8) | e[++t]); - n.push([r, a]); - a = []; - ++t; - } else a.push(parseOperand()); - } - return n; - } - parseIndex(e) { - const t = new CFFIndex(), - a = this.bytes, - r = (a[e++] << 8) | a[e++], - n = []; - let i, - s, - o = e; - if (0 !== r) { - const t = a[e++], - c = e + (r + 1) * t - 1; - for (i = 0, s = r + 1; i < s; ++i) { - let r = 0; - for (let n = 0; n < t; ++n) { - r <<= 8; - r += a[e++]; - } - n.push(c + r); - } - o = n[r]; - } - for (i = 0, s = n.length - 1; i < s; ++i) { - const e = n[i], - r = n[i + 1]; - t.add(a.subarray(e, r)); - } - return { obj: t, endPos: o }; - } - parseNameIndex(e) { - const t = []; - for (let a = 0, n = e.count; a < n; ++a) { - const n = e.get(a); - t.push((0, r.bytesToString)(n)); - } - return t; - } - parseStringIndex(e) { - const t = new CFFStrings(); - for (let a = 0, n = e.count; a < n; ++a) { - const n = e.get(a); - t.add((0, r.bytesToString)(n)); - } - return t; - } - createDict(e, t, a) { - const r = new e(a); - for (const [e, a] of t) r.setByKey(e, a); - return r; - } - parseCharString(e, t, a, n) { - if (!t || e.callDepth > 10) return !1; - let i = e.stackSize; - const s = e.stack; - let o = t.length; - for (let h = 0; h < o; ) { - const u = t[h++]; - let d = null; - if (12 === u) { - const e = t[h++]; - if (0 === e) { - t[h - 2] = 139; - t[h - 1] = 22; - i = 0; - } else d = l[e]; - } else if (28 === u) { - s[i] = ((t[h] << 24) | (t[h + 1] << 16)) >> 16; - h += 2; - i++; - } else if (14 === u) { - if (i >= 4) { - i -= 4; - if (this.seacAnalysisEnabled) { - e.seac = s.slice(i, i + 4); - return !1; - } - } - d = c[u]; - } else if (u >= 32 && u <= 246) { - s[i] = u - 139; - i++; - } else if (u >= 247 && u <= 254) { - s[i] = - u < 251 - ? ((u - 247) << 8) + t[h] + 108 - : -((u - 251) << 8) - t[h] - 108; - h++; - i++; - } else if (255 === u) { - s[i] = - ((t[h] << 24) | - (t[h + 1] << 16) | - (t[h + 2] << 8) | - t[h + 3]) / - 65536; - h += 4; - i++; - } else if (19 === u || 20 === u) { - e.hints += i >> 1; - if (0 === e.hints) { - t.copyWithin(h - 1, h, -1); - h -= 1; - o -= 1; - continue; - } - h += (e.hints + 7) >> 3; - i %= 2; - d = c[u]; - } else { - if (10 === u || 29 === u) { - const t = 10 === u ? a : n; - if (!t) { - d = c[u]; - (0, r.warn)("Missing subrsIndex for " + d.id); - return !1; - } - let o = 32768; - t.count < 1240 ? (o = 107) : t.count < 33900 && (o = 1131); - const l = s[--i] + o; - if (l < 0 || l >= t.count || isNaN(l)) { - d = c[u]; - (0, r.warn)("Out of bounds subrIndex for " + d.id); - return !1; - } - e.stackSize = i; - e.callDepth++; - if (!this.parseCharString(e, t.get(l), a, n)) return !1; - e.callDepth--; - i = e.stackSize; - continue; - } - if (11 === u) { - e.stackSize = i; - return !0; - } - if (0 === u && h === t.length) { - t[h - 1] = 14; - d = c[14]; - } else { - if (9 === u) { - t.copyWithin(h - 1, h, -1); - h -= 1; - o -= 1; - continue; - } - d = c[u]; - } - } - if (d) { - if (d.stem) { - e.hints += i >> 1; - if (3 === u || 23 === u) e.hasVStems = !0; - else if (e.hasVStems && (1 === u || 18 === u)) { - (0, r.warn)("CFF stem hints are in wrong order"); - t[h - 1] = 1 === u ? 3 : 23; - } - } - if ("min" in d && !e.undefStack && i < d.min) { - (0, r.warn)( - "Not enough parameters for " + - d.id + - "; actual: " + - i + - ", expected: " + - d.min, - ); - if (0 === i) { - t[h - 1] = 14; - return !0; - } - return !1; - } - if (e.firstStackClearing && d.stackClearing) { - e.firstStackClearing = !1; - i -= d.min; - i >= 2 && d.stem - ? (i %= 2) - : i > 1 && - (0, r.warn)( - "Found too many parameters for stack-clearing command", - ); - i > 0 && (e.width = s[i - 1]); - } - if ("stackDelta" in d) { - "stackFn" in d && d.stackFn(s, i); - i += d.stackDelta; - } else if (d.stackClearing) i = 0; - else if (d.resetStack) { - i = 0; - e.undefStack = !1; - } else if (d.undefStack) { - i = 0; - e.undefStack = !0; - e.firstStackClearing = !1; - } - } - } - o < t.length && t.fill(14, o); - e.stackSize = i; - return !0; - } - parseCharStrings({ - charStrings: e, - localSubrIndex: t, - globalSubrIndex: a, - fdSelect: n, - fdArray: i, - privateDict: s, - }) { - const o = [], - c = [], - l = e.count; - for (let h = 0; h < l; h++) { - const l = e.get(h), - u = { - callDepth: 0, - stackSize: 0, - stack: [], - undefStack: !0, - hints: 0, - firstStackClearing: !0, - seac: null, - width: null, - hasVStems: !1, - }; - let d = !0, - f = null, - g = s; - if (n && i.length) { - const e = n.getFDIndex(h); - if (-1 === e) { - (0, r.warn)("Glyph index is not in fd select."); - d = !1; - } - if (e >= i.length) { - (0, r.warn)("Invalid fd index for glyph index."); - d = !1; - } - if (d) { - g = i[e].privateDict; - f = g.subrsIndex; - } - } else t && (f = t); - d && (d = this.parseCharString(u, l, f, a)); - if (null !== u.width) { - const e = g.getByName("nominalWidthX"); - c[h] = e + u.width; - } else { - const e = g.getByName("defaultWidthX"); - c[h] = e; - } - null !== u.seac && (o[h] = u.seac); - d || e.set(h, new Uint8Array([14])); - } - return { charStrings: e, seacs: o, widths: c }; - } - emptyPrivateDictionary(e) { - const t = this.createDict(CFFPrivateDict, [], e.strings); - e.setByKey(18, [0, 0]); - e.privateDict = t; - } - parsePrivateDict(e) { - if (!e.hasName("Private")) { - this.emptyPrivateDictionary(e); - return; - } - const t = e.getByName("Private"); - if (!Array.isArray(t) || 2 !== t.length) { - e.removeByName("Private"); - return; - } - const a = t[0], - r = t[1]; - if (0 === a || r >= this.bytes.length) { - this.emptyPrivateDictionary(e); - return; - } - const n = r + a, - i = this.bytes.subarray(r, n), - s = this.parseDict(i), - o = this.createDict(CFFPrivateDict, s, e.strings); - e.privateDict = o; - 0 === o.getByName("ExpansionFactor") && - o.setByName("ExpansionFactor", 0.06); - if (!o.getByName("Subrs")) return; - const c = o.getByName("Subrs"), - l = r + c; - if (0 === c || l >= this.bytes.length) { - this.emptyPrivateDictionary(e); - return; - } - const h = this.parseIndex(l); - o.subrsIndex = h.obj; - } - parseCharsets(e, t, a, i) { - if (0 === e) - return new CFFCharset(!0, d.ISO_ADOBE, n.ISOAdobeCharset); - if (1 === e) return new CFFCharset(!0, d.EXPERT, n.ExpertCharset); - if (2 === e) - return new CFFCharset( - !0, - d.EXPERT_SUBSET, - n.ExpertSubsetCharset, - ); - const s = this.bytes, - o = e, - c = s[e++], - l = [i ? 0 : ".notdef"]; - let h, u, f; - t -= 1; - switch (c) { - case 0: - for (f = 0; f < t; f++) { - h = (s[e++] << 8) | s[e++]; - l.push(i ? h : a.get(h)); - } - break; - case 1: - for (; l.length <= t; ) { - h = (s[e++] << 8) | s[e++]; - u = s[e++]; - for (f = 0; f <= u; f++) l.push(i ? h++ : a.get(h++)); - } - break; - case 2: - for (; l.length <= t; ) { - h = (s[e++] << 8) | s[e++]; - u = (s[e++] << 8) | s[e++]; - for (f = 0; f <= u; f++) l.push(i ? h++ : a.get(h++)); - } - break; - default: - throw new r.FormatError("Unknown charset format"); - } - const g = e, - p = s.subarray(o, g); - return new CFFCharset(!1, c, l, p); - } - parseEncoding(e, t, a, n) { - const s = Object.create(null), - o = this.bytes; - let c, - l, - h, - u = !1, - d = null; - if (0 === e || 1 === e) { - u = !0; - c = e; - const t = e ? i.ExpertEncoding : i.StandardEncoding; - for (l = 0, h = n.length; l < h; l++) { - const e = t.indexOf(n[l]); - -1 !== e && (s[e] = l); - } - } else { - const t = e; - c = o[e++]; - switch (127 & c) { - case 0: - const t = o[e++]; - for (l = 1; l <= t; l++) s[o[e++]] = l; - break; - case 1: - const a = o[e++]; - let n = 1; - for (l = 0; l < a; l++) { - const t = o[e++], - a = o[e++]; - for (let e = t; e <= t + a; e++) s[e] = n++; - } - break; - default: - throw new r.FormatError( - `Unknown encoding format: ${c} in CFF`, - ); - } - const i = e; - if (128 & c) { - o[t] &= 127; - !(function readSupplement() { - const t = o[e++]; - for (l = 0; l < t; l++) { - const t = o[e++], - r = (o[e++] << 8) + (255 & o[e++]); - s[t] = n.indexOf(a.get(r)); - } - })(); - } - d = o.subarray(t, i); - } - c &= 127; - return new CFFEncoding(u, c, s, d); - } - parseFDSelect(e, t) { - const a = this.bytes, - n = a[e++], - i = []; - let s; - switch (n) { - case 0: - for (s = 0; s < t; ++s) { - const t = a[e++]; - i.push(t); - } - break; - case 3: - const o = (a[e++] << 8) | a[e++]; - for (s = 0; s < o; ++s) { - let t = (a[e++] << 8) | a[e++]; - if (0 === s && 0 !== t) { - (0, r.warn)( - "parseFDSelect: The first range must have a first GID of 0 -- trying to recover.", - ); - t = 0; - } - const n = a[e++], - o = (a[e] << 8) | a[e + 1]; - for (let e = t; e < o; ++e) i.push(n); - } - e += 2; - break; - default: - throw new r.FormatError( - `parseFDSelect: Unknown format "${n}".`, - ); - } - if (i.length !== t) - throw new r.FormatError("parseFDSelect: Invalid font data."); - return new CFFFDSelect(n, i); - } - }; - class CFF { - constructor() { - this.header = null; - this.names = []; - this.topDict = null; - this.strings = new CFFStrings(); - this.globalSubrIndex = null; - this.encoding = null; - this.charset = null; - this.charStrings = null; - this.fdArray = []; - this.fdSelect = null; - this.isCIDFont = !1; - } - duplicateFirstGlyph() { - if (this.charStrings.count >= 65535) { - (0, r.warn)( - "Not enough space in charstrings to duplicate first glyph.", - ); - return; - } - const e = this.charStrings.get(0); - this.charStrings.add(e); - this.isCIDFont && - this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0]); - } - hasGlyphId(e) { - if (e < 0 || e >= this.charStrings.count) return !1; - return this.charStrings.get(e).length > 0; - } - } - t.CFF = CFF; - class CFFHeader { - constructor(e, t, a, r) { - this.major = e; - this.minor = t; - this.hdrSize = a; - this.offSize = r; - } - } - t.CFFHeader = CFFHeader; - class CFFStrings { - constructor() { - this.strings = []; - } - get(e) { - return e >= 0 && e <= 390 - ? s[e] - : e - o <= this.strings.length - ? this.strings[e - o] - : s[0]; - } - getSID(e) { - let t = s.indexOf(e); - if (-1 !== t) return t; - t = this.strings.indexOf(e); - return -1 !== t ? t + o : -1; - } - add(e) { - this.strings.push(e); - } - get count() { - return this.strings.length; - } - } - t.CFFStrings = CFFStrings; - class CFFIndex { - constructor() { - this.objects = []; - this.length = 0; - } - add(e) { - this.length += e.length; - this.objects.push(e); - } - set(e, t) { - this.length += t.length - this.objects[e].length; - this.objects[e] = t; - } - get(e) { - return this.objects[e]; - } - get count() { - return this.objects.length; - } - } - t.CFFIndex = CFFIndex; - class CFFDict { - constructor(e, t) { - this.keyToNameMap = e.keyToNameMap; - this.nameToKeyMap = e.nameToKeyMap; - this.defaults = e.defaults; - this.types = e.types; - this.opcodes = e.opcodes; - this.order = e.order; - this.strings = t; - this.values = Object.create(null); - } - setByKey(e, t) { - if (!(e in this.keyToNameMap)) return !1; - if (0 === t.length) return !0; - for (const a of t) - if (isNaN(a)) { - (0, r.warn)(`Invalid CFFDict value: "${t}" for key "${e}".`); - return !0; - } - const a = this.types[e]; - ("num" !== a && "sid" !== a && "offset" !== a) || (t = t[0]); - this.values[e] = t; - return !0; - } - setByName(e, t) { - if (!(e in this.nameToKeyMap)) - throw new r.FormatError(`Invalid dictionary name "${e}"`); - this.values[this.nameToKeyMap[e]] = t; - } - hasName(e) { - return this.nameToKeyMap[e] in this.values; - } - getByName(e) { - if (!(e in this.nameToKeyMap)) - throw new r.FormatError(`Invalid dictionary name ${e}"`); - const t = this.nameToKeyMap[e]; - return t in this.values ? this.values[t] : this.defaults[t]; - } - removeByName(e) { - delete this.values[this.nameToKeyMap[e]]; - } - static createTables(e) { - const t = { - keyToNameMap: {}, - nameToKeyMap: {}, - defaults: {}, - types: {}, - opcodes: {}, - order: [], - }; - for (const a of e) { - const e = Array.isArray(a[0]) ? (a[0][0] << 8) + a[0][1] : a[0]; - t.keyToNameMap[e] = a[1]; - t.nameToKeyMap[a[1]] = e; - t.types[e] = a[2]; - t.defaults[e] = a[3]; - t.opcodes[e] = Array.isArray(a[0]) ? a[0] : [a[0]]; - t.order.push(e); - } - return t; - } - } - const h = [ - [[12, 30], "ROS", ["sid", "sid", "num"], null], - [[12, 20], "SyntheticBase", "num", null], - [0, "version", "sid", null], - [1, "Notice", "sid", null], - [[12, 0], "Copyright", "sid", null], - [2, "FullName", "sid", null], - [3, "FamilyName", "sid", null], - [4, "Weight", "sid", null], - [[12, 1], "isFixedPitch", "num", 0], - [[12, 2], "ItalicAngle", "num", 0], - [[12, 3], "UnderlinePosition", "num", -100], - [[12, 4], "UnderlineThickness", "num", 50], - [[12, 5], "PaintType", "num", 0], - [[12, 6], "CharstringType", "num", 2], - [ - [12, 7], - "FontMatrix", - ["num", "num", "num", "num", "num", "num"], - [0.001, 0, 0, 0.001, 0, 0], - ], - [13, "UniqueID", "num", null], - [5, "FontBBox", ["num", "num", "num", "num"], [0, 0, 0, 0]], - [[12, 8], "StrokeWidth", "num", 0], - [14, "XUID", "array", null], - [15, "charset", "offset", 0], - [16, "Encoding", "offset", 0], - [17, "CharStrings", "offset", 0], - [18, "Private", ["offset", "offset"], null], - [[12, 21], "PostScript", "sid", null], - [[12, 22], "BaseFontName", "sid", null], - [[12, 23], "BaseFontBlend", "delta", null], - [[12, 31], "CIDFontVersion", "num", 0], - [[12, 32], "CIDFontRevision", "num", 0], - [[12, 33], "CIDFontType", "num", 0], - [[12, 34], "CIDCount", "num", 8720], - [[12, 35], "UIDBase", "num", null], - [[12, 37], "FDSelect", "offset", null], - [[12, 36], "FDArray", "offset", null], - [[12, 38], "FontName", "sid", null], - ]; - class CFFTopDict extends CFFDict { - static get tables() { - return (0, r.shadow)(this, "tables", this.createTables(h)); - } - constructor(e) { - super(CFFTopDict.tables, e); - this.privateDict = null; - } - } - t.CFFTopDict = CFFTopDict; - const u = [ - [6, "BlueValues", "delta", null], - [7, "OtherBlues", "delta", null], - [8, "FamilyBlues", "delta", null], - [9, "FamilyOtherBlues", "delta", null], - [[12, 9], "BlueScale", "num", 0.039625], - [[12, 10], "BlueShift", "num", 7], - [[12, 11], "BlueFuzz", "num", 1], - [10, "StdHW", "num", null], - [11, "StdVW", "num", null], - [[12, 12], "StemSnapH", "delta", null], - [[12, 13], "StemSnapV", "delta", null], - [[12, 14], "ForceBold", "num", 0], - [[12, 17], "LanguageGroup", "num", 0], - [[12, 18], "ExpansionFactor", "num", 0.06], - [[12, 19], "initialRandomSeed", "num", 0], - [20, "defaultWidthX", "num", 0], - [21, "nominalWidthX", "num", 0], - [19, "Subrs", "offset", null], - ]; - class CFFPrivateDict extends CFFDict { - static get tables() { - return (0, r.shadow)(this, "tables", this.createTables(u)); - } - constructor(e) { - super(CFFPrivateDict.tables, e); - this.subrsIndex = null; - } - } - t.CFFPrivateDict = CFFPrivateDict; - const d = { ISO_ADOBE: 0, EXPERT: 1, EXPERT_SUBSET: 2 }; - class CFFCharset { - constructor(e, t, a, r) { - this.predefined = e; - this.format = t; - this.charset = a; - this.raw = r; - } - } - t.CFFCharset = CFFCharset; - class CFFEncoding { - constructor(e, t, a, r) { - this.predefined = e; - this.format = t; - this.encoding = a; - this.raw = r; - } - } - class CFFFDSelect { - constructor(e, t) { - this.format = e; - this.fdSelect = t; - } - getFDIndex(e) { - return e < 0 || e >= this.fdSelect.length ? -1 : this.fdSelect[e]; - } - } - t.CFFFDSelect = CFFFDSelect; - class CFFOffsetTracker { - constructor() { - this.offsets = Object.create(null); - } - isTracking(e) { - return e in this.offsets; - } - track(e, t) { - if (e in this.offsets) - throw new r.FormatError(`Already tracking location of ${e}`); - this.offsets[e] = t; - } - offset(e) { - for (const t in this.offsets) this.offsets[t] += e; - } - setEntryLocation(e, t, a) { - if (!(e in this.offsets)) - throw new r.FormatError(`Not tracking location of ${e}`); - const n = a.data, - i = this.offsets[e]; - for (let e = 0, a = t.length; e < a; ++e) { - const a = 5 * e + i, - s = a + 1, - o = a + 2, - c = a + 3, - l = a + 4; - if ( - 29 !== n[a] || - 0 !== n[s] || - 0 !== n[o] || - 0 !== n[c] || - 0 !== n[l] - ) - throw new r.FormatError( - "writing to an offset that is not empty", - ); - const h = t[e]; - n[a] = 29; - n[s] = (h >> 24) & 255; - n[o] = (h >> 16) & 255; - n[c] = (h >> 8) & 255; - n[l] = 255 & h; - } - } - } - class CFFCompiler { - constructor(e) { - this.cff = e; - } - compile() { - const e = this.cff, - t = { - data: [], - length: 0, - add(e) { - try { - this.data.push(...e); - } catch { - this.data = this.data.concat(e); - } - this.length = this.data.length; - }, - }, - a = this.compileHeader(e.header); - t.add(a); - const n = this.compileNameIndex(e.names); - t.add(n); - if (e.isCIDFont && e.topDict.hasName("FontMatrix")) { - const t = e.topDict.getByName("FontMatrix"); - e.topDict.removeByName("FontMatrix"); - for (const a of e.fdArray) { - let e = t.slice(0); - a.hasName("FontMatrix") && - (e = r.Util.transform(e, a.getByName("FontMatrix"))); - a.setByName("FontMatrix", e); - } - } - const i = e.topDict.getByName("XUID"); - i?.length > 16 && e.topDict.removeByName("XUID"); - e.topDict.setByName("charset", 0); - let s = this.compileTopDicts([e.topDict], t.length, e.isCIDFont); - t.add(s.output); - const o = s.trackers[0], - c = this.compileStringIndex(e.strings.strings); - t.add(c); - const l = this.compileIndex(e.globalSubrIndex); - t.add(l); - if (e.encoding && e.topDict.hasName("Encoding")) - if (e.encoding.predefined) - o.setEntryLocation("Encoding", [e.encoding.format], t); - else { - const a = this.compileEncoding(e.encoding); - o.setEntryLocation("Encoding", [t.length], t); - t.add(a); - } - const h = this.compileCharset( - e.charset, - e.charStrings.count, - e.strings, - e.isCIDFont, - ); - o.setEntryLocation("charset", [t.length], t); - t.add(h); - const u = this.compileCharStrings(e.charStrings); - o.setEntryLocation("CharStrings", [t.length], t); - t.add(u); - if (e.isCIDFont) { - o.setEntryLocation("FDSelect", [t.length], t); - const a = this.compileFDSelect(e.fdSelect); - t.add(a); - s = this.compileTopDicts(e.fdArray, t.length, !0); - o.setEntryLocation("FDArray", [t.length], t); - t.add(s.output); - const r = s.trackers; - this.compilePrivateDicts(e.fdArray, r, t); - } - this.compilePrivateDicts([e.topDict], [o], t); - t.add([0]); - return t.data; - } - encodeNumber(e) { - return Number.isInteger(e) - ? this.encodeInteger(e) - : this.encodeFloat(e); - } - static get EncodeFloatRegExp() { - return (0, r.shadow)( - this, - "EncodeFloatRegExp", - /\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/, - ); - } - encodeFloat(e) { - let t = e.toString(); - const a = CFFCompiler.EncodeFloatRegExp.exec(t); - if (a) { - const r = parseFloat("1e" + ((a[2] ? +a[2] : 0) + a[1].length)); - t = (Math.round(e * r) / r).toString(); - } - let r, - n, - i = ""; - for (r = 0, n = t.length; r < n; ++r) { - const e = t[r]; - i += - "e" === e - ? "-" === t[++r] - ? "c" - : "b" - : "." === e - ? "a" - : "-" === e - ? "e" - : e; - } - i += 1 & i.length ? "f" : "ff"; - const s = [30]; - for (r = 0, n = i.length; r < n; r += 2) - s.push(parseInt(i.substring(r, r + 2), 16)); - return s; - } - encodeInteger(e) { - let t; - t = - e >= -107 && e <= 107 - ? [e + 139] - : e >= 108 && e <= 1131 - ? [247 + ((e -= 108) >> 8), 255 & e] - : e >= -1131 && e <= -108 - ? [251 + ((e = -e - 108) >> 8), 255 & e] - : e >= -32768 && e <= 32767 - ? [28, (e >> 8) & 255, 255 & e] - : [ - 29, - (e >> 24) & 255, - (e >> 16) & 255, - (e >> 8) & 255, - 255 & e, - ]; - return t; - } - compileHeader(e) { - return [e.major, e.minor, 4, e.offSize]; - } - compileNameIndex(e) { - const t = new CFFIndex(); - for (const a of e) { - const e = Math.min(a.length, 127); - let n = new Array(e); - for (let t = 0; t < e; t++) { - let e = a[t]; - (e < "!" || - e > "~" || - "[" === e || - "]" === e || - "(" === e || - ")" === e || - "{" === e || - "}" === e || - "<" === e || - ">" === e || - "/" === e || - "%" === e) && - (e = "_"); - n[t] = e; - } - n = n.join(""); - "" === n && (n = "Bad_Font_Name"); - t.add((0, r.stringToBytes)(n)); - } - return this.compileIndex(t); - } - compileTopDicts(e, t, a) { - const r = []; - let n = new CFFIndex(); - for (const i of e) { - if (a) { - i.removeByName("CIDFontVersion"); - i.removeByName("CIDFontRevision"); - i.removeByName("CIDFontType"); - i.removeByName("CIDCount"); - i.removeByName("UIDBase"); - } - const e = new CFFOffsetTracker(), - s = this.compileDict(i, e); - r.push(e); - n.add(s); - e.offset(t); - } - n = this.compileIndex(n, r); - return { trackers: r, output: n }; - } - compilePrivateDicts(e, t, a) { - for (let n = 0, i = e.length; n < i; ++n) { - const i = e[n], - s = i.privateDict; - if (!s || !i.hasName("Private")) - throw new r.FormatError( - "There must be a private dictionary.", - ); - const o = new CFFOffsetTracker(), - c = this.compileDict(s, o); - let l = a.length; - o.offset(l); - c.length || (l = 0); - t[n].setEntryLocation("Private", [c.length, l], a); - a.add(c); - if (s.subrsIndex && s.hasName("Subrs")) { - const e = this.compileIndex(s.subrsIndex); - o.setEntryLocation("Subrs", [c.length], a); - a.add(e); - } - } - } - compileDict(e, t) { - const a = []; - for (const n of e.order) { - if (!(n in e.values)) continue; - let i = e.values[n], - s = e.types[n]; - Array.isArray(s) || (s = [s]); - Array.isArray(i) || (i = [i]); - if (0 !== i.length) { - for (let o = 0, c = s.length; o < c; ++o) { - const c = s[o], - l = i[o]; - switch (c) { - case "num": - case "sid": - a.push(...this.encodeNumber(l)); - break; - case "offset": - const s = e.keyToNameMap[n]; - t.isTracking(s) || t.track(s, a.length); - a.push(29, 0, 0, 0, 0); - break; - case "array": - case "delta": - a.push(...this.encodeNumber(l)); - for (let e = 1, t = i.length; e < t; ++e) - a.push(...this.encodeNumber(i[e])); - break; - default: - throw new r.FormatError(`Unknown data type of ${c}`); - } - } - a.push(...e.opcodes[n]); - } - } - return a; - } - compileStringIndex(e) { - const t = new CFFIndex(); - for (const a of e) t.add((0, r.stringToBytes)(a)); - return this.compileIndex(t); - } - compileCharStrings(e) { - const t = new CFFIndex(); - for (let a = 0; a < e.count; a++) { - const r = e.get(a); - 0 !== r.length ? t.add(r) : t.add(new Uint8Array([139, 14])); - } - return this.compileIndex(t); - } - compileCharset(e, t, a, n) { - let i; - const s = t - 1; - if (n) i = new Uint8Array([2, 0, 0, (s >> 8) & 255, 255 & s]); - else { - i = new Uint8Array(1 + 2 * s); - i[0] = 0; - let t = 0; - const n = e.charset.length; - let o = !1; - for (let s = 1; s < i.length; s += 2) { - let c = 0; - if (t < n) { - const n = e.charset[t++]; - c = a.getSID(n); - if (-1 === c) { - c = 0; - if (!o) { - o = !0; - (0, r.warn)(`Couldn't find ${n} in CFF strings`); - } - } - } - i[s] = (c >> 8) & 255; - i[s + 1] = 255 & c; - } - } - return this.compileTypedArray(i); - } - compileEncoding(e) { - return this.compileTypedArray(e.raw); - } - compileFDSelect(e) { - const t = e.format; - let a, r; - switch (t) { - case 0: - a = new Uint8Array(1 + e.fdSelect.length); - a[0] = t; - for (r = 0; r < e.fdSelect.length; r++) - a[r + 1] = e.fdSelect[r]; - break; - case 3: - const n = 0; - let i = e.fdSelect[0]; - const s = [t, 0, 0, (n >> 8) & 255, 255 & n, i]; - for (r = 1; r < e.fdSelect.length; r++) { - const t = e.fdSelect[r]; - if (t !== i) { - s.push((r >> 8) & 255, 255 & r, t); - i = t; - } - } - const o = (s.length - 3) / 3; - s[1] = (o >> 8) & 255; - s[2] = 255 & o; - s.push((r >> 8) & 255, 255 & r); - a = new Uint8Array(s); - } - return this.compileTypedArray(a); - } - compileTypedArray(e) { - return Array.from(e); - } - compileIndex(e, t = []) { - const a = e.objects, - r = a.length; - if (0 === r) return [0, 0]; - const n = [(r >> 8) & 255, 255 & r]; - let i, - s, - o = 1; - for (i = 0; i < r; ++i) o += a[i].length; - s = o < 256 ? 1 : o < 65536 ? 2 : o < 16777216 ? 3 : 4; - n.push(s); - let c = 1; - for (i = 0; i < r + 1; i++) { - 1 === s - ? n.push(255 & c) - : 2 === s - ? n.push((c >> 8) & 255, 255 & c) - : 3 === s - ? n.push((c >> 16) & 255, (c >> 8) & 255, 255 & c) - : n.push( - (c >>> 24) & 255, - (c >> 16) & 255, - (c >> 8) & 255, - 255 & c, - ); - a[i] && (c += a[i].length); - } - for (i = 0; i < r; i++) { - t[i] && t[i].offset(n.length); - n.push(...a[i]); - } - return n; - } - } - t.CFFCompiler = CFFCompiler; - }, - (e, t) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.ISOAdobeCharset = t.ExpertSubsetCharset = t.ExpertCharset = void 0; - t.ISOAdobeCharset = [ - ".notdef", - "space", - "exclam", - "quotedbl", - "numbersign", - "dollar", - "percent", - "ampersand", - "quoteright", - "parenleft", - "parenright", - "asterisk", - "plus", - "comma", - "hyphen", - "period", - "slash", - "zero", - "one", - "two", - "three", - "four", - "five", - "six", - "seven", - "eight", - "nine", - "colon", - "semicolon", - "less", - "equal", - "greater", - "question", - "at", - "A", - "B", - "C", - "D", - "E", - "F", - "G", - "H", - "I", - "J", - "K", - "L", - "M", - "N", - "O", - "P", - "Q", - "R", - "S", - "T", - "U", - "V", - "W", - "X", - "Y", - "Z", - "bracketleft", - "backslash", - "bracketright", - "asciicircum", - "underscore", - "quoteleft", - "a", - "b", - "c", - "d", - "e", - "f", - "g", - "h", - "i", - "j", - "k", - "l", - "m", - "n", - "o", - "p", - "q", - "r", - "s", - "t", - "u", - "v", - "w", - "x", - "y", - "z", - "braceleft", - "bar", - "braceright", - "asciitilde", - "exclamdown", - "cent", - "sterling", - "fraction", - "yen", - "florin", - "section", - "currency", - "quotesingle", - "quotedblleft", - "guillemotleft", - "guilsinglleft", - "guilsinglright", - "fi", - "fl", - "endash", - "dagger", - "daggerdbl", - "periodcentered", - "paragraph", - "bullet", - "quotesinglbase", - "quotedblbase", - "quotedblright", - "guillemotright", - "ellipsis", - "perthousand", - "questiondown", - "grave", - "acute", - "circumflex", - "tilde", - "macron", - "breve", - "dotaccent", - "dieresis", - "ring", - "cedilla", - "hungarumlaut", - "ogonek", - "caron", - "emdash", - "AE", - "ordfeminine", - "Lslash", - "Oslash", - "OE", - "ordmasculine", - "ae", - "dotlessi", - "lslash", - "oslash", - "oe", - "germandbls", - "onesuperior", - "logicalnot", - "mu", - "trademark", - "Eth", - "onehalf", - "plusminus", - "Thorn", - "onequarter", - "divide", - "brokenbar", - "degree", - "thorn", - "threequarters", - "twosuperior", - "registered", - "minus", - "eth", - "multiply", - "threesuperior", - "copyright", - "Aacute", - "Acircumflex", - "Adieresis", - "Agrave", - "Aring", - "Atilde", - "Ccedilla", - "Eacute", - "Ecircumflex", - "Edieresis", - "Egrave", - "Iacute", - "Icircumflex", - "Idieresis", - "Igrave", - "Ntilde", - "Oacute", - "Ocircumflex", - "Odieresis", - "Ograve", - "Otilde", - "Scaron", - "Uacute", - "Ucircumflex", - "Udieresis", - "Ugrave", - "Yacute", - "Ydieresis", - "Zcaron", - "aacute", - "acircumflex", - "adieresis", - "agrave", - "aring", - "atilde", - "ccedilla", - "eacute", - "ecircumflex", - "edieresis", - "egrave", - "iacute", - "icircumflex", - "idieresis", - "igrave", - "ntilde", - "oacute", - "ocircumflex", - "odieresis", - "ograve", - "otilde", - "scaron", - "uacute", - "ucircumflex", - "udieresis", - "ugrave", - "yacute", - "ydieresis", - "zcaron", - ]; - t.ExpertCharset = [ - ".notdef", - "space", - "exclamsmall", - "Hungarumlautsmall", - "dollaroldstyle", - "dollarsuperior", - "ampersandsmall", - "Acutesmall", - "parenleftsuperior", - "parenrightsuperior", - "twodotenleader", - "onedotenleader", - "comma", - "hyphen", - "period", - "fraction", - "zerooldstyle", - "oneoldstyle", - "twooldstyle", - "threeoldstyle", - "fouroldstyle", - "fiveoldstyle", - "sixoldstyle", - "sevenoldstyle", - "eightoldstyle", - "nineoldstyle", - "colon", - "semicolon", - "commasuperior", - "threequartersemdash", - "periodsuperior", - "questionsmall", - "asuperior", - "bsuperior", - "centsuperior", - "dsuperior", - "esuperior", - "isuperior", - "lsuperior", - "msuperior", - "nsuperior", - "osuperior", - "rsuperior", - "ssuperior", - "tsuperior", - "ff", - "fi", - "fl", - "ffi", - "ffl", - "parenleftinferior", - "parenrightinferior", - "Circumflexsmall", - "hyphensuperior", - "Gravesmall", - "Asmall", - "Bsmall", - "Csmall", - "Dsmall", - "Esmall", - "Fsmall", - "Gsmall", - "Hsmall", - "Ismall", - "Jsmall", - "Ksmall", - "Lsmall", - "Msmall", - "Nsmall", - "Osmall", - "Psmall", - "Qsmall", - "Rsmall", - "Ssmall", - "Tsmall", - "Usmall", - "Vsmall", - "Wsmall", - "Xsmall", - "Ysmall", - "Zsmall", - "colonmonetary", - "onefitted", - "rupiah", - "Tildesmall", - "exclamdownsmall", - "centoldstyle", - "Lslashsmall", - "Scaronsmall", - "Zcaronsmall", - "Dieresissmall", - "Brevesmall", - "Caronsmall", - "Dotaccentsmall", - "Macronsmall", - "figuredash", - "hypheninferior", - "Ogoneksmall", - "Ringsmall", - "Cedillasmall", - "onequarter", - "onehalf", - "threequarters", - "questiondownsmall", - "oneeighth", - "threeeighths", - "fiveeighths", - "seveneighths", - "onethird", - "twothirds", - "zerosuperior", - "onesuperior", - "twosuperior", - "threesuperior", - "foursuperior", - "fivesuperior", - "sixsuperior", - "sevensuperior", - "eightsuperior", - "ninesuperior", - "zeroinferior", - "oneinferior", - "twoinferior", - "threeinferior", - "fourinferior", - "fiveinferior", - "sixinferior", - "seveninferior", - "eightinferior", - "nineinferior", - "centinferior", - "dollarinferior", - "periodinferior", - "commainferior", - "Agravesmall", - "Aacutesmall", - "Acircumflexsmall", - "Atildesmall", - "Adieresissmall", - "Aringsmall", - "AEsmall", - "Ccedillasmall", - "Egravesmall", - "Eacutesmall", - "Ecircumflexsmall", - "Edieresissmall", - "Igravesmall", - "Iacutesmall", - "Icircumflexsmall", - "Idieresissmall", - "Ethsmall", - "Ntildesmall", - "Ogravesmall", - "Oacutesmall", - "Ocircumflexsmall", - "Otildesmall", - "Odieresissmall", - "OEsmall", - "Oslashsmall", - "Ugravesmall", - "Uacutesmall", - "Ucircumflexsmall", - "Udieresissmall", - "Yacutesmall", - "Thornsmall", - "Ydieresissmall", - ]; - t.ExpertSubsetCharset = [ - ".notdef", - "space", - "dollaroldstyle", - "dollarsuperior", - "parenleftsuperior", - "parenrightsuperior", - "twodotenleader", - "onedotenleader", - "comma", - "hyphen", - "period", - "fraction", - "zerooldstyle", - "oneoldstyle", - "twooldstyle", - "threeoldstyle", - "fouroldstyle", - "fiveoldstyle", - "sixoldstyle", - "sevenoldstyle", - "eightoldstyle", - "nineoldstyle", - "colon", - "semicolon", - "commasuperior", - "threequartersemdash", - "periodsuperior", - "asuperior", - "bsuperior", - "centsuperior", - "dsuperior", - "esuperior", - "isuperior", - "lsuperior", - "msuperior", - "nsuperior", - "osuperior", - "rsuperior", - "ssuperior", - "tsuperior", - "ff", - "fi", - "fl", - "ffi", - "ffl", - "parenleftinferior", - "parenrightinferior", - "hyphensuperior", - "colonmonetary", - "onefitted", - "rupiah", - "centoldstyle", - "figuredash", - "hypheninferior", - "onequarter", - "onehalf", - "threequarters", - "oneeighth", - "threeeighths", - "fiveeighths", - "seveneighths", - "onethird", - "twothirds", - "zerosuperior", - "onesuperior", - "twosuperior", - "threesuperior", - "foursuperior", - "fivesuperior", - "sixsuperior", - "sevensuperior", - "eightsuperior", - "ninesuperior", - "zeroinferior", - "oneinferior", - "twoinferior", - "threeinferior", - "fourinferior", - "fiveinferior", - "sixinferior", - "seveninferior", - "eightinferior", - "nineinferior", - "centinferior", - "dollarinferior", - "periodinferior", - "commainferior", - ]; - }, - (e, t) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.ZapfDingbatsEncoding = - t.WinAnsiEncoding = - t.SymbolSetEncoding = - t.StandardEncoding = - t.MacRomanEncoding = - t.ExpertEncoding = - void 0; - t.getEncoding = function getEncoding(e) { - switch (e) { - case "WinAnsiEncoding": - return s; - case "StandardEncoding": - return i; - case "MacRomanEncoding": - return n; - case "SymbolSetEncoding": - return o; - case "ZapfDingbatsEncoding": - return c; - case "ExpertEncoding": - return a; - case "MacExpertEncoding": - return r; - default: - return null; - } - }; - const a = [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "space", - "exclamsmall", - "Hungarumlautsmall", - "", - "dollaroldstyle", - "dollarsuperior", - "ampersandsmall", - "Acutesmall", - "parenleftsuperior", - "parenrightsuperior", - "twodotenleader", - "onedotenleader", - "comma", - "hyphen", - "period", - "fraction", - "zerooldstyle", - "oneoldstyle", - "twooldstyle", - "threeoldstyle", - "fouroldstyle", - "fiveoldstyle", - "sixoldstyle", - "sevenoldstyle", - "eightoldstyle", - "nineoldstyle", - "colon", - "semicolon", - "commasuperior", - "threequartersemdash", - "periodsuperior", - "questionsmall", - "", - "asuperior", - "bsuperior", - "centsuperior", - "dsuperior", - "esuperior", - "", - "", - "", - "isuperior", - "", - "", - "lsuperior", - "msuperior", - "nsuperior", - "osuperior", - "", - "", - "rsuperior", - "ssuperior", - "tsuperior", - "", - "ff", - "fi", - "fl", - "ffi", - "ffl", - "parenleftinferior", - "", - "parenrightinferior", - "Circumflexsmall", - "hyphensuperior", - "Gravesmall", - "Asmall", - "Bsmall", - "Csmall", - "Dsmall", - "Esmall", - "Fsmall", - "Gsmall", - "Hsmall", - "Ismall", - "Jsmall", - "Ksmall", - "Lsmall", - "Msmall", - "Nsmall", - "Osmall", - "Psmall", - "Qsmall", - "Rsmall", - "Ssmall", - "Tsmall", - "Usmall", - "Vsmall", - "Wsmall", - "Xsmall", - "Ysmall", - "Zsmall", - "colonmonetary", - "onefitted", - "rupiah", - "Tildesmall", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "exclamdownsmall", - "centoldstyle", - "Lslashsmall", - "", - "", - "Scaronsmall", - "Zcaronsmall", - "Dieresissmall", - "Brevesmall", - "Caronsmall", - "", - "Dotaccentsmall", - "", - "", - "Macronsmall", - "", - "", - "figuredash", - "hypheninferior", - "", - "", - "Ogoneksmall", - "Ringsmall", - "Cedillasmall", - "", - "", - "", - "onequarter", - "onehalf", - "threequarters", - "questiondownsmall", - "oneeighth", - "threeeighths", - "fiveeighths", - "seveneighths", - "onethird", - "twothirds", - "", - "", - "zerosuperior", - "onesuperior", - "twosuperior", - "threesuperior", - "foursuperior", - "fivesuperior", - "sixsuperior", - "sevensuperior", - "eightsuperior", - "ninesuperior", - "zeroinferior", - "oneinferior", - "twoinferior", - "threeinferior", - "fourinferior", - "fiveinferior", - "sixinferior", - "seveninferior", - "eightinferior", - "nineinferior", - "centinferior", - "dollarinferior", - "periodinferior", - "commainferior", - "Agravesmall", - "Aacutesmall", - "Acircumflexsmall", - "Atildesmall", - "Adieresissmall", - "Aringsmall", - "AEsmall", - "Ccedillasmall", - "Egravesmall", - "Eacutesmall", - "Ecircumflexsmall", - "Edieresissmall", - "Igravesmall", - "Iacutesmall", - "Icircumflexsmall", - "Idieresissmall", - "Ethsmall", - "Ntildesmall", - "Ogravesmall", - "Oacutesmall", - "Ocircumflexsmall", - "Otildesmall", - "Odieresissmall", - "OEsmall", - "Oslashsmall", - "Ugravesmall", - "Uacutesmall", - "Ucircumflexsmall", - "Udieresissmall", - "Yacutesmall", - "Thornsmall", - "Ydieresissmall", - ]; - t.ExpertEncoding = a; - const r = [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "space", - "exclamsmall", - "Hungarumlautsmall", - "centoldstyle", - "dollaroldstyle", - "dollarsuperior", - "ampersandsmall", - "Acutesmall", - "parenleftsuperior", - "parenrightsuperior", - "twodotenleader", - "onedotenleader", - "comma", - "hyphen", - "period", - "fraction", - "zerooldstyle", - "oneoldstyle", - "twooldstyle", - "threeoldstyle", - "fouroldstyle", - "fiveoldstyle", - "sixoldstyle", - "sevenoldstyle", - "eightoldstyle", - "nineoldstyle", - "colon", - "semicolon", - "", - "threequartersemdash", - "", - "questionsmall", - "", - "", - "", - "", - "Ethsmall", - "", - "", - "onequarter", - "onehalf", - "threequarters", - "oneeighth", - "threeeighths", - "fiveeighths", - "seveneighths", - "onethird", - "twothirds", - "", - "", - "", - "", - "", - "", - "ff", - "fi", - "fl", - "ffi", - "ffl", - "parenleftinferior", - "", - "parenrightinferior", - "Circumflexsmall", - "hypheninferior", - "Gravesmall", - "Asmall", - "Bsmall", - "Csmall", - "Dsmall", - "Esmall", - "Fsmall", - "Gsmall", - "Hsmall", - "Ismall", - "Jsmall", - "Ksmall", - "Lsmall", - "Msmall", - "Nsmall", - "Osmall", - "Psmall", - "Qsmall", - "Rsmall", - "Ssmall", - "Tsmall", - "Usmall", - "Vsmall", - "Wsmall", - "Xsmall", - "Ysmall", - "Zsmall", - "colonmonetary", - "onefitted", - "rupiah", - "Tildesmall", - "", - "", - "asuperior", - "centsuperior", - "", - "", - "", - "", - "Aacutesmall", - "Agravesmall", - "Acircumflexsmall", - "Adieresissmall", - "Atildesmall", - "Aringsmall", - "Ccedillasmall", - "Eacutesmall", - "Egravesmall", - "Ecircumflexsmall", - "Edieresissmall", - "Iacutesmall", - "Igravesmall", - "Icircumflexsmall", - "Idieresissmall", - "Ntildesmall", - "Oacutesmall", - "Ogravesmall", - "Ocircumflexsmall", - "Odieresissmall", - "Otildesmall", - "Uacutesmall", - "Ugravesmall", - "Ucircumflexsmall", - "Udieresissmall", - "", - "eightsuperior", - "fourinferior", - "threeinferior", - "sixinferior", - "eightinferior", - "seveninferior", - "Scaronsmall", - "", - "centinferior", - "twoinferior", - "", - "Dieresissmall", - "", - "Caronsmall", - "osuperior", - "fiveinferior", - "", - "commainferior", - "periodinferior", - "Yacutesmall", - "", - "dollarinferior", - "", - "", - "Thornsmall", - "", - "nineinferior", - "zeroinferior", - "Zcaronsmall", - "AEsmall", - "Oslashsmall", - "questiondownsmall", - "oneinferior", - "Lslashsmall", - "", - "", - "", - "", - "", - "", - "Cedillasmall", - "", - "", - "", - "", - "", - "OEsmall", - "figuredash", - "hyphensuperior", - "", - "", - "", - "", - "exclamdownsmall", - "", - "Ydieresissmall", - "", - "onesuperior", - "twosuperior", - "threesuperior", - "foursuperior", - "fivesuperior", - "sixsuperior", - "sevensuperior", - "ninesuperior", - "zerosuperior", - "", - "esuperior", - "rsuperior", - "tsuperior", - "", - "", - "isuperior", - "ssuperior", - "dsuperior", - "", - "", - "", - "", - "", - "lsuperior", - "Ogoneksmall", - "Brevesmall", - "Macronsmall", - "bsuperior", - "nsuperior", - "msuperior", - "commasuperior", - "periodsuperior", - "Dotaccentsmall", - "Ringsmall", - "", - "", - "", - "", - ], - n = [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "space", - "exclam", - "quotedbl", - "numbersign", - "dollar", - "percent", - "ampersand", - "quotesingle", - "parenleft", - "parenright", - "asterisk", - "plus", - "comma", - "hyphen", - "period", - "slash", - "zero", - "one", - "two", - "three", - "four", - "five", - "six", - "seven", - "eight", - "nine", - "colon", - "semicolon", - "less", - "equal", - "greater", - "question", - "at", - "A", - "B", - "C", - "D", - "E", - "F", - "G", - "H", - "I", - "J", - "K", - "L", - "M", - "N", - "O", - "P", - "Q", - "R", - "S", - "T", - "U", - "V", - "W", - "X", - "Y", - "Z", - "bracketleft", - "backslash", - "bracketright", - "asciicircum", - "underscore", - "grave", - "a", - "b", - "c", - "d", - "e", - "f", - "g", - "h", - "i", - "j", - "k", - "l", - "m", - "n", - "o", - "p", - "q", - "r", - "s", - "t", - "u", - "v", - "w", - "x", - "y", - "z", - "braceleft", - "bar", - "braceright", - "asciitilde", - "", - "Adieresis", - "Aring", - "Ccedilla", - "Eacute", - "Ntilde", - "Odieresis", - "Udieresis", - "aacute", - "agrave", - "acircumflex", - "adieresis", - "atilde", - "aring", - "ccedilla", - "eacute", - "egrave", - "ecircumflex", - "edieresis", - "iacute", - "igrave", - "icircumflex", - "idieresis", - "ntilde", - "oacute", - "ograve", - "ocircumflex", - "odieresis", - "otilde", - "uacute", - "ugrave", - "ucircumflex", - "udieresis", - "dagger", - "degree", - "cent", - "sterling", - "section", - "bullet", - "paragraph", - "germandbls", - "registered", - "copyright", - "trademark", - "acute", - "dieresis", - "notequal", - "AE", - "Oslash", - "infinity", - "plusminus", - "lessequal", - "greaterequal", - "yen", - "mu", - "partialdiff", - "summation", - "product", - "pi", - "integral", - "ordfeminine", - "ordmasculine", - "Omega", - "ae", - "oslash", - "questiondown", - "exclamdown", - "logicalnot", - "radical", - "florin", - "approxequal", - "Delta", - "guillemotleft", - "guillemotright", - "ellipsis", - "space", - "Agrave", - "Atilde", - "Otilde", - "OE", - "oe", - "endash", - "emdash", - "quotedblleft", - "quotedblright", - "quoteleft", - "quoteright", - "divide", - "lozenge", - "ydieresis", - "Ydieresis", - "fraction", - "currency", - "guilsinglleft", - "guilsinglright", - "fi", - "fl", - "daggerdbl", - "periodcentered", - "quotesinglbase", - "quotedblbase", - "perthousand", - "Acircumflex", - "Ecircumflex", - "Aacute", - "Edieresis", - "Egrave", - "Iacute", - "Icircumflex", - "Idieresis", - "Igrave", - "Oacute", - "Ocircumflex", - "apple", - "Ograve", - "Uacute", - "Ucircumflex", - "Ugrave", - "dotlessi", - "circumflex", - "tilde", - "macron", - "breve", - "dotaccent", - "ring", - "cedilla", - "hungarumlaut", - "ogonek", - "caron", - ]; - t.MacRomanEncoding = n; - const i = [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "space", - "exclam", - "quotedbl", - "numbersign", - "dollar", - "percent", - "ampersand", - "quoteright", - "parenleft", - "parenright", - "asterisk", - "plus", - "comma", - "hyphen", - "period", - "slash", - "zero", - "one", - "two", - "three", - "four", - "five", - "six", - "seven", - "eight", - "nine", - "colon", - "semicolon", - "less", - "equal", - "greater", - "question", - "at", - "A", - "B", - "C", - "D", - "E", - "F", - "G", - "H", - "I", - "J", - "K", - "L", - "M", - "N", - "O", - "P", - "Q", - "R", - "S", - "T", - "U", - "V", - "W", - "X", - "Y", - "Z", - "bracketleft", - "backslash", - "bracketright", - "asciicircum", - "underscore", - "quoteleft", - "a", - "b", - "c", - "d", - "e", - "f", - "g", - "h", - "i", - "j", - "k", - "l", - "m", - "n", - "o", - "p", - "q", - "r", - "s", - "t", - "u", - "v", - "w", - "x", - "y", - "z", - "braceleft", - "bar", - "braceright", - "asciitilde", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "exclamdown", - "cent", - "sterling", - "fraction", - "yen", - "florin", - "section", - "currency", - "quotesingle", - "quotedblleft", - "guillemotleft", - "guilsinglleft", - "guilsinglright", - "fi", - "fl", - "", - "endash", - "dagger", - "daggerdbl", - "periodcentered", - "", - "paragraph", - "bullet", - "quotesinglbase", - "quotedblbase", - "quotedblright", - "guillemotright", - "ellipsis", - "perthousand", - "", - "questiondown", - "", - "grave", - "acute", - "circumflex", - "tilde", - "macron", - "breve", - "dotaccent", - "dieresis", - "", - "ring", - "cedilla", - "", - "hungarumlaut", - "ogonek", - "caron", - "emdash", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "AE", - "", - "ordfeminine", - "", - "", - "", - "", - "Lslash", - "Oslash", - "OE", - "ordmasculine", - "", - "", - "", - "", - "", - "ae", - "", - "", - "", - "dotlessi", - "", - "", - "lslash", - "oslash", - "oe", - "germandbls", - "", - "", - "", - "", - ]; - t.StandardEncoding = i; - const s = [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "space", - "exclam", - "quotedbl", - "numbersign", - "dollar", - "percent", - "ampersand", - "quotesingle", - "parenleft", - "parenright", - "asterisk", - "plus", - "comma", - "hyphen", - "period", - "slash", - "zero", - "one", - "two", - "three", - "four", - "five", - "six", - "seven", - "eight", - "nine", - "colon", - "semicolon", - "less", - "equal", - "greater", - "question", - "at", - "A", - "B", - "C", - "D", - "E", - "F", - "G", - "H", - "I", - "J", - "K", - "L", - "M", - "N", - "O", - "P", - "Q", - "R", - "S", - "T", - "U", - "V", - "W", - "X", - "Y", - "Z", - "bracketleft", - "backslash", - "bracketright", - "asciicircum", - "underscore", - "grave", - "a", - "b", - "c", - "d", - "e", - "f", - "g", - "h", - "i", - "j", - "k", - "l", - "m", - "n", - "o", - "p", - "q", - "r", - "s", - "t", - "u", - "v", - "w", - "x", - "y", - "z", - "braceleft", - "bar", - "braceright", - "asciitilde", - "bullet", - "Euro", - "bullet", - "quotesinglbase", - "florin", - "quotedblbase", - "ellipsis", - "dagger", - "daggerdbl", - "circumflex", - "perthousand", - "Scaron", - "guilsinglleft", - "OE", - "bullet", - "Zcaron", - "bullet", - "bullet", - "quoteleft", - "quoteright", - "quotedblleft", - "quotedblright", - "bullet", - "endash", - "emdash", - "tilde", - "trademark", - "scaron", - "guilsinglright", - "oe", - "bullet", - "zcaron", - "Ydieresis", - "space", - "exclamdown", - "cent", - "sterling", - "currency", - "yen", - "brokenbar", - "section", - "dieresis", - "copyright", - "ordfeminine", - "guillemotleft", - "logicalnot", - "hyphen", - "registered", - "macron", - "degree", - "plusminus", - "twosuperior", - "threesuperior", - "acute", - "mu", - "paragraph", - "periodcentered", - "cedilla", - "onesuperior", - "ordmasculine", - "guillemotright", - "onequarter", - "onehalf", - "threequarters", - "questiondown", - "Agrave", - "Aacute", - "Acircumflex", - "Atilde", - "Adieresis", - "Aring", - "AE", - "Ccedilla", - "Egrave", - "Eacute", - "Ecircumflex", - "Edieresis", - "Igrave", - "Iacute", - "Icircumflex", - "Idieresis", - "Eth", - "Ntilde", - "Ograve", - "Oacute", - "Ocircumflex", - "Otilde", - "Odieresis", - "multiply", - "Oslash", - "Ugrave", - "Uacute", - "Ucircumflex", - "Udieresis", - "Yacute", - "Thorn", - "germandbls", - "agrave", - "aacute", - "acircumflex", - "atilde", - "adieresis", - "aring", - "ae", - "ccedilla", - "egrave", - "eacute", - "ecircumflex", - "edieresis", - "igrave", - "iacute", - "icircumflex", - "idieresis", - "eth", - "ntilde", - "ograve", - "oacute", - "ocircumflex", - "otilde", - "odieresis", - "divide", - "oslash", - "ugrave", - "uacute", - "ucircumflex", - "udieresis", - "yacute", - "thorn", - "ydieresis", - ]; - t.WinAnsiEncoding = s; - const o = [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "space", - "exclam", - "universal", - "numbersign", - "existential", - "percent", - "ampersand", - "suchthat", - "parenleft", - "parenright", - "asteriskmath", - "plus", - "comma", - "minus", - "period", - "slash", - "zero", - "one", - "two", - "three", - "four", - "five", - "six", - "seven", - "eight", - "nine", - "colon", - "semicolon", - "less", - "equal", - "greater", - "question", - "congruent", - "Alpha", - "Beta", - "Chi", - "Delta", - "Epsilon", - "Phi", - "Gamma", - "Eta", - "Iota", - "theta1", - "Kappa", - "Lambda", - "Mu", - "Nu", - "Omicron", - "Pi", - "Theta", - "Rho", - "Sigma", - "Tau", - "Upsilon", - "sigma1", - "Omega", - "Xi", - "Psi", - "Zeta", - "bracketleft", - "therefore", - "bracketright", - "perpendicular", - "underscore", - "radicalex", - "alpha", - "beta", - "chi", - "delta", - "epsilon", - "phi", - "gamma", - "eta", - "iota", - "phi1", - "kappa", - "lambda", - "mu", - "nu", - "omicron", - "pi", - "theta", - "rho", - "sigma", - "tau", - "upsilon", - "omega1", - "omega", - "xi", - "psi", - "zeta", - "braceleft", - "bar", - "braceright", - "similar", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "Euro", - "Upsilon1", - "minute", - "lessequal", - "fraction", - "infinity", - "florin", - "club", - "diamond", - "heart", - "spade", - "arrowboth", - "arrowleft", - "arrowup", - "arrowright", - "arrowdown", - "degree", - "plusminus", - "second", - "greaterequal", - "multiply", - "proportional", - "partialdiff", - "bullet", - "divide", - "notequal", - "equivalence", - "approxequal", - "ellipsis", - "arrowvertex", - "arrowhorizex", - "carriagereturn", - "aleph", - "Ifraktur", - "Rfraktur", - "weierstrass", - "circlemultiply", - "circleplus", - "emptyset", - "intersection", - "union", - "propersuperset", - "reflexsuperset", - "notsubset", - "propersubset", - "reflexsubset", - "element", - "notelement", - "angle", - "gradient", - "registerserif", - "copyrightserif", - "trademarkserif", - "product", - "radical", - "dotmath", - "logicalnot", - "logicaland", - "logicalor", - "arrowdblboth", - "arrowdblleft", - "arrowdblup", - "arrowdblright", - "arrowdbldown", - "lozenge", - "angleleft", - "registersans", - "copyrightsans", - "trademarksans", - "summation", - "parenlefttp", - "parenleftex", - "parenleftbt", - "bracketlefttp", - "bracketleftex", - "bracketleftbt", - "bracelefttp", - "braceleftmid", - "braceleftbt", - "braceex", - "", - "angleright", - "integral", - "integraltp", - "integralex", - "integralbt", - "parenrighttp", - "parenrightex", - "parenrightbt", - "bracketrighttp", - "bracketrightex", - "bracketrightbt", - "bracerighttp", - "bracerightmid", - "bracerightbt", - "", - ]; - t.SymbolSetEncoding = o; - const c = [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "space", - "a1", - "a2", - "a202", - "a3", - "a4", - "a5", - "a119", - "a118", - "a117", - "a11", - "a12", - "a13", - "a14", - "a15", - "a16", - "a105", - "a17", - "a18", - "a19", - "a20", - "a21", - "a22", - "a23", - "a24", - "a25", - "a26", - "a27", - "a28", - "a6", - "a7", - "a8", - "a9", - "a10", - "a29", - "a30", - "a31", - "a32", - "a33", - "a34", - "a35", - "a36", - "a37", - "a38", - "a39", - "a40", - "a41", - "a42", - "a43", - "a44", - "a45", - "a46", - "a47", - "a48", - "a49", - "a50", - "a51", - "a52", - "a53", - "a54", - "a55", - "a56", - "a57", - "a58", - "a59", - "a60", - "a61", - "a62", - "a63", - "a64", - "a65", - "a66", - "a67", - "a68", - "a69", - "a70", - "a71", - "a72", - "a73", - "a74", - "a203", - "a75", - "a204", - "a76", - "a77", - "a78", - "a79", - "a81", - "a82", - "a83", - "a84", - "a97", - "a98", - "a99", - "a100", - "", - "a89", - "a90", - "a93", - "a94", - "a91", - "a92", - "a205", - "a85", - "a206", - "a86", - "a87", - "a88", - "a95", - "a96", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "a101", - "a102", - "a103", - "a104", - "a106", - "a107", - "a108", - "a112", - "a111", - "a110", - "a109", - "a120", - "a121", - "a122", - "a123", - "a124", - "a125", - "a126", - "a127", - "a128", - "a129", - "a130", - "a131", - "a132", - "a133", - "a134", - "a135", - "a136", - "a137", - "a138", - "a139", - "a140", - "a141", - "a142", - "a143", - "a144", - "a145", - "a146", - "a147", - "a148", - "a149", - "a150", - "a151", - "a152", - "a153", - "a154", - "a155", - "a156", - "a157", - "a158", - "a159", - "a160", - "a161", - "a163", - "a164", - "a196", - "a165", - "a192", - "a166", - "a167", - "a168", - "a169", - "a170", - "a171", - "a172", - "a173", - "a162", - "a174", - "a175", - "a176", - "a177", - "a178", - "a179", - "a193", - "a180", - "a199", - "a181", - "a200", - "a182", - "", - "a201", - "a183", - "a184", - "a197", - "a185", - "a194", - "a198", - "a186", - "a195", - "a187", - "a188", - "a189", - "a190", - "a191", - "", - ]; - t.ZapfDingbatsEncoding = c; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.SEAC_ANALYSIS_ENABLED = - t.MacStandardGlyphOrdering = - t.FontFlags = - void 0; - t.normalizeFontName = function normalizeFontName(e) { - return e.replaceAll(/[,_]/g, "-").replaceAll(/\s/g, ""); - }; - t.recoverGlyphName = recoverGlyphName; - t.type1FontGlyphMapping = function type1FontGlyphMapping(e, t, a) { - const i = Object.create(null); - let s, c, l; - const h = !!(e.flags & o.Symbolic); - if (e.isInternalFont) { - l = t; - for (c = 0; c < l.length; c++) { - s = a.indexOf(l[c]); - i[c] = s >= 0 ? s : 0; - } - } else if (e.baseEncodingName) { - l = (0, r.getEncoding)(e.baseEncodingName); - for (c = 0; c < l.length; c++) { - s = a.indexOf(l[c]); - i[c] = s >= 0 ? s : 0; - } - } else if (h) for (c in t) i[c] = t[c]; - else { - l = r.StandardEncoding; - for (c = 0; c < l.length; c++) { - s = a.indexOf(l[c]); - i[c] = s >= 0 ? s : 0; - } - } - const u = e.differences; - let d; - if (u) - for (c in u) { - const e = u[c]; - s = a.indexOf(e); - if (-1 === s) { - d || (d = (0, n.getGlyphsUnicode)()); - const t = recoverGlyphName(e, d); - t !== e && (s = a.indexOf(t)); - } - i[c] = s >= 0 ? s : 0; - } - return i; - }; - var r = a(37), - n = a(39), - i = a(40), - s = a(2); - t.SEAC_ANALYSIS_ENABLED = !0; - const o = { - FixedPitch: 1, - Serif: 2, - Symbolic: 4, - Script: 8, - Nonsymbolic: 32, - Italic: 64, - AllCap: 65536, - SmallCap: 131072, - ForceBold: 262144, - }; - t.FontFlags = o; - t.MacStandardGlyphOrdering = [ - ".notdef", - ".null", - "nonmarkingreturn", - "space", - "exclam", - "quotedbl", - "numbersign", - "dollar", - "percent", - "ampersand", - "quotesingle", - "parenleft", - "parenright", - "asterisk", - "plus", - "comma", - "hyphen", - "period", - "slash", - "zero", - "one", - "two", - "three", - "four", - "five", - "six", - "seven", - "eight", - "nine", - "colon", - "semicolon", - "less", - "equal", - "greater", - "question", - "at", - "A", - "B", - "C", - "D", - "E", - "F", - "G", - "H", - "I", - "J", - "K", - "L", - "M", - "N", - "O", - "P", - "Q", - "R", - "S", - "T", - "U", - "V", - "W", - "X", - "Y", - "Z", - "bracketleft", - "backslash", - "bracketright", - "asciicircum", - "underscore", - "grave", - "a", - "b", - "c", - "d", - "e", - "f", - "g", - "h", - "i", - "j", - "k", - "l", - "m", - "n", - "o", - "p", - "q", - "r", - "s", - "t", - "u", - "v", - "w", - "x", - "y", - "z", - "braceleft", - "bar", - "braceright", - "asciitilde", - "Adieresis", - "Aring", - "Ccedilla", - "Eacute", - "Ntilde", - "Odieresis", - "Udieresis", - "aacute", - "agrave", - "acircumflex", - "adieresis", - "atilde", - "aring", - "ccedilla", - "eacute", - "egrave", - "ecircumflex", - "edieresis", - "iacute", - "igrave", - "icircumflex", - "idieresis", - "ntilde", - "oacute", - "ograve", - "ocircumflex", - "odieresis", - "otilde", - "uacute", - "ugrave", - "ucircumflex", - "udieresis", - "dagger", - "degree", - "cent", - "sterling", - "section", - "bullet", - "paragraph", - "germandbls", - "registered", - "copyright", - "trademark", - "acute", - "dieresis", - "notequal", - "AE", - "Oslash", - "infinity", - "plusminus", - "lessequal", - "greaterequal", - "yen", - "mu", - "partialdiff", - "summation", - "product", - "pi", - "integral", - "ordfeminine", - "ordmasculine", - "Omega", - "ae", - "oslash", - "questiondown", - "exclamdown", - "logicalnot", - "radical", - "florin", - "approxequal", - "Delta", - "guillemotleft", - "guillemotright", - "ellipsis", - "nonbreakingspace", - "Agrave", - "Atilde", - "Otilde", - "OE", - "oe", - "endash", - "emdash", - "quotedblleft", - "quotedblright", - "quoteleft", - "quoteright", - "divide", - "lozenge", - "ydieresis", - "Ydieresis", - "fraction", - "currency", - "guilsinglleft", - "guilsinglright", - "fi", - "fl", - "daggerdbl", - "periodcentered", - "quotesinglbase", - "quotedblbase", - "perthousand", - "Acircumflex", - "Ecircumflex", - "Aacute", - "Edieresis", - "Egrave", - "Iacute", - "Icircumflex", - "Idieresis", - "Igrave", - "Oacute", - "Ocircumflex", - "apple", - "Ograve", - "Uacute", - "Ucircumflex", - "Ugrave", - "dotlessi", - "circumflex", - "tilde", - "macron", - "breve", - "dotaccent", - "ring", - "cedilla", - "hungarumlaut", - "ogonek", - "caron", - "Lslash", - "lslash", - "Scaron", - "scaron", - "Zcaron", - "zcaron", - "brokenbar", - "Eth", - "eth", - "Yacute", - "yacute", - "Thorn", - "thorn", - "minus", - "multiply", - "onesuperior", - "twosuperior", - "threesuperior", - "onehalf", - "onequarter", - "threequarters", - "franc", - "Gbreve", - "gbreve", - "Idotaccent", - "Scedilla", - "scedilla", - "Cacute", - "cacute", - "Ccaron", - "ccaron", - "dcroat", - ]; - function recoverGlyphName(e, t) { - if (void 0 !== t[e]) return e; - const a = (0, i.getUnicodeForGlyph)(e, t); - if (-1 !== a) for (const e in t) if (t[e] === a) return e; - (0, s.info)("Unable to recover a standard glyph name for: " + e); - return e; - } - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.getGlyphsUnicode = t.getDingbatsGlyphsUnicode = void 0; - var r = a(3); - const n = (0, r.getLookupTableFactory)(function (e) { - e.A = 65; - e.AE = 198; - e.AEacute = 508; - e.AEmacron = 482; - e.AEsmall = 63462; - e.Aacute = 193; - e.Aacutesmall = 63457; - e.Abreve = 258; - e.Abreveacute = 7854; - e.Abrevecyrillic = 1232; - e.Abrevedotbelow = 7862; - e.Abrevegrave = 7856; - e.Abrevehookabove = 7858; - e.Abrevetilde = 7860; - e.Acaron = 461; - e.Acircle = 9398; - e.Acircumflex = 194; - e.Acircumflexacute = 7844; - e.Acircumflexdotbelow = 7852; - e.Acircumflexgrave = 7846; - e.Acircumflexhookabove = 7848; - e.Acircumflexsmall = 63458; - e.Acircumflextilde = 7850; - e.Acute = 63177; - e.Acutesmall = 63412; - e.Acyrillic = 1040; - e.Adblgrave = 512; - e.Adieresis = 196; - e.Adieresiscyrillic = 1234; - e.Adieresismacron = 478; - e.Adieresissmall = 63460; - e.Adotbelow = 7840; - e.Adotmacron = 480; - e.Agrave = 192; - e.Agravesmall = 63456; - e.Ahookabove = 7842; - e.Aiecyrillic = 1236; - e.Ainvertedbreve = 514; - e.Alpha = 913; - e.Alphatonos = 902; - e.Amacron = 256; - e.Amonospace = 65313; - e.Aogonek = 260; - e.Aring = 197; - e.Aringacute = 506; - e.Aringbelow = 7680; - e.Aringsmall = 63461; - e.Asmall = 63329; - e.Atilde = 195; - e.Atildesmall = 63459; - e.Aybarmenian = 1329; - e.B = 66; - e.Bcircle = 9399; - e.Bdotaccent = 7682; - e.Bdotbelow = 7684; - e.Becyrillic = 1041; - e.Benarmenian = 1330; - e.Beta = 914; - e.Bhook = 385; - e.Blinebelow = 7686; - e.Bmonospace = 65314; - e.Brevesmall = 63220; - e.Bsmall = 63330; - e.Btopbar = 386; - e.C = 67; - e.Caarmenian = 1342; - e.Cacute = 262; - e.Caron = 63178; - e.Caronsmall = 63221; - e.Ccaron = 268; - e.Ccedilla = 199; - e.Ccedillaacute = 7688; - e.Ccedillasmall = 63463; - e.Ccircle = 9400; - e.Ccircumflex = 264; - e.Cdot = 266; - e.Cdotaccent = 266; - e.Cedillasmall = 63416; - e.Chaarmenian = 1353; - e.Cheabkhasiancyrillic = 1212; - e.Checyrillic = 1063; - e.Chedescenderabkhasiancyrillic = 1214; - e.Chedescendercyrillic = 1206; - e.Chedieresiscyrillic = 1268; - e.Cheharmenian = 1347; - e.Chekhakassiancyrillic = 1227; - e.Cheverticalstrokecyrillic = 1208; - e.Chi = 935; - e.Chook = 391; - e.Circumflexsmall = 63222; - e.Cmonospace = 65315; - e.Coarmenian = 1361; - e.Csmall = 63331; - e.D = 68; - e.DZ = 497; - e.DZcaron = 452; - e.Daarmenian = 1332; - e.Dafrican = 393; - e.Dcaron = 270; - e.Dcedilla = 7696; - e.Dcircle = 9401; - e.Dcircumflexbelow = 7698; - e.Dcroat = 272; - e.Ddotaccent = 7690; - e.Ddotbelow = 7692; - e.Decyrillic = 1044; - e.Deicoptic = 1006; - e.Delta = 8710; - e.Deltagreek = 916; - e.Dhook = 394; - e.Dieresis = 63179; - e.DieresisAcute = 63180; - e.DieresisGrave = 63181; - e.Dieresissmall = 63400; - e.Digammagreek = 988; - e.Djecyrillic = 1026; - e.Dlinebelow = 7694; - e.Dmonospace = 65316; - e.Dotaccentsmall = 63223; - e.Dslash = 272; - e.Dsmall = 63332; - e.Dtopbar = 395; - e.Dz = 498; - e.Dzcaron = 453; - e.Dzeabkhasiancyrillic = 1248; - e.Dzecyrillic = 1029; - e.Dzhecyrillic = 1039; - e.E = 69; - e.Eacute = 201; - e.Eacutesmall = 63465; - e.Ebreve = 276; - e.Ecaron = 282; - e.Ecedillabreve = 7708; - e.Echarmenian = 1333; - e.Ecircle = 9402; - e.Ecircumflex = 202; - e.Ecircumflexacute = 7870; - e.Ecircumflexbelow = 7704; - e.Ecircumflexdotbelow = 7878; - e.Ecircumflexgrave = 7872; - e.Ecircumflexhookabove = 7874; - e.Ecircumflexsmall = 63466; - e.Ecircumflextilde = 7876; - e.Ecyrillic = 1028; - e.Edblgrave = 516; - e.Edieresis = 203; - e.Edieresissmall = 63467; - e.Edot = 278; - e.Edotaccent = 278; - e.Edotbelow = 7864; - e.Efcyrillic = 1060; - e.Egrave = 200; - e.Egravesmall = 63464; - e.Eharmenian = 1335; - e.Ehookabove = 7866; - e.Eightroman = 8551; - e.Einvertedbreve = 518; - e.Eiotifiedcyrillic = 1124; - e.Elcyrillic = 1051; - e.Elevenroman = 8554; - e.Emacron = 274; - e.Emacronacute = 7702; - e.Emacrongrave = 7700; - e.Emcyrillic = 1052; - e.Emonospace = 65317; - e.Encyrillic = 1053; - e.Endescendercyrillic = 1186; - e.Eng = 330; - e.Enghecyrillic = 1188; - e.Enhookcyrillic = 1223; - e.Eogonek = 280; - e.Eopen = 400; - e.Epsilon = 917; - e.Epsilontonos = 904; - e.Ercyrillic = 1056; - e.Ereversed = 398; - e.Ereversedcyrillic = 1069; - e.Escyrillic = 1057; - e.Esdescendercyrillic = 1194; - e.Esh = 425; - e.Esmall = 63333; - e.Eta = 919; - e.Etarmenian = 1336; - e.Etatonos = 905; - e.Eth = 208; - e.Ethsmall = 63472; - e.Etilde = 7868; - e.Etildebelow = 7706; - e.Euro = 8364; - e.Ezh = 439; - e.Ezhcaron = 494; - e.Ezhreversed = 440; - e.F = 70; - e.Fcircle = 9403; - e.Fdotaccent = 7710; - e.Feharmenian = 1366; - e.Feicoptic = 996; - e.Fhook = 401; - e.Fitacyrillic = 1138; - e.Fiveroman = 8548; - e.Fmonospace = 65318; - e.Fourroman = 8547; - e.Fsmall = 63334; - e.G = 71; - e.GBsquare = 13191; - e.Gacute = 500; - e.Gamma = 915; - e.Gammaafrican = 404; - e.Gangiacoptic = 1002; - e.Gbreve = 286; - e.Gcaron = 486; - e.Gcedilla = 290; - e.Gcircle = 9404; - e.Gcircumflex = 284; - e.Gcommaaccent = 290; - e.Gdot = 288; - e.Gdotaccent = 288; - e.Gecyrillic = 1043; - e.Ghadarmenian = 1346; - e.Ghemiddlehookcyrillic = 1172; - e.Ghestrokecyrillic = 1170; - e.Gheupturncyrillic = 1168; - e.Ghook = 403; - e.Gimarmenian = 1331; - e.Gjecyrillic = 1027; - e.Gmacron = 7712; - e.Gmonospace = 65319; - e.Grave = 63182; - e.Gravesmall = 63328; - e.Gsmall = 63335; - e.Gsmallhook = 667; - e.Gstroke = 484; - e.H = 72; - e.H18533 = 9679; - e.H18543 = 9642; - e.H18551 = 9643; - e.H22073 = 9633; - e.HPsquare = 13259; - e.Haabkhasiancyrillic = 1192; - e.Hadescendercyrillic = 1202; - e.Hardsigncyrillic = 1066; - e.Hbar = 294; - e.Hbrevebelow = 7722; - e.Hcedilla = 7720; - e.Hcircle = 9405; - e.Hcircumflex = 292; - e.Hdieresis = 7718; - e.Hdotaccent = 7714; - e.Hdotbelow = 7716; - e.Hmonospace = 65320; - e.Hoarmenian = 1344; - e.Horicoptic = 1e3; - e.Hsmall = 63336; - e.Hungarumlaut = 63183; - e.Hungarumlautsmall = 63224; - e.Hzsquare = 13200; - e.I = 73; - e.IAcyrillic = 1071; - e.IJ = 306; - e.IUcyrillic = 1070; - e.Iacute = 205; - e.Iacutesmall = 63469; - e.Ibreve = 300; - e.Icaron = 463; - e.Icircle = 9406; - e.Icircumflex = 206; - e.Icircumflexsmall = 63470; - e.Icyrillic = 1030; - e.Idblgrave = 520; - e.Idieresis = 207; - e.Idieresisacute = 7726; - e.Idieresiscyrillic = 1252; - e.Idieresissmall = 63471; - e.Idot = 304; - e.Idotaccent = 304; - e.Idotbelow = 7882; - e.Iebrevecyrillic = 1238; - e.Iecyrillic = 1045; - e.Ifraktur = 8465; - e.Igrave = 204; - e.Igravesmall = 63468; - e.Ihookabove = 7880; - e.Iicyrillic = 1048; - e.Iinvertedbreve = 522; - e.Iishortcyrillic = 1049; - e.Imacron = 298; - e.Imacroncyrillic = 1250; - e.Imonospace = 65321; - e.Iniarmenian = 1339; - e.Iocyrillic = 1025; - e.Iogonek = 302; - e.Iota = 921; - e.Iotaafrican = 406; - e.Iotadieresis = 938; - e.Iotatonos = 906; - e.Ismall = 63337; - e.Istroke = 407; - e.Itilde = 296; - e.Itildebelow = 7724; - e.Izhitsacyrillic = 1140; - e.Izhitsadblgravecyrillic = 1142; - e.J = 74; - e.Jaarmenian = 1345; - e.Jcircle = 9407; - e.Jcircumflex = 308; - e.Jecyrillic = 1032; - e.Jheharmenian = 1355; - e.Jmonospace = 65322; - e.Jsmall = 63338; - e.K = 75; - e.KBsquare = 13189; - e.KKsquare = 13261; - e.Kabashkircyrillic = 1184; - e.Kacute = 7728; - e.Kacyrillic = 1050; - e.Kadescendercyrillic = 1178; - e.Kahookcyrillic = 1219; - e.Kappa = 922; - e.Kastrokecyrillic = 1182; - e.Kaverticalstrokecyrillic = 1180; - e.Kcaron = 488; - e.Kcedilla = 310; - e.Kcircle = 9408; - e.Kcommaaccent = 310; - e.Kdotbelow = 7730; - e.Keharmenian = 1364; - e.Kenarmenian = 1343; - e.Khacyrillic = 1061; - e.Kheicoptic = 998; - e.Khook = 408; - e.Kjecyrillic = 1036; - e.Klinebelow = 7732; - e.Kmonospace = 65323; - e.Koppacyrillic = 1152; - e.Koppagreek = 990; - e.Ksicyrillic = 1134; - e.Ksmall = 63339; - e.L = 76; - e.LJ = 455; - e.LL = 63167; - e.Lacute = 313; - e.Lambda = 923; - e.Lcaron = 317; - e.Lcedilla = 315; - e.Lcircle = 9409; - e.Lcircumflexbelow = 7740; - e.Lcommaaccent = 315; - e.Ldot = 319; - e.Ldotaccent = 319; - e.Ldotbelow = 7734; - e.Ldotbelowmacron = 7736; - e.Liwnarmenian = 1340; - e.Lj = 456; - e.Ljecyrillic = 1033; - e.Llinebelow = 7738; - e.Lmonospace = 65324; - e.Lslash = 321; - e.Lslashsmall = 63225; - e.Lsmall = 63340; - e.M = 77; - e.MBsquare = 13190; - e.Macron = 63184; - e.Macronsmall = 63407; - e.Macute = 7742; - e.Mcircle = 9410; - e.Mdotaccent = 7744; - e.Mdotbelow = 7746; - e.Menarmenian = 1348; - e.Mmonospace = 65325; - e.Msmall = 63341; - e.Mturned = 412; - e.Mu = 924; - e.N = 78; - e.NJ = 458; - e.Nacute = 323; - e.Ncaron = 327; - e.Ncedilla = 325; - e.Ncircle = 9411; - e.Ncircumflexbelow = 7754; - e.Ncommaaccent = 325; - e.Ndotaccent = 7748; - e.Ndotbelow = 7750; - e.Nhookleft = 413; - e.Nineroman = 8552; - e.Nj = 459; - e.Njecyrillic = 1034; - e.Nlinebelow = 7752; - e.Nmonospace = 65326; - e.Nowarmenian = 1350; - e.Nsmall = 63342; - e.Ntilde = 209; - e.Ntildesmall = 63473; - e.Nu = 925; - e.O = 79; - e.OE = 338; - e.OEsmall = 63226; - e.Oacute = 211; - e.Oacutesmall = 63475; - e.Obarredcyrillic = 1256; - e.Obarreddieresiscyrillic = 1258; - e.Obreve = 334; - e.Ocaron = 465; - e.Ocenteredtilde = 415; - e.Ocircle = 9412; - e.Ocircumflex = 212; - e.Ocircumflexacute = 7888; - e.Ocircumflexdotbelow = 7896; - e.Ocircumflexgrave = 7890; - e.Ocircumflexhookabove = 7892; - e.Ocircumflexsmall = 63476; - e.Ocircumflextilde = 7894; - e.Ocyrillic = 1054; - e.Odblacute = 336; - e.Odblgrave = 524; - e.Odieresis = 214; - e.Odieresiscyrillic = 1254; - e.Odieresissmall = 63478; - e.Odotbelow = 7884; - e.Ogoneksmall = 63227; - e.Ograve = 210; - e.Ogravesmall = 63474; - e.Oharmenian = 1365; - e.Ohm = 8486; - e.Ohookabove = 7886; - e.Ohorn = 416; - e.Ohornacute = 7898; - e.Ohorndotbelow = 7906; - e.Ohorngrave = 7900; - e.Ohornhookabove = 7902; - e.Ohorntilde = 7904; - e.Ohungarumlaut = 336; - e.Oi = 418; - e.Oinvertedbreve = 526; - e.Omacron = 332; - e.Omacronacute = 7762; - e.Omacrongrave = 7760; - e.Omega = 8486; - e.Omegacyrillic = 1120; - e.Omegagreek = 937; - e.Omegaroundcyrillic = 1146; - e.Omegatitlocyrillic = 1148; - e.Omegatonos = 911; - e.Omicron = 927; - e.Omicrontonos = 908; - e.Omonospace = 65327; - e.Oneroman = 8544; - e.Oogonek = 490; - e.Oogonekmacron = 492; - e.Oopen = 390; - e.Oslash = 216; - e.Oslashacute = 510; - e.Oslashsmall = 63480; - e.Osmall = 63343; - e.Ostrokeacute = 510; - e.Otcyrillic = 1150; - e.Otilde = 213; - e.Otildeacute = 7756; - e.Otildedieresis = 7758; - e.Otildesmall = 63477; - e.P = 80; - e.Pacute = 7764; - e.Pcircle = 9413; - e.Pdotaccent = 7766; - e.Pecyrillic = 1055; - e.Peharmenian = 1354; - e.Pemiddlehookcyrillic = 1190; - e.Phi = 934; - e.Phook = 420; - e.Pi = 928; - e.Piwrarmenian = 1363; - e.Pmonospace = 65328; - e.Psi = 936; - e.Psicyrillic = 1136; - e.Psmall = 63344; - e.Q = 81; - e.Qcircle = 9414; - e.Qmonospace = 65329; - e.Qsmall = 63345; - e.R = 82; - e.Raarmenian = 1356; - e.Racute = 340; - e.Rcaron = 344; - e.Rcedilla = 342; - e.Rcircle = 9415; - e.Rcommaaccent = 342; - e.Rdblgrave = 528; - e.Rdotaccent = 7768; - e.Rdotbelow = 7770; - e.Rdotbelowmacron = 7772; - e.Reharmenian = 1360; - e.Rfraktur = 8476; - e.Rho = 929; - e.Ringsmall = 63228; - e.Rinvertedbreve = 530; - e.Rlinebelow = 7774; - e.Rmonospace = 65330; - e.Rsmall = 63346; - e.Rsmallinverted = 641; - e.Rsmallinvertedsuperior = 694; - e.S = 83; - e.SF010000 = 9484; - e.SF020000 = 9492; - e.SF030000 = 9488; - e.SF040000 = 9496; - e.SF050000 = 9532; - e.SF060000 = 9516; - e.SF070000 = 9524; - e.SF080000 = 9500; - e.SF090000 = 9508; - e.SF100000 = 9472; - e.SF110000 = 9474; - e.SF190000 = 9569; - e.SF200000 = 9570; - e.SF210000 = 9558; - e.SF220000 = 9557; - e.SF230000 = 9571; - e.SF240000 = 9553; - e.SF250000 = 9559; - e.SF260000 = 9565; - e.SF270000 = 9564; - e.SF280000 = 9563; - e.SF360000 = 9566; - e.SF370000 = 9567; - e.SF380000 = 9562; - e.SF390000 = 9556; - e.SF400000 = 9577; - e.SF410000 = 9574; - e.SF420000 = 9568; - e.SF430000 = 9552; - e.SF440000 = 9580; - e.SF450000 = 9575; - e.SF460000 = 9576; - e.SF470000 = 9572; - e.SF480000 = 9573; - e.SF490000 = 9561; - e.SF500000 = 9560; - e.SF510000 = 9554; - e.SF520000 = 9555; - e.SF530000 = 9579; - e.SF540000 = 9578; - e.Sacute = 346; - e.Sacutedotaccent = 7780; - e.Sampigreek = 992; - e.Scaron = 352; - e.Scarondotaccent = 7782; - e.Scaronsmall = 63229; - e.Scedilla = 350; - e.Schwa = 399; - e.Schwacyrillic = 1240; - e.Schwadieresiscyrillic = 1242; - e.Scircle = 9416; - e.Scircumflex = 348; - e.Scommaaccent = 536; - e.Sdotaccent = 7776; - e.Sdotbelow = 7778; - e.Sdotbelowdotaccent = 7784; - e.Seharmenian = 1357; - e.Sevenroman = 8550; - e.Shaarmenian = 1351; - e.Shacyrillic = 1064; - e.Shchacyrillic = 1065; - e.Sheicoptic = 994; - e.Shhacyrillic = 1210; - e.Shimacoptic = 1004; - e.Sigma = 931; - e.Sixroman = 8549; - e.Smonospace = 65331; - e.Softsigncyrillic = 1068; - e.Ssmall = 63347; - e.Stigmagreek = 986; - e.T = 84; - e.Tau = 932; - e.Tbar = 358; - e.Tcaron = 356; - e.Tcedilla = 354; - e.Tcircle = 9417; - e.Tcircumflexbelow = 7792; - e.Tcommaaccent = 354; - e.Tdotaccent = 7786; - e.Tdotbelow = 7788; - e.Tecyrillic = 1058; - e.Tedescendercyrillic = 1196; - e.Tenroman = 8553; - e.Tetsecyrillic = 1204; - e.Theta = 920; - e.Thook = 428; - e.Thorn = 222; - e.Thornsmall = 63486; - e.Threeroman = 8546; - e.Tildesmall = 63230; - e.Tiwnarmenian = 1359; - e.Tlinebelow = 7790; - e.Tmonospace = 65332; - e.Toarmenian = 1337; - e.Tonefive = 444; - e.Tonesix = 388; - e.Tonetwo = 423; - e.Tretroflexhook = 430; - e.Tsecyrillic = 1062; - e.Tshecyrillic = 1035; - e.Tsmall = 63348; - e.Twelveroman = 8555; - e.Tworoman = 8545; - e.U = 85; - e.Uacute = 218; - e.Uacutesmall = 63482; - e.Ubreve = 364; - e.Ucaron = 467; - e.Ucircle = 9418; - e.Ucircumflex = 219; - e.Ucircumflexbelow = 7798; - e.Ucircumflexsmall = 63483; - e.Ucyrillic = 1059; - e.Udblacute = 368; - e.Udblgrave = 532; - e.Udieresis = 220; - e.Udieresisacute = 471; - e.Udieresisbelow = 7794; - e.Udieresiscaron = 473; - e.Udieresiscyrillic = 1264; - e.Udieresisgrave = 475; - e.Udieresismacron = 469; - e.Udieresissmall = 63484; - e.Udotbelow = 7908; - e.Ugrave = 217; - e.Ugravesmall = 63481; - e.Uhookabove = 7910; - e.Uhorn = 431; - e.Uhornacute = 7912; - e.Uhorndotbelow = 7920; - e.Uhorngrave = 7914; - e.Uhornhookabove = 7916; - e.Uhorntilde = 7918; - e.Uhungarumlaut = 368; - e.Uhungarumlautcyrillic = 1266; - e.Uinvertedbreve = 534; - e.Ukcyrillic = 1144; - e.Umacron = 362; - e.Umacroncyrillic = 1262; - e.Umacrondieresis = 7802; - e.Umonospace = 65333; - e.Uogonek = 370; - e.Upsilon = 933; - e.Upsilon1 = 978; - e.Upsilonacutehooksymbolgreek = 979; - e.Upsilonafrican = 433; - e.Upsilondieresis = 939; - e.Upsilondieresishooksymbolgreek = 980; - e.Upsilonhooksymbol = 978; - e.Upsilontonos = 910; - e.Uring = 366; - e.Ushortcyrillic = 1038; - e.Usmall = 63349; - e.Ustraightcyrillic = 1198; - e.Ustraightstrokecyrillic = 1200; - e.Utilde = 360; - e.Utildeacute = 7800; - e.Utildebelow = 7796; - e.V = 86; - e.Vcircle = 9419; - e.Vdotbelow = 7806; - e.Vecyrillic = 1042; - e.Vewarmenian = 1358; - e.Vhook = 434; - e.Vmonospace = 65334; - e.Voarmenian = 1352; - e.Vsmall = 63350; - e.Vtilde = 7804; - e.W = 87; - e.Wacute = 7810; - e.Wcircle = 9420; - e.Wcircumflex = 372; - e.Wdieresis = 7812; - e.Wdotaccent = 7814; - e.Wdotbelow = 7816; - e.Wgrave = 7808; - e.Wmonospace = 65335; - e.Wsmall = 63351; - e.X = 88; - e.Xcircle = 9421; - e.Xdieresis = 7820; - e.Xdotaccent = 7818; - e.Xeharmenian = 1341; - e.Xi = 926; - e.Xmonospace = 65336; - e.Xsmall = 63352; - e.Y = 89; - e.Yacute = 221; - e.Yacutesmall = 63485; - e.Yatcyrillic = 1122; - e.Ycircle = 9422; - e.Ycircumflex = 374; - e.Ydieresis = 376; - e.Ydieresissmall = 63487; - e.Ydotaccent = 7822; - e.Ydotbelow = 7924; - e.Yericyrillic = 1067; - e.Yerudieresiscyrillic = 1272; - e.Ygrave = 7922; - e.Yhook = 435; - e.Yhookabove = 7926; - e.Yiarmenian = 1349; - e.Yicyrillic = 1031; - e.Yiwnarmenian = 1362; - e.Ymonospace = 65337; - e.Ysmall = 63353; - e.Ytilde = 7928; - e.Yusbigcyrillic = 1130; - e.Yusbigiotifiedcyrillic = 1132; - e.Yuslittlecyrillic = 1126; - e.Yuslittleiotifiedcyrillic = 1128; - e.Z = 90; - e.Zaarmenian = 1334; - e.Zacute = 377; - e.Zcaron = 381; - e.Zcaronsmall = 63231; - e.Zcircle = 9423; - e.Zcircumflex = 7824; - e.Zdot = 379; - e.Zdotaccent = 379; - e.Zdotbelow = 7826; - e.Zecyrillic = 1047; - e.Zedescendercyrillic = 1176; - e.Zedieresiscyrillic = 1246; - e.Zeta = 918; - e.Zhearmenian = 1338; - e.Zhebrevecyrillic = 1217; - e.Zhecyrillic = 1046; - e.Zhedescendercyrillic = 1174; - e.Zhedieresiscyrillic = 1244; - e.Zlinebelow = 7828; - e.Zmonospace = 65338; - e.Zsmall = 63354; - e.Zstroke = 437; - e.a = 97; - e.aabengali = 2438; - e.aacute = 225; - e.aadeva = 2310; - e.aagujarati = 2694; - e.aagurmukhi = 2566; - e.aamatragurmukhi = 2622; - e.aarusquare = 13059; - e.aavowelsignbengali = 2494; - e.aavowelsigndeva = 2366; - e.aavowelsigngujarati = 2750; - e.abbreviationmarkarmenian = 1375; - e.abbreviationsigndeva = 2416; - e.abengali = 2437; - e.abopomofo = 12570; - e.abreve = 259; - e.abreveacute = 7855; - e.abrevecyrillic = 1233; - e.abrevedotbelow = 7863; - e.abrevegrave = 7857; - e.abrevehookabove = 7859; - e.abrevetilde = 7861; - e.acaron = 462; - e.acircle = 9424; - e.acircumflex = 226; - e.acircumflexacute = 7845; - e.acircumflexdotbelow = 7853; - e.acircumflexgrave = 7847; - e.acircumflexhookabove = 7849; - e.acircumflextilde = 7851; - e.acute = 180; - e.acutebelowcmb = 791; - e.acutecmb = 769; - e.acutecomb = 769; - e.acutedeva = 2388; - e.acutelowmod = 719; - e.acutetonecmb = 833; - e.acyrillic = 1072; - e.adblgrave = 513; - e.addakgurmukhi = 2673; - e.adeva = 2309; - e.adieresis = 228; - e.adieresiscyrillic = 1235; - e.adieresismacron = 479; - e.adotbelow = 7841; - e.adotmacron = 481; - e.ae = 230; - e.aeacute = 509; - e.aekorean = 12624; - e.aemacron = 483; - e.afii00208 = 8213; - e.afii08941 = 8356; - e.afii10017 = 1040; - e.afii10018 = 1041; - e.afii10019 = 1042; - e.afii10020 = 1043; - e.afii10021 = 1044; - e.afii10022 = 1045; - e.afii10023 = 1025; - e.afii10024 = 1046; - e.afii10025 = 1047; - e.afii10026 = 1048; - e.afii10027 = 1049; - e.afii10028 = 1050; - e.afii10029 = 1051; - e.afii10030 = 1052; - e.afii10031 = 1053; - e.afii10032 = 1054; - e.afii10033 = 1055; - e.afii10034 = 1056; - e.afii10035 = 1057; - e.afii10036 = 1058; - e.afii10037 = 1059; - e.afii10038 = 1060; - e.afii10039 = 1061; - e.afii10040 = 1062; - e.afii10041 = 1063; - e.afii10042 = 1064; - e.afii10043 = 1065; - e.afii10044 = 1066; - e.afii10045 = 1067; - e.afii10046 = 1068; - e.afii10047 = 1069; - e.afii10048 = 1070; - e.afii10049 = 1071; - e.afii10050 = 1168; - e.afii10051 = 1026; - e.afii10052 = 1027; - e.afii10053 = 1028; - e.afii10054 = 1029; - e.afii10055 = 1030; - e.afii10056 = 1031; - e.afii10057 = 1032; - e.afii10058 = 1033; - e.afii10059 = 1034; - e.afii10060 = 1035; - e.afii10061 = 1036; - e.afii10062 = 1038; - e.afii10063 = 63172; - e.afii10064 = 63173; - e.afii10065 = 1072; - e.afii10066 = 1073; - e.afii10067 = 1074; - e.afii10068 = 1075; - e.afii10069 = 1076; - e.afii10070 = 1077; - e.afii10071 = 1105; - e.afii10072 = 1078; - e.afii10073 = 1079; - e.afii10074 = 1080; - e.afii10075 = 1081; - e.afii10076 = 1082; - e.afii10077 = 1083; - e.afii10078 = 1084; - e.afii10079 = 1085; - e.afii10080 = 1086; - e.afii10081 = 1087; - e.afii10082 = 1088; - e.afii10083 = 1089; - e.afii10084 = 1090; - e.afii10085 = 1091; - e.afii10086 = 1092; - e.afii10087 = 1093; - e.afii10088 = 1094; - e.afii10089 = 1095; - e.afii10090 = 1096; - e.afii10091 = 1097; - e.afii10092 = 1098; - e.afii10093 = 1099; - e.afii10094 = 1100; - e.afii10095 = 1101; - e.afii10096 = 1102; - e.afii10097 = 1103; - e.afii10098 = 1169; - e.afii10099 = 1106; - e.afii10100 = 1107; - e.afii10101 = 1108; - e.afii10102 = 1109; - e.afii10103 = 1110; - e.afii10104 = 1111; - e.afii10105 = 1112; - e.afii10106 = 1113; - e.afii10107 = 1114; - e.afii10108 = 1115; - e.afii10109 = 1116; - e.afii10110 = 1118; - e.afii10145 = 1039; - e.afii10146 = 1122; - e.afii10147 = 1138; - e.afii10148 = 1140; - e.afii10192 = 63174; - e.afii10193 = 1119; - e.afii10194 = 1123; - e.afii10195 = 1139; - e.afii10196 = 1141; - e.afii10831 = 63175; - e.afii10832 = 63176; - e.afii10846 = 1241; - e.afii299 = 8206; - e.afii300 = 8207; - e.afii301 = 8205; - e.afii57381 = 1642; - e.afii57388 = 1548; - e.afii57392 = 1632; - e.afii57393 = 1633; - e.afii57394 = 1634; - e.afii57395 = 1635; - e.afii57396 = 1636; - e.afii57397 = 1637; - e.afii57398 = 1638; - e.afii57399 = 1639; - e.afii57400 = 1640; - e.afii57401 = 1641; - e.afii57403 = 1563; - e.afii57407 = 1567; - e.afii57409 = 1569; - e.afii57410 = 1570; - e.afii57411 = 1571; - e.afii57412 = 1572; - e.afii57413 = 1573; - e.afii57414 = 1574; - e.afii57415 = 1575; - e.afii57416 = 1576; - e.afii57417 = 1577; - e.afii57418 = 1578; - e.afii57419 = 1579; - e.afii57420 = 1580; - e.afii57421 = 1581; - e.afii57422 = 1582; - e.afii57423 = 1583; - e.afii57424 = 1584; - e.afii57425 = 1585; - e.afii57426 = 1586; - e.afii57427 = 1587; - e.afii57428 = 1588; - e.afii57429 = 1589; - e.afii57430 = 1590; - e.afii57431 = 1591; - e.afii57432 = 1592; - e.afii57433 = 1593; - e.afii57434 = 1594; - e.afii57440 = 1600; - e.afii57441 = 1601; - e.afii57442 = 1602; - e.afii57443 = 1603; - e.afii57444 = 1604; - e.afii57445 = 1605; - e.afii57446 = 1606; - e.afii57448 = 1608; - e.afii57449 = 1609; - e.afii57450 = 1610; - e.afii57451 = 1611; - e.afii57452 = 1612; - e.afii57453 = 1613; - e.afii57454 = 1614; - e.afii57455 = 1615; - e.afii57456 = 1616; - e.afii57457 = 1617; - e.afii57458 = 1618; - e.afii57470 = 1607; - e.afii57505 = 1700; - e.afii57506 = 1662; - e.afii57507 = 1670; - e.afii57508 = 1688; - e.afii57509 = 1711; - e.afii57511 = 1657; - e.afii57512 = 1672; - e.afii57513 = 1681; - e.afii57514 = 1722; - e.afii57519 = 1746; - e.afii57534 = 1749; - e.afii57636 = 8362; - e.afii57645 = 1470; - e.afii57658 = 1475; - e.afii57664 = 1488; - e.afii57665 = 1489; - e.afii57666 = 1490; - e.afii57667 = 1491; - e.afii57668 = 1492; - e.afii57669 = 1493; - e.afii57670 = 1494; - e.afii57671 = 1495; - e.afii57672 = 1496; - e.afii57673 = 1497; - e.afii57674 = 1498; - e.afii57675 = 1499; - e.afii57676 = 1500; - e.afii57677 = 1501; - e.afii57678 = 1502; - e.afii57679 = 1503; - e.afii57680 = 1504; - e.afii57681 = 1505; - e.afii57682 = 1506; - e.afii57683 = 1507; - e.afii57684 = 1508; - e.afii57685 = 1509; - e.afii57686 = 1510; - e.afii57687 = 1511; - e.afii57688 = 1512; - e.afii57689 = 1513; - e.afii57690 = 1514; - e.afii57694 = 64298; - e.afii57695 = 64299; - e.afii57700 = 64331; - e.afii57705 = 64287; - e.afii57716 = 1520; - e.afii57717 = 1521; - e.afii57718 = 1522; - e.afii57723 = 64309; - e.afii57793 = 1460; - e.afii57794 = 1461; - e.afii57795 = 1462; - e.afii57796 = 1467; - e.afii57797 = 1464; - e.afii57798 = 1463; - e.afii57799 = 1456; - e.afii57800 = 1458; - e.afii57801 = 1457; - e.afii57802 = 1459; - e.afii57803 = 1474; - e.afii57804 = 1473; - e.afii57806 = 1465; - e.afii57807 = 1468; - e.afii57839 = 1469; - e.afii57841 = 1471; - e.afii57842 = 1472; - e.afii57929 = 700; - e.afii61248 = 8453; - e.afii61289 = 8467; - e.afii61352 = 8470; - e.afii61573 = 8236; - e.afii61574 = 8237; - e.afii61575 = 8238; - e.afii61664 = 8204; - e.afii63167 = 1645; - e.afii64937 = 701; - e.agrave = 224; - e.agujarati = 2693; - e.agurmukhi = 2565; - e.ahiragana = 12354; - e.ahookabove = 7843; - e.aibengali = 2448; - e.aibopomofo = 12574; - e.aideva = 2320; - e.aiecyrillic = 1237; - e.aigujarati = 2704; - e.aigurmukhi = 2576; - e.aimatragurmukhi = 2632; - e.ainarabic = 1593; - e.ainfinalarabic = 65226; - e.aininitialarabic = 65227; - e.ainmedialarabic = 65228; - e.ainvertedbreve = 515; - e.aivowelsignbengali = 2504; - e.aivowelsigndeva = 2376; - e.aivowelsigngujarati = 2760; - e.akatakana = 12450; - e.akatakanahalfwidth = 65393; - e.akorean = 12623; - e.alef = 1488; - e.alefarabic = 1575; - e.alefdageshhebrew = 64304; - e.aleffinalarabic = 65166; - e.alefhamzaabovearabic = 1571; - e.alefhamzaabovefinalarabic = 65156; - e.alefhamzabelowarabic = 1573; - e.alefhamzabelowfinalarabic = 65160; - e.alefhebrew = 1488; - e.aleflamedhebrew = 64335; - e.alefmaddaabovearabic = 1570; - e.alefmaddaabovefinalarabic = 65154; - e.alefmaksuraarabic = 1609; - e.alefmaksurafinalarabic = 65264; - e.alefmaksurainitialarabic = 65267; - e.alefmaksuramedialarabic = 65268; - e.alefpatahhebrew = 64302; - e.alefqamatshebrew = 64303; - e.aleph = 8501; - e.allequal = 8780; - e.alpha = 945; - e.alphatonos = 940; - e.amacron = 257; - e.amonospace = 65345; - e.ampersand = 38; - e.ampersandmonospace = 65286; - e.ampersandsmall = 63270; - e.amsquare = 13250; - e.anbopomofo = 12578; - e.angbopomofo = 12580; - e.angbracketleft = 12296; - e.angbracketright = 12297; - e.angkhankhuthai = 3674; - e.angle = 8736; - e.anglebracketleft = 12296; - e.anglebracketleftvertical = 65087; - e.anglebracketright = 12297; - e.anglebracketrightvertical = 65088; - e.angleleft = 9001; - e.angleright = 9002; - e.angstrom = 8491; - e.anoteleia = 903; - e.anudattadeva = 2386; - e.anusvarabengali = 2434; - e.anusvaradeva = 2306; - e.anusvaragujarati = 2690; - e.aogonek = 261; - e.apaatosquare = 13056; - e.aparen = 9372; - e.apostrophearmenian = 1370; - e.apostrophemod = 700; - e.apple = 63743; - e.approaches = 8784; - e.approxequal = 8776; - e.approxequalorimage = 8786; - e.approximatelyequal = 8773; - e.araeaekorean = 12686; - e.araeakorean = 12685; - e.arc = 8978; - e.arighthalfring = 7834; - e.aring = 229; - e.aringacute = 507; - e.aringbelow = 7681; - e.arrowboth = 8596; - e.arrowdashdown = 8675; - e.arrowdashleft = 8672; - e.arrowdashright = 8674; - e.arrowdashup = 8673; - e.arrowdblboth = 8660; - e.arrowdbldown = 8659; - e.arrowdblleft = 8656; - e.arrowdblright = 8658; - e.arrowdblup = 8657; - e.arrowdown = 8595; - e.arrowdownleft = 8601; - e.arrowdownright = 8600; - e.arrowdownwhite = 8681; - e.arrowheaddownmod = 709; - e.arrowheadleftmod = 706; - e.arrowheadrightmod = 707; - e.arrowheadupmod = 708; - e.arrowhorizex = 63719; - e.arrowleft = 8592; - e.arrowleftdbl = 8656; - e.arrowleftdblstroke = 8653; - e.arrowleftoverright = 8646; - e.arrowleftwhite = 8678; - e.arrowright = 8594; - e.arrowrightdblstroke = 8655; - e.arrowrightheavy = 10142; - e.arrowrightoverleft = 8644; - e.arrowrightwhite = 8680; - e.arrowtableft = 8676; - e.arrowtabright = 8677; - e.arrowup = 8593; - e.arrowupdn = 8597; - e.arrowupdnbse = 8616; - e.arrowupdownbase = 8616; - e.arrowupleft = 8598; - e.arrowupleftofdown = 8645; - e.arrowupright = 8599; - e.arrowupwhite = 8679; - e.arrowvertex = 63718; - e.asciicircum = 94; - e.asciicircummonospace = 65342; - e.asciitilde = 126; - e.asciitildemonospace = 65374; - e.ascript = 593; - e.ascriptturned = 594; - e.asmallhiragana = 12353; - e.asmallkatakana = 12449; - e.asmallkatakanahalfwidth = 65383; - e.asterisk = 42; - e.asteriskaltonearabic = 1645; - e.asteriskarabic = 1645; - e.asteriskmath = 8727; - e.asteriskmonospace = 65290; - e.asterisksmall = 65121; - e.asterism = 8258; - e.asuperior = 63209; - e.asymptoticallyequal = 8771; - e.at = 64; - e.atilde = 227; - e.atmonospace = 65312; - e.atsmall = 65131; - e.aturned = 592; - e.aubengali = 2452; - e.aubopomofo = 12576; - e.audeva = 2324; - e.augujarati = 2708; - e.augurmukhi = 2580; - e.aulengthmarkbengali = 2519; - e.aumatragurmukhi = 2636; - e.auvowelsignbengali = 2508; - e.auvowelsigndeva = 2380; - e.auvowelsigngujarati = 2764; - e.avagrahadeva = 2365; - e.aybarmenian = 1377; - e.ayin = 1506; - e.ayinaltonehebrew = 64288; - e.ayinhebrew = 1506; - e.b = 98; - e.babengali = 2476; - e.backslash = 92; - e.backslashmonospace = 65340; - e.badeva = 2348; - e.bagujarati = 2732; - e.bagurmukhi = 2604; - e.bahiragana = 12400; - e.bahtthai = 3647; - e.bakatakana = 12496; - e.bar = 124; - e.barmonospace = 65372; - e.bbopomofo = 12549; - e.bcircle = 9425; - e.bdotaccent = 7683; - e.bdotbelow = 7685; - e.beamedsixteenthnotes = 9836; - e.because = 8757; - e.becyrillic = 1073; - e.beharabic = 1576; - e.behfinalarabic = 65168; - e.behinitialarabic = 65169; - e.behiragana = 12409; - e.behmedialarabic = 65170; - e.behmeeminitialarabic = 64671; - e.behmeemisolatedarabic = 64520; - e.behnoonfinalarabic = 64621; - e.bekatakana = 12505; - e.benarmenian = 1378; - e.bet = 1489; - e.beta = 946; - e.betasymbolgreek = 976; - e.betdagesh = 64305; - e.betdageshhebrew = 64305; - e.bethebrew = 1489; - e.betrafehebrew = 64332; - e.bhabengali = 2477; - e.bhadeva = 2349; - e.bhagujarati = 2733; - e.bhagurmukhi = 2605; - e.bhook = 595; - e.bihiragana = 12403; - e.bikatakana = 12499; - e.bilabialclick = 664; - e.bindigurmukhi = 2562; - e.birusquare = 13105; - e.blackcircle = 9679; - e.blackdiamond = 9670; - e.blackdownpointingtriangle = 9660; - e.blackleftpointingpointer = 9668; - e.blackleftpointingtriangle = 9664; - e.blacklenticularbracketleft = 12304; - e.blacklenticularbracketleftvertical = 65083; - e.blacklenticularbracketright = 12305; - e.blacklenticularbracketrightvertical = 65084; - e.blacklowerlefttriangle = 9699; - e.blacklowerrighttriangle = 9698; - e.blackrectangle = 9644; - e.blackrightpointingpointer = 9658; - e.blackrightpointingtriangle = 9654; - e.blacksmallsquare = 9642; - e.blacksmilingface = 9787; - e.blacksquare = 9632; - e.blackstar = 9733; - e.blackupperlefttriangle = 9700; - e.blackupperrighttriangle = 9701; - e.blackuppointingsmalltriangle = 9652; - e.blackuppointingtriangle = 9650; - e.blank = 9251; - e.blinebelow = 7687; - e.block = 9608; - e.bmonospace = 65346; - e.bobaimaithai = 3610; - e.bohiragana = 12412; - e.bokatakana = 12508; - e.bparen = 9373; - e.bqsquare = 13251; - e.braceex = 63732; - e.braceleft = 123; - e.braceleftbt = 63731; - e.braceleftmid = 63730; - e.braceleftmonospace = 65371; - e.braceleftsmall = 65115; - e.bracelefttp = 63729; - e.braceleftvertical = 65079; - e.braceright = 125; - e.bracerightbt = 63742; - e.bracerightmid = 63741; - e.bracerightmonospace = 65373; - e.bracerightsmall = 65116; - e.bracerighttp = 63740; - e.bracerightvertical = 65080; - e.bracketleft = 91; - e.bracketleftbt = 63728; - e.bracketleftex = 63727; - e.bracketleftmonospace = 65339; - e.bracketlefttp = 63726; - e.bracketright = 93; - e.bracketrightbt = 63739; - e.bracketrightex = 63738; - e.bracketrightmonospace = 65341; - e.bracketrighttp = 63737; - e.breve = 728; - e.brevebelowcmb = 814; - e.brevecmb = 774; - e.breveinvertedbelowcmb = 815; - e.breveinvertedcmb = 785; - e.breveinverteddoublecmb = 865; - e.bridgebelowcmb = 810; - e.bridgeinvertedbelowcmb = 826; - e.brokenbar = 166; - e.bstroke = 384; - e.bsuperior = 63210; - e.btopbar = 387; - e.buhiragana = 12406; - e.bukatakana = 12502; - e.bullet = 8226; - e.bulletinverse = 9688; - e.bulletoperator = 8729; - e.bullseye = 9678; - e.c = 99; - e.caarmenian = 1390; - e.cabengali = 2458; - e.cacute = 263; - e.cadeva = 2330; - e.cagujarati = 2714; - e.cagurmukhi = 2586; - e.calsquare = 13192; - e.candrabindubengali = 2433; - e.candrabinducmb = 784; - e.candrabindudeva = 2305; - e.candrabindugujarati = 2689; - e.capslock = 8682; - e.careof = 8453; - e.caron = 711; - e.caronbelowcmb = 812; - e.caroncmb = 780; - e.carriagereturn = 8629; - e.cbopomofo = 12568; - e.ccaron = 269; - e.ccedilla = 231; - e.ccedillaacute = 7689; - e.ccircle = 9426; - e.ccircumflex = 265; - e.ccurl = 597; - e.cdot = 267; - e.cdotaccent = 267; - e.cdsquare = 13253; - e.cedilla = 184; - e.cedillacmb = 807; - e.cent = 162; - e.centigrade = 8451; - e.centinferior = 63199; - e.centmonospace = 65504; - e.centoldstyle = 63394; - e.centsuperior = 63200; - e.chaarmenian = 1401; - e.chabengali = 2459; - e.chadeva = 2331; - e.chagujarati = 2715; - e.chagurmukhi = 2587; - e.chbopomofo = 12564; - e.cheabkhasiancyrillic = 1213; - e.checkmark = 10003; - e.checyrillic = 1095; - e.chedescenderabkhasiancyrillic = 1215; - e.chedescendercyrillic = 1207; - e.chedieresiscyrillic = 1269; - e.cheharmenian = 1395; - e.chekhakassiancyrillic = 1228; - e.cheverticalstrokecyrillic = 1209; - e.chi = 967; - e.chieuchacirclekorean = 12919; - e.chieuchaparenkorean = 12823; - e.chieuchcirclekorean = 12905; - e.chieuchkorean = 12618; - e.chieuchparenkorean = 12809; - e.chochangthai = 3594; - e.chochanthai = 3592; - e.chochingthai = 3593; - e.chochoethai = 3596; - e.chook = 392; - e.cieucacirclekorean = 12918; - e.cieucaparenkorean = 12822; - e.cieuccirclekorean = 12904; - e.cieuckorean = 12616; - e.cieucparenkorean = 12808; - e.cieucuparenkorean = 12828; - e.circle = 9675; - e.circlecopyrt = 169; - e.circlemultiply = 8855; - e.circleot = 8857; - e.circleplus = 8853; - e.circlepostalmark = 12342; - e.circlewithlefthalfblack = 9680; - e.circlewithrighthalfblack = 9681; - e.circumflex = 710; - e.circumflexbelowcmb = 813; - e.circumflexcmb = 770; - e.clear = 8999; - e.clickalveolar = 450; - e.clickdental = 448; - e.clicklateral = 449; - e.clickretroflex = 451; - e.club = 9827; - e.clubsuitblack = 9827; - e.clubsuitwhite = 9831; - e.cmcubedsquare = 13220; - e.cmonospace = 65347; - e.cmsquaredsquare = 13216; - e.coarmenian = 1409; - e.colon = 58; - e.colonmonetary = 8353; - e.colonmonospace = 65306; - e.colonsign = 8353; - e.colonsmall = 65109; - e.colontriangularhalfmod = 721; - e.colontriangularmod = 720; - e.comma = 44; - e.commaabovecmb = 787; - e.commaaboverightcmb = 789; - e.commaaccent = 63171; - e.commaarabic = 1548; - e.commaarmenian = 1373; - e.commainferior = 63201; - e.commamonospace = 65292; - e.commareversedabovecmb = 788; - e.commareversedmod = 701; - e.commasmall = 65104; - e.commasuperior = 63202; - e.commaturnedabovecmb = 786; - e.commaturnedmod = 699; - e.compass = 9788; - e.congruent = 8773; - e.contourintegral = 8750; - e.control = 8963; - e.controlACK = 6; - e.controlBEL = 7; - e.controlBS = 8; - e.controlCAN = 24; - e.controlCR = 13; - e.controlDC1 = 17; - e.controlDC2 = 18; - e.controlDC3 = 19; - e.controlDC4 = 20; - e.controlDEL = 127; - e.controlDLE = 16; - e.controlEM = 25; - e.controlENQ = 5; - e.controlEOT = 4; - e.controlESC = 27; - e.controlETB = 23; - e.controlETX = 3; - e.controlFF = 12; - e.controlFS = 28; - e.controlGS = 29; - e.controlHT = 9; - e.controlLF = 10; - e.controlNAK = 21; - e.controlNULL = 0; - e.controlRS = 30; - e.controlSI = 15; - e.controlSO = 14; - e.controlSOT = 2; - e.controlSTX = 1; - e.controlSUB = 26; - e.controlSYN = 22; - e.controlUS = 31; - e.controlVT = 11; - e.copyright = 169; - e.copyrightsans = 63721; - e.copyrightserif = 63193; - e.cornerbracketleft = 12300; - e.cornerbracketlefthalfwidth = 65378; - e.cornerbracketleftvertical = 65089; - e.cornerbracketright = 12301; - e.cornerbracketrighthalfwidth = 65379; - e.cornerbracketrightvertical = 65090; - e.corporationsquare = 13183; - e.cosquare = 13255; - e.coverkgsquare = 13254; - e.cparen = 9374; - e.cruzeiro = 8354; - e.cstretched = 663; - e.curlyand = 8911; - e.curlyor = 8910; - e.currency = 164; - e.cyrBreve = 63185; - e.cyrFlex = 63186; - e.cyrbreve = 63188; - e.cyrflex = 63189; - e.d = 100; - e.daarmenian = 1380; - e.dabengali = 2470; - e.dadarabic = 1590; - e.dadeva = 2342; - e.dadfinalarabic = 65214; - e.dadinitialarabic = 65215; - e.dadmedialarabic = 65216; - e.dagesh = 1468; - e.dageshhebrew = 1468; - e.dagger = 8224; - e.daggerdbl = 8225; - e.dagujarati = 2726; - e.dagurmukhi = 2598; - e.dahiragana = 12384; - e.dakatakana = 12480; - e.dalarabic = 1583; - e.dalet = 1491; - e.daletdagesh = 64307; - e.daletdageshhebrew = 64307; - e.dalethebrew = 1491; - e.dalfinalarabic = 65194; - e.dammaarabic = 1615; - e.dammalowarabic = 1615; - e.dammatanaltonearabic = 1612; - e.dammatanarabic = 1612; - e.danda = 2404; - e.dargahebrew = 1447; - e.dargalefthebrew = 1447; - e.dasiapneumatacyrilliccmb = 1157; - e.dblGrave = 63187; - e.dblanglebracketleft = 12298; - e.dblanglebracketleftvertical = 65085; - e.dblanglebracketright = 12299; - e.dblanglebracketrightvertical = 65086; - e.dblarchinvertedbelowcmb = 811; - e.dblarrowleft = 8660; - e.dblarrowright = 8658; - e.dbldanda = 2405; - e.dblgrave = 63190; - e.dblgravecmb = 783; - e.dblintegral = 8748; - e.dbllowline = 8215; - e.dbllowlinecmb = 819; - e.dbloverlinecmb = 831; - e.dblprimemod = 698; - e.dblverticalbar = 8214; - e.dblverticallineabovecmb = 782; - e.dbopomofo = 12553; - e.dbsquare = 13256; - e.dcaron = 271; - e.dcedilla = 7697; - e.dcircle = 9427; - e.dcircumflexbelow = 7699; - e.dcroat = 273; - e.ddabengali = 2465; - e.ddadeva = 2337; - e.ddagujarati = 2721; - e.ddagurmukhi = 2593; - e.ddalarabic = 1672; - e.ddalfinalarabic = 64393; - e.dddhadeva = 2396; - e.ddhabengali = 2466; - e.ddhadeva = 2338; - e.ddhagujarati = 2722; - e.ddhagurmukhi = 2594; - e.ddotaccent = 7691; - e.ddotbelow = 7693; - e.decimalseparatorarabic = 1643; - e.decimalseparatorpersian = 1643; - e.decyrillic = 1076; - e.degree = 176; - e.dehihebrew = 1453; - e.dehiragana = 12391; - e.deicoptic = 1007; - e.dekatakana = 12487; - e.deleteleft = 9003; - e.deleteright = 8998; - e.delta = 948; - e.deltaturned = 397; - e.denominatorminusonenumeratorbengali = 2552; - e.dezh = 676; - e.dhabengali = 2471; - e.dhadeva = 2343; - e.dhagujarati = 2727; - e.dhagurmukhi = 2599; - e.dhook = 599; - e.dialytikatonos = 901; - e.dialytikatonoscmb = 836; - e.diamond = 9830; - e.diamondsuitwhite = 9826; - e.dieresis = 168; - e.dieresisacute = 63191; - e.dieresisbelowcmb = 804; - e.dieresiscmb = 776; - e.dieresisgrave = 63192; - e.dieresistonos = 901; - e.dihiragana = 12386; - e.dikatakana = 12482; - e.dittomark = 12291; - e.divide = 247; - e.divides = 8739; - e.divisionslash = 8725; - e.djecyrillic = 1106; - e.dkshade = 9619; - e.dlinebelow = 7695; - e.dlsquare = 13207; - e.dmacron = 273; - e.dmonospace = 65348; - e.dnblock = 9604; - e.dochadathai = 3598; - e.dodekthai = 3604; - e.dohiragana = 12393; - e.dokatakana = 12489; - e.dollar = 36; - e.dollarinferior = 63203; - e.dollarmonospace = 65284; - e.dollaroldstyle = 63268; - e.dollarsmall = 65129; - e.dollarsuperior = 63204; - e.dong = 8363; - e.dorusquare = 13094; - e.dotaccent = 729; - e.dotaccentcmb = 775; - e.dotbelowcmb = 803; - e.dotbelowcomb = 803; - e.dotkatakana = 12539; - e.dotlessi = 305; - e.dotlessj = 63166; - e.dotlessjstrokehook = 644; - e.dotmath = 8901; - e.dottedcircle = 9676; - e.doubleyodpatah = 64287; - e.doubleyodpatahhebrew = 64287; - e.downtackbelowcmb = 798; - e.downtackmod = 725; - e.dparen = 9375; - e.dsuperior = 63211; - e.dtail = 598; - e.dtopbar = 396; - e.duhiragana = 12389; - e.dukatakana = 12485; - e.dz = 499; - e.dzaltone = 675; - e.dzcaron = 454; - e.dzcurl = 677; - e.dzeabkhasiancyrillic = 1249; - e.dzecyrillic = 1109; - e.dzhecyrillic = 1119; - e.e = 101; - e.eacute = 233; - e.earth = 9793; - e.ebengali = 2447; - e.ebopomofo = 12572; - e.ebreve = 277; - e.ecandradeva = 2317; - e.ecandragujarati = 2701; - e.ecandravowelsigndeva = 2373; - e.ecandravowelsigngujarati = 2757; - e.ecaron = 283; - e.ecedillabreve = 7709; - e.echarmenian = 1381; - e.echyiwnarmenian = 1415; - e.ecircle = 9428; - e.ecircumflex = 234; - e.ecircumflexacute = 7871; - e.ecircumflexbelow = 7705; - e.ecircumflexdotbelow = 7879; - e.ecircumflexgrave = 7873; - e.ecircumflexhookabove = 7875; - e.ecircumflextilde = 7877; - e.ecyrillic = 1108; - e.edblgrave = 517; - e.edeva = 2319; - e.edieresis = 235; - e.edot = 279; - e.edotaccent = 279; - e.edotbelow = 7865; - e.eegurmukhi = 2575; - e.eematragurmukhi = 2631; - e.efcyrillic = 1092; - e.egrave = 232; - e.egujarati = 2703; - e.eharmenian = 1383; - e.ehbopomofo = 12573; - e.ehiragana = 12360; - e.ehookabove = 7867; - e.eibopomofo = 12575; - e.eight = 56; - e.eightarabic = 1640; - e.eightbengali = 2542; - e.eightcircle = 9319; - e.eightcircleinversesansserif = 10129; - e.eightdeva = 2414; - e.eighteencircle = 9329; - e.eighteenparen = 9349; - e.eighteenperiod = 9369; - e.eightgujarati = 2798; - e.eightgurmukhi = 2670; - e.eighthackarabic = 1640; - e.eighthangzhou = 12328; - e.eighthnotebeamed = 9835; - e.eightideographicparen = 12839; - e.eightinferior = 8328; - e.eightmonospace = 65304; - e.eightoldstyle = 63288; - e.eightparen = 9339; - e.eightperiod = 9359; - e.eightpersian = 1784; - e.eightroman = 8567; - e.eightsuperior = 8312; - e.eightthai = 3672; - e.einvertedbreve = 519; - e.eiotifiedcyrillic = 1125; - e.ekatakana = 12456; - e.ekatakanahalfwidth = 65396; - e.ekonkargurmukhi = 2676; - e.ekorean = 12628; - e.elcyrillic = 1083; - e.element = 8712; - e.elevencircle = 9322; - e.elevenparen = 9342; - e.elevenperiod = 9362; - e.elevenroman = 8570; - e.ellipsis = 8230; - e.ellipsisvertical = 8942; - e.emacron = 275; - e.emacronacute = 7703; - e.emacrongrave = 7701; - e.emcyrillic = 1084; - e.emdash = 8212; - e.emdashvertical = 65073; - e.emonospace = 65349; - e.emphasismarkarmenian = 1371; - e.emptyset = 8709; - e.enbopomofo = 12579; - e.encyrillic = 1085; - e.endash = 8211; - e.endashvertical = 65074; - e.endescendercyrillic = 1187; - e.eng = 331; - e.engbopomofo = 12581; - e.enghecyrillic = 1189; - e.enhookcyrillic = 1224; - e.enspace = 8194; - e.eogonek = 281; - e.eokorean = 12627; - e.eopen = 603; - e.eopenclosed = 666; - e.eopenreversed = 604; - e.eopenreversedclosed = 606; - e.eopenreversedhook = 605; - e.eparen = 9376; - e.epsilon = 949; - e.epsilontonos = 941; - e.equal = 61; - e.equalmonospace = 65309; - e.equalsmall = 65126; - e.equalsuperior = 8316; - e.equivalence = 8801; - e.erbopomofo = 12582; - e.ercyrillic = 1088; - e.ereversed = 600; - e.ereversedcyrillic = 1101; - e.escyrillic = 1089; - e.esdescendercyrillic = 1195; - e.esh = 643; - e.eshcurl = 646; - e.eshortdeva = 2318; - e.eshortvowelsigndeva = 2374; - e.eshreversedloop = 426; - e.eshsquatreversed = 645; - e.esmallhiragana = 12359; - e.esmallkatakana = 12455; - e.esmallkatakanahalfwidth = 65386; - e.estimated = 8494; - e.esuperior = 63212; - e.eta = 951; - e.etarmenian = 1384; - e.etatonos = 942; - e.eth = 240; - e.etilde = 7869; - e.etildebelow = 7707; - e.etnahtafoukhhebrew = 1425; - e.etnahtafoukhlefthebrew = 1425; - e.etnahtahebrew = 1425; - e.etnahtalefthebrew = 1425; - e.eturned = 477; - e.eukorean = 12641; - e.euro = 8364; - e.evowelsignbengali = 2503; - e.evowelsigndeva = 2375; - e.evowelsigngujarati = 2759; - e.exclam = 33; - e.exclamarmenian = 1372; - e.exclamdbl = 8252; - e.exclamdown = 161; - e.exclamdownsmall = 63393; - e.exclammonospace = 65281; - e.exclamsmall = 63265; - e.existential = 8707; - e.ezh = 658; - e.ezhcaron = 495; - e.ezhcurl = 659; - e.ezhreversed = 441; - e.ezhtail = 442; - e.f = 102; - e.fadeva = 2398; - e.fagurmukhi = 2654; - e.fahrenheit = 8457; - e.fathaarabic = 1614; - e.fathalowarabic = 1614; - e.fathatanarabic = 1611; - e.fbopomofo = 12552; - e.fcircle = 9429; - e.fdotaccent = 7711; - e.feharabic = 1601; - e.feharmenian = 1414; - e.fehfinalarabic = 65234; - e.fehinitialarabic = 65235; - e.fehmedialarabic = 65236; - e.feicoptic = 997; - e.female = 9792; - e.ff = 64256; - e.f_f = 64256; - e.ffi = 64259; - e.f_f_i = 64259; - e.ffl = 64260; - e.f_f_l = 64260; - e.fi = 64257; - e.f_i = 64257; - e.fifteencircle = 9326; - e.fifteenparen = 9346; - e.fifteenperiod = 9366; - e.figuredash = 8210; - e.filledbox = 9632; - e.filledrect = 9644; - e.finalkaf = 1498; - e.finalkafdagesh = 64314; - e.finalkafdageshhebrew = 64314; - e.finalkafhebrew = 1498; - e.finalmem = 1501; - e.finalmemhebrew = 1501; - e.finalnun = 1503; - e.finalnunhebrew = 1503; - e.finalpe = 1507; - e.finalpehebrew = 1507; - e.finaltsadi = 1509; - e.finaltsadihebrew = 1509; - e.firsttonechinese = 713; - e.fisheye = 9673; - e.fitacyrillic = 1139; - e.five = 53; - e.fivearabic = 1637; - e.fivebengali = 2539; - e.fivecircle = 9316; - e.fivecircleinversesansserif = 10126; - e.fivedeva = 2411; - e.fiveeighths = 8541; - e.fivegujarati = 2795; - e.fivegurmukhi = 2667; - e.fivehackarabic = 1637; - e.fivehangzhou = 12325; - e.fiveideographicparen = 12836; - e.fiveinferior = 8325; - e.fivemonospace = 65301; - e.fiveoldstyle = 63285; - e.fiveparen = 9336; - e.fiveperiod = 9356; - e.fivepersian = 1781; - e.fiveroman = 8564; - e.fivesuperior = 8309; - e.fivethai = 3669; - e.fl = 64258; - e.f_l = 64258; - e.florin = 402; - e.fmonospace = 65350; - e.fmsquare = 13209; - e.fofanthai = 3615; - e.fofathai = 3613; - e.fongmanthai = 3663; - e.forall = 8704; - e.four = 52; - e.fourarabic = 1636; - e.fourbengali = 2538; - e.fourcircle = 9315; - e.fourcircleinversesansserif = 10125; - e.fourdeva = 2410; - e.fourgujarati = 2794; - e.fourgurmukhi = 2666; - e.fourhackarabic = 1636; - e.fourhangzhou = 12324; - e.fourideographicparen = 12835; - e.fourinferior = 8324; - e.fourmonospace = 65300; - e.fournumeratorbengali = 2551; - e.fouroldstyle = 63284; - e.fourparen = 9335; - e.fourperiod = 9355; - e.fourpersian = 1780; - e.fourroman = 8563; - e.foursuperior = 8308; - e.fourteencircle = 9325; - e.fourteenparen = 9345; - e.fourteenperiod = 9365; - e.fourthai = 3668; - e.fourthtonechinese = 715; - e.fparen = 9377; - e.fraction = 8260; - e.franc = 8355; - e.g = 103; - e.gabengali = 2455; - e.gacute = 501; - e.gadeva = 2327; - e.gafarabic = 1711; - e.gaffinalarabic = 64403; - e.gafinitialarabic = 64404; - e.gafmedialarabic = 64405; - e.gagujarati = 2711; - e.gagurmukhi = 2583; - e.gahiragana = 12364; - e.gakatakana = 12460; - e.gamma = 947; - e.gammalatinsmall = 611; - e.gammasuperior = 736; - e.gangiacoptic = 1003; - e.gbopomofo = 12557; - e.gbreve = 287; - e.gcaron = 487; - e.gcedilla = 291; - e.gcircle = 9430; - e.gcircumflex = 285; - e.gcommaaccent = 291; - e.gdot = 289; - e.gdotaccent = 289; - e.gecyrillic = 1075; - e.gehiragana = 12370; - e.gekatakana = 12466; - e.geometricallyequal = 8785; - e.gereshaccenthebrew = 1436; - e.gereshhebrew = 1523; - e.gereshmuqdamhebrew = 1437; - e.germandbls = 223; - e.gershayimaccenthebrew = 1438; - e.gershayimhebrew = 1524; - e.getamark = 12307; - e.ghabengali = 2456; - e.ghadarmenian = 1394; - e.ghadeva = 2328; - e.ghagujarati = 2712; - e.ghagurmukhi = 2584; - e.ghainarabic = 1594; - e.ghainfinalarabic = 65230; - e.ghaininitialarabic = 65231; - e.ghainmedialarabic = 65232; - e.ghemiddlehookcyrillic = 1173; - e.ghestrokecyrillic = 1171; - e.gheupturncyrillic = 1169; - e.ghhadeva = 2394; - e.ghhagurmukhi = 2650; - e.ghook = 608; - e.ghzsquare = 13203; - e.gihiragana = 12366; - e.gikatakana = 12462; - e.gimarmenian = 1379; - e.gimel = 1490; - e.gimeldagesh = 64306; - e.gimeldageshhebrew = 64306; - e.gimelhebrew = 1490; - e.gjecyrillic = 1107; - e.glottalinvertedstroke = 446; - e.glottalstop = 660; - e.glottalstopinverted = 662; - e.glottalstopmod = 704; - e.glottalstopreversed = 661; - e.glottalstopreversedmod = 705; - e.glottalstopreversedsuperior = 740; - e.glottalstopstroke = 673; - e.glottalstopstrokereversed = 674; - e.gmacron = 7713; - e.gmonospace = 65351; - e.gohiragana = 12372; - e.gokatakana = 12468; - e.gparen = 9378; - e.gpasquare = 13228; - e.gradient = 8711; - e.grave = 96; - e.gravebelowcmb = 790; - e.gravecmb = 768; - e.gravecomb = 768; - e.gravedeva = 2387; - e.gravelowmod = 718; - e.gravemonospace = 65344; - e.gravetonecmb = 832; - e.greater = 62; - e.greaterequal = 8805; - e.greaterequalorless = 8923; - e.greatermonospace = 65310; - e.greaterorequivalent = 8819; - e.greaterorless = 8823; - e.greateroverequal = 8807; - e.greatersmall = 65125; - e.gscript = 609; - e.gstroke = 485; - e.guhiragana = 12368; - e.guillemotleft = 171; - e.guillemotright = 187; - e.guilsinglleft = 8249; - e.guilsinglright = 8250; - e.gukatakana = 12464; - e.guramusquare = 13080; - e.gysquare = 13257; - e.h = 104; - e.haabkhasiancyrillic = 1193; - e.haaltonearabic = 1729; - e.habengali = 2489; - e.hadescendercyrillic = 1203; - e.hadeva = 2361; - e.hagujarati = 2745; - e.hagurmukhi = 2617; - e.haharabic = 1581; - e.hahfinalarabic = 65186; - e.hahinitialarabic = 65187; - e.hahiragana = 12399; - e.hahmedialarabic = 65188; - e.haitusquare = 13098; - e.hakatakana = 12495; - e.hakatakanahalfwidth = 65418; - e.halantgurmukhi = 2637; - e.hamzaarabic = 1569; - e.hamzalowarabic = 1569; - e.hangulfiller = 12644; - e.hardsigncyrillic = 1098; - e.harpoonleftbarbup = 8636; - e.harpoonrightbarbup = 8640; - e.hasquare = 13258; - e.hatafpatah = 1458; - e.hatafpatah16 = 1458; - e.hatafpatah23 = 1458; - e.hatafpatah2f = 1458; - e.hatafpatahhebrew = 1458; - e.hatafpatahnarrowhebrew = 1458; - e.hatafpatahquarterhebrew = 1458; - e.hatafpatahwidehebrew = 1458; - e.hatafqamats = 1459; - e.hatafqamats1b = 1459; - e.hatafqamats28 = 1459; - e.hatafqamats34 = 1459; - e.hatafqamatshebrew = 1459; - e.hatafqamatsnarrowhebrew = 1459; - e.hatafqamatsquarterhebrew = 1459; - e.hatafqamatswidehebrew = 1459; - e.hatafsegol = 1457; - e.hatafsegol17 = 1457; - e.hatafsegol24 = 1457; - e.hatafsegol30 = 1457; - e.hatafsegolhebrew = 1457; - e.hatafsegolnarrowhebrew = 1457; - e.hatafsegolquarterhebrew = 1457; - e.hatafsegolwidehebrew = 1457; - e.hbar = 295; - e.hbopomofo = 12559; - e.hbrevebelow = 7723; - e.hcedilla = 7721; - e.hcircle = 9431; - e.hcircumflex = 293; - e.hdieresis = 7719; - e.hdotaccent = 7715; - e.hdotbelow = 7717; - e.he = 1492; - e.heart = 9829; - e.heartsuitblack = 9829; - e.heartsuitwhite = 9825; - e.hedagesh = 64308; - e.hedageshhebrew = 64308; - e.hehaltonearabic = 1729; - e.heharabic = 1607; - e.hehebrew = 1492; - e.hehfinalaltonearabic = 64423; - e.hehfinalalttwoarabic = 65258; - e.hehfinalarabic = 65258; - e.hehhamzaabovefinalarabic = 64421; - e.hehhamzaaboveisolatedarabic = 64420; - e.hehinitialaltonearabic = 64424; - e.hehinitialarabic = 65259; - e.hehiragana = 12408; - e.hehmedialaltonearabic = 64425; - e.hehmedialarabic = 65260; - e.heiseierasquare = 13179; - e.hekatakana = 12504; - e.hekatakanahalfwidth = 65421; - e.hekutaarusquare = 13110; - e.henghook = 615; - e.herutusquare = 13113; - e.het = 1495; - e.hethebrew = 1495; - e.hhook = 614; - e.hhooksuperior = 689; - e.hieuhacirclekorean = 12923; - e.hieuhaparenkorean = 12827; - e.hieuhcirclekorean = 12909; - e.hieuhkorean = 12622; - e.hieuhparenkorean = 12813; - e.hihiragana = 12402; - e.hikatakana = 12498; - e.hikatakanahalfwidth = 65419; - e.hiriq = 1460; - e.hiriq14 = 1460; - e.hiriq21 = 1460; - e.hiriq2d = 1460; - e.hiriqhebrew = 1460; - e.hiriqnarrowhebrew = 1460; - e.hiriqquarterhebrew = 1460; - e.hiriqwidehebrew = 1460; - e.hlinebelow = 7830; - e.hmonospace = 65352; - e.hoarmenian = 1392; - e.hohipthai = 3627; - e.hohiragana = 12411; - e.hokatakana = 12507; - e.hokatakanahalfwidth = 65422; - e.holam = 1465; - e.holam19 = 1465; - e.holam26 = 1465; - e.holam32 = 1465; - e.holamhebrew = 1465; - e.holamnarrowhebrew = 1465; - e.holamquarterhebrew = 1465; - e.holamwidehebrew = 1465; - e.honokhukthai = 3630; - e.hookabovecomb = 777; - e.hookcmb = 777; - e.hookpalatalizedbelowcmb = 801; - e.hookretroflexbelowcmb = 802; - e.hoonsquare = 13122; - e.horicoptic = 1001; - e.horizontalbar = 8213; - e.horncmb = 795; - e.hotsprings = 9832; - e.house = 8962; - e.hparen = 9379; - e.hsuperior = 688; - e.hturned = 613; - e.huhiragana = 12405; - e.huiitosquare = 13107; - e.hukatakana = 12501; - e.hukatakanahalfwidth = 65420; - e.hungarumlaut = 733; - e.hungarumlautcmb = 779; - e.hv = 405; - e.hyphen = 45; - e.hypheninferior = 63205; - e.hyphenmonospace = 65293; - e.hyphensmall = 65123; - e.hyphensuperior = 63206; - e.hyphentwo = 8208; - e.i = 105; - e.iacute = 237; - e.iacyrillic = 1103; - e.ibengali = 2439; - e.ibopomofo = 12583; - e.ibreve = 301; - e.icaron = 464; - e.icircle = 9432; - e.icircumflex = 238; - e.icyrillic = 1110; - e.idblgrave = 521; - e.ideographearthcircle = 12943; - e.ideographfirecircle = 12939; - e.ideographicallianceparen = 12863; - e.ideographiccallparen = 12858; - e.ideographiccentrecircle = 12965; - e.ideographicclose = 12294; - e.ideographiccomma = 12289; - e.ideographiccommaleft = 65380; - e.ideographiccongratulationparen = 12855; - e.ideographiccorrectcircle = 12963; - e.ideographicearthparen = 12847; - e.ideographicenterpriseparen = 12861; - e.ideographicexcellentcircle = 12957; - e.ideographicfestivalparen = 12864; - e.ideographicfinancialcircle = 12950; - e.ideographicfinancialparen = 12854; - e.ideographicfireparen = 12843; - e.ideographichaveparen = 12850; - e.ideographichighcircle = 12964; - e.ideographiciterationmark = 12293; - e.ideographiclaborcircle = 12952; - e.ideographiclaborparen = 12856; - e.ideographicleftcircle = 12967; - e.ideographiclowcircle = 12966; - e.ideographicmedicinecircle = 12969; - e.ideographicmetalparen = 12846; - e.ideographicmoonparen = 12842; - e.ideographicnameparen = 12852; - e.ideographicperiod = 12290; - e.ideographicprintcircle = 12958; - e.ideographicreachparen = 12867; - e.ideographicrepresentparen = 12857; - e.ideographicresourceparen = 12862; - e.ideographicrightcircle = 12968; - e.ideographicsecretcircle = 12953; - e.ideographicselfparen = 12866; - e.ideographicsocietyparen = 12851; - e.ideographicspace = 12288; - e.ideographicspecialparen = 12853; - e.ideographicstockparen = 12849; - e.ideographicstudyparen = 12859; - e.ideographicsunparen = 12848; - e.ideographicsuperviseparen = 12860; - e.ideographicwaterparen = 12844; - e.ideographicwoodparen = 12845; - e.ideographiczero = 12295; - e.ideographmetalcircle = 12942; - e.ideographmooncircle = 12938; - e.ideographnamecircle = 12948; - e.ideographsuncircle = 12944; - e.ideographwatercircle = 12940; - e.ideographwoodcircle = 12941; - e.ideva = 2311; - e.idieresis = 239; - e.idieresisacute = 7727; - e.idieresiscyrillic = 1253; - e.idotbelow = 7883; - e.iebrevecyrillic = 1239; - e.iecyrillic = 1077; - e.ieungacirclekorean = 12917; - e.ieungaparenkorean = 12821; - e.ieungcirclekorean = 12903; - e.ieungkorean = 12615; - e.ieungparenkorean = 12807; - e.igrave = 236; - e.igujarati = 2695; - e.igurmukhi = 2567; - e.ihiragana = 12356; - e.ihookabove = 7881; - e.iibengali = 2440; - e.iicyrillic = 1080; - e.iideva = 2312; - e.iigujarati = 2696; - e.iigurmukhi = 2568; - e.iimatragurmukhi = 2624; - e.iinvertedbreve = 523; - e.iishortcyrillic = 1081; - e.iivowelsignbengali = 2496; - e.iivowelsigndeva = 2368; - e.iivowelsigngujarati = 2752; - e.ij = 307; - e.ikatakana = 12452; - e.ikatakanahalfwidth = 65394; - e.ikorean = 12643; - e.ilde = 732; - e.iluyhebrew = 1452; - e.imacron = 299; - e.imacroncyrillic = 1251; - e.imageorapproximatelyequal = 8787; - e.imatragurmukhi = 2623; - e.imonospace = 65353; - e.increment = 8710; - e.infinity = 8734; - e.iniarmenian = 1387; - e.integral = 8747; - e.integralbottom = 8993; - e.integralbt = 8993; - e.integralex = 63733; - e.integraltop = 8992; - e.integraltp = 8992; - e.intersection = 8745; - e.intisquare = 13061; - e.invbullet = 9688; - e.invcircle = 9689; - e.invsmileface = 9787; - e.iocyrillic = 1105; - e.iogonek = 303; - e.iota = 953; - e.iotadieresis = 970; - e.iotadieresistonos = 912; - e.iotalatin = 617; - e.iotatonos = 943; - e.iparen = 9380; - e.irigurmukhi = 2674; - e.ismallhiragana = 12355; - e.ismallkatakana = 12451; - e.ismallkatakanahalfwidth = 65384; - e.issharbengali = 2554; - e.istroke = 616; - e.isuperior = 63213; - e.iterationhiragana = 12445; - e.iterationkatakana = 12541; - e.itilde = 297; - e.itildebelow = 7725; - e.iubopomofo = 12585; - e.iucyrillic = 1102; - e.ivowelsignbengali = 2495; - e.ivowelsigndeva = 2367; - e.ivowelsigngujarati = 2751; - e.izhitsacyrillic = 1141; - e.izhitsadblgravecyrillic = 1143; - e.j = 106; - e.jaarmenian = 1393; - e.jabengali = 2460; - e.jadeva = 2332; - e.jagujarati = 2716; - e.jagurmukhi = 2588; - e.jbopomofo = 12560; - e.jcaron = 496; - e.jcircle = 9433; - e.jcircumflex = 309; - e.jcrossedtail = 669; - e.jdotlessstroke = 607; - e.jecyrillic = 1112; - e.jeemarabic = 1580; - e.jeemfinalarabic = 65182; - e.jeeminitialarabic = 65183; - e.jeemmedialarabic = 65184; - e.jeharabic = 1688; - e.jehfinalarabic = 64395; - e.jhabengali = 2461; - e.jhadeva = 2333; - e.jhagujarati = 2717; - e.jhagurmukhi = 2589; - e.jheharmenian = 1403; - e.jis = 12292; - e.jmonospace = 65354; - e.jparen = 9381; - e.jsuperior = 690; - e.k = 107; - e.kabashkircyrillic = 1185; - e.kabengali = 2453; - e.kacute = 7729; - e.kacyrillic = 1082; - e.kadescendercyrillic = 1179; - e.kadeva = 2325; - e.kaf = 1499; - e.kafarabic = 1603; - e.kafdagesh = 64315; - e.kafdageshhebrew = 64315; - e.kaffinalarabic = 65242; - e.kafhebrew = 1499; - e.kafinitialarabic = 65243; - e.kafmedialarabic = 65244; - e.kafrafehebrew = 64333; - e.kagujarati = 2709; - e.kagurmukhi = 2581; - e.kahiragana = 12363; - e.kahookcyrillic = 1220; - e.kakatakana = 12459; - e.kakatakanahalfwidth = 65398; - e.kappa = 954; - e.kappasymbolgreek = 1008; - e.kapyeounmieumkorean = 12657; - e.kapyeounphieuphkorean = 12676; - e.kapyeounpieupkorean = 12664; - e.kapyeounssangpieupkorean = 12665; - e.karoriisquare = 13069; - e.kashidaautoarabic = 1600; - e.kashidaautonosidebearingarabic = 1600; - e.kasmallkatakana = 12533; - e.kasquare = 13188; - e.kasraarabic = 1616; - e.kasratanarabic = 1613; - e.kastrokecyrillic = 1183; - e.katahiraprolongmarkhalfwidth = 65392; - e.kaverticalstrokecyrillic = 1181; - e.kbopomofo = 12558; - e.kcalsquare = 13193; - e.kcaron = 489; - e.kcedilla = 311; - e.kcircle = 9434; - e.kcommaaccent = 311; - e.kdotbelow = 7731; - e.keharmenian = 1412; - e.kehiragana = 12369; - e.kekatakana = 12465; - e.kekatakanahalfwidth = 65401; - e.kenarmenian = 1391; - e.kesmallkatakana = 12534; - e.kgreenlandic = 312; - e.khabengali = 2454; - e.khacyrillic = 1093; - e.khadeva = 2326; - e.khagujarati = 2710; - e.khagurmukhi = 2582; - e.khaharabic = 1582; - e.khahfinalarabic = 65190; - e.khahinitialarabic = 65191; - e.khahmedialarabic = 65192; - e.kheicoptic = 999; - e.khhadeva = 2393; - e.khhagurmukhi = 2649; - e.khieukhacirclekorean = 12920; - e.khieukhaparenkorean = 12824; - e.khieukhcirclekorean = 12906; - e.khieukhkorean = 12619; - e.khieukhparenkorean = 12810; - e.khokhaithai = 3586; - e.khokhonthai = 3589; - e.khokhuatthai = 3587; - e.khokhwaithai = 3588; - e.khomutthai = 3675; - e.khook = 409; - e.khorakhangthai = 3590; - e.khzsquare = 13201; - e.kihiragana = 12365; - e.kikatakana = 12461; - e.kikatakanahalfwidth = 65399; - e.kiroguramusquare = 13077; - e.kiromeetorusquare = 13078; - e.kirosquare = 13076; - e.kiyeokacirclekorean = 12910; - e.kiyeokaparenkorean = 12814; - e.kiyeokcirclekorean = 12896; - e.kiyeokkorean = 12593; - e.kiyeokparenkorean = 12800; - e.kiyeoksioskorean = 12595; - e.kjecyrillic = 1116; - e.klinebelow = 7733; - e.klsquare = 13208; - e.kmcubedsquare = 13222; - e.kmonospace = 65355; - e.kmsquaredsquare = 13218; - e.kohiragana = 12371; - e.kohmsquare = 13248; - e.kokaithai = 3585; - e.kokatakana = 12467; - e.kokatakanahalfwidth = 65402; - e.kooposquare = 13086; - e.koppacyrillic = 1153; - e.koreanstandardsymbol = 12927; - e.koroniscmb = 835; - e.kparen = 9382; - e.kpasquare = 13226; - e.ksicyrillic = 1135; - e.ktsquare = 13263; - e.kturned = 670; - e.kuhiragana = 12367; - e.kukatakana = 12463; - e.kukatakanahalfwidth = 65400; - e.kvsquare = 13240; - e.kwsquare = 13246; - e.l = 108; - e.labengali = 2482; - e.lacute = 314; - e.ladeva = 2354; - e.lagujarati = 2738; - e.lagurmukhi = 2610; - e.lakkhangyaothai = 3653; - e.lamaleffinalarabic = 65276; - e.lamalefhamzaabovefinalarabic = 65272; - e.lamalefhamzaaboveisolatedarabic = 65271; - e.lamalefhamzabelowfinalarabic = 65274; - e.lamalefhamzabelowisolatedarabic = 65273; - e.lamalefisolatedarabic = 65275; - e.lamalefmaddaabovefinalarabic = 65270; - e.lamalefmaddaaboveisolatedarabic = 65269; - e.lamarabic = 1604; - e.lambda = 955; - e.lambdastroke = 411; - e.lamed = 1500; - e.lameddagesh = 64316; - e.lameddageshhebrew = 64316; - e.lamedhebrew = 1500; - e.lamfinalarabic = 65246; - e.lamhahinitialarabic = 64714; - e.laminitialarabic = 65247; - e.lamjeeminitialarabic = 64713; - e.lamkhahinitialarabic = 64715; - e.lamlamhehisolatedarabic = 65010; - e.lammedialarabic = 65248; - e.lammeemhahinitialarabic = 64904; - e.lammeeminitialarabic = 64716; - e.largecircle = 9711; - e.lbar = 410; - e.lbelt = 620; - e.lbopomofo = 12556; - e.lcaron = 318; - e.lcedilla = 316; - e.lcircle = 9435; - e.lcircumflexbelow = 7741; - e.lcommaaccent = 316; - e.ldot = 320; - e.ldotaccent = 320; - e.ldotbelow = 7735; - e.ldotbelowmacron = 7737; - e.leftangleabovecmb = 794; - e.lefttackbelowcmb = 792; - e.less = 60; - e.lessequal = 8804; - e.lessequalorgreater = 8922; - e.lessmonospace = 65308; - e.lessorequivalent = 8818; - e.lessorgreater = 8822; - e.lessoverequal = 8806; - e.lesssmall = 65124; - e.lezh = 622; - e.lfblock = 9612; - e.lhookretroflex = 621; - e.lira = 8356; - e.liwnarmenian = 1388; - e.lj = 457; - e.ljecyrillic = 1113; - e.ll = 63168; - e.lladeva = 2355; - e.llagujarati = 2739; - e.llinebelow = 7739; - e.llladeva = 2356; - e.llvocalicbengali = 2529; - e.llvocalicdeva = 2401; - e.llvocalicvowelsignbengali = 2531; - e.llvocalicvowelsigndeva = 2403; - e.lmiddletilde = 619; - e.lmonospace = 65356; - e.lmsquare = 13264; - e.lochulathai = 3628; - e.logicaland = 8743; - e.logicalnot = 172; - e.logicalnotreversed = 8976; - e.logicalor = 8744; - e.lolingthai = 3621; - e.longs = 383; - e.lowlinecenterline = 65102; - e.lowlinecmb = 818; - e.lowlinedashed = 65101; - e.lozenge = 9674; - e.lparen = 9383; - e.lslash = 322; - e.lsquare = 8467; - e.lsuperior = 63214; - e.ltshade = 9617; - e.luthai = 3622; - e.lvocalicbengali = 2444; - e.lvocalicdeva = 2316; - e.lvocalicvowelsignbengali = 2530; - e.lvocalicvowelsigndeva = 2402; - e.lxsquare = 13267; - e.m = 109; - e.mabengali = 2478; - e.macron = 175; - e.macronbelowcmb = 817; - e.macroncmb = 772; - e.macronlowmod = 717; - e.macronmonospace = 65507; - e.macute = 7743; - e.madeva = 2350; - e.magujarati = 2734; - e.magurmukhi = 2606; - e.mahapakhhebrew = 1444; - e.mahapakhlefthebrew = 1444; - e.mahiragana = 12414; - e.maichattawalowleftthai = 63637; - e.maichattawalowrightthai = 63636; - e.maichattawathai = 3659; - e.maichattawaupperleftthai = 63635; - e.maieklowleftthai = 63628; - e.maieklowrightthai = 63627; - e.maiekthai = 3656; - e.maiekupperleftthai = 63626; - e.maihanakatleftthai = 63620; - e.maihanakatthai = 3633; - e.maitaikhuleftthai = 63625; - e.maitaikhuthai = 3655; - e.maitholowleftthai = 63631; - e.maitholowrightthai = 63630; - e.maithothai = 3657; - e.maithoupperleftthai = 63629; - e.maitrilowleftthai = 63634; - e.maitrilowrightthai = 63633; - e.maitrithai = 3658; - e.maitriupperleftthai = 63632; - e.maiyamokthai = 3654; - e.makatakana = 12510; - e.makatakanahalfwidth = 65423; - e.male = 9794; - e.mansyonsquare = 13127; - e.maqafhebrew = 1470; - e.mars = 9794; - e.masoracirclehebrew = 1455; - e.masquare = 13187; - e.mbopomofo = 12551; - e.mbsquare = 13268; - e.mcircle = 9436; - e.mcubedsquare = 13221; - e.mdotaccent = 7745; - e.mdotbelow = 7747; - e.meemarabic = 1605; - e.meemfinalarabic = 65250; - e.meeminitialarabic = 65251; - e.meemmedialarabic = 65252; - e.meemmeeminitialarabic = 64721; - e.meemmeemisolatedarabic = 64584; - e.meetorusquare = 13133; - e.mehiragana = 12417; - e.meizierasquare = 13182; - e.mekatakana = 12513; - e.mekatakanahalfwidth = 65426; - e.mem = 1502; - e.memdagesh = 64318; - e.memdageshhebrew = 64318; - e.memhebrew = 1502; - e.menarmenian = 1396; - e.merkhahebrew = 1445; - e.merkhakefulahebrew = 1446; - e.merkhakefulalefthebrew = 1446; - e.merkhalefthebrew = 1445; - e.mhook = 625; - e.mhzsquare = 13202; - e.middledotkatakanahalfwidth = 65381; - e.middot = 183; - e.mieumacirclekorean = 12914; - e.mieumaparenkorean = 12818; - e.mieumcirclekorean = 12900; - e.mieumkorean = 12609; - e.mieumpansioskorean = 12656; - e.mieumparenkorean = 12804; - e.mieumpieupkorean = 12654; - e.mieumsioskorean = 12655; - e.mihiragana = 12415; - e.mikatakana = 12511; - e.mikatakanahalfwidth = 65424; - e.minus = 8722; - e.minusbelowcmb = 800; - e.minuscircle = 8854; - e.minusmod = 727; - e.minusplus = 8723; - e.minute = 8242; - e.miribaarusquare = 13130; - e.mirisquare = 13129; - e.mlonglegturned = 624; - e.mlsquare = 13206; - e.mmcubedsquare = 13219; - e.mmonospace = 65357; - e.mmsquaredsquare = 13215; - e.mohiragana = 12418; - e.mohmsquare = 13249; - e.mokatakana = 12514; - e.mokatakanahalfwidth = 65427; - e.molsquare = 13270; - e.momathai = 3617; - e.moverssquare = 13223; - e.moverssquaredsquare = 13224; - e.mparen = 9384; - e.mpasquare = 13227; - e.mssquare = 13235; - e.msuperior = 63215; - e.mturned = 623; - e.mu = 181; - e.mu1 = 181; - e.muasquare = 13186; - e.muchgreater = 8811; - e.muchless = 8810; - e.mufsquare = 13196; - e.mugreek = 956; - e.mugsquare = 13197; - e.muhiragana = 12416; - e.mukatakana = 12512; - e.mukatakanahalfwidth = 65425; - e.mulsquare = 13205; - e.multiply = 215; - e.mumsquare = 13211; - e.munahhebrew = 1443; - e.munahlefthebrew = 1443; - e.musicalnote = 9834; - e.musicalnotedbl = 9835; - e.musicflatsign = 9837; - e.musicsharpsign = 9839; - e.mussquare = 13234; - e.muvsquare = 13238; - e.muwsquare = 13244; - e.mvmegasquare = 13241; - e.mvsquare = 13239; - e.mwmegasquare = 13247; - e.mwsquare = 13245; - e.n = 110; - e.nabengali = 2472; - e.nabla = 8711; - e.nacute = 324; - e.nadeva = 2344; - e.nagujarati = 2728; - e.nagurmukhi = 2600; - e.nahiragana = 12394; - e.nakatakana = 12490; - e.nakatakanahalfwidth = 65413; - e.napostrophe = 329; - e.nasquare = 13185; - e.nbopomofo = 12555; - e.nbspace = 160; - e.ncaron = 328; - e.ncedilla = 326; - e.ncircle = 9437; - e.ncircumflexbelow = 7755; - e.ncommaaccent = 326; - e.ndotaccent = 7749; - e.ndotbelow = 7751; - e.nehiragana = 12397; - e.nekatakana = 12493; - e.nekatakanahalfwidth = 65416; - e.newsheqelsign = 8362; - e.nfsquare = 13195; - e.ngabengali = 2457; - e.ngadeva = 2329; - e.ngagujarati = 2713; - e.ngagurmukhi = 2585; - e.ngonguthai = 3591; - e.nhiragana = 12435; - e.nhookleft = 626; - e.nhookretroflex = 627; - e.nieunacirclekorean = 12911; - e.nieunaparenkorean = 12815; - e.nieuncieuckorean = 12597; - e.nieuncirclekorean = 12897; - e.nieunhieuhkorean = 12598; - e.nieunkorean = 12596; - e.nieunpansioskorean = 12648; - e.nieunparenkorean = 12801; - e.nieunsioskorean = 12647; - e.nieuntikeutkorean = 12646; - e.nihiragana = 12395; - e.nikatakana = 12491; - e.nikatakanahalfwidth = 65414; - e.nikhahitleftthai = 63641; - e.nikhahitthai = 3661; - e.nine = 57; - e.ninearabic = 1641; - e.ninebengali = 2543; - e.ninecircle = 9320; - e.ninecircleinversesansserif = 10130; - e.ninedeva = 2415; - e.ninegujarati = 2799; - e.ninegurmukhi = 2671; - e.ninehackarabic = 1641; - e.ninehangzhou = 12329; - e.nineideographicparen = 12840; - e.nineinferior = 8329; - e.ninemonospace = 65305; - e.nineoldstyle = 63289; - e.nineparen = 9340; - e.nineperiod = 9360; - e.ninepersian = 1785; - e.nineroman = 8568; - e.ninesuperior = 8313; - e.nineteencircle = 9330; - e.nineteenparen = 9350; - e.nineteenperiod = 9370; - e.ninethai = 3673; - e.nj = 460; - e.njecyrillic = 1114; - e.nkatakana = 12531; - e.nkatakanahalfwidth = 65437; - e.nlegrightlong = 414; - e.nlinebelow = 7753; - e.nmonospace = 65358; - e.nmsquare = 13210; - e.nnabengali = 2467; - e.nnadeva = 2339; - e.nnagujarati = 2723; - e.nnagurmukhi = 2595; - e.nnnadeva = 2345; - e.nohiragana = 12398; - e.nokatakana = 12494; - e.nokatakanahalfwidth = 65417; - e.nonbreakingspace = 160; - e.nonenthai = 3603; - e.nonuthai = 3609; - e.noonarabic = 1606; - e.noonfinalarabic = 65254; - e.noonghunnaarabic = 1722; - e.noonghunnafinalarabic = 64415; - e.nooninitialarabic = 65255; - e.noonjeeminitialarabic = 64722; - e.noonjeemisolatedarabic = 64587; - e.noonmedialarabic = 65256; - e.noonmeeminitialarabic = 64725; - e.noonmeemisolatedarabic = 64590; - e.noonnoonfinalarabic = 64653; - e.notcontains = 8716; - e.notelement = 8713; - e.notelementof = 8713; - e.notequal = 8800; - e.notgreater = 8815; - e.notgreaternorequal = 8817; - e.notgreaternorless = 8825; - e.notidentical = 8802; - e.notless = 8814; - e.notlessnorequal = 8816; - e.notparallel = 8742; - e.notprecedes = 8832; - e.notsubset = 8836; - e.notsucceeds = 8833; - e.notsuperset = 8837; - e.nowarmenian = 1398; - e.nparen = 9385; - e.nssquare = 13233; - e.nsuperior = 8319; - e.ntilde = 241; - e.nu = 957; - e.nuhiragana = 12396; - e.nukatakana = 12492; - e.nukatakanahalfwidth = 65415; - e.nuktabengali = 2492; - e.nuktadeva = 2364; - e.nuktagujarati = 2748; - e.nuktagurmukhi = 2620; - e.numbersign = 35; - e.numbersignmonospace = 65283; - e.numbersignsmall = 65119; - e.numeralsigngreek = 884; - e.numeralsignlowergreek = 885; - e.numero = 8470; - e.nun = 1504; - e.nundagesh = 64320; - e.nundageshhebrew = 64320; - e.nunhebrew = 1504; - e.nvsquare = 13237; - e.nwsquare = 13243; - e.nyabengali = 2462; - e.nyadeva = 2334; - e.nyagujarati = 2718; - e.nyagurmukhi = 2590; - e.o = 111; - e.oacute = 243; - e.oangthai = 3629; - e.obarred = 629; - e.obarredcyrillic = 1257; - e.obarreddieresiscyrillic = 1259; - e.obengali = 2451; - e.obopomofo = 12571; - e.obreve = 335; - e.ocandradeva = 2321; - e.ocandragujarati = 2705; - e.ocandravowelsigndeva = 2377; - e.ocandravowelsigngujarati = 2761; - e.ocaron = 466; - e.ocircle = 9438; - e.ocircumflex = 244; - e.ocircumflexacute = 7889; - e.ocircumflexdotbelow = 7897; - e.ocircumflexgrave = 7891; - e.ocircumflexhookabove = 7893; - e.ocircumflextilde = 7895; - e.ocyrillic = 1086; - e.odblacute = 337; - e.odblgrave = 525; - e.odeva = 2323; - e.odieresis = 246; - e.odieresiscyrillic = 1255; - e.odotbelow = 7885; - e.oe = 339; - e.oekorean = 12634; - e.ogonek = 731; - e.ogonekcmb = 808; - e.ograve = 242; - e.ogujarati = 2707; - e.oharmenian = 1413; - e.ohiragana = 12362; - e.ohookabove = 7887; - e.ohorn = 417; - e.ohornacute = 7899; - e.ohorndotbelow = 7907; - e.ohorngrave = 7901; - e.ohornhookabove = 7903; - e.ohorntilde = 7905; - e.ohungarumlaut = 337; - e.oi = 419; - e.oinvertedbreve = 527; - e.okatakana = 12458; - e.okatakanahalfwidth = 65397; - e.okorean = 12631; - e.olehebrew = 1451; - e.omacron = 333; - e.omacronacute = 7763; - e.omacrongrave = 7761; - e.omdeva = 2384; - e.omega = 969; - e.omega1 = 982; - e.omegacyrillic = 1121; - e.omegalatinclosed = 631; - e.omegaroundcyrillic = 1147; - e.omegatitlocyrillic = 1149; - e.omegatonos = 974; - e.omgujarati = 2768; - e.omicron = 959; - e.omicrontonos = 972; - e.omonospace = 65359; - e.one = 49; - e.onearabic = 1633; - e.onebengali = 2535; - e.onecircle = 9312; - e.onecircleinversesansserif = 10122; - e.onedeva = 2407; - e.onedotenleader = 8228; - e.oneeighth = 8539; - e.onefitted = 63196; - e.onegujarati = 2791; - e.onegurmukhi = 2663; - e.onehackarabic = 1633; - e.onehalf = 189; - e.onehangzhou = 12321; - e.oneideographicparen = 12832; - e.oneinferior = 8321; - e.onemonospace = 65297; - e.onenumeratorbengali = 2548; - e.oneoldstyle = 63281; - e.oneparen = 9332; - e.oneperiod = 9352; - e.onepersian = 1777; - e.onequarter = 188; - e.oneroman = 8560; - e.onesuperior = 185; - e.onethai = 3665; - e.onethird = 8531; - e.oogonek = 491; - e.oogonekmacron = 493; - e.oogurmukhi = 2579; - e.oomatragurmukhi = 2635; - e.oopen = 596; - e.oparen = 9386; - e.openbullet = 9702; - e.option = 8997; - e.ordfeminine = 170; - e.ordmasculine = 186; - e.orthogonal = 8735; - e.oshortdeva = 2322; - e.oshortvowelsigndeva = 2378; - e.oslash = 248; - e.oslashacute = 511; - e.osmallhiragana = 12361; - e.osmallkatakana = 12457; - e.osmallkatakanahalfwidth = 65387; - e.ostrokeacute = 511; - e.osuperior = 63216; - e.otcyrillic = 1151; - e.otilde = 245; - e.otildeacute = 7757; - e.otildedieresis = 7759; - e.oubopomofo = 12577; - e.overline = 8254; - e.overlinecenterline = 65098; - e.overlinecmb = 773; - e.overlinedashed = 65097; - e.overlinedblwavy = 65100; - e.overlinewavy = 65099; - e.overscore = 175; - e.ovowelsignbengali = 2507; - e.ovowelsigndeva = 2379; - e.ovowelsigngujarati = 2763; - e.p = 112; - e.paampssquare = 13184; - e.paasentosquare = 13099; - e.pabengali = 2474; - e.pacute = 7765; - e.padeva = 2346; - e.pagedown = 8671; - e.pageup = 8670; - e.pagujarati = 2730; - e.pagurmukhi = 2602; - e.pahiragana = 12401; - e.paiyannoithai = 3631; - e.pakatakana = 12497; - e.palatalizationcyrilliccmb = 1156; - e.palochkacyrillic = 1216; - e.pansioskorean = 12671; - e.paragraph = 182; - e.parallel = 8741; - e.parenleft = 40; - e.parenleftaltonearabic = 64830; - e.parenleftbt = 63725; - e.parenleftex = 63724; - e.parenleftinferior = 8333; - e.parenleftmonospace = 65288; - e.parenleftsmall = 65113; - e.parenleftsuperior = 8317; - e.parenlefttp = 63723; - e.parenleftvertical = 65077; - e.parenright = 41; - e.parenrightaltonearabic = 64831; - e.parenrightbt = 63736; - e.parenrightex = 63735; - e.parenrightinferior = 8334; - e.parenrightmonospace = 65289; - e.parenrightsmall = 65114; - e.parenrightsuperior = 8318; - e.parenrighttp = 63734; - e.parenrightvertical = 65078; - e.partialdiff = 8706; - e.paseqhebrew = 1472; - e.pashtahebrew = 1433; - e.pasquare = 13225; - e.patah = 1463; - e.patah11 = 1463; - e.patah1d = 1463; - e.patah2a = 1463; - e.patahhebrew = 1463; - e.patahnarrowhebrew = 1463; - e.patahquarterhebrew = 1463; - e.patahwidehebrew = 1463; - e.pazerhebrew = 1441; - e.pbopomofo = 12550; - e.pcircle = 9439; - e.pdotaccent = 7767; - e.pe = 1508; - e.pecyrillic = 1087; - e.pedagesh = 64324; - e.pedageshhebrew = 64324; - e.peezisquare = 13115; - e.pefinaldageshhebrew = 64323; - e.peharabic = 1662; - e.peharmenian = 1402; - e.pehebrew = 1508; - e.pehfinalarabic = 64343; - e.pehinitialarabic = 64344; - e.pehiragana = 12410; - e.pehmedialarabic = 64345; - e.pekatakana = 12506; - e.pemiddlehookcyrillic = 1191; - e.perafehebrew = 64334; - e.percent = 37; - e.percentarabic = 1642; - e.percentmonospace = 65285; - e.percentsmall = 65130; - e.period = 46; - e.periodarmenian = 1417; - e.periodcentered = 183; - e.periodhalfwidth = 65377; - e.periodinferior = 63207; - e.periodmonospace = 65294; - e.periodsmall = 65106; - e.periodsuperior = 63208; - e.perispomenigreekcmb = 834; - e.perpendicular = 8869; - e.perthousand = 8240; - e.peseta = 8359; - e.pfsquare = 13194; - e.phabengali = 2475; - e.phadeva = 2347; - e.phagujarati = 2731; - e.phagurmukhi = 2603; - e.phi = 966; - e.phi1 = 981; - e.phieuphacirclekorean = 12922; - e.phieuphaparenkorean = 12826; - e.phieuphcirclekorean = 12908; - e.phieuphkorean = 12621; - e.phieuphparenkorean = 12812; - e.philatin = 632; - e.phinthuthai = 3642; - e.phisymbolgreek = 981; - e.phook = 421; - e.phophanthai = 3614; - e.phophungthai = 3612; - e.phosamphaothai = 3616; - e.pi = 960; - e.pieupacirclekorean = 12915; - e.pieupaparenkorean = 12819; - e.pieupcieuckorean = 12662; - e.pieupcirclekorean = 12901; - e.pieupkiyeokkorean = 12658; - e.pieupkorean = 12610; - e.pieupparenkorean = 12805; - e.pieupsioskiyeokkorean = 12660; - e.pieupsioskorean = 12612; - e.pieupsiostikeutkorean = 12661; - e.pieupthieuthkorean = 12663; - e.pieuptikeutkorean = 12659; - e.pihiragana = 12404; - e.pikatakana = 12500; - e.pisymbolgreek = 982; - e.piwrarmenian = 1411; - e.planckover2pi = 8463; - e.planckover2pi1 = 8463; - e.plus = 43; - e.plusbelowcmb = 799; - e.pluscircle = 8853; - e.plusminus = 177; - e.plusmod = 726; - e.plusmonospace = 65291; - e.plussmall = 65122; - e.plussuperior = 8314; - e.pmonospace = 65360; - e.pmsquare = 13272; - e.pohiragana = 12413; - e.pointingindexdownwhite = 9759; - e.pointingindexleftwhite = 9756; - e.pointingindexrightwhite = 9758; - e.pointingindexupwhite = 9757; - e.pokatakana = 12509; - e.poplathai = 3611; - e.postalmark = 12306; - e.postalmarkface = 12320; - e.pparen = 9387; - e.precedes = 8826; - e.prescription = 8478; - e.primemod = 697; - e.primereversed = 8245; - e.product = 8719; - e.projective = 8965; - e.prolongedkana = 12540; - e.propellor = 8984; - e.propersubset = 8834; - e.propersuperset = 8835; - e.proportion = 8759; - e.proportional = 8733; - e.psi = 968; - e.psicyrillic = 1137; - e.psilipneumatacyrilliccmb = 1158; - e.pssquare = 13232; - e.puhiragana = 12407; - e.pukatakana = 12503; - e.pvsquare = 13236; - e.pwsquare = 13242; - e.q = 113; - e.qadeva = 2392; - e.qadmahebrew = 1448; - e.qafarabic = 1602; - e.qaffinalarabic = 65238; - e.qafinitialarabic = 65239; - e.qafmedialarabic = 65240; - e.qamats = 1464; - e.qamats10 = 1464; - e.qamats1a = 1464; - e.qamats1c = 1464; - e.qamats27 = 1464; - e.qamats29 = 1464; - e.qamats33 = 1464; - e.qamatsde = 1464; - e.qamatshebrew = 1464; - e.qamatsnarrowhebrew = 1464; - e.qamatsqatanhebrew = 1464; - e.qamatsqatannarrowhebrew = 1464; - e.qamatsqatanquarterhebrew = 1464; - e.qamatsqatanwidehebrew = 1464; - e.qamatsquarterhebrew = 1464; - e.qamatswidehebrew = 1464; - e.qarneyparahebrew = 1439; - e.qbopomofo = 12561; - e.qcircle = 9440; - e.qhook = 672; - e.qmonospace = 65361; - e.qof = 1511; - e.qofdagesh = 64327; - e.qofdageshhebrew = 64327; - e.qofhebrew = 1511; - e.qparen = 9388; - e.quarternote = 9833; - e.qubuts = 1467; - e.qubuts18 = 1467; - e.qubuts25 = 1467; - e.qubuts31 = 1467; - e.qubutshebrew = 1467; - e.qubutsnarrowhebrew = 1467; - e.qubutsquarterhebrew = 1467; - e.qubutswidehebrew = 1467; - e.question = 63; - e.questionarabic = 1567; - e.questionarmenian = 1374; - e.questiondown = 191; - e.questiondownsmall = 63423; - e.questiongreek = 894; - e.questionmonospace = 65311; - e.questionsmall = 63295; - e.quotedbl = 34; - e.quotedblbase = 8222; - e.quotedblleft = 8220; - e.quotedblmonospace = 65282; - e.quotedblprime = 12318; - e.quotedblprimereversed = 12317; - e.quotedblright = 8221; - e.quoteleft = 8216; - e.quoteleftreversed = 8219; - e.quotereversed = 8219; - e.quoteright = 8217; - e.quoterightn = 329; - e.quotesinglbase = 8218; - e.quotesingle = 39; - e.quotesinglemonospace = 65287; - e.r = 114; - e.raarmenian = 1404; - e.rabengali = 2480; - e.racute = 341; - e.radeva = 2352; - e.radical = 8730; - e.radicalex = 63717; - e.radoverssquare = 13230; - e.radoverssquaredsquare = 13231; - e.radsquare = 13229; - e.rafe = 1471; - e.rafehebrew = 1471; - e.ragujarati = 2736; - e.ragurmukhi = 2608; - e.rahiragana = 12425; - e.rakatakana = 12521; - e.rakatakanahalfwidth = 65431; - e.ralowerdiagonalbengali = 2545; - e.ramiddlediagonalbengali = 2544; - e.ramshorn = 612; - e.ratio = 8758; - e.rbopomofo = 12566; - e.rcaron = 345; - e.rcedilla = 343; - e.rcircle = 9441; - e.rcommaaccent = 343; - e.rdblgrave = 529; - e.rdotaccent = 7769; - e.rdotbelow = 7771; - e.rdotbelowmacron = 7773; - e.referencemark = 8251; - e.reflexsubset = 8838; - e.reflexsuperset = 8839; - e.registered = 174; - e.registersans = 63720; - e.registerserif = 63194; - e.reharabic = 1585; - e.reharmenian = 1408; - e.rehfinalarabic = 65198; - e.rehiragana = 12428; - e.rekatakana = 12524; - e.rekatakanahalfwidth = 65434; - e.resh = 1512; - e.reshdageshhebrew = 64328; - e.reshhebrew = 1512; - e.reversedtilde = 8765; - e.reviahebrew = 1431; - e.reviamugrashhebrew = 1431; - e.revlogicalnot = 8976; - e.rfishhook = 638; - e.rfishhookreversed = 639; - e.rhabengali = 2525; - e.rhadeva = 2397; - e.rho = 961; - e.rhook = 637; - e.rhookturned = 635; - e.rhookturnedsuperior = 693; - e.rhosymbolgreek = 1009; - e.rhotichookmod = 734; - e.rieulacirclekorean = 12913; - e.rieulaparenkorean = 12817; - e.rieulcirclekorean = 12899; - e.rieulhieuhkorean = 12608; - e.rieulkiyeokkorean = 12602; - e.rieulkiyeoksioskorean = 12649; - e.rieulkorean = 12601; - e.rieulmieumkorean = 12603; - e.rieulpansioskorean = 12652; - e.rieulparenkorean = 12803; - e.rieulphieuphkorean = 12607; - e.rieulpieupkorean = 12604; - e.rieulpieupsioskorean = 12651; - e.rieulsioskorean = 12605; - e.rieulthieuthkorean = 12606; - e.rieultikeutkorean = 12650; - e.rieulyeorinhieuhkorean = 12653; - e.rightangle = 8735; - e.righttackbelowcmb = 793; - e.righttriangle = 8895; - e.rihiragana = 12426; - e.rikatakana = 12522; - e.rikatakanahalfwidth = 65432; - e.ring = 730; - e.ringbelowcmb = 805; - e.ringcmb = 778; - e.ringhalfleft = 703; - e.ringhalfleftarmenian = 1369; - e.ringhalfleftbelowcmb = 796; - e.ringhalfleftcentered = 723; - e.ringhalfright = 702; - e.ringhalfrightbelowcmb = 825; - e.ringhalfrightcentered = 722; - e.rinvertedbreve = 531; - e.rittorusquare = 13137; - e.rlinebelow = 7775; - e.rlongleg = 636; - e.rlonglegturned = 634; - e.rmonospace = 65362; - e.rohiragana = 12429; - e.rokatakana = 12525; - e.rokatakanahalfwidth = 65435; - e.roruathai = 3619; - e.rparen = 9389; - e.rrabengali = 2524; - e.rradeva = 2353; - e.rragurmukhi = 2652; - e.rreharabic = 1681; - e.rrehfinalarabic = 64397; - e.rrvocalicbengali = 2528; - e.rrvocalicdeva = 2400; - e.rrvocalicgujarati = 2784; - e.rrvocalicvowelsignbengali = 2500; - e.rrvocalicvowelsigndeva = 2372; - e.rrvocalicvowelsigngujarati = 2756; - e.rsuperior = 63217; - e.rtblock = 9616; - e.rturned = 633; - e.rturnedsuperior = 692; - e.ruhiragana = 12427; - e.rukatakana = 12523; - e.rukatakanahalfwidth = 65433; - e.rupeemarkbengali = 2546; - e.rupeesignbengali = 2547; - e.rupiah = 63197; - e.ruthai = 3620; - e.rvocalicbengali = 2443; - e.rvocalicdeva = 2315; - e.rvocalicgujarati = 2699; - e.rvocalicvowelsignbengali = 2499; - e.rvocalicvowelsigndeva = 2371; - e.rvocalicvowelsigngujarati = 2755; - e.s = 115; - e.sabengali = 2488; - e.sacute = 347; - e.sacutedotaccent = 7781; - e.sadarabic = 1589; - e.sadeva = 2360; - e.sadfinalarabic = 65210; - e.sadinitialarabic = 65211; - e.sadmedialarabic = 65212; - e.sagujarati = 2744; - e.sagurmukhi = 2616; - e.sahiragana = 12373; - e.sakatakana = 12469; - e.sakatakanahalfwidth = 65403; - e.sallallahoualayhewasallamarabic = 65018; - e.samekh = 1505; - e.samekhdagesh = 64321; - e.samekhdageshhebrew = 64321; - e.samekhhebrew = 1505; - e.saraaathai = 3634; - e.saraaethai = 3649; - e.saraaimaimalaithai = 3652; - e.saraaimaimuanthai = 3651; - e.saraamthai = 3635; - e.saraathai = 3632; - e.saraethai = 3648; - e.saraiileftthai = 63622; - e.saraiithai = 3637; - e.saraileftthai = 63621; - e.saraithai = 3636; - e.saraothai = 3650; - e.saraueeleftthai = 63624; - e.saraueethai = 3639; - e.saraueleftthai = 63623; - e.sarauethai = 3638; - e.sarauthai = 3640; - e.sarauuthai = 3641; - e.sbopomofo = 12569; - e.scaron = 353; - e.scarondotaccent = 7783; - e.scedilla = 351; - e.schwa = 601; - e.schwacyrillic = 1241; - e.schwadieresiscyrillic = 1243; - e.schwahook = 602; - e.scircle = 9442; - e.scircumflex = 349; - e.scommaaccent = 537; - e.sdotaccent = 7777; - e.sdotbelow = 7779; - e.sdotbelowdotaccent = 7785; - e.seagullbelowcmb = 828; - e.second = 8243; - e.secondtonechinese = 714; - e.section = 167; - e.seenarabic = 1587; - e.seenfinalarabic = 65202; - e.seeninitialarabic = 65203; - e.seenmedialarabic = 65204; - e.segol = 1462; - e.segol13 = 1462; - e.segol1f = 1462; - e.segol2c = 1462; - e.segolhebrew = 1462; - e.segolnarrowhebrew = 1462; - e.segolquarterhebrew = 1462; - e.segoltahebrew = 1426; - e.segolwidehebrew = 1462; - e.seharmenian = 1405; - e.sehiragana = 12379; - e.sekatakana = 12475; - e.sekatakanahalfwidth = 65406; - e.semicolon = 59; - e.semicolonarabic = 1563; - e.semicolonmonospace = 65307; - e.semicolonsmall = 65108; - e.semivoicedmarkkana = 12444; - e.semivoicedmarkkanahalfwidth = 65439; - e.sentisquare = 13090; - e.sentosquare = 13091; - e.seven = 55; - e.sevenarabic = 1639; - e.sevenbengali = 2541; - e.sevencircle = 9318; - e.sevencircleinversesansserif = 10128; - e.sevendeva = 2413; - e.seveneighths = 8542; - e.sevengujarati = 2797; - e.sevengurmukhi = 2669; - e.sevenhackarabic = 1639; - e.sevenhangzhou = 12327; - e.sevenideographicparen = 12838; - e.seveninferior = 8327; - e.sevenmonospace = 65303; - e.sevenoldstyle = 63287; - e.sevenparen = 9338; - e.sevenperiod = 9358; - e.sevenpersian = 1783; - e.sevenroman = 8566; - e.sevensuperior = 8311; - e.seventeencircle = 9328; - e.seventeenparen = 9348; - e.seventeenperiod = 9368; - e.seventhai = 3671; - e.sfthyphen = 173; - e.shaarmenian = 1399; - e.shabengali = 2486; - e.shacyrillic = 1096; - e.shaddaarabic = 1617; - e.shaddadammaarabic = 64609; - e.shaddadammatanarabic = 64606; - e.shaddafathaarabic = 64608; - e.shaddakasraarabic = 64610; - e.shaddakasratanarabic = 64607; - e.shade = 9618; - e.shadedark = 9619; - e.shadelight = 9617; - e.shademedium = 9618; - e.shadeva = 2358; - e.shagujarati = 2742; - e.shagurmukhi = 2614; - e.shalshelethebrew = 1427; - e.shbopomofo = 12565; - e.shchacyrillic = 1097; - e.sheenarabic = 1588; - e.sheenfinalarabic = 65206; - e.sheeninitialarabic = 65207; - e.sheenmedialarabic = 65208; - e.sheicoptic = 995; - e.sheqel = 8362; - e.sheqelhebrew = 8362; - e.sheva = 1456; - e.sheva115 = 1456; - e.sheva15 = 1456; - e.sheva22 = 1456; - e.sheva2e = 1456; - e.shevahebrew = 1456; - e.shevanarrowhebrew = 1456; - e.shevaquarterhebrew = 1456; - e.shevawidehebrew = 1456; - e.shhacyrillic = 1211; - e.shimacoptic = 1005; - e.shin = 1513; - e.shindagesh = 64329; - e.shindageshhebrew = 64329; - e.shindageshshindot = 64300; - e.shindageshshindothebrew = 64300; - e.shindageshsindot = 64301; - e.shindageshsindothebrew = 64301; - e.shindothebrew = 1473; - e.shinhebrew = 1513; - e.shinshindot = 64298; - e.shinshindothebrew = 64298; - e.shinsindot = 64299; - e.shinsindothebrew = 64299; - e.shook = 642; - e.sigma = 963; - e.sigma1 = 962; - e.sigmafinal = 962; - e.sigmalunatesymbolgreek = 1010; - e.sihiragana = 12375; - e.sikatakana = 12471; - e.sikatakanahalfwidth = 65404; - e.siluqhebrew = 1469; - e.siluqlefthebrew = 1469; - e.similar = 8764; - e.sindothebrew = 1474; - e.siosacirclekorean = 12916; - e.siosaparenkorean = 12820; - e.sioscieuckorean = 12670; - e.sioscirclekorean = 12902; - e.sioskiyeokkorean = 12666; - e.sioskorean = 12613; - e.siosnieunkorean = 12667; - e.siosparenkorean = 12806; - e.siospieupkorean = 12669; - e.siostikeutkorean = 12668; - e.six = 54; - e.sixarabic = 1638; - e.sixbengali = 2540; - e.sixcircle = 9317; - e.sixcircleinversesansserif = 10127; - e.sixdeva = 2412; - e.sixgujarati = 2796; - e.sixgurmukhi = 2668; - e.sixhackarabic = 1638; - e.sixhangzhou = 12326; - e.sixideographicparen = 12837; - e.sixinferior = 8326; - e.sixmonospace = 65302; - e.sixoldstyle = 63286; - e.sixparen = 9337; - e.sixperiod = 9357; - e.sixpersian = 1782; - e.sixroman = 8565; - e.sixsuperior = 8310; - e.sixteencircle = 9327; - e.sixteencurrencydenominatorbengali = 2553; - e.sixteenparen = 9347; - e.sixteenperiod = 9367; - e.sixthai = 3670; - e.slash = 47; - e.slashmonospace = 65295; - e.slong = 383; - e.slongdotaccent = 7835; - e.smileface = 9786; - e.smonospace = 65363; - e.sofpasuqhebrew = 1475; - e.softhyphen = 173; - e.softsigncyrillic = 1100; - e.sohiragana = 12381; - e.sokatakana = 12477; - e.sokatakanahalfwidth = 65407; - e.soliduslongoverlaycmb = 824; - e.solidusshortoverlaycmb = 823; - e.sorusithai = 3625; - e.sosalathai = 3624; - e.sosothai = 3595; - e.sosuathai = 3626; - e.space = 32; - e.spacehackarabic = 32; - e.spade = 9824; - e.spadesuitblack = 9824; - e.spadesuitwhite = 9828; - e.sparen = 9390; - e.squarebelowcmb = 827; - e.squarecc = 13252; - e.squarecm = 13213; - e.squarediagonalcrosshatchfill = 9641; - e.squarehorizontalfill = 9636; - e.squarekg = 13199; - e.squarekm = 13214; - e.squarekmcapital = 13262; - e.squareln = 13265; - e.squarelog = 13266; - e.squaremg = 13198; - e.squaremil = 13269; - e.squaremm = 13212; - e.squaremsquared = 13217; - e.squareorthogonalcrosshatchfill = 9638; - e.squareupperlefttolowerrightfill = 9639; - e.squareupperrighttolowerleftfill = 9640; - e.squareverticalfill = 9637; - e.squarewhitewithsmallblack = 9635; - e.srsquare = 13275; - e.ssabengali = 2487; - e.ssadeva = 2359; - e.ssagujarati = 2743; - e.ssangcieuckorean = 12617; - e.ssanghieuhkorean = 12677; - e.ssangieungkorean = 12672; - e.ssangkiyeokkorean = 12594; - e.ssangnieunkorean = 12645; - e.ssangpieupkorean = 12611; - e.ssangsioskorean = 12614; - e.ssangtikeutkorean = 12600; - e.ssuperior = 63218; - e.sterling = 163; - e.sterlingmonospace = 65505; - e.strokelongoverlaycmb = 822; - e.strokeshortoverlaycmb = 821; - e.subset = 8834; - e.subsetnotequal = 8842; - e.subsetorequal = 8838; - e.succeeds = 8827; - e.suchthat = 8715; - e.suhiragana = 12377; - e.sukatakana = 12473; - e.sukatakanahalfwidth = 65405; - e.sukunarabic = 1618; - e.summation = 8721; - e.sun = 9788; - e.superset = 8835; - e.supersetnotequal = 8843; - e.supersetorequal = 8839; - e.svsquare = 13276; - e.syouwaerasquare = 13180; - e.t = 116; - e.tabengali = 2468; - e.tackdown = 8868; - e.tackleft = 8867; - e.tadeva = 2340; - e.tagujarati = 2724; - e.tagurmukhi = 2596; - e.taharabic = 1591; - e.tahfinalarabic = 65218; - e.tahinitialarabic = 65219; - e.tahiragana = 12383; - e.tahmedialarabic = 65220; - e.taisyouerasquare = 13181; - e.takatakana = 12479; - e.takatakanahalfwidth = 65408; - e.tatweelarabic = 1600; - e.tau = 964; - e.tav = 1514; - e.tavdages = 64330; - e.tavdagesh = 64330; - e.tavdageshhebrew = 64330; - e.tavhebrew = 1514; - e.tbar = 359; - e.tbopomofo = 12554; - e.tcaron = 357; - e.tccurl = 680; - e.tcedilla = 355; - e.tcheharabic = 1670; - e.tchehfinalarabic = 64379; - e.tchehinitialarabic = 64380; - e.tchehmedialarabic = 64381; - e.tcircle = 9443; - e.tcircumflexbelow = 7793; - e.tcommaaccent = 355; - e.tdieresis = 7831; - e.tdotaccent = 7787; - e.tdotbelow = 7789; - e.tecyrillic = 1090; - e.tedescendercyrillic = 1197; - e.teharabic = 1578; - e.tehfinalarabic = 65174; - e.tehhahinitialarabic = 64674; - e.tehhahisolatedarabic = 64524; - e.tehinitialarabic = 65175; - e.tehiragana = 12390; - e.tehjeeminitialarabic = 64673; - e.tehjeemisolatedarabic = 64523; - e.tehmarbutaarabic = 1577; - e.tehmarbutafinalarabic = 65172; - e.tehmedialarabic = 65176; - e.tehmeeminitialarabic = 64676; - e.tehmeemisolatedarabic = 64526; - e.tehnoonfinalarabic = 64627; - e.tekatakana = 12486; - e.tekatakanahalfwidth = 65411; - e.telephone = 8481; - e.telephoneblack = 9742; - e.telishagedolahebrew = 1440; - e.telishaqetanahebrew = 1449; - e.tencircle = 9321; - e.tenideographicparen = 12841; - e.tenparen = 9341; - e.tenperiod = 9361; - e.tenroman = 8569; - e.tesh = 679; - e.tet = 1496; - e.tetdagesh = 64312; - e.tetdageshhebrew = 64312; - e.tethebrew = 1496; - e.tetsecyrillic = 1205; - e.tevirhebrew = 1435; - e.tevirlefthebrew = 1435; - e.thabengali = 2469; - e.thadeva = 2341; - e.thagujarati = 2725; - e.thagurmukhi = 2597; - e.thalarabic = 1584; - e.thalfinalarabic = 65196; - e.thanthakhatlowleftthai = 63640; - e.thanthakhatlowrightthai = 63639; - e.thanthakhatthai = 3660; - e.thanthakhatupperleftthai = 63638; - e.theharabic = 1579; - e.thehfinalarabic = 65178; - e.thehinitialarabic = 65179; - e.thehmedialarabic = 65180; - e.thereexists = 8707; - e.therefore = 8756; - e.theta = 952; - e.theta1 = 977; - e.thetasymbolgreek = 977; - e.thieuthacirclekorean = 12921; - e.thieuthaparenkorean = 12825; - e.thieuthcirclekorean = 12907; - e.thieuthkorean = 12620; - e.thieuthparenkorean = 12811; - e.thirteencircle = 9324; - e.thirteenparen = 9344; - e.thirteenperiod = 9364; - e.thonangmonthothai = 3601; - e.thook = 429; - e.thophuthaothai = 3602; - e.thorn = 254; - e.thothahanthai = 3607; - e.thothanthai = 3600; - e.thothongthai = 3608; - e.thothungthai = 3606; - e.thousandcyrillic = 1154; - e.thousandsseparatorarabic = 1644; - e.thousandsseparatorpersian = 1644; - e.three = 51; - e.threearabic = 1635; - e.threebengali = 2537; - e.threecircle = 9314; - e.threecircleinversesansserif = 10124; - e.threedeva = 2409; - e.threeeighths = 8540; - e.threegujarati = 2793; - e.threegurmukhi = 2665; - e.threehackarabic = 1635; - e.threehangzhou = 12323; - e.threeideographicparen = 12834; - e.threeinferior = 8323; - e.threemonospace = 65299; - e.threenumeratorbengali = 2550; - e.threeoldstyle = 63283; - e.threeparen = 9334; - e.threeperiod = 9354; - e.threepersian = 1779; - e.threequarters = 190; - e.threequartersemdash = 63198; - e.threeroman = 8562; - e.threesuperior = 179; - e.threethai = 3667; - e.thzsquare = 13204; - e.tihiragana = 12385; - e.tikatakana = 12481; - e.tikatakanahalfwidth = 65409; - e.tikeutacirclekorean = 12912; - e.tikeutaparenkorean = 12816; - e.tikeutcirclekorean = 12898; - e.tikeutkorean = 12599; - e.tikeutparenkorean = 12802; - e.tilde = 732; - e.tildebelowcmb = 816; - e.tildecmb = 771; - e.tildecomb = 771; - e.tildedoublecmb = 864; - e.tildeoperator = 8764; - e.tildeoverlaycmb = 820; - e.tildeverticalcmb = 830; - e.timescircle = 8855; - e.tipehahebrew = 1430; - e.tipehalefthebrew = 1430; - e.tippigurmukhi = 2672; - e.titlocyrilliccmb = 1155; - e.tiwnarmenian = 1407; - e.tlinebelow = 7791; - e.tmonospace = 65364; - e.toarmenian = 1385; - e.tohiragana = 12392; - e.tokatakana = 12488; - e.tokatakanahalfwidth = 65412; - e.tonebarextrahighmod = 741; - e.tonebarextralowmod = 745; - e.tonebarhighmod = 742; - e.tonebarlowmod = 744; - e.tonebarmidmod = 743; - e.tonefive = 445; - e.tonesix = 389; - e.tonetwo = 424; - e.tonos = 900; - e.tonsquare = 13095; - e.topatakthai = 3599; - e.tortoiseshellbracketleft = 12308; - e.tortoiseshellbracketleftsmall = 65117; - e.tortoiseshellbracketleftvertical = 65081; - e.tortoiseshellbracketright = 12309; - e.tortoiseshellbracketrightsmall = 65118; - e.tortoiseshellbracketrightvertical = 65082; - e.totaothai = 3605; - e.tpalatalhook = 427; - e.tparen = 9391; - e.trademark = 8482; - e.trademarksans = 63722; - e.trademarkserif = 63195; - e.tretroflexhook = 648; - e.triagdn = 9660; - e.triaglf = 9668; - e.triagrt = 9658; - e.triagup = 9650; - e.ts = 678; - e.tsadi = 1510; - e.tsadidagesh = 64326; - e.tsadidageshhebrew = 64326; - e.tsadihebrew = 1510; - e.tsecyrillic = 1094; - e.tsere = 1461; - e.tsere12 = 1461; - e.tsere1e = 1461; - e.tsere2b = 1461; - e.tserehebrew = 1461; - e.tserenarrowhebrew = 1461; - e.tserequarterhebrew = 1461; - e.tserewidehebrew = 1461; - e.tshecyrillic = 1115; - e.tsuperior = 63219; - e.ttabengali = 2463; - e.ttadeva = 2335; - e.ttagujarati = 2719; - e.ttagurmukhi = 2591; - e.tteharabic = 1657; - e.ttehfinalarabic = 64359; - e.ttehinitialarabic = 64360; - e.ttehmedialarabic = 64361; - e.tthabengali = 2464; - e.tthadeva = 2336; - e.tthagujarati = 2720; - e.tthagurmukhi = 2592; - e.tturned = 647; - e.tuhiragana = 12388; - e.tukatakana = 12484; - e.tukatakanahalfwidth = 65410; - e.tusmallhiragana = 12387; - e.tusmallkatakana = 12483; - e.tusmallkatakanahalfwidth = 65391; - e.twelvecircle = 9323; - e.twelveparen = 9343; - e.twelveperiod = 9363; - e.twelveroman = 8571; - e.twentycircle = 9331; - e.twentyhangzhou = 21316; - e.twentyparen = 9351; - e.twentyperiod = 9371; - e.two = 50; - e.twoarabic = 1634; - e.twobengali = 2536; - e.twocircle = 9313; - e.twocircleinversesansserif = 10123; - e.twodeva = 2408; - e.twodotenleader = 8229; - e.twodotleader = 8229; - e.twodotleadervertical = 65072; - e.twogujarati = 2792; - e.twogurmukhi = 2664; - e.twohackarabic = 1634; - e.twohangzhou = 12322; - e.twoideographicparen = 12833; - e.twoinferior = 8322; - e.twomonospace = 65298; - e.twonumeratorbengali = 2549; - e.twooldstyle = 63282; - e.twoparen = 9333; - e.twoperiod = 9353; - e.twopersian = 1778; - e.tworoman = 8561; - e.twostroke = 443; - e.twosuperior = 178; - e.twothai = 3666; - e.twothirds = 8532; - e.u = 117; - e.uacute = 250; - e.ubar = 649; - e.ubengali = 2441; - e.ubopomofo = 12584; - e.ubreve = 365; - e.ucaron = 468; - e.ucircle = 9444; - e.ucircumflex = 251; - e.ucircumflexbelow = 7799; - e.ucyrillic = 1091; - e.udattadeva = 2385; - e.udblacute = 369; - e.udblgrave = 533; - e.udeva = 2313; - e.udieresis = 252; - e.udieresisacute = 472; - e.udieresisbelow = 7795; - e.udieresiscaron = 474; - e.udieresiscyrillic = 1265; - e.udieresisgrave = 476; - e.udieresismacron = 470; - e.udotbelow = 7909; - e.ugrave = 249; - e.ugujarati = 2697; - e.ugurmukhi = 2569; - e.uhiragana = 12358; - e.uhookabove = 7911; - e.uhorn = 432; - e.uhornacute = 7913; - e.uhorndotbelow = 7921; - e.uhorngrave = 7915; - e.uhornhookabove = 7917; - e.uhorntilde = 7919; - e.uhungarumlaut = 369; - e.uhungarumlautcyrillic = 1267; - e.uinvertedbreve = 535; - e.ukatakana = 12454; - e.ukatakanahalfwidth = 65395; - e.ukcyrillic = 1145; - e.ukorean = 12636; - e.umacron = 363; - e.umacroncyrillic = 1263; - e.umacrondieresis = 7803; - e.umatragurmukhi = 2625; - e.umonospace = 65365; - e.underscore = 95; - e.underscoredbl = 8215; - e.underscoremonospace = 65343; - e.underscorevertical = 65075; - e.underscorewavy = 65103; - e.union = 8746; - e.universal = 8704; - e.uogonek = 371; - e.uparen = 9392; - e.upblock = 9600; - e.upperdothebrew = 1476; - e.upsilon = 965; - e.upsilondieresis = 971; - e.upsilondieresistonos = 944; - e.upsilonlatin = 650; - e.upsilontonos = 973; - e.uptackbelowcmb = 797; - e.uptackmod = 724; - e.uragurmukhi = 2675; - e.uring = 367; - e.ushortcyrillic = 1118; - e.usmallhiragana = 12357; - e.usmallkatakana = 12453; - e.usmallkatakanahalfwidth = 65385; - e.ustraightcyrillic = 1199; - e.ustraightstrokecyrillic = 1201; - e.utilde = 361; - e.utildeacute = 7801; - e.utildebelow = 7797; - e.uubengali = 2442; - e.uudeva = 2314; - e.uugujarati = 2698; - e.uugurmukhi = 2570; - e.uumatragurmukhi = 2626; - e.uuvowelsignbengali = 2498; - e.uuvowelsigndeva = 2370; - e.uuvowelsigngujarati = 2754; - e.uvowelsignbengali = 2497; - e.uvowelsigndeva = 2369; - e.uvowelsigngujarati = 2753; - e.v = 118; - e.vadeva = 2357; - e.vagujarati = 2741; - e.vagurmukhi = 2613; - e.vakatakana = 12535; - e.vav = 1493; - e.vavdagesh = 64309; - e.vavdagesh65 = 64309; - e.vavdageshhebrew = 64309; - e.vavhebrew = 1493; - e.vavholam = 64331; - e.vavholamhebrew = 64331; - e.vavvavhebrew = 1520; - e.vavyodhebrew = 1521; - e.vcircle = 9445; - e.vdotbelow = 7807; - e.vecyrillic = 1074; - e.veharabic = 1700; - e.vehfinalarabic = 64363; - e.vehinitialarabic = 64364; - e.vehmedialarabic = 64365; - e.vekatakana = 12537; - e.venus = 9792; - e.verticalbar = 124; - e.verticallineabovecmb = 781; - e.verticallinebelowcmb = 809; - e.verticallinelowmod = 716; - e.verticallinemod = 712; - e.vewarmenian = 1406; - e.vhook = 651; - e.vikatakana = 12536; - e.viramabengali = 2509; - e.viramadeva = 2381; - e.viramagujarati = 2765; - e.visargabengali = 2435; - e.visargadeva = 2307; - e.visargagujarati = 2691; - e.vmonospace = 65366; - e.voarmenian = 1400; - e.voicediterationhiragana = 12446; - e.voicediterationkatakana = 12542; - e.voicedmarkkana = 12443; - e.voicedmarkkanahalfwidth = 65438; - e.vokatakana = 12538; - e.vparen = 9393; - e.vtilde = 7805; - e.vturned = 652; - e.vuhiragana = 12436; - e.vukatakana = 12532; - e.w = 119; - e.wacute = 7811; - e.waekorean = 12633; - e.wahiragana = 12431; - e.wakatakana = 12527; - e.wakatakanahalfwidth = 65436; - e.wakorean = 12632; - e.wasmallhiragana = 12430; - e.wasmallkatakana = 12526; - e.wattosquare = 13143; - e.wavedash = 12316; - e.wavyunderscorevertical = 65076; - e.wawarabic = 1608; - e.wawfinalarabic = 65262; - e.wawhamzaabovearabic = 1572; - e.wawhamzaabovefinalarabic = 65158; - e.wbsquare = 13277; - e.wcircle = 9446; - e.wcircumflex = 373; - e.wdieresis = 7813; - e.wdotaccent = 7815; - e.wdotbelow = 7817; - e.wehiragana = 12433; - e.weierstrass = 8472; - e.wekatakana = 12529; - e.wekorean = 12638; - e.weokorean = 12637; - e.wgrave = 7809; - e.whitebullet = 9702; - e.whitecircle = 9675; - e.whitecircleinverse = 9689; - e.whitecornerbracketleft = 12302; - e.whitecornerbracketleftvertical = 65091; - e.whitecornerbracketright = 12303; - e.whitecornerbracketrightvertical = 65092; - e.whitediamond = 9671; - e.whitediamondcontainingblacksmalldiamond = 9672; - e.whitedownpointingsmalltriangle = 9663; - e.whitedownpointingtriangle = 9661; - e.whiteleftpointingsmalltriangle = 9667; - e.whiteleftpointingtriangle = 9665; - e.whitelenticularbracketleft = 12310; - e.whitelenticularbracketright = 12311; - e.whiterightpointingsmalltriangle = 9657; - e.whiterightpointingtriangle = 9655; - e.whitesmallsquare = 9643; - e.whitesmilingface = 9786; - e.whitesquare = 9633; - e.whitestar = 9734; - e.whitetelephone = 9743; - e.whitetortoiseshellbracketleft = 12312; - e.whitetortoiseshellbracketright = 12313; - e.whiteuppointingsmalltriangle = 9653; - e.whiteuppointingtriangle = 9651; - e.wihiragana = 12432; - e.wikatakana = 12528; - e.wikorean = 12639; - e.wmonospace = 65367; - e.wohiragana = 12434; - e.wokatakana = 12530; - e.wokatakanahalfwidth = 65382; - e.won = 8361; - e.wonmonospace = 65510; - e.wowaenthai = 3623; - e.wparen = 9394; - e.wring = 7832; - e.wsuperior = 695; - e.wturned = 653; - e.wynn = 447; - e.x = 120; - e.xabovecmb = 829; - e.xbopomofo = 12562; - e.xcircle = 9447; - e.xdieresis = 7821; - e.xdotaccent = 7819; - e.xeharmenian = 1389; - e.xi = 958; - e.xmonospace = 65368; - e.xparen = 9395; - e.xsuperior = 739; - e.y = 121; - e.yaadosquare = 13134; - e.yabengali = 2479; - e.yacute = 253; - e.yadeva = 2351; - e.yaekorean = 12626; - e.yagujarati = 2735; - e.yagurmukhi = 2607; - e.yahiragana = 12420; - e.yakatakana = 12516; - e.yakatakanahalfwidth = 65428; - e.yakorean = 12625; - e.yamakkanthai = 3662; - e.yasmallhiragana = 12419; - e.yasmallkatakana = 12515; - e.yasmallkatakanahalfwidth = 65388; - e.yatcyrillic = 1123; - e.ycircle = 9448; - e.ycircumflex = 375; - e.ydieresis = 255; - e.ydotaccent = 7823; - e.ydotbelow = 7925; - e.yeharabic = 1610; - e.yehbarreearabic = 1746; - e.yehbarreefinalarabic = 64431; - e.yehfinalarabic = 65266; - e.yehhamzaabovearabic = 1574; - e.yehhamzaabovefinalarabic = 65162; - e.yehhamzaaboveinitialarabic = 65163; - e.yehhamzaabovemedialarabic = 65164; - e.yehinitialarabic = 65267; - e.yehmedialarabic = 65268; - e.yehmeeminitialarabic = 64733; - e.yehmeemisolatedarabic = 64600; - e.yehnoonfinalarabic = 64660; - e.yehthreedotsbelowarabic = 1745; - e.yekorean = 12630; - e.yen = 165; - e.yenmonospace = 65509; - e.yeokorean = 12629; - e.yeorinhieuhkorean = 12678; - e.yerahbenyomohebrew = 1450; - e.yerahbenyomolefthebrew = 1450; - e.yericyrillic = 1099; - e.yerudieresiscyrillic = 1273; - e.yesieungkorean = 12673; - e.yesieungpansioskorean = 12675; - e.yesieungsioskorean = 12674; - e.yetivhebrew = 1434; - e.ygrave = 7923; - e.yhook = 436; - e.yhookabove = 7927; - e.yiarmenian = 1397; - e.yicyrillic = 1111; - e.yikorean = 12642; - e.yinyang = 9775; - e.yiwnarmenian = 1410; - e.ymonospace = 65369; - e.yod = 1497; - e.yoddagesh = 64313; - e.yoddageshhebrew = 64313; - e.yodhebrew = 1497; - e.yodyodhebrew = 1522; - e.yodyodpatahhebrew = 64287; - e.yohiragana = 12424; - e.yoikorean = 12681; - e.yokatakana = 12520; - e.yokatakanahalfwidth = 65430; - e.yokorean = 12635; - e.yosmallhiragana = 12423; - e.yosmallkatakana = 12519; - e.yosmallkatakanahalfwidth = 65390; - e.yotgreek = 1011; - e.yoyaekorean = 12680; - e.yoyakorean = 12679; - e.yoyakthai = 3618; - e.yoyingthai = 3597; - e.yparen = 9396; - e.ypogegrammeni = 890; - e.ypogegrammenigreekcmb = 837; - e.yr = 422; - e.yring = 7833; - e.ysuperior = 696; - e.ytilde = 7929; - e.yturned = 654; - e.yuhiragana = 12422; - e.yuikorean = 12684; - e.yukatakana = 12518; - e.yukatakanahalfwidth = 65429; - e.yukorean = 12640; - e.yusbigcyrillic = 1131; - e.yusbigiotifiedcyrillic = 1133; - e.yuslittlecyrillic = 1127; - e.yuslittleiotifiedcyrillic = 1129; - e.yusmallhiragana = 12421; - e.yusmallkatakana = 12517; - e.yusmallkatakanahalfwidth = 65389; - e.yuyekorean = 12683; - e.yuyeokorean = 12682; - e.yyabengali = 2527; - e.yyadeva = 2399; - e.z = 122; - e.zaarmenian = 1382; - e.zacute = 378; - e.zadeva = 2395; - e.zagurmukhi = 2651; - e.zaharabic = 1592; - e.zahfinalarabic = 65222; - e.zahinitialarabic = 65223; - e.zahiragana = 12374; - e.zahmedialarabic = 65224; - e.zainarabic = 1586; - e.zainfinalarabic = 65200; - e.zakatakana = 12470; - e.zaqefgadolhebrew = 1429; - e.zaqefqatanhebrew = 1428; - e.zarqahebrew = 1432; - e.zayin = 1494; - e.zayindagesh = 64310; - e.zayindageshhebrew = 64310; - e.zayinhebrew = 1494; - e.zbopomofo = 12567; - e.zcaron = 382; - e.zcircle = 9449; - e.zcircumflex = 7825; - e.zcurl = 657; - e.zdot = 380; - e.zdotaccent = 380; - e.zdotbelow = 7827; - e.zecyrillic = 1079; - e.zedescendercyrillic = 1177; - e.zedieresiscyrillic = 1247; - e.zehiragana = 12380; - e.zekatakana = 12476; - e.zero = 48; - e.zeroarabic = 1632; - e.zerobengali = 2534; - e.zerodeva = 2406; - e.zerogujarati = 2790; - e.zerogurmukhi = 2662; - e.zerohackarabic = 1632; - e.zeroinferior = 8320; - e.zeromonospace = 65296; - e.zerooldstyle = 63280; - e.zeropersian = 1776; - e.zerosuperior = 8304; - e.zerothai = 3664; - e.zerowidthjoiner = 65279; - e.zerowidthnonjoiner = 8204; - e.zerowidthspace = 8203; - e.zeta = 950; - e.zhbopomofo = 12563; - e.zhearmenian = 1386; - e.zhebrevecyrillic = 1218; - e.zhecyrillic = 1078; - e.zhedescendercyrillic = 1175; - e.zhedieresiscyrillic = 1245; - e.zihiragana = 12376; - e.zikatakana = 12472; - e.zinorhebrew = 1454; - e.zlinebelow = 7829; - e.zmonospace = 65370; - e.zohiragana = 12382; - e.zokatakana = 12478; - e.zparen = 9397; - e.zretroflexhook = 656; - e.zstroke = 438; - e.zuhiragana = 12378; - e.zukatakana = 12474; - e[".notdef"] = 0; - e.angbracketleftbig = 9001; - e.angbracketleftBig = 9001; - e.angbracketleftbigg = 9001; - e.angbracketleftBigg = 9001; - e.angbracketrightBig = 9002; - e.angbracketrightbig = 9002; - e.angbracketrightBigg = 9002; - e.angbracketrightbigg = 9002; - e.arrowhookleft = 8618; - e.arrowhookright = 8617; - e.arrowlefttophalf = 8636; - e.arrowleftbothalf = 8637; - e.arrownortheast = 8599; - e.arrownorthwest = 8598; - e.arrowrighttophalf = 8640; - e.arrowrightbothalf = 8641; - e.arrowsoutheast = 8600; - e.arrowsouthwest = 8601; - e.backslashbig = 8726; - e.backslashBig = 8726; - e.backslashBigg = 8726; - e.backslashbigg = 8726; - e.bardbl = 8214; - e.bracehtipdownleft = 65079; - e.bracehtipdownright = 65079; - e.bracehtipupleft = 65080; - e.bracehtipupright = 65080; - e.braceleftBig = 123; - e.braceleftbig = 123; - e.braceleftbigg = 123; - e.braceleftBigg = 123; - e.bracerightBig = 125; - e.bracerightbig = 125; - e.bracerightbigg = 125; - e.bracerightBigg = 125; - e.bracketleftbig = 91; - e.bracketleftBig = 91; - e.bracketleftbigg = 91; - e.bracketleftBigg = 91; - e.bracketrightBig = 93; - e.bracketrightbig = 93; - e.bracketrightbigg = 93; - e.bracketrightBigg = 93; - e.ceilingleftbig = 8968; - e.ceilingleftBig = 8968; - e.ceilingleftBigg = 8968; - e.ceilingleftbigg = 8968; - e.ceilingrightbig = 8969; - e.ceilingrightBig = 8969; - e.ceilingrightbigg = 8969; - e.ceilingrightBigg = 8969; - e.circledotdisplay = 8857; - e.circledottext = 8857; - e.circlemultiplydisplay = 8855; - e.circlemultiplytext = 8855; - e.circleplusdisplay = 8853; - e.circleplustext = 8853; - e.contintegraldisplay = 8750; - e.contintegraltext = 8750; - e.coproductdisplay = 8720; - e.coproducttext = 8720; - e.floorleftBig = 8970; - e.floorleftbig = 8970; - e.floorleftbigg = 8970; - e.floorleftBigg = 8970; - e.floorrightbig = 8971; - e.floorrightBig = 8971; - e.floorrightBigg = 8971; - e.floorrightbigg = 8971; - e.hatwide = 770; - e.hatwider = 770; - e.hatwidest = 770; - e.intercal = 7488; - e.integraldisplay = 8747; - e.integraltext = 8747; - e.intersectiondisplay = 8898; - e.intersectiontext = 8898; - e.logicalanddisplay = 8743; - e.logicalandtext = 8743; - e.logicalordisplay = 8744; - e.logicalortext = 8744; - e.parenleftBig = 40; - e.parenleftbig = 40; - e.parenleftBigg = 40; - e.parenleftbigg = 40; - e.parenrightBig = 41; - e.parenrightbig = 41; - e.parenrightBigg = 41; - e.parenrightbigg = 41; - e.prime = 8242; - e.productdisplay = 8719; - e.producttext = 8719; - e.radicalbig = 8730; - e.radicalBig = 8730; - e.radicalBigg = 8730; - e.radicalbigg = 8730; - e.radicalbt = 8730; - e.radicaltp = 8730; - e.radicalvertex = 8730; - e.slashbig = 47; - e.slashBig = 47; - e.slashBigg = 47; - e.slashbigg = 47; - e.summationdisplay = 8721; - e.summationtext = 8721; - e.tildewide = 732; - e.tildewider = 732; - e.tildewidest = 732; - e.uniondisplay = 8899; - e.unionmultidisplay = 8846; - e.unionmultitext = 8846; - e.unionsqdisplay = 8852; - e.unionsqtext = 8852; - e.uniontext = 8899; - e.vextenddouble = 8741; - e.vextendsingle = 8739; - }); - t.getGlyphsUnicode = n; - const i = (0, r.getLookupTableFactory)(function (e) { - e.space = 32; - e.a1 = 9985; - e.a2 = 9986; - e.a202 = 9987; - e.a3 = 9988; - e.a4 = 9742; - e.a5 = 9990; - e.a119 = 9991; - e.a118 = 9992; - e.a117 = 9993; - e.a11 = 9755; - e.a12 = 9758; - e.a13 = 9996; - e.a14 = 9997; - e.a15 = 9998; - e.a16 = 9999; - e.a105 = 1e4; - e.a17 = 10001; - e.a18 = 10002; - e.a19 = 10003; - e.a20 = 10004; - e.a21 = 10005; - e.a22 = 10006; - e.a23 = 10007; - e.a24 = 10008; - e.a25 = 10009; - e.a26 = 10010; - e.a27 = 10011; - e.a28 = 10012; - e.a6 = 10013; - e.a7 = 10014; - e.a8 = 10015; - e.a9 = 10016; - e.a10 = 10017; - e.a29 = 10018; - e.a30 = 10019; - e.a31 = 10020; - e.a32 = 10021; - e.a33 = 10022; - e.a34 = 10023; - e.a35 = 9733; - e.a36 = 10025; - e.a37 = 10026; - e.a38 = 10027; - e.a39 = 10028; - e.a40 = 10029; - e.a41 = 10030; - e.a42 = 10031; - e.a43 = 10032; - e.a44 = 10033; - e.a45 = 10034; - e.a46 = 10035; - e.a47 = 10036; - e.a48 = 10037; - e.a49 = 10038; - e.a50 = 10039; - e.a51 = 10040; - e.a52 = 10041; - e.a53 = 10042; - e.a54 = 10043; - e.a55 = 10044; - e.a56 = 10045; - e.a57 = 10046; - e.a58 = 10047; - e.a59 = 10048; - e.a60 = 10049; - e.a61 = 10050; - e.a62 = 10051; - e.a63 = 10052; - e.a64 = 10053; - e.a65 = 10054; - e.a66 = 10055; - e.a67 = 10056; - e.a68 = 10057; - e.a69 = 10058; - e.a70 = 10059; - e.a71 = 9679; - e.a72 = 10061; - e.a73 = 9632; - e.a74 = 10063; - e.a203 = 10064; - e.a75 = 10065; - e.a204 = 10066; - e.a76 = 9650; - e.a77 = 9660; - e.a78 = 9670; - e.a79 = 10070; - e.a81 = 9687; - e.a82 = 10072; - e.a83 = 10073; - e.a84 = 10074; - e.a97 = 10075; - e.a98 = 10076; - e.a99 = 10077; - e.a100 = 10078; - e.a101 = 10081; - e.a102 = 10082; - e.a103 = 10083; - e.a104 = 10084; - e.a106 = 10085; - e.a107 = 10086; - e.a108 = 10087; - e.a112 = 9827; - e.a111 = 9830; - e.a110 = 9829; - e.a109 = 9824; - e.a120 = 9312; - e.a121 = 9313; - e.a122 = 9314; - e.a123 = 9315; - e.a124 = 9316; - e.a125 = 9317; - e.a126 = 9318; - e.a127 = 9319; - e.a128 = 9320; - e.a129 = 9321; - e.a130 = 10102; - e.a131 = 10103; - e.a132 = 10104; - e.a133 = 10105; - e.a134 = 10106; - e.a135 = 10107; - e.a136 = 10108; - e.a137 = 10109; - e.a138 = 10110; - e.a139 = 10111; - e.a140 = 10112; - e.a141 = 10113; - e.a142 = 10114; - e.a143 = 10115; - e.a144 = 10116; - e.a145 = 10117; - e.a146 = 10118; - e.a147 = 10119; - e.a148 = 10120; - e.a149 = 10121; - e.a150 = 10122; - e.a151 = 10123; - e.a152 = 10124; - e.a153 = 10125; - e.a154 = 10126; - e.a155 = 10127; - e.a156 = 10128; - e.a157 = 10129; - e.a158 = 10130; - e.a159 = 10131; - e.a160 = 10132; - e.a161 = 8594; - e.a163 = 8596; - e.a164 = 8597; - e.a196 = 10136; - e.a165 = 10137; - e.a192 = 10138; - e.a166 = 10139; - e.a167 = 10140; - e.a168 = 10141; - e.a169 = 10142; - e.a170 = 10143; - e.a171 = 10144; - e.a172 = 10145; - e.a173 = 10146; - e.a162 = 10147; - e.a174 = 10148; - e.a175 = 10149; - e.a176 = 10150; - e.a177 = 10151; - e.a178 = 10152; - e.a179 = 10153; - e.a193 = 10154; - e.a180 = 10155; - e.a199 = 10156; - e.a181 = 10157; - e.a200 = 10158; - e.a182 = 10159; - e.a201 = 10161; - e.a183 = 10162; - e.a184 = 10163; - e.a197 = 10164; - e.a185 = 10165; - e.a194 = 10166; - e.a198 = 10167; - e.a186 = 10168; - e.a195 = 10169; - e.a187 = 10170; - e.a188 = 10171; - e.a189 = 10172; - e.a190 = 10173; - e.a191 = 10174; - e.a89 = 10088; - e.a90 = 10089; - e.a93 = 10090; - e.a94 = 10091; - e.a91 = 10092; - e.a92 = 10093; - e.a205 = 10094; - e.a85 = 10095; - e.a206 = 10096; - e.a86 = 10097; - e.a87 = 10098; - e.a88 = 10099; - e.a95 = 10100; - e.a96 = 10101; - e[".notdef"] = 0; - }); - t.getDingbatsGlyphsUnicode = i; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.clearUnicodeCaches = function clearUnicodeCaches() { - s.clear(); - }; - t.getCharUnicodeCategory = function getCharUnicodeCategory(e) { - const t = s.get(e); - if (t) return t; - const a = e.match(i), - r = { - isWhitespace: !!a?.[1], - isZeroWidthDiacritic: !!a?.[2], - isInvisibleFormatMark: !!a?.[3], - }; - s.set(e, r); - return r; - }; - t.getUnicodeForGlyph = function getUnicodeForGlyph(e, t) { - let a = t[e]; - if (void 0 !== a) return a; - if (!e) return -1; - if ("u" === e[0]) { - const t = e.length; - let r; - if (7 === t && "n" === e[1] && "i" === e[2]) r = e.substring(3); - else { - if (!(t >= 5 && t <= 7)) return -1; - r = e.substring(1); - } - if (r === r.toUpperCase()) { - a = parseInt(r, 16); - if (a >= 0) return a; - } - } - return -1; - }; - t.getUnicodeRangeFor = function getUnicodeRangeFor(e, t = -1) { - if (-1 !== t) { - const a = n[t]; - for (let r = 0, n = a.length; r < n; r += 2) - if (e >= a[r] && e <= a[r + 1]) return t; - } - for (let t = 0, a = n.length; t < a; t++) { - const a = n[t]; - for (let r = 0, n = a.length; r < n; r += 2) - if (e >= a[r] && e <= a[r + 1]) return t; - } - return -1; - }; - t.mapSpecialUnicodeValues = function mapSpecialUnicodeValues(e) { - if (e >= 65520 && e <= 65535) return 0; - if (e >= 62976 && e <= 63743) return r()[e] || e; - if (173 === e) return 45; - return e; - }; - const r = (0, a(3).getLookupTableFactory)(function (e) { - e[63721] = 169; - e[63193] = 169; - e[63720] = 174; - e[63194] = 174; - e[63722] = 8482; - e[63195] = 8482; - e[63729] = 9127; - e[63730] = 9128; - e[63731] = 9129; - e[63740] = 9131; - e[63741] = 9132; - e[63742] = 9133; - e[63726] = 9121; - e[63727] = 9122; - e[63728] = 9123; - e[63737] = 9124; - e[63738] = 9125; - e[63739] = 9126; - e[63723] = 9115; - e[63724] = 9116; - e[63725] = 9117; - e[63734] = 9118; - e[63735] = 9119; - e[63736] = 9120; - }); - const n = [ - [0, 127], - [128, 255], - [256, 383], - [384, 591], - [592, 687, 7424, 7551, 7552, 7615], - [688, 767, 42752, 42783], - [768, 879, 7616, 7679], - [880, 1023], - [11392, 11519], - [1024, 1279, 1280, 1327, 11744, 11775, 42560, 42655], - [1328, 1423], - [1424, 1535], - [42240, 42559], - [1536, 1791, 1872, 1919], - [1984, 2047], - [2304, 2431], - [2432, 2559], - [2560, 2687], - [2688, 2815], - [2816, 2943], - [2944, 3071], - [3072, 3199], - [3200, 3327], - [3328, 3455], - [3584, 3711], - [3712, 3839], - [4256, 4351, 11520, 11567], - [6912, 7039], - [4352, 4607], - [7680, 7935, 11360, 11391, 42784, 43007], - [7936, 8191], - [8192, 8303, 11776, 11903], - [8304, 8351], - [8352, 8399], - [8400, 8447], - [8448, 8527], - [8528, 8591], - [8592, 8703, 10224, 10239, 10496, 10623, 11008, 11263], - [8704, 8959, 10752, 11007, 10176, 10223, 10624, 10751], - [8960, 9215], - [9216, 9279], - [9280, 9311], - [9312, 9471], - [9472, 9599], - [9600, 9631], - [9632, 9727], - [9728, 9983], - [9984, 10175], - [12288, 12351], - [12352, 12447], - [12448, 12543, 12784, 12799], - [12544, 12591, 12704, 12735], - [12592, 12687], - [43072, 43135], - [12800, 13055], - [13056, 13311], - [44032, 55215], - [55296, 57343], - [67840, 67871], - [ - 19968, 40959, 11904, 12031, 12032, 12255, 12272, 12287, 13312, - 19903, 131072, 173791, 12688, 12703, - ], - [57344, 63743], - [12736, 12783, 63744, 64255, 194560, 195103], - [64256, 64335], - [64336, 65023], - [65056, 65071], - [65040, 65055], - [65104, 65135], - [65136, 65279], - [65280, 65519], - [65520, 65535], - [3840, 4095], - [1792, 1871], - [1920, 1983], - [3456, 3583], - [4096, 4255], - [4608, 4991, 4992, 5023, 11648, 11743], - [5024, 5119], - [5120, 5759], - [5760, 5791], - [5792, 5887], - [6016, 6143], - [6144, 6319], - [10240, 10495], - [40960, 42127], - [5888, 5919, 5920, 5951, 5952, 5983, 5984, 6015], - [66304, 66351], - [66352, 66383], - [66560, 66639], - [118784, 119039, 119040, 119295, 119296, 119375], - [119808, 120831], - [1044480, 1048573], - [65024, 65039, 917760, 917999], - [917504, 917631], - [6400, 6479], - [6480, 6527], - [6528, 6623], - [6656, 6687], - [11264, 11359], - [11568, 11647], - [19904, 19967], - [43008, 43055], - [65536, 65663, 65664, 65791, 65792, 65855], - [65856, 65935], - [66432, 66463], - [66464, 66527], - [66640, 66687], - [66688, 66735], - [67584, 67647], - [68096, 68191], - [119552, 119647], - [73728, 74751, 74752, 74879], - [119648, 119679], - [7040, 7103], - [7168, 7247], - [7248, 7295], - [43136, 43231], - [43264, 43311], - [43312, 43359], - [43520, 43615], - [65936, 65999], - [66e3, 66047], - [66208, 66271, 66176, 66207, 67872, 67903], - [127024, 127135, 126976, 127023], - ]; - const i = new RegExp("^(\\s)|(\\p{Mn})|(\\p{Cf})$", "u"), - s = new Map(); - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.getSerifFonts = - t.getNonStdFontMap = - t.getGlyphMapForStandardFonts = - t.getFontNameToFileMap = - void 0; - t.getStandardFontName = function getStandardFontName(e) { - const t = (0, n.normalizeFontName)(e); - return i()[t]; - }; - t.getSymbolsFonts = - t.getSupplementalGlyphMapForCalibri = - t.getSupplementalGlyphMapForArialBlack = - t.getStdFontMap = - void 0; - t.isKnownFontName = function isKnownFontName(e) { - const t = (0, n.normalizeFontName)(e); - return !!(i()[t] || o()[t] || c()[t] || l()[t]); - }; - var r = a(3), - n = a(38); - const i = (0, r.getLookupTableFactory)(function (e) { - e["Times-Roman"] = "Times-Roman"; - e.Helvetica = "Helvetica"; - e.Courier = "Courier"; - e.Symbol = "Symbol"; - e["Times-Bold"] = "Times-Bold"; - e["Helvetica-Bold"] = "Helvetica-Bold"; - e["Courier-Bold"] = "Courier-Bold"; - e.ZapfDingbats = "ZapfDingbats"; - e["Times-Italic"] = "Times-Italic"; - e["Helvetica-Oblique"] = "Helvetica-Oblique"; - e["Courier-Oblique"] = "Courier-Oblique"; - e["Times-BoldItalic"] = "Times-BoldItalic"; - e["Helvetica-BoldOblique"] = "Helvetica-BoldOblique"; - e["Courier-BoldOblique"] = "Courier-BoldOblique"; - e.ArialNarrow = "Helvetica"; - e["ArialNarrow-Bold"] = "Helvetica-Bold"; - e["ArialNarrow-BoldItalic"] = "Helvetica-BoldOblique"; - e["ArialNarrow-Italic"] = "Helvetica-Oblique"; - e.ArialBlack = "Helvetica"; - e["ArialBlack-Bold"] = "Helvetica-Bold"; - e["ArialBlack-BoldItalic"] = "Helvetica-BoldOblique"; - e["ArialBlack-Italic"] = "Helvetica-Oblique"; - e["Arial-Black"] = "Helvetica"; - e["Arial-Black-Bold"] = "Helvetica-Bold"; - e["Arial-Black-BoldItalic"] = "Helvetica-BoldOblique"; - e["Arial-Black-Italic"] = "Helvetica-Oblique"; - e.Arial = "Helvetica"; - e["Arial-Bold"] = "Helvetica-Bold"; - e["Arial-BoldItalic"] = "Helvetica-BoldOblique"; - e["Arial-Italic"] = "Helvetica-Oblique"; - e.ArialMT = "Helvetica"; - e["Arial-BoldItalicMT"] = "Helvetica-BoldOblique"; - e["Arial-BoldMT"] = "Helvetica-Bold"; - e["Arial-ItalicMT"] = "Helvetica-Oblique"; - e["Arial-BoldItalicMT-BoldItalic"] = "Helvetica-BoldOblique"; - e["Arial-BoldMT-Bold"] = "Helvetica-Bold"; - e["Arial-ItalicMT-Italic"] = "Helvetica-Oblique"; - e.ArialUnicodeMS = "Helvetica"; - e["ArialUnicodeMS-Bold"] = "Helvetica-Bold"; - e["ArialUnicodeMS-BoldItalic"] = "Helvetica-BoldOblique"; - e["ArialUnicodeMS-Italic"] = "Helvetica-Oblique"; - e["Courier-BoldItalic"] = "Courier-BoldOblique"; - e["Courier-Italic"] = "Courier-Oblique"; - e.CourierNew = "Courier"; - e["CourierNew-Bold"] = "Courier-Bold"; - e["CourierNew-BoldItalic"] = "Courier-BoldOblique"; - e["CourierNew-Italic"] = "Courier-Oblique"; - e["CourierNewPS-BoldItalicMT"] = "Courier-BoldOblique"; - e["CourierNewPS-BoldMT"] = "Courier-Bold"; - e["CourierNewPS-ItalicMT"] = "Courier-Oblique"; - e.CourierNewPSMT = "Courier"; - e["Helvetica-BoldItalic"] = "Helvetica-BoldOblique"; - e["Helvetica-Italic"] = "Helvetica-Oblique"; - e["Symbol-Bold"] = "Symbol"; - e["Symbol-BoldItalic"] = "Symbol"; - e["Symbol-Italic"] = "Symbol"; - e.TimesNewRoman = "Times-Roman"; - e["TimesNewRoman-Bold"] = "Times-Bold"; - e["TimesNewRoman-BoldItalic"] = "Times-BoldItalic"; - e["TimesNewRoman-Italic"] = "Times-Italic"; - e.TimesNewRomanPS = "Times-Roman"; - e["TimesNewRomanPS-Bold"] = "Times-Bold"; - e["TimesNewRomanPS-BoldItalic"] = "Times-BoldItalic"; - e["TimesNewRomanPS-BoldItalicMT"] = "Times-BoldItalic"; - e["TimesNewRomanPS-BoldMT"] = "Times-Bold"; - e["TimesNewRomanPS-Italic"] = "Times-Italic"; - e["TimesNewRomanPS-ItalicMT"] = "Times-Italic"; - e.TimesNewRomanPSMT = "Times-Roman"; - e["TimesNewRomanPSMT-Bold"] = "Times-Bold"; - e["TimesNewRomanPSMT-BoldItalic"] = "Times-BoldItalic"; - e["TimesNewRomanPSMT-Italic"] = "Times-Italic"; - }); - t.getStdFontMap = i; - const s = (0, r.getLookupTableFactory)(function (e) { - e.Courier = "FoxitFixed.pfb"; - e["Courier-Bold"] = "FoxitFixedBold.pfb"; - e["Courier-BoldOblique"] = "FoxitFixedBoldItalic.pfb"; - e["Courier-Oblique"] = "FoxitFixedItalic.pfb"; - e.Helvetica = "LiberationSans-Regular.ttf"; - e["Helvetica-Bold"] = "LiberationSans-Bold.ttf"; - e["Helvetica-BoldOblique"] = "LiberationSans-BoldItalic.ttf"; - e["Helvetica-Oblique"] = "LiberationSans-Italic.ttf"; - e["Times-Roman"] = "FoxitSerif.pfb"; - e["Times-Bold"] = "FoxitSerifBold.pfb"; - e["Times-BoldItalic"] = "FoxitSerifBoldItalic.pfb"; - e["Times-Italic"] = "FoxitSerifItalic.pfb"; - e.Symbol = "FoxitSymbol.pfb"; - e.ZapfDingbats = "FoxitDingbats.pfb"; - e["LiberationSans-Regular"] = "LiberationSans-Regular.ttf"; - e["LiberationSans-Bold"] = "LiberationSans-Bold.ttf"; - e["LiberationSans-Italic"] = "LiberationSans-Italic.ttf"; - e["LiberationSans-BoldItalic"] = "LiberationSans-BoldItalic.ttf"; - }); - t.getFontNameToFileMap = s; - const o = (0, r.getLookupTableFactory)(function (e) { - e.Calibri = "Helvetica"; - e["Calibri-Bold"] = "Helvetica-Bold"; - e["Calibri-BoldItalic"] = "Helvetica-BoldOblique"; - e["Calibri-Italic"] = "Helvetica-Oblique"; - e.CenturyGothic = "Helvetica"; - e["CenturyGothic-Bold"] = "Helvetica-Bold"; - e["CenturyGothic-BoldItalic"] = "Helvetica-BoldOblique"; - e["CenturyGothic-Italic"] = "Helvetica-Oblique"; - e.ComicSansMS = "Comic Sans MS"; - e["ComicSansMS-Bold"] = "Comic Sans MS-Bold"; - e["ComicSansMS-BoldItalic"] = "Comic Sans MS-BoldItalic"; - e["ComicSansMS-Italic"] = "Comic Sans MS-Italic"; - e.Impact = "Helvetica"; - e["ItcSymbol-Bold"] = "Helvetica-Bold"; - e["ItcSymbol-BoldItalic"] = "Helvetica-BoldOblique"; - e["ItcSymbol-Book"] = "Helvetica"; - e["ItcSymbol-BookItalic"] = "Helvetica-Oblique"; - e["ItcSymbol-Medium"] = "Helvetica"; - e["ItcSymbol-MediumItalic"] = "Helvetica-Oblique"; - e.LucidaConsole = "Courier"; - e["LucidaConsole-Bold"] = "Courier-Bold"; - e["LucidaConsole-BoldItalic"] = "Courier-BoldOblique"; - e["LucidaConsole-Italic"] = "Courier-Oblique"; - e["LucidaSans-Demi"] = "Helvetica-Bold"; - e["MS-Gothic"] = "MS Gothic"; - e["MS-Gothic-Bold"] = "MS Gothic-Bold"; - e["MS-Gothic-BoldItalic"] = "MS Gothic-BoldItalic"; - e["MS-Gothic-Italic"] = "MS Gothic-Italic"; - e["MS-Mincho"] = "MS Mincho"; - e["MS-Mincho-Bold"] = "MS Mincho-Bold"; - e["MS-Mincho-BoldItalic"] = "MS Mincho-BoldItalic"; - e["MS-Mincho-Italic"] = "MS Mincho-Italic"; - e["MS-PGothic"] = "MS PGothic"; - e["MS-PGothic-Bold"] = "MS PGothic-Bold"; - e["MS-PGothic-BoldItalic"] = "MS PGothic-BoldItalic"; - e["MS-PGothic-Italic"] = "MS PGothic-Italic"; - e["MS-PMincho"] = "MS PMincho"; - e["MS-PMincho-Bold"] = "MS PMincho-Bold"; - e["MS-PMincho-BoldItalic"] = "MS PMincho-BoldItalic"; - e["MS-PMincho-Italic"] = "MS PMincho-Italic"; - e.NuptialScript = "Times-Italic"; - e.SegoeUISymbol = "Helvetica"; - }); - t.getNonStdFontMap = o; - const c = (0, r.getLookupTableFactory)(function (e) { - e["Adobe Jenson"] = !0; - e["Adobe Text"] = !0; - e.Albertus = !0; - e.Aldus = !0; - e.Alexandria = !0; - e.Algerian = !0; - e["American Typewriter"] = !0; - e.Antiqua = !0; - e.Apex = !0; - e.Arno = !0; - e.Aster = !0; - e.Aurora = !0; - e.Baskerville = !0; - e.Bell = !0; - e.Bembo = !0; - e["Bembo Schoolbook"] = !0; - e.Benguiat = !0; - e["Berkeley Old Style"] = !0; - e["Bernhard Modern"] = !0; - e["Berthold City"] = !0; - e.Bodoni = !0; - e["Bauer Bodoni"] = !0; - e["Book Antiqua"] = !0; - e.Bookman = !0; - e["Bordeaux Roman"] = !0; - e["Californian FB"] = !0; - e.Calisto = !0; - e.Calvert = !0; - e.Capitals = !0; - e.Cambria = !0; - e.Cartier = !0; - e.Caslon = !0; - e.Catull = !0; - e.Centaur = !0; - e["Century Old Style"] = !0; - e["Century Schoolbook"] = !0; - e.Chaparral = !0; - e["Charis SIL"] = !0; - e.Cheltenham = !0; - e["Cholla Slab"] = !0; - e.Clarendon = !0; - e.Clearface = !0; - e.Cochin = !0; - e.Colonna = !0; - e["Computer Modern"] = !0; - e["Concrete Roman"] = !0; - e.Constantia = !0; - e["Cooper Black"] = !0; - e.Corona = !0; - e.Ecotype = !0; - e.Egyptienne = !0; - e.Elephant = !0; - e.Excelsior = !0; - e.Fairfield = !0; - e["FF Scala"] = !0; - e.Folkard = !0; - e.Footlight = !0; - e.FreeSerif = !0; - e["Friz Quadrata"] = !0; - e.Garamond = !0; - e.Gentium = !0; - e.Georgia = !0; - e.Gloucester = !0; - e["Goudy Old Style"] = !0; - e["Goudy Schoolbook"] = !0; - e["Goudy Pro Font"] = !0; - e.Granjon = !0; - e["Guardian Egyptian"] = !0; - e.Heather = !0; - e.Hercules = !0; - e["High Tower Text"] = !0; - e.Hiroshige = !0; - e["Hoefler Text"] = !0; - e["Humana Serif"] = !0; - e.Imprint = !0; - e["Ionic No. 5"] = !0; - e.Janson = !0; - e.Joanna = !0; - e.Korinna = !0; - e.Lexicon = !0; - e.LiberationSerif = !0; - e["Liberation Serif"] = !0; - e["Linux Libertine"] = !0; - e.Literaturnaya = !0; - e.Lucida = !0; - e["Lucida Bright"] = !0; - e.Melior = !0; - e.Memphis = !0; - e.Miller = !0; - e.Minion = !0; - e.Modern = !0; - e["Mona Lisa"] = !0; - e["Mrs Eaves"] = !0; - e["MS Serif"] = !0; - e["Museo Slab"] = !0; - e["New York"] = !0; - e["Nimbus Roman"] = !0; - e["NPS Rawlinson Roadway"] = !0; - e.NuptialScript = !0; - e.Palatino = !0; - e.Perpetua = !0; - e.Plantin = !0; - e["Plantin Schoolbook"] = !0; - e.Playbill = !0; - e["Poor Richard"] = !0; - e["Rawlinson Roadway"] = !0; - e.Renault = !0; - e.Requiem = !0; - e.Rockwell = !0; - e.Roman = !0; - e["Rotis Serif"] = !0; - e.Sabon = !0; - e.Scala = !0; - e.Seagull = !0; - e.Sistina = !0; - e.Souvenir = !0; - e.STIX = !0; - e["Stone Informal"] = !0; - e["Stone Serif"] = !0; - e.Sylfaen = !0; - e.Times = !0; - e.Trajan = !0; - e["Trinité"] = !0; - e["Trump Mediaeval"] = !0; - e.Utopia = !0; - e["Vale Type"] = !0; - e["Bitstream Vera"] = !0; - e["Vera Serif"] = !0; - e.Versailles = !0; - e.Wanted = !0; - e.Weiss = !0; - e["Wide Latin"] = !0; - e.Windsor = !0; - e.XITS = !0; - }); - t.getSerifFonts = c; - const l = (0, r.getLookupTableFactory)(function (e) { - e.Dingbats = !0; - e.Symbol = !0; - e.ZapfDingbats = !0; - e.Wingdings = !0; - e["Wingdings-Bold"] = !0; - e["Wingdings-Regular"] = !0; - }); - t.getSymbolsFonts = l; - const h = (0, r.getLookupTableFactory)(function (e) { - e[2] = 10; - e[3] = 32; - e[4] = 33; - e[5] = 34; - e[6] = 35; - e[7] = 36; - e[8] = 37; - e[9] = 38; - e[10] = 39; - e[11] = 40; - e[12] = 41; - e[13] = 42; - e[14] = 43; - e[15] = 44; - e[16] = 45; - e[17] = 46; - e[18] = 47; - e[19] = 48; - e[20] = 49; - e[21] = 50; - e[22] = 51; - e[23] = 52; - e[24] = 53; - e[25] = 54; - e[26] = 55; - e[27] = 56; - e[28] = 57; - e[29] = 58; - e[30] = 894; - e[31] = 60; - e[32] = 61; - e[33] = 62; - e[34] = 63; - e[35] = 64; - e[36] = 65; - e[37] = 66; - e[38] = 67; - e[39] = 68; - e[40] = 69; - e[41] = 70; - e[42] = 71; - e[43] = 72; - e[44] = 73; - e[45] = 74; - e[46] = 75; - e[47] = 76; - e[48] = 77; - e[49] = 78; - e[50] = 79; - e[51] = 80; - e[52] = 81; - e[53] = 82; - e[54] = 83; - e[55] = 84; - e[56] = 85; - e[57] = 86; - e[58] = 87; - e[59] = 88; - e[60] = 89; - e[61] = 90; - e[62] = 91; - e[63] = 92; - e[64] = 93; - e[65] = 94; - e[66] = 95; - e[67] = 96; - e[68] = 97; - e[69] = 98; - e[70] = 99; - e[71] = 100; - e[72] = 101; - e[73] = 102; - e[74] = 103; - e[75] = 104; - e[76] = 105; - e[77] = 106; - e[78] = 107; - e[79] = 108; - e[80] = 109; - e[81] = 110; - e[82] = 111; - e[83] = 112; - e[84] = 113; - e[85] = 114; - e[86] = 115; - e[87] = 116; - e[88] = 117; - e[89] = 118; - e[90] = 119; - e[91] = 120; - e[92] = 121; - e[93] = 122; - e[94] = 123; - e[95] = 124; - e[96] = 125; - e[97] = 126; - e[98] = 196; - e[99] = 197; - e[100] = 199; - e[101] = 201; - e[102] = 209; - e[103] = 214; - e[104] = 220; - e[105] = 225; - e[106] = 224; - e[107] = 226; - e[108] = 228; - e[109] = 227; - e[110] = 229; - e[111] = 231; - e[112] = 233; - e[113] = 232; - e[114] = 234; - e[115] = 235; - e[116] = 237; - e[117] = 236; - e[118] = 238; - e[119] = 239; - e[120] = 241; - e[121] = 243; - e[122] = 242; - e[123] = 244; - e[124] = 246; - e[125] = 245; - e[126] = 250; - e[127] = 249; - e[128] = 251; - e[129] = 252; - e[130] = 8224; - e[131] = 176; - e[132] = 162; - e[133] = 163; - e[134] = 167; - e[135] = 8226; - e[136] = 182; - e[137] = 223; - e[138] = 174; - e[139] = 169; - e[140] = 8482; - e[141] = 180; - e[142] = 168; - e[143] = 8800; - e[144] = 198; - e[145] = 216; - e[146] = 8734; - e[147] = 177; - e[148] = 8804; - e[149] = 8805; - e[150] = 165; - e[151] = 181; - e[152] = 8706; - e[153] = 8721; - e[154] = 8719; - e[156] = 8747; - e[157] = 170; - e[158] = 186; - e[159] = 8486; - e[160] = 230; - e[161] = 248; - e[162] = 191; - e[163] = 161; - e[164] = 172; - e[165] = 8730; - e[166] = 402; - e[167] = 8776; - e[168] = 8710; - e[169] = 171; - e[170] = 187; - e[171] = 8230; - e[179] = 8220; - e[180] = 8221; - e[181] = 8216; - e[182] = 8217; - e[200] = 193; - e[203] = 205; - e[207] = 211; - e[210] = 218; - e[223] = 711; - e[224] = 321; - e[225] = 322; - e[226] = 352; - e[227] = 353; - e[228] = 381; - e[229] = 382; - e[233] = 221; - e[234] = 253; - e[252] = 263; - e[253] = 268; - e[254] = 269; - e[258] = 258; - e[260] = 260; - e[261] = 261; - e[265] = 280; - e[266] = 281; - e[267] = 282; - e[268] = 283; - e[269] = 313; - e[275] = 323; - e[276] = 324; - e[278] = 328; - e[283] = 344; - e[284] = 345; - e[285] = 346; - e[286] = 347; - e[292] = 367; - e[295] = 377; - e[296] = 378; - e[298] = 380; - e[305] = 963; - e[306] = 964; - e[307] = 966; - e[308] = 8215; - e[309] = 8252; - e[310] = 8319; - e[311] = 8359; - e[312] = 8592; - e[313] = 8593; - e[337] = 9552; - e[493] = 1039; - e[494] = 1040; - e[672] = 1488; - e[673] = 1489; - e[674] = 1490; - e[675] = 1491; - e[676] = 1492; - e[677] = 1493; - e[678] = 1494; - e[679] = 1495; - e[680] = 1496; - e[681] = 1497; - e[682] = 1498; - e[683] = 1499; - e[684] = 1500; - e[685] = 1501; - e[686] = 1502; - e[687] = 1503; - e[688] = 1504; - e[689] = 1505; - e[690] = 1506; - e[691] = 1507; - e[692] = 1508; - e[693] = 1509; - e[694] = 1510; - e[695] = 1511; - e[696] = 1512; - e[697] = 1513; - e[698] = 1514; - e[705] = 1524; - e[706] = 8362; - e[710] = 64288; - e[711] = 64298; - e[759] = 1617; - e[761] = 1776; - e[763] = 1778; - e[775] = 1652; - e[777] = 1764; - e[778] = 1780; - e[779] = 1781; - e[780] = 1782; - e[782] = 771; - e[783] = 64726; - e[786] = 8363; - e[788] = 8532; - e[790] = 768; - e[791] = 769; - e[792] = 768; - e[795] = 803; - e[797] = 64336; - e[798] = 64337; - e[799] = 64342; - e[800] = 64343; - e[801] = 64344; - e[802] = 64345; - e[803] = 64362; - e[804] = 64363; - e[805] = 64364; - e[2424] = 7821; - e[2425] = 7822; - e[2426] = 7823; - e[2427] = 7824; - e[2428] = 7825; - e[2429] = 7826; - e[2430] = 7827; - e[2433] = 7682; - e[2678] = 8045; - e[2679] = 8046; - e[2830] = 1552; - e[2838] = 686; - e[2840] = 751; - e[2842] = 753; - e[2843] = 754; - e[2844] = 755; - e[2846] = 757; - e[2856] = 767; - e[2857] = 848; - e[2858] = 849; - e[2862] = 853; - e[2863] = 854; - e[2864] = 855; - e[2865] = 861; - e[2866] = 862; - e[2906] = 7460; - e[2908] = 7462; - e[2909] = 7463; - e[2910] = 7464; - e[2912] = 7466; - e[2913] = 7467; - e[2914] = 7468; - e[2916] = 7470; - e[2917] = 7471; - e[2918] = 7472; - e[2920] = 7474; - e[2921] = 7475; - e[2922] = 7476; - e[2924] = 7478; - e[2925] = 7479; - e[2926] = 7480; - e[2928] = 7482; - e[2929] = 7483; - e[2930] = 7484; - e[2932] = 7486; - e[2933] = 7487; - e[2934] = 7488; - e[2936] = 7490; - e[2937] = 7491; - e[2938] = 7492; - e[2940] = 7494; - e[2941] = 7495; - e[2942] = 7496; - e[2944] = 7498; - e[2946] = 7500; - e[2948] = 7502; - e[2950] = 7504; - e[2951] = 7505; - e[2952] = 7506; - e[2954] = 7508; - e[2955] = 7509; - e[2956] = 7510; - e[2958] = 7512; - e[2959] = 7513; - e[2960] = 7514; - e[2962] = 7516; - e[2963] = 7517; - e[2964] = 7518; - e[2966] = 7520; - e[2967] = 7521; - e[2968] = 7522; - e[2970] = 7524; - e[2971] = 7525; - e[2972] = 7526; - e[2974] = 7528; - e[2975] = 7529; - e[2976] = 7530; - e[2978] = 1537; - e[2979] = 1538; - e[2980] = 1539; - e[2982] = 1549; - e[2983] = 1551; - e[2984] = 1552; - e[2986] = 1554; - e[2987] = 1555; - e[2988] = 1556; - e[2990] = 1623; - e[2991] = 1624; - e[2995] = 1775; - e[2999] = 1791; - e[3002] = 64290; - e[3003] = 64291; - e[3004] = 64292; - e[3006] = 64294; - e[3007] = 64295; - e[3008] = 64296; - e[3011] = 1900; - e[3014] = 8223; - e[3015] = 8244; - e[3017] = 7532; - e[3018] = 7533; - e[3019] = 7534; - e[3075] = 7590; - e[3076] = 7591; - e[3079] = 7594; - e[3080] = 7595; - e[3083] = 7598; - e[3084] = 7599; - e[3087] = 7602; - e[3088] = 7603; - e[3091] = 7606; - e[3092] = 7607; - e[3095] = 7610; - e[3096] = 7611; - e[3099] = 7614; - e[3100] = 7615; - e[3103] = 7618; - e[3104] = 7619; - e[3107] = 8337; - e[3108] = 8338; - e[3116] = 1884; - e[3119] = 1885; - e[3120] = 1885; - e[3123] = 1886; - e[3124] = 1886; - e[3127] = 1887; - e[3128] = 1887; - e[3131] = 1888; - e[3132] = 1888; - e[3135] = 1889; - e[3136] = 1889; - e[3139] = 1890; - e[3140] = 1890; - e[3143] = 1891; - e[3144] = 1891; - e[3147] = 1892; - e[3148] = 1892; - e[3153] = 580; - e[3154] = 581; - e[3157] = 584; - e[3158] = 585; - e[3161] = 588; - e[3162] = 589; - e[3165] = 891; - e[3166] = 892; - e[3169] = 1274; - e[3170] = 1275; - e[3173] = 1278; - e[3174] = 1279; - e[3181] = 7622; - e[3182] = 7623; - e[3282] = 11799; - e[3316] = 578; - e[3379] = 42785; - e[3393] = 1159; - e[3416] = 8377; - }); - t.getGlyphMapForStandardFonts = h; - const u = (0, r.getLookupTableFactory)(function (e) { - e[227] = 322; - e[264] = 261; - e[291] = 346; - }); - t.getSupplementalGlyphMapForArialBlack = u; - const d = (0, r.getLookupTableFactory)(function (e) { - e[1] = 32; - e[4] = 65; - e[5] = 192; - e[6] = 193; - e[9] = 196; - e[17] = 66; - e[18] = 67; - e[21] = 268; - e[24] = 68; - e[28] = 69; - e[29] = 200; - e[30] = 201; - e[32] = 282; - e[38] = 70; - e[39] = 71; - e[44] = 72; - e[47] = 73; - e[48] = 204; - e[49] = 205; - e[58] = 74; - e[60] = 75; - e[62] = 76; - e[68] = 77; - e[69] = 78; - e[75] = 79; - e[76] = 210; - e[80] = 214; - e[87] = 80; - e[89] = 81; - e[90] = 82; - e[92] = 344; - e[94] = 83; - e[97] = 352; - e[100] = 84; - e[104] = 85; - e[109] = 220; - e[115] = 86; - e[116] = 87; - e[121] = 88; - e[122] = 89; - e[124] = 221; - e[127] = 90; - e[129] = 381; - e[258] = 97; - e[259] = 224; - e[260] = 225; - e[263] = 228; - e[268] = 261; - e[271] = 98; - e[272] = 99; - e[273] = 263; - e[275] = 269; - e[282] = 100; - e[286] = 101; - e[287] = 232; - e[288] = 233; - e[290] = 283; - e[295] = 281; - e[296] = 102; - e[336] = 103; - e[346] = 104; - e[349] = 105; - e[350] = 236; - e[351] = 237; - e[361] = 106; - e[364] = 107; - e[367] = 108; - e[371] = 322; - e[373] = 109; - e[374] = 110; - e[381] = 111; - e[382] = 242; - e[383] = 243; - e[386] = 246; - e[393] = 112; - e[395] = 113; - e[396] = 114; - e[398] = 345; - e[400] = 115; - e[401] = 347; - e[403] = 353; - e[410] = 116; - e[437] = 117; - e[442] = 252; - e[448] = 118; - e[449] = 119; - e[454] = 120; - e[455] = 121; - e[457] = 253; - e[460] = 122; - e[462] = 382; - e[463] = 380; - e[853] = 44; - e[855] = 58; - e[856] = 46; - e[876] = 47; - e[878] = 45; - e[882] = 45; - e[894] = 40; - e[895] = 41; - e[896] = 91; - e[897] = 93; - e[923] = 64; - e[1004] = 48; - e[1005] = 49; - e[1006] = 50; - e[1007] = 51; - e[1008] = 52; - e[1009] = 53; - e[1010] = 54; - e[1011] = 55; - e[1012] = 56; - e[1013] = 57; - e[1081] = 37; - e[1085] = 43; - e[1086] = 45; - }); - t.getSupplementalGlyphMapForCalibri = d; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.ToUnicodeMap = t.IdentityToUnicodeMap = void 0; - var r = a(2); - t.ToUnicodeMap = class ToUnicodeMap { - constructor(e = []) { - this._map = e; - } - get length() { - return this._map.length; - } - forEach(e) { - for (const t in this._map) e(t, this._map[t].charCodeAt(0)); - } - has(e) { - return void 0 !== this._map[e]; - } - get(e) { - return this._map[e]; - } - charCodeOf(e) { - const t = this._map; - if (t.length <= 65536) return t.indexOf(e); - for (const a in t) if (t[a] === e) return 0 | a; - return -1; - } - amend(e) { - for (const t in e) this._map[t] = e[t]; - } - }; - t.IdentityToUnicodeMap = class IdentityToUnicodeMap { - constructor(e, t) { - this.firstChar = e; - this.lastChar = t; - } - get length() { - return this.lastChar + 1 - this.firstChar; - } - forEach(e) { - for (let t = this.firstChar, a = this.lastChar; t <= a; t++) - e(t, t); - } - has(e) { - return this.firstChar <= e && e <= this.lastChar; - } - get(e) { - if (this.firstChar <= e && e <= this.lastChar) - return String.fromCharCode(e); - } - charCodeOf(e) { - return Number.isInteger(e) && - e >= this.firstChar && - e <= this.lastChar - ? e - : -1; - } - amend(e) { - (0, r.unreachable)("Should not call amend()"); - } - }; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.CFFFont = void 0; - var r = a(35), - n = a(38), - i = a(2); - t.CFFFont = class CFFFont { - constructor(e, t) { - this.properties = t; - const a = new r.CFFParser(e, t, n.SEAC_ANALYSIS_ENABLED); - this.cff = a.parse(); - this.cff.duplicateFirstGlyph(); - const s = new r.CFFCompiler(this.cff); - this.seacs = this.cff.seacs; - try { - this.data = s.compile(); - } catch { - (0, i.warn)("Failed to compile font " + t.loadedName); - this.data = e; - } - this._createBuiltInEncoding(); - } - get numGlyphs() { - return this.cff.charStrings.count; - } - getCharset() { - return this.cff.charset.charset; - } - getGlyphMapping() { - const e = this.cff, - t = this.properties, - { cidToGidMap: a, cMap: r } = t, - i = e.charset.charset; - let s, o; - if (t.composite) { - let t, n; - if (a?.length > 0) { - t = Object.create(null); - for (let e = 0, r = a.length; e < r; e++) { - const r = a[e]; - void 0 !== r && (t[r] = e); - } - } - s = Object.create(null); - if (e.isCIDFont) - for (o = 0; o < i.length; o++) { - const e = i[o]; - n = r.charCodeOf(e); - void 0 !== t?.[n] && (n = t[n]); - s[n] = o; - } - else - for (o = 0; o < e.charStrings.count; o++) { - n = r.charCodeOf(o); - s[n] = o; - } - return s; - } - let c = e.encoding ? e.encoding.encoding : null; - t.isInternalFont && (c = t.defaultEncoding); - s = (0, n.type1FontGlyphMapping)(t, c, i); - return s; - } - hasGlyphId(e) { - return this.cff.hasGlyphId(e); - } - _createBuiltInEncoding() { - const { charset: e, encoding: t } = this.cff; - if (!e || !t) return; - const a = e.charset, - r = t.encoding, - n = []; - for (const e in r) { - const t = r[e]; - if (t >= 0) { - const r = a[t]; - r && (n[e] = r); - } - } - n.length > 0 && (this.properties.builtInEncoding = n); - } - }; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.FontRendererFactory = void 0; - var r = a(2), - n = a(35), - i = a(39), - s = a(37), - o = a(8); - function getUint32(e, t) { - return ( - ((e[t] << 24) | (e[t + 1] << 16) | (e[t + 2] << 8) | e[t + 3]) >>> - 0 - ); - } - function getUint16(e, t) { - return (e[t] << 8) | e[t + 1]; - } - function getInt16(e, t) { - return ((e[t] << 24) | (e[t + 1] << 16)) >> 16; - } - function getInt8(e, t) { - return (e[t] << 24) >> 24; - } - function getFloat214(e, t) { - return getInt16(e, t) / 16384; - } - function getSubroutineBias(e) { - const t = e.length; - let a = 32768; - t < 1240 ? (a = 107) : t < 33900 && (a = 1131); - return a; - } - function parseCmap(e, t, a) { - const n = - 1 === getUint16(e, t + 2) - ? getUint32(e, t + 8) - : getUint32(e, t + 16), - i = getUint16(e, t + n); - let s, o, c; - if (4 === i) { - getUint16(e, t + n + 2); - const a = getUint16(e, t + n + 6) >> 1; - o = t + n + 14; - s = []; - for (c = 0; c < a; c++, o += 2) s[c] = { end: getUint16(e, o) }; - o += 2; - for (c = 0; c < a; c++, o += 2) s[c].start = getUint16(e, o); - for (c = 0; c < a; c++, o += 2) s[c].idDelta = getUint16(e, o); - for (c = 0; c < a; c++, o += 2) { - let t = getUint16(e, o); - if (0 !== t) { - s[c].ids = []; - for (let a = 0, r = s[c].end - s[c].start + 1; a < r; a++) { - s[c].ids[a] = getUint16(e, o + t); - t += 2; - } - } - } - return s; - } - if (12 === i) { - const a = getUint32(e, t + n + 12); - o = t + n + 16; - s = []; - for (c = 0; c < a; c++) { - t = getUint32(e, o); - s.push({ - start: t, - end: getUint32(e, o + 4), - idDelta: getUint32(e, o + 8) - t, - }); - o += 12; - } - return s; - } - throw new r.FormatError(`unsupported cmap: ${i}`); - } - function parseCff(e, t, a, r) { - const i = new n.CFFParser(new o.Stream(e, t, a - t), {}, r).parse(); - return { - glyphs: i.charStrings.objects, - subrs: i.topDict.privateDict?.subrsIndex?.objects, - gsubrs: i.globalSubrIndex?.objects, - isCFFCIDFont: i.isCIDFont, - fdSelect: i.fdSelect, - fdArray: i.fdArray, - }; - } - function lookupCmap(e, t) { - const a = t.codePointAt(0); - let r = 0, - n = 0, - i = e.length - 1; - for (; n < i; ) { - const t = (n + i + 1) >> 1; - a < e[t].start ? (i = t - 1) : (n = t); - } - e[n].start <= a && - a <= e[n].end && - (r = - (e[n].idDelta + (e[n].ids ? e[n].ids[a - e[n].start] : a)) & - 65535); - return { charCode: a, glyphId: r }; - } - function compileGlyf(e, t, a) { - function moveTo(e, a) { - t.push({ cmd: "moveTo", args: [e, a] }); - } - function lineTo(e, a) { - t.push({ cmd: "lineTo", args: [e, a] }); - } - function quadraticCurveTo(e, a, r, n) { - t.push({ cmd: "quadraticCurveTo", args: [e, a, r, n] }); - } - let r = 0; - const n = getInt16(e, r); - let i, - s = 0, - o = 0; - r += 10; - if (n < 0) - do { - i = getUint16(e, r); - const n = getUint16(e, r + 2); - r += 4; - let c, l; - if (1 & i) { - if (2 & i) { - c = getInt16(e, r); - l = getInt16(e, r + 2); - } else { - c = getUint16(e, r); - l = getUint16(e, r + 2); - } - r += 4; - } else if (2 & i) { - c = getInt8(e, r++); - l = getInt8(e, r++); - } else { - c = e[r++]; - l = e[r++]; - } - if (2 & i) { - s = c; - o = l; - } else { - s = 0; - o = 0; - } - let h = 1, - u = 1, - d = 0, - f = 0; - if (8 & i) { - h = u = getFloat214(e, r); - r += 2; - } else if (64 & i) { - h = getFloat214(e, r); - u = getFloat214(e, r + 2); - r += 4; - } else if (128 & i) { - h = getFloat214(e, r); - d = getFloat214(e, r + 2); - f = getFloat214(e, r + 4); - u = getFloat214(e, r + 6); - r += 8; - } - const g = a.glyphs[n]; - if (g) { - t.push( - { cmd: "save" }, - { cmd: "transform", args: [h, d, f, u, s, o] }, - ); - compileGlyf(g, t, a); - t.push({ cmd: "restore" }); - } - } while (32 & i); - else { - const t = []; - let a, c; - for (a = 0; a < n; a++) { - t.push(getUint16(e, r)); - r += 2; - } - r += 2 + getUint16(e, r); - const l = t.at(-1) + 1, - h = []; - for (; h.length < l; ) { - i = e[r++]; - let t = 1; - 8 & i && (t += e[r++]); - for (; t-- > 0; ) h.push({ flags: i }); - } - for (a = 0; a < l; a++) { - switch (18 & h[a].flags) { - case 0: - s += getInt16(e, r); - r += 2; - break; - case 2: - s -= e[r++]; - break; - case 18: - s += e[r++]; - } - h[a].x = s; - } - for (a = 0; a < l; a++) { - switch (36 & h[a].flags) { - case 0: - o += getInt16(e, r); - r += 2; - break; - case 4: - o -= e[r++]; - break; - case 36: - o += e[r++]; - } - h[a].y = o; - } - let u = 0; - for (r = 0; r < n; r++) { - const e = t[r], - n = h.slice(u, e + 1); - if (1 & n[0].flags) n.push(n[0]); - else if (1 & n.at(-1).flags) n.unshift(n.at(-1)); - else { - const e = { - flags: 1, - x: (n[0].x + n.at(-1).x) / 2, - y: (n[0].y + n.at(-1).y) / 2, - }; - n.unshift(e); - n.push(e); - } - moveTo(n[0].x, n[0].y); - for (a = 1, c = n.length; a < c; a++) - if (1 & n[a].flags) lineTo(n[a].x, n[a].y); - else if (1 & n[a + 1].flags) { - quadraticCurveTo(n[a].x, n[a].y, n[a + 1].x, n[a + 1].y); - a++; - } else - quadraticCurveTo( - n[a].x, - n[a].y, - (n[a].x + n[a + 1].x) / 2, - (n[a].y + n[a + 1].y) / 2, - ); - u = e + 1; - } - } - } - function compileCharString(e, t, a, n) { - function moveTo(e, a) { - t.push({ cmd: "moveTo", args: [e, a] }); - } - function lineTo(e, a) { - t.push({ cmd: "lineTo", args: [e, a] }); - } - function bezierCurveTo(e, a, r, n, i, s) { - t.push({ cmd: "bezierCurveTo", args: [e, a, r, n, i, s] }); - } - const i = []; - let o = 0, - c = 0, - l = 0; - !(function parse(e) { - let h = 0; - for (; h < e.length; ) { - let u, - d, - f, - g, - p, - m, - b, - y, - w, - S = !1, - x = e[h++]; - switch (x) { - case 1: - case 3: - case 18: - case 23: - l += i.length >> 1; - S = !0; - break; - case 4: - c += i.pop(); - moveTo(o, c); - S = !0; - break; - case 5: - for (; i.length > 0; ) { - o += i.shift(); - c += i.shift(); - lineTo(o, c); - } - break; - case 6: - for (; i.length > 0; ) { - o += i.shift(); - lineTo(o, c); - if (0 === i.length) break; - c += i.shift(); - lineTo(o, c); - } - break; - case 7: - for (; i.length > 0; ) { - c += i.shift(); - lineTo(o, c); - if (0 === i.length) break; - o += i.shift(); - lineTo(o, c); - } - break; - case 8: - for (; i.length > 0; ) { - u = o + i.shift(); - f = c + i.shift(); - d = u + i.shift(); - g = f + i.shift(); - o = d + i.shift(); - c = g + i.shift(); - bezierCurveTo(u, f, d, g, o, c); - } - break; - case 10: - y = i.pop(); - w = null; - if (a.isCFFCIDFont) { - const e = a.fdSelect.getFDIndex(n); - if (e >= 0 && e < a.fdArray.length) { - const t = a.fdArray[e]; - let r; - t.privateDict?.subrsIndex && - (r = t.privateDict.subrsIndex.objects); - if (r) { - y += getSubroutineBias(r); - w = r[y]; - } - } else (0, r.warn)("Invalid fd index for glyph index."); - } else w = a.subrs[y + a.subrsBias]; - w && parse(w); - break; - case 11: - return; - case 12: - x = e[h++]; - switch (x) { - case 34: - u = o + i.shift(); - d = u + i.shift(); - p = c + i.shift(); - o = d + i.shift(); - bezierCurveTo(u, c, d, p, o, p); - u = o + i.shift(); - d = u + i.shift(); - o = d + i.shift(); - bezierCurveTo(u, p, d, c, o, c); - break; - case 35: - u = o + i.shift(); - f = c + i.shift(); - d = u + i.shift(); - g = f + i.shift(); - o = d + i.shift(); - c = g + i.shift(); - bezierCurveTo(u, f, d, g, o, c); - u = o + i.shift(); - f = c + i.shift(); - d = u + i.shift(); - g = f + i.shift(); - o = d + i.shift(); - c = g + i.shift(); - bezierCurveTo(u, f, d, g, o, c); - i.pop(); - break; - case 36: - u = o + i.shift(); - p = c + i.shift(); - d = u + i.shift(); - m = p + i.shift(); - o = d + i.shift(); - bezierCurveTo(u, p, d, m, o, m); - u = o + i.shift(); - d = u + i.shift(); - b = m + i.shift(); - o = d + i.shift(); - bezierCurveTo(u, m, d, b, o, c); - break; - case 37: - const e = o, - t = c; - u = o + i.shift(); - f = c + i.shift(); - d = u + i.shift(); - g = f + i.shift(); - o = d + i.shift(); - c = g + i.shift(); - bezierCurveTo(u, f, d, g, o, c); - u = o + i.shift(); - f = c + i.shift(); - d = u + i.shift(); - g = f + i.shift(); - o = d; - c = g; - Math.abs(o - e) > Math.abs(c - t) - ? (o += i.shift()) - : (c += i.shift()); - bezierCurveTo(u, f, d, g, o, c); - break; - default: - throw new r.FormatError(`unknown operator: 12 ${x}`); - } - break; - case 14: - if (i.length >= 4) { - const e = i.pop(), - r = i.pop(); - c = i.pop(); - o = i.pop(); - t.push( - { cmd: "save" }, - { cmd: "translate", args: [o, c] }, - ); - let n = lookupCmap( - a.cmap, - String.fromCharCode( - a.glyphNameMap[s.StandardEncoding[e]], - ), - ); - compileCharString(a.glyphs[n.glyphId], t, a, n.glyphId); - t.push({ cmd: "restore" }); - n = lookupCmap( - a.cmap, - String.fromCharCode( - a.glyphNameMap[s.StandardEncoding[r]], - ), - ); - compileCharString(a.glyphs[n.glyphId], t, a, n.glyphId); - } - return; - case 19: - case 20: - l += i.length >> 1; - h += (l + 7) >> 3; - S = !0; - break; - case 21: - c += i.pop(); - o += i.pop(); - moveTo(o, c); - S = !0; - break; - case 22: - o += i.pop(); - moveTo(o, c); - S = !0; - break; - case 24: - for (; i.length > 2; ) { - u = o + i.shift(); - f = c + i.shift(); - d = u + i.shift(); - g = f + i.shift(); - o = d + i.shift(); - c = g + i.shift(); - bezierCurveTo(u, f, d, g, o, c); - } - o += i.shift(); - c += i.shift(); - lineTo(o, c); - break; - case 25: - for (; i.length > 6; ) { - o += i.shift(); - c += i.shift(); - lineTo(o, c); - } - u = o + i.shift(); - f = c + i.shift(); - d = u + i.shift(); - g = f + i.shift(); - o = d + i.shift(); - c = g + i.shift(); - bezierCurveTo(u, f, d, g, o, c); - break; - case 26: - i.length % 2 && (o += i.shift()); - for (; i.length > 0; ) { - u = o; - f = c + i.shift(); - d = u + i.shift(); - g = f + i.shift(); - o = d; - c = g + i.shift(); - bezierCurveTo(u, f, d, g, o, c); - } - break; - case 27: - i.length % 2 && (c += i.shift()); - for (; i.length > 0; ) { - u = o + i.shift(); - f = c; - d = u + i.shift(); - g = f + i.shift(); - o = d + i.shift(); - c = g; - bezierCurveTo(u, f, d, g, o, c); - } - break; - case 28: - i.push(((e[h] << 24) | (e[h + 1] << 16)) >> 16); - h += 2; - break; - case 29: - y = i.pop() + a.gsubrsBias; - w = a.gsubrs[y]; - w && parse(w); - break; - case 30: - for (; i.length > 0; ) { - u = o; - f = c + i.shift(); - d = u + i.shift(); - g = f + i.shift(); - o = d + i.shift(); - c = g + (1 === i.length ? i.shift() : 0); - bezierCurveTo(u, f, d, g, o, c); - if (0 === i.length) break; - u = o + i.shift(); - f = c; - d = u + i.shift(); - g = f + i.shift(); - c = g + i.shift(); - o = d + (1 === i.length ? i.shift() : 0); - bezierCurveTo(u, f, d, g, o, c); - } - break; - case 31: - for (; i.length > 0; ) { - u = o + i.shift(); - f = c; - d = u + i.shift(); - g = f + i.shift(); - c = g + i.shift(); - o = d + (1 === i.length ? i.shift() : 0); - bezierCurveTo(u, f, d, g, o, c); - if (0 === i.length) break; - u = o; - f = c + i.shift(); - d = u + i.shift(); - g = f + i.shift(); - o = d + i.shift(); - c = g + (1 === i.length ? i.shift() : 0); - bezierCurveTo(u, f, d, g, o, c); - } - break; - default: - if (x < 32) - throw new r.FormatError(`unknown operator: ${x}`); - if (x < 247) i.push(x - 139); - else if (x < 251) i.push(256 * (x - 247) + e[h++] + 108); - else if (x < 255) i.push(256 * -(x - 251) - e[h++] - 108); - else { - i.push( - ((e[h] << 24) | - (e[h + 1] << 16) | - (e[h + 2] << 8) | - e[h + 3]) / - 65536, - ); - h += 4; - } - } - S && (i.length = 0); - } - })(e); - } - const c = []; - class CompiledFont { - constructor(e) { - this.constructor === CompiledFont && - (0, r.unreachable)("Cannot initialize CompiledFont."); - this.fontMatrix = e; - this.compiledGlyphs = Object.create(null); - this.compiledCharCodeToGlyphId = Object.create(null); - } - getPathJs(e) { - const { charCode: t, glyphId: a } = lookupCmap(this.cmap, e); - let r = this.compiledGlyphs[a]; - if (!r) - try { - r = this.compileGlyph(this.glyphs[a], a); - this.compiledGlyphs[a] = r; - } catch (e) { - this.compiledGlyphs[a] = c; - void 0 === this.compiledCharCodeToGlyphId[t] && - (this.compiledCharCodeToGlyphId[t] = a); - throw e; - } - void 0 === this.compiledCharCodeToGlyphId[t] && - (this.compiledCharCodeToGlyphId[t] = a); - return r; - } - compileGlyph(e, t) { - if (!e || 0 === e.length || 14 === e[0]) return c; - let a = this.fontMatrix; - if (this.isCFFCIDFont) { - const e = this.fdSelect.getFDIndex(t); - if (e >= 0 && e < this.fdArray.length) { - a = - this.fdArray[e].getByName("FontMatrix") || - r.FONT_IDENTITY_MATRIX; - } else (0, r.warn)("Invalid fd index for glyph index."); - } - const n = [ - { cmd: "save" }, - { cmd: "transform", args: a.slice() }, - { cmd: "scale", args: ["size", "-size"] }, - ]; - this.compileGlyphImpl(e, n, t); - n.push({ cmd: "restore" }); - return n; - } - compileGlyphImpl() { - (0, r.unreachable)("Children classes should implement this."); - } - hasBuiltPath(e) { - const { charCode: t, glyphId: a } = lookupCmap(this.cmap, e); - return ( - void 0 !== this.compiledGlyphs[a] && - void 0 !== this.compiledCharCodeToGlyphId[t] - ); - } - } - class TrueTypeCompiled extends CompiledFont { - constructor(e, t, a) { - super(a || [488e-6, 0, 0, 488e-6, 0, 0]); - this.glyphs = e; - this.cmap = t; - } - compileGlyphImpl(e, t) { - compileGlyf(e, t, this); - } - } - class Type2Compiled extends CompiledFont { - constructor(e, t, a, r) { - super(a || [0.001, 0, 0, 0.001, 0, 0]); - this.glyphs = e.glyphs; - this.gsubrs = e.gsubrs || []; - this.subrs = e.subrs || []; - this.cmap = t; - this.glyphNameMap = r || (0, i.getGlyphsUnicode)(); - this.gsubrsBias = getSubroutineBias(this.gsubrs); - this.subrsBias = getSubroutineBias(this.subrs); - this.isCFFCIDFont = e.isCFFCIDFont; - this.fdSelect = e.fdSelect; - this.fdArray = e.fdArray; - } - compileGlyphImpl(e, t, a) { - compileCharString(e, t, this, a); - } - } - t.FontRendererFactory = class FontRendererFactory { - static create(e, t) { - const a = new Uint8Array(e.data); - let n, i, s, o, c, l; - const h = getUint16(a, 4); - for (let e = 0, u = 12; e < h; e++, u += 16) { - const e = (0, r.bytesToString)(a.subarray(u, u + 4)), - h = getUint32(a, u + 8), - d = getUint32(a, u + 12); - switch (e) { - case "cmap": - n = parseCmap(a, h); - break; - case "glyf": - i = a.subarray(h, h + d); - break; - case "loca": - s = a.subarray(h, h + d); - break; - case "head": - l = getUint16(a, h + 18); - c = getUint16(a, h + 50); - break; - case "CFF ": - o = parseCff(a, h, h + d, t); - } - } - if (i) { - const t = l ? [1 / l, 0, 0, 1 / l, 0, 0] : e.fontMatrix; - return new TrueTypeCompiled( - (function parseGlyfTable(e, t, a) { - let r, n; - if (a) { - r = 4; - n = getUint32; - } else { - r = 2; - n = (e, t) => 2 * getUint16(e, t); - } - const i = []; - let s = n(t, 0); - for (let a = r; a < t.length; a += r) { - const r = n(t, a); - i.push(e.subarray(s, r)); - s = r; - } - return i; - })(i, s, c), - n, - t, - ); - } - return new Type2Compiled(o, n, e.fontMatrix, e.glyphNameMap); - } - }; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.getMetrics = t.getFontBasicMetrics = void 0; - var r = a(3); - const n = (0, r.getLookupTableFactory)(function (e) { - e.Courier = 600; - e["Courier-Bold"] = 600; - e["Courier-BoldOblique"] = 600; - e["Courier-Oblique"] = 600; - e.Helvetica = (0, r.getLookupTableFactory)(function (e) { - e.space = 278; - e.exclam = 278; - e.quotedbl = 355; - e.numbersign = 556; - e.dollar = 556; - e.percent = 889; - e.ampersand = 667; - e.quoteright = 222; - e.parenleft = 333; - e.parenright = 333; - e.asterisk = 389; - e.plus = 584; - e.comma = 278; - e.hyphen = 333; - e.period = 278; - e.slash = 278; - e.zero = 556; - e.one = 556; - e.two = 556; - e.three = 556; - e.four = 556; - e.five = 556; - e.six = 556; - e.seven = 556; - e.eight = 556; - e.nine = 556; - e.colon = 278; - e.semicolon = 278; - e.less = 584; - e.equal = 584; - e.greater = 584; - e.question = 556; - e.at = 1015; - e.A = 667; - e.B = 667; - e.C = 722; - e.D = 722; - e.E = 667; - e.F = 611; - e.G = 778; - e.H = 722; - e.I = 278; - e.J = 500; - e.K = 667; - e.L = 556; - e.M = 833; - e.N = 722; - e.O = 778; - e.P = 667; - e.Q = 778; - e.R = 722; - e.S = 667; - e.T = 611; - e.U = 722; - e.V = 667; - e.W = 944; - e.X = 667; - e.Y = 667; - e.Z = 611; - e.bracketleft = 278; - e.backslash = 278; - e.bracketright = 278; - e.asciicircum = 469; - e.underscore = 556; - e.quoteleft = 222; - e.a = 556; - e.b = 556; - e.c = 500; - e.d = 556; - e.e = 556; - e.f = 278; - e.g = 556; - e.h = 556; - e.i = 222; - e.j = 222; - e.k = 500; - e.l = 222; - e.m = 833; - e.n = 556; - e.o = 556; - e.p = 556; - e.q = 556; - e.r = 333; - e.s = 500; - e.t = 278; - e.u = 556; - e.v = 500; - e.w = 722; - e.x = 500; - e.y = 500; - e.z = 500; - e.braceleft = 334; - e.bar = 260; - e.braceright = 334; - e.asciitilde = 584; - e.exclamdown = 333; - e.cent = 556; - e.sterling = 556; - e.fraction = 167; - e.yen = 556; - e.florin = 556; - e.section = 556; - e.currency = 556; - e.quotesingle = 191; - e.quotedblleft = 333; - e.guillemotleft = 556; - e.guilsinglleft = 333; - e.guilsinglright = 333; - e.fi = 500; - e.fl = 500; - e.endash = 556; - e.dagger = 556; - e.daggerdbl = 556; - e.periodcentered = 278; - e.paragraph = 537; - e.bullet = 350; - e.quotesinglbase = 222; - e.quotedblbase = 333; - e.quotedblright = 333; - e.guillemotright = 556; - e.ellipsis = 1e3; - e.perthousand = 1e3; - e.questiondown = 611; - e.grave = 333; - e.acute = 333; - e.circumflex = 333; - e.tilde = 333; - e.macron = 333; - e.breve = 333; - e.dotaccent = 333; - e.dieresis = 333; - e.ring = 333; - e.cedilla = 333; - e.hungarumlaut = 333; - e.ogonek = 333; - e.caron = 333; - e.emdash = 1e3; - e.AE = 1e3; - e.ordfeminine = 370; - e.Lslash = 556; - e.Oslash = 778; - e.OE = 1e3; - e.ordmasculine = 365; - e.ae = 889; - e.dotlessi = 278; - e.lslash = 222; - e.oslash = 611; - e.oe = 944; - e.germandbls = 611; - e.Idieresis = 278; - e.eacute = 556; - e.abreve = 556; - e.uhungarumlaut = 556; - e.ecaron = 556; - e.Ydieresis = 667; - e.divide = 584; - e.Yacute = 667; - e.Acircumflex = 667; - e.aacute = 556; - e.Ucircumflex = 722; - e.yacute = 500; - e.scommaaccent = 500; - e.ecircumflex = 556; - e.Uring = 722; - e.Udieresis = 722; - e.aogonek = 556; - e.Uacute = 722; - e.uogonek = 556; - e.Edieresis = 667; - e.Dcroat = 722; - e.commaaccent = 250; - e.copyright = 737; - e.Emacron = 667; - e.ccaron = 500; - e.aring = 556; - e.Ncommaaccent = 722; - e.lacute = 222; - e.agrave = 556; - e.Tcommaaccent = 611; - e.Cacute = 722; - e.atilde = 556; - e.Edotaccent = 667; - e.scaron = 500; - e.scedilla = 500; - e.iacute = 278; - e.lozenge = 471; - e.Rcaron = 722; - e.Gcommaaccent = 778; - e.ucircumflex = 556; - e.acircumflex = 556; - e.Amacron = 667; - e.rcaron = 333; - e.ccedilla = 500; - e.Zdotaccent = 611; - e.Thorn = 667; - e.Omacron = 778; - e.Racute = 722; - e.Sacute = 667; - e.dcaron = 643; - e.Umacron = 722; - e.uring = 556; - e.threesuperior = 333; - e.Ograve = 778; - e.Agrave = 667; - e.Abreve = 667; - e.multiply = 584; - e.uacute = 556; - e.Tcaron = 611; - e.partialdiff = 476; - e.ydieresis = 500; - e.Nacute = 722; - e.icircumflex = 278; - e.Ecircumflex = 667; - e.adieresis = 556; - e.edieresis = 556; - e.cacute = 500; - e.nacute = 556; - e.umacron = 556; - e.Ncaron = 722; - e.Iacute = 278; - e.plusminus = 584; - e.brokenbar = 260; - e.registered = 737; - e.Gbreve = 778; - e.Idotaccent = 278; - e.summation = 600; - e.Egrave = 667; - e.racute = 333; - e.omacron = 556; - e.Zacute = 611; - e.Zcaron = 611; - e.greaterequal = 549; - e.Eth = 722; - e.Ccedilla = 722; - e.lcommaaccent = 222; - e.tcaron = 317; - e.eogonek = 556; - e.Uogonek = 722; - e.Aacute = 667; - e.Adieresis = 667; - e.egrave = 556; - e.zacute = 500; - e.iogonek = 222; - e.Oacute = 778; - e.oacute = 556; - e.amacron = 556; - e.sacute = 500; - e.idieresis = 278; - e.Ocircumflex = 778; - e.Ugrave = 722; - e.Delta = 612; - e.thorn = 556; - e.twosuperior = 333; - e.Odieresis = 778; - e.mu = 556; - e.igrave = 278; - e.ohungarumlaut = 556; - e.Eogonek = 667; - e.dcroat = 556; - e.threequarters = 834; - e.Scedilla = 667; - e.lcaron = 299; - e.Kcommaaccent = 667; - e.Lacute = 556; - e.trademark = 1e3; - e.edotaccent = 556; - e.Igrave = 278; - e.Imacron = 278; - e.Lcaron = 556; - e.onehalf = 834; - e.lessequal = 549; - e.ocircumflex = 556; - e.ntilde = 556; - e.Uhungarumlaut = 722; - e.Eacute = 667; - e.emacron = 556; - e.gbreve = 556; - e.onequarter = 834; - e.Scaron = 667; - e.Scommaaccent = 667; - e.Ohungarumlaut = 778; - e.degree = 400; - e.ograve = 556; - e.Ccaron = 722; - e.ugrave = 556; - e.radical = 453; - e.Dcaron = 722; - e.rcommaaccent = 333; - e.Ntilde = 722; - e.otilde = 556; - e.Rcommaaccent = 722; - e.Lcommaaccent = 556; - e.Atilde = 667; - e.Aogonek = 667; - e.Aring = 667; - e.Otilde = 778; - e.zdotaccent = 500; - e.Ecaron = 667; - e.Iogonek = 278; - e.kcommaaccent = 500; - e.minus = 584; - e.Icircumflex = 278; - e.ncaron = 556; - e.tcommaaccent = 278; - e.logicalnot = 584; - e.odieresis = 556; - e.udieresis = 556; - e.notequal = 549; - e.gcommaaccent = 556; - e.eth = 556; - e.zcaron = 500; - e.ncommaaccent = 556; - e.onesuperior = 333; - e.imacron = 278; - e.Euro = 556; - }); - e["Helvetica-Bold"] = (0, r.getLookupTableFactory)(function (e) { - e.space = 278; - e.exclam = 333; - e.quotedbl = 474; - e.numbersign = 556; - e.dollar = 556; - e.percent = 889; - e.ampersand = 722; - e.quoteright = 278; - e.parenleft = 333; - e.parenright = 333; - e.asterisk = 389; - e.plus = 584; - e.comma = 278; - e.hyphen = 333; - e.period = 278; - e.slash = 278; - e.zero = 556; - e.one = 556; - e.two = 556; - e.three = 556; - e.four = 556; - e.five = 556; - e.six = 556; - e.seven = 556; - e.eight = 556; - e.nine = 556; - e.colon = 333; - e.semicolon = 333; - e.less = 584; - e.equal = 584; - e.greater = 584; - e.question = 611; - e.at = 975; - e.A = 722; - e.B = 722; - e.C = 722; - e.D = 722; - e.E = 667; - e.F = 611; - e.G = 778; - e.H = 722; - e.I = 278; - e.J = 556; - e.K = 722; - e.L = 611; - e.M = 833; - e.N = 722; - e.O = 778; - e.P = 667; - e.Q = 778; - e.R = 722; - e.S = 667; - e.T = 611; - e.U = 722; - e.V = 667; - e.W = 944; - e.X = 667; - e.Y = 667; - e.Z = 611; - e.bracketleft = 333; - e.backslash = 278; - e.bracketright = 333; - e.asciicircum = 584; - e.underscore = 556; - e.quoteleft = 278; - e.a = 556; - e.b = 611; - e.c = 556; - e.d = 611; - e.e = 556; - e.f = 333; - e.g = 611; - e.h = 611; - e.i = 278; - e.j = 278; - e.k = 556; - e.l = 278; - e.m = 889; - e.n = 611; - e.o = 611; - e.p = 611; - e.q = 611; - e.r = 389; - e.s = 556; - e.t = 333; - e.u = 611; - e.v = 556; - e.w = 778; - e.x = 556; - e.y = 556; - e.z = 500; - e.braceleft = 389; - e.bar = 280; - e.braceright = 389; - e.asciitilde = 584; - e.exclamdown = 333; - e.cent = 556; - e.sterling = 556; - e.fraction = 167; - e.yen = 556; - e.florin = 556; - e.section = 556; - e.currency = 556; - e.quotesingle = 238; - e.quotedblleft = 500; - e.guillemotleft = 556; - e.guilsinglleft = 333; - e.guilsinglright = 333; - e.fi = 611; - e.fl = 611; - e.endash = 556; - e.dagger = 556; - e.daggerdbl = 556; - e.periodcentered = 278; - e.paragraph = 556; - e.bullet = 350; - e.quotesinglbase = 278; - e.quotedblbase = 500; - e.quotedblright = 500; - e.guillemotright = 556; - e.ellipsis = 1e3; - e.perthousand = 1e3; - e.questiondown = 611; - e.grave = 333; - e.acute = 333; - e.circumflex = 333; - e.tilde = 333; - e.macron = 333; - e.breve = 333; - e.dotaccent = 333; - e.dieresis = 333; - e.ring = 333; - e.cedilla = 333; - e.hungarumlaut = 333; - e.ogonek = 333; - e.caron = 333; - e.emdash = 1e3; - e.AE = 1e3; - e.ordfeminine = 370; - e.Lslash = 611; - e.Oslash = 778; - e.OE = 1e3; - e.ordmasculine = 365; - e.ae = 889; - e.dotlessi = 278; - e.lslash = 278; - e.oslash = 611; - e.oe = 944; - e.germandbls = 611; - e.Idieresis = 278; - e.eacute = 556; - e.abreve = 556; - e.uhungarumlaut = 611; - e.ecaron = 556; - e.Ydieresis = 667; - e.divide = 584; - e.Yacute = 667; - e.Acircumflex = 722; - e.aacute = 556; - e.Ucircumflex = 722; - e.yacute = 556; - e.scommaaccent = 556; - e.ecircumflex = 556; - e.Uring = 722; - e.Udieresis = 722; - e.aogonek = 556; - e.Uacute = 722; - e.uogonek = 611; - e.Edieresis = 667; - e.Dcroat = 722; - e.commaaccent = 250; - e.copyright = 737; - e.Emacron = 667; - e.ccaron = 556; - e.aring = 556; - e.Ncommaaccent = 722; - e.lacute = 278; - e.agrave = 556; - e.Tcommaaccent = 611; - e.Cacute = 722; - e.atilde = 556; - e.Edotaccent = 667; - e.scaron = 556; - e.scedilla = 556; - e.iacute = 278; - e.lozenge = 494; - e.Rcaron = 722; - e.Gcommaaccent = 778; - e.ucircumflex = 611; - e.acircumflex = 556; - e.Amacron = 722; - e.rcaron = 389; - e.ccedilla = 556; - e.Zdotaccent = 611; - e.Thorn = 667; - e.Omacron = 778; - e.Racute = 722; - e.Sacute = 667; - e.dcaron = 743; - e.Umacron = 722; - e.uring = 611; - e.threesuperior = 333; - e.Ograve = 778; - e.Agrave = 722; - e.Abreve = 722; - e.multiply = 584; - e.uacute = 611; - e.Tcaron = 611; - e.partialdiff = 494; - e.ydieresis = 556; - e.Nacute = 722; - e.icircumflex = 278; - e.Ecircumflex = 667; - e.adieresis = 556; - e.edieresis = 556; - e.cacute = 556; - e.nacute = 611; - e.umacron = 611; - e.Ncaron = 722; - e.Iacute = 278; - e.plusminus = 584; - e.brokenbar = 280; - e.registered = 737; - e.Gbreve = 778; - e.Idotaccent = 278; - e.summation = 600; - e.Egrave = 667; - e.racute = 389; - e.omacron = 611; - e.Zacute = 611; - e.Zcaron = 611; - e.greaterequal = 549; - e.Eth = 722; - e.Ccedilla = 722; - e.lcommaaccent = 278; - e.tcaron = 389; - e.eogonek = 556; - e.Uogonek = 722; - e.Aacute = 722; - e.Adieresis = 722; - e.egrave = 556; - e.zacute = 500; - e.iogonek = 278; - e.Oacute = 778; - e.oacute = 611; - e.amacron = 556; - e.sacute = 556; - e.idieresis = 278; - e.Ocircumflex = 778; - e.Ugrave = 722; - e.Delta = 612; - e.thorn = 611; - e.twosuperior = 333; - e.Odieresis = 778; - e.mu = 611; - e.igrave = 278; - e.ohungarumlaut = 611; - e.Eogonek = 667; - e.dcroat = 611; - e.threequarters = 834; - e.Scedilla = 667; - e.lcaron = 400; - e.Kcommaaccent = 722; - e.Lacute = 611; - e.trademark = 1e3; - e.edotaccent = 556; - e.Igrave = 278; - e.Imacron = 278; - e.Lcaron = 611; - e.onehalf = 834; - e.lessequal = 549; - e.ocircumflex = 611; - e.ntilde = 611; - e.Uhungarumlaut = 722; - e.Eacute = 667; - e.emacron = 556; - e.gbreve = 611; - e.onequarter = 834; - e.Scaron = 667; - e.Scommaaccent = 667; - e.Ohungarumlaut = 778; - e.degree = 400; - e.ograve = 611; - e.Ccaron = 722; - e.ugrave = 611; - e.radical = 549; - e.Dcaron = 722; - e.rcommaaccent = 389; - e.Ntilde = 722; - e.otilde = 611; - e.Rcommaaccent = 722; - e.Lcommaaccent = 611; - e.Atilde = 722; - e.Aogonek = 722; - e.Aring = 722; - e.Otilde = 778; - e.zdotaccent = 500; - e.Ecaron = 667; - e.Iogonek = 278; - e.kcommaaccent = 556; - e.minus = 584; - e.Icircumflex = 278; - e.ncaron = 611; - e.tcommaaccent = 333; - e.logicalnot = 584; - e.odieresis = 611; - e.udieresis = 611; - e.notequal = 549; - e.gcommaaccent = 611; - e.eth = 611; - e.zcaron = 500; - e.ncommaaccent = 611; - e.onesuperior = 333; - e.imacron = 278; - e.Euro = 556; - }); - e["Helvetica-BoldOblique"] = (0, r.getLookupTableFactory)( - function (e) { - e.space = 278; - e.exclam = 333; - e.quotedbl = 474; - e.numbersign = 556; - e.dollar = 556; - e.percent = 889; - e.ampersand = 722; - e.quoteright = 278; - e.parenleft = 333; - e.parenright = 333; - e.asterisk = 389; - e.plus = 584; - e.comma = 278; - e.hyphen = 333; - e.period = 278; - e.slash = 278; - e.zero = 556; - e.one = 556; - e.two = 556; - e.three = 556; - e.four = 556; - e.five = 556; - e.six = 556; - e.seven = 556; - e.eight = 556; - e.nine = 556; - e.colon = 333; - e.semicolon = 333; - e.less = 584; - e.equal = 584; - e.greater = 584; - e.question = 611; - e.at = 975; - e.A = 722; - e.B = 722; - e.C = 722; - e.D = 722; - e.E = 667; - e.F = 611; - e.G = 778; - e.H = 722; - e.I = 278; - e.J = 556; - e.K = 722; - e.L = 611; - e.M = 833; - e.N = 722; - e.O = 778; - e.P = 667; - e.Q = 778; - e.R = 722; - e.S = 667; - e.T = 611; - e.U = 722; - e.V = 667; - e.W = 944; - e.X = 667; - e.Y = 667; - e.Z = 611; - e.bracketleft = 333; - e.backslash = 278; - e.bracketright = 333; - e.asciicircum = 584; - e.underscore = 556; - e.quoteleft = 278; - e.a = 556; - e.b = 611; - e.c = 556; - e.d = 611; - e.e = 556; - e.f = 333; - e.g = 611; - e.h = 611; - e.i = 278; - e.j = 278; - e.k = 556; - e.l = 278; - e.m = 889; - e.n = 611; - e.o = 611; - e.p = 611; - e.q = 611; - e.r = 389; - e.s = 556; - e.t = 333; - e.u = 611; - e.v = 556; - e.w = 778; - e.x = 556; - e.y = 556; - e.z = 500; - e.braceleft = 389; - e.bar = 280; - e.braceright = 389; - e.asciitilde = 584; - e.exclamdown = 333; - e.cent = 556; - e.sterling = 556; - e.fraction = 167; - e.yen = 556; - e.florin = 556; - e.section = 556; - e.currency = 556; - e.quotesingle = 238; - e.quotedblleft = 500; - e.guillemotleft = 556; - e.guilsinglleft = 333; - e.guilsinglright = 333; - e.fi = 611; - e.fl = 611; - e.endash = 556; - e.dagger = 556; - e.daggerdbl = 556; - e.periodcentered = 278; - e.paragraph = 556; - e.bullet = 350; - e.quotesinglbase = 278; - e.quotedblbase = 500; - e.quotedblright = 500; - e.guillemotright = 556; - e.ellipsis = 1e3; - e.perthousand = 1e3; - e.questiondown = 611; - e.grave = 333; - e.acute = 333; - e.circumflex = 333; - e.tilde = 333; - e.macron = 333; - e.breve = 333; - e.dotaccent = 333; - e.dieresis = 333; - e.ring = 333; - e.cedilla = 333; - e.hungarumlaut = 333; - e.ogonek = 333; - e.caron = 333; - e.emdash = 1e3; - e.AE = 1e3; - e.ordfeminine = 370; - e.Lslash = 611; - e.Oslash = 778; - e.OE = 1e3; - e.ordmasculine = 365; - e.ae = 889; - e.dotlessi = 278; - e.lslash = 278; - e.oslash = 611; - e.oe = 944; - e.germandbls = 611; - e.Idieresis = 278; - e.eacute = 556; - e.abreve = 556; - e.uhungarumlaut = 611; - e.ecaron = 556; - e.Ydieresis = 667; - e.divide = 584; - e.Yacute = 667; - e.Acircumflex = 722; - e.aacute = 556; - e.Ucircumflex = 722; - e.yacute = 556; - e.scommaaccent = 556; - e.ecircumflex = 556; - e.Uring = 722; - e.Udieresis = 722; - e.aogonek = 556; - e.Uacute = 722; - e.uogonek = 611; - e.Edieresis = 667; - e.Dcroat = 722; - e.commaaccent = 250; - e.copyright = 737; - e.Emacron = 667; - e.ccaron = 556; - e.aring = 556; - e.Ncommaaccent = 722; - e.lacute = 278; - e.agrave = 556; - e.Tcommaaccent = 611; - e.Cacute = 722; - e.atilde = 556; - e.Edotaccent = 667; - e.scaron = 556; - e.scedilla = 556; - e.iacute = 278; - e.lozenge = 494; - e.Rcaron = 722; - e.Gcommaaccent = 778; - e.ucircumflex = 611; - e.acircumflex = 556; - e.Amacron = 722; - e.rcaron = 389; - e.ccedilla = 556; - e.Zdotaccent = 611; - e.Thorn = 667; - e.Omacron = 778; - e.Racute = 722; - e.Sacute = 667; - e.dcaron = 743; - e.Umacron = 722; - e.uring = 611; - e.threesuperior = 333; - e.Ograve = 778; - e.Agrave = 722; - e.Abreve = 722; - e.multiply = 584; - e.uacute = 611; - e.Tcaron = 611; - e.partialdiff = 494; - e.ydieresis = 556; - e.Nacute = 722; - e.icircumflex = 278; - e.Ecircumflex = 667; - e.adieresis = 556; - e.edieresis = 556; - e.cacute = 556; - e.nacute = 611; - e.umacron = 611; - e.Ncaron = 722; - e.Iacute = 278; - e.plusminus = 584; - e.brokenbar = 280; - e.registered = 737; - e.Gbreve = 778; - e.Idotaccent = 278; - e.summation = 600; - e.Egrave = 667; - e.racute = 389; - e.omacron = 611; - e.Zacute = 611; - e.Zcaron = 611; - e.greaterequal = 549; - e.Eth = 722; - e.Ccedilla = 722; - e.lcommaaccent = 278; - e.tcaron = 389; - e.eogonek = 556; - e.Uogonek = 722; - e.Aacute = 722; - e.Adieresis = 722; - e.egrave = 556; - e.zacute = 500; - e.iogonek = 278; - e.Oacute = 778; - e.oacute = 611; - e.amacron = 556; - e.sacute = 556; - e.idieresis = 278; - e.Ocircumflex = 778; - e.Ugrave = 722; - e.Delta = 612; - e.thorn = 611; - e.twosuperior = 333; - e.Odieresis = 778; - e.mu = 611; - e.igrave = 278; - e.ohungarumlaut = 611; - e.Eogonek = 667; - e.dcroat = 611; - e.threequarters = 834; - e.Scedilla = 667; - e.lcaron = 400; - e.Kcommaaccent = 722; - e.Lacute = 611; - e.trademark = 1e3; - e.edotaccent = 556; - e.Igrave = 278; - e.Imacron = 278; - e.Lcaron = 611; - e.onehalf = 834; - e.lessequal = 549; - e.ocircumflex = 611; - e.ntilde = 611; - e.Uhungarumlaut = 722; - e.Eacute = 667; - e.emacron = 556; - e.gbreve = 611; - e.onequarter = 834; - e.Scaron = 667; - e.Scommaaccent = 667; - e.Ohungarumlaut = 778; - e.degree = 400; - e.ograve = 611; - e.Ccaron = 722; - e.ugrave = 611; - e.radical = 549; - e.Dcaron = 722; - e.rcommaaccent = 389; - e.Ntilde = 722; - e.otilde = 611; - e.Rcommaaccent = 722; - e.Lcommaaccent = 611; - e.Atilde = 722; - e.Aogonek = 722; - e.Aring = 722; - e.Otilde = 778; - e.zdotaccent = 500; - e.Ecaron = 667; - e.Iogonek = 278; - e.kcommaaccent = 556; - e.minus = 584; - e.Icircumflex = 278; - e.ncaron = 611; - e.tcommaaccent = 333; - e.logicalnot = 584; - e.odieresis = 611; - e.udieresis = 611; - e.notequal = 549; - e.gcommaaccent = 611; - e.eth = 611; - e.zcaron = 500; - e.ncommaaccent = 611; - e.onesuperior = 333; - e.imacron = 278; - e.Euro = 556; - }, - ); - e["Helvetica-Oblique"] = (0, r.getLookupTableFactory)(function (e) { - e.space = 278; - e.exclam = 278; - e.quotedbl = 355; - e.numbersign = 556; - e.dollar = 556; - e.percent = 889; - e.ampersand = 667; - e.quoteright = 222; - e.parenleft = 333; - e.parenright = 333; - e.asterisk = 389; - e.plus = 584; - e.comma = 278; - e.hyphen = 333; - e.period = 278; - e.slash = 278; - e.zero = 556; - e.one = 556; - e.two = 556; - e.three = 556; - e.four = 556; - e.five = 556; - e.six = 556; - e.seven = 556; - e.eight = 556; - e.nine = 556; - e.colon = 278; - e.semicolon = 278; - e.less = 584; - e.equal = 584; - e.greater = 584; - e.question = 556; - e.at = 1015; - e.A = 667; - e.B = 667; - e.C = 722; - e.D = 722; - e.E = 667; - e.F = 611; - e.G = 778; - e.H = 722; - e.I = 278; - e.J = 500; - e.K = 667; - e.L = 556; - e.M = 833; - e.N = 722; - e.O = 778; - e.P = 667; - e.Q = 778; - e.R = 722; - e.S = 667; - e.T = 611; - e.U = 722; - e.V = 667; - e.W = 944; - e.X = 667; - e.Y = 667; - e.Z = 611; - e.bracketleft = 278; - e.backslash = 278; - e.bracketright = 278; - e.asciicircum = 469; - e.underscore = 556; - e.quoteleft = 222; - e.a = 556; - e.b = 556; - e.c = 500; - e.d = 556; - e.e = 556; - e.f = 278; - e.g = 556; - e.h = 556; - e.i = 222; - e.j = 222; - e.k = 500; - e.l = 222; - e.m = 833; - e.n = 556; - e.o = 556; - e.p = 556; - e.q = 556; - e.r = 333; - e.s = 500; - e.t = 278; - e.u = 556; - e.v = 500; - e.w = 722; - e.x = 500; - e.y = 500; - e.z = 500; - e.braceleft = 334; - e.bar = 260; - e.braceright = 334; - e.asciitilde = 584; - e.exclamdown = 333; - e.cent = 556; - e.sterling = 556; - e.fraction = 167; - e.yen = 556; - e.florin = 556; - e.section = 556; - e.currency = 556; - e.quotesingle = 191; - e.quotedblleft = 333; - e.guillemotleft = 556; - e.guilsinglleft = 333; - e.guilsinglright = 333; - e.fi = 500; - e.fl = 500; - e.endash = 556; - e.dagger = 556; - e.daggerdbl = 556; - e.periodcentered = 278; - e.paragraph = 537; - e.bullet = 350; - e.quotesinglbase = 222; - e.quotedblbase = 333; - e.quotedblright = 333; - e.guillemotright = 556; - e.ellipsis = 1e3; - e.perthousand = 1e3; - e.questiondown = 611; - e.grave = 333; - e.acute = 333; - e.circumflex = 333; - e.tilde = 333; - e.macron = 333; - e.breve = 333; - e.dotaccent = 333; - e.dieresis = 333; - e.ring = 333; - e.cedilla = 333; - e.hungarumlaut = 333; - e.ogonek = 333; - e.caron = 333; - e.emdash = 1e3; - e.AE = 1e3; - e.ordfeminine = 370; - e.Lslash = 556; - e.Oslash = 778; - e.OE = 1e3; - e.ordmasculine = 365; - e.ae = 889; - e.dotlessi = 278; - e.lslash = 222; - e.oslash = 611; - e.oe = 944; - e.germandbls = 611; - e.Idieresis = 278; - e.eacute = 556; - e.abreve = 556; - e.uhungarumlaut = 556; - e.ecaron = 556; - e.Ydieresis = 667; - e.divide = 584; - e.Yacute = 667; - e.Acircumflex = 667; - e.aacute = 556; - e.Ucircumflex = 722; - e.yacute = 500; - e.scommaaccent = 500; - e.ecircumflex = 556; - e.Uring = 722; - e.Udieresis = 722; - e.aogonek = 556; - e.Uacute = 722; - e.uogonek = 556; - e.Edieresis = 667; - e.Dcroat = 722; - e.commaaccent = 250; - e.copyright = 737; - e.Emacron = 667; - e.ccaron = 500; - e.aring = 556; - e.Ncommaaccent = 722; - e.lacute = 222; - e.agrave = 556; - e.Tcommaaccent = 611; - e.Cacute = 722; - e.atilde = 556; - e.Edotaccent = 667; - e.scaron = 500; - e.scedilla = 500; - e.iacute = 278; - e.lozenge = 471; - e.Rcaron = 722; - e.Gcommaaccent = 778; - e.ucircumflex = 556; - e.acircumflex = 556; - e.Amacron = 667; - e.rcaron = 333; - e.ccedilla = 500; - e.Zdotaccent = 611; - e.Thorn = 667; - e.Omacron = 778; - e.Racute = 722; - e.Sacute = 667; - e.dcaron = 643; - e.Umacron = 722; - e.uring = 556; - e.threesuperior = 333; - e.Ograve = 778; - e.Agrave = 667; - e.Abreve = 667; - e.multiply = 584; - e.uacute = 556; - e.Tcaron = 611; - e.partialdiff = 476; - e.ydieresis = 500; - e.Nacute = 722; - e.icircumflex = 278; - e.Ecircumflex = 667; - e.adieresis = 556; - e.edieresis = 556; - e.cacute = 500; - e.nacute = 556; - e.umacron = 556; - e.Ncaron = 722; - e.Iacute = 278; - e.plusminus = 584; - e.brokenbar = 260; - e.registered = 737; - e.Gbreve = 778; - e.Idotaccent = 278; - e.summation = 600; - e.Egrave = 667; - e.racute = 333; - e.omacron = 556; - e.Zacute = 611; - e.Zcaron = 611; - e.greaterequal = 549; - e.Eth = 722; - e.Ccedilla = 722; - e.lcommaaccent = 222; - e.tcaron = 317; - e.eogonek = 556; - e.Uogonek = 722; - e.Aacute = 667; - e.Adieresis = 667; - e.egrave = 556; - e.zacute = 500; - e.iogonek = 222; - e.Oacute = 778; - e.oacute = 556; - e.amacron = 556; - e.sacute = 500; - e.idieresis = 278; - e.Ocircumflex = 778; - e.Ugrave = 722; - e.Delta = 612; - e.thorn = 556; - e.twosuperior = 333; - e.Odieresis = 778; - e.mu = 556; - e.igrave = 278; - e.ohungarumlaut = 556; - e.Eogonek = 667; - e.dcroat = 556; - e.threequarters = 834; - e.Scedilla = 667; - e.lcaron = 299; - e.Kcommaaccent = 667; - e.Lacute = 556; - e.trademark = 1e3; - e.edotaccent = 556; - e.Igrave = 278; - e.Imacron = 278; - e.Lcaron = 556; - e.onehalf = 834; - e.lessequal = 549; - e.ocircumflex = 556; - e.ntilde = 556; - e.Uhungarumlaut = 722; - e.Eacute = 667; - e.emacron = 556; - e.gbreve = 556; - e.onequarter = 834; - e.Scaron = 667; - e.Scommaaccent = 667; - e.Ohungarumlaut = 778; - e.degree = 400; - e.ograve = 556; - e.Ccaron = 722; - e.ugrave = 556; - e.radical = 453; - e.Dcaron = 722; - e.rcommaaccent = 333; - e.Ntilde = 722; - e.otilde = 556; - e.Rcommaaccent = 722; - e.Lcommaaccent = 556; - e.Atilde = 667; - e.Aogonek = 667; - e.Aring = 667; - e.Otilde = 778; - e.zdotaccent = 500; - e.Ecaron = 667; - e.Iogonek = 278; - e.kcommaaccent = 500; - e.minus = 584; - e.Icircumflex = 278; - e.ncaron = 556; - e.tcommaaccent = 278; - e.logicalnot = 584; - e.odieresis = 556; - e.udieresis = 556; - e.notequal = 549; - e.gcommaaccent = 556; - e.eth = 556; - e.zcaron = 500; - e.ncommaaccent = 556; - e.onesuperior = 333; - e.imacron = 278; - e.Euro = 556; - }); - e.Symbol = (0, r.getLookupTableFactory)(function (e) { - e.space = 250; - e.exclam = 333; - e.universal = 713; - e.numbersign = 500; - e.existential = 549; - e.percent = 833; - e.ampersand = 778; - e.suchthat = 439; - e.parenleft = 333; - e.parenright = 333; - e.asteriskmath = 500; - e.plus = 549; - e.comma = 250; - e.minus = 549; - e.period = 250; - e.slash = 278; - e.zero = 500; - e.one = 500; - e.two = 500; - e.three = 500; - e.four = 500; - e.five = 500; - e.six = 500; - e.seven = 500; - e.eight = 500; - e.nine = 500; - e.colon = 278; - e.semicolon = 278; - e.less = 549; - e.equal = 549; - e.greater = 549; - e.question = 444; - e.congruent = 549; - e.Alpha = 722; - e.Beta = 667; - e.Chi = 722; - e.Delta = 612; - e.Epsilon = 611; - e.Phi = 763; - e.Gamma = 603; - e.Eta = 722; - e.Iota = 333; - e.theta1 = 631; - e.Kappa = 722; - e.Lambda = 686; - e.Mu = 889; - e.Nu = 722; - e.Omicron = 722; - e.Pi = 768; - e.Theta = 741; - e.Rho = 556; - e.Sigma = 592; - e.Tau = 611; - e.Upsilon = 690; - e.sigma1 = 439; - e.Omega = 768; - e.Xi = 645; - e.Psi = 795; - e.Zeta = 611; - e.bracketleft = 333; - e.therefore = 863; - e.bracketright = 333; - e.perpendicular = 658; - e.underscore = 500; - e.radicalex = 500; - e.alpha = 631; - e.beta = 549; - e.chi = 549; - e.delta = 494; - e.epsilon = 439; - e.phi = 521; - e.gamma = 411; - e.eta = 603; - e.iota = 329; - e.phi1 = 603; - e.kappa = 549; - e.lambda = 549; - e.mu = 576; - e.nu = 521; - e.omicron = 549; - e.pi = 549; - e.theta = 521; - e.rho = 549; - e.sigma = 603; - e.tau = 439; - e.upsilon = 576; - e.omega1 = 713; - e.omega = 686; - e.xi = 493; - e.psi = 686; - e.zeta = 494; - e.braceleft = 480; - e.bar = 200; - e.braceright = 480; - e.similar = 549; - e.Euro = 750; - e.Upsilon1 = 620; - e.minute = 247; - e.lessequal = 549; - e.fraction = 167; - e.infinity = 713; - e.florin = 500; - e.club = 753; - e.diamond = 753; - e.heart = 753; - e.spade = 753; - e.arrowboth = 1042; - e.arrowleft = 987; - e.arrowup = 603; - e.arrowright = 987; - e.arrowdown = 603; - e.degree = 400; - e.plusminus = 549; - e.second = 411; - e.greaterequal = 549; - e.multiply = 549; - e.proportional = 713; - e.partialdiff = 494; - e.bullet = 460; - e.divide = 549; - e.notequal = 549; - e.equivalence = 549; - e.approxequal = 549; - e.ellipsis = 1e3; - e.arrowvertex = 603; - e.arrowhorizex = 1e3; - e.carriagereturn = 658; - e.aleph = 823; - e.Ifraktur = 686; - e.Rfraktur = 795; - e.weierstrass = 987; - e.circlemultiply = 768; - e.circleplus = 768; - e.emptyset = 823; - e.intersection = 768; - e.union = 768; - e.propersuperset = 713; - e.reflexsuperset = 713; - e.notsubset = 713; - e.propersubset = 713; - e.reflexsubset = 713; - e.element = 713; - e.notelement = 713; - e.angle = 768; - e.gradient = 713; - e.registerserif = 790; - e.copyrightserif = 790; - e.trademarkserif = 890; - e.product = 823; - e.radical = 549; - e.dotmath = 250; - e.logicalnot = 713; - e.logicaland = 603; - e.logicalor = 603; - e.arrowdblboth = 1042; - e.arrowdblleft = 987; - e.arrowdblup = 603; - e.arrowdblright = 987; - e.arrowdbldown = 603; - e.lozenge = 494; - e.angleleft = 329; - e.registersans = 790; - e.copyrightsans = 790; - e.trademarksans = 786; - e.summation = 713; - e.parenlefttp = 384; - e.parenleftex = 384; - e.parenleftbt = 384; - e.bracketlefttp = 384; - e.bracketleftex = 384; - e.bracketleftbt = 384; - e.bracelefttp = 494; - e.braceleftmid = 494; - e.braceleftbt = 494; - e.braceex = 494; - e.angleright = 329; - e.integral = 274; - e.integraltp = 686; - e.integralex = 686; - e.integralbt = 686; - e.parenrighttp = 384; - e.parenrightex = 384; - e.parenrightbt = 384; - e.bracketrighttp = 384; - e.bracketrightex = 384; - e.bracketrightbt = 384; - e.bracerighttp = 494; - e.bracerightmid = 494; - e.bracerightbt = 494; - e.apple = 790; - }); - e["Times-Roman"] = (0, r.getLookupTableFactory)(function (e) { - e.space = 250; - e.exclam = 333; - e.quotedbl = 408; - e.numbersign = 500; - e.dollar = 500; - e.percent = 833; - e.ampersand = 778; - e.quoteright = 333; - e.parenleft = 333; - e.parenright = 333; - e.asterisk = 500; - e.plus = 564; - e.comma = 250; - e.hyphen = 333; - e.period = 250; - e.slash = 278; - e.zero = 500; - e.one = 500; - e.two = 500; - e.three = 500; - e.four = 500; - e.five = 500; - e.six = 500; - e.seven = 500; - e.eight = 500; - e.nine = 500; - e.colon = 278; - e.semicolon = 278; - e.less = 564; - e.equal = 564; - e.greater = 564; - e.question = 444; - e.at = 921; - e.A = 722; - e.B = 667; - e.C = 667; - e.D = 722; - e.E = 611; - e.F = 556; - e.G = 722; - e.H = 722; - e.I = 333; - e.J = 389; - e.K = 722; - e.L = 611; - e.M = 889; - e.N = 722; - e.O = 722; - e.P = 556; - e.Q = 722; - e.R = 667; - e.S = 556; - e.T = 611; - e.U = 722; - e.V = 722; - e.W = 944; - e.X = 722; - e.Y = 722; - e.Z = 611; - e.bracketleft = 333; - e.backslash = 278; - e.bracketright = 333; - e.asciicircum = 469; - e.underscore = 500; - e.quoteleft = 333; - e.a = 444; - e.b = 500; - e.c = 444; - e.d = 500; - e.e = 444; - e.f = 333; - e.g = 500; - e.h = 500; - e.i = 278; - e.j = 278; - e.k = 500; - e.l = 278; - e.m = 778; - e.n = 500; - e.o = 500; - e.p = 500; - e.q = 500; - e.r = 333; - e.s = 389; - e.t = 278; - e.u = 500; - e.v = 500; - e.w = 722; - e.x = 500; - e.y = 500; - e.z = 444; - e.braceleft = 480; - e.bar = 200; - e.braceright = 480; - e.asciitilde = 541; - e.exclamdown = 333; - e.cent = 500; - e.sterling = 500; - e.fraction = 167; - e.yen = 500; - e.florin = 500; - e.section = 500; - e.currency = 500; - e.quotesingle = 180; - e.quotedblleft = 444; - e.guillemotleft = 500; - e.guilsinglleft = 333; - e.guilsinglright = 333; - e.fi = 556; - e.fl = 556; - e.endash = 500; - e.dagger = 500; - e.daggerdbl = 500; - e.periodcentered = 250; - e.paragraph = 453; - e.bullet = 350; - e.quotesinglbase = 333; - e.quotedblbase = 444; - e.quotedblright = 444; - e.guillemotright = 500; - e.ellipsis = 1e3; - e.perthousand = 1e3; - e.questiondown = 444; - e.grave = 333; - e.acute = 333; - e.circumflex = 333; - e.tilde = 333; - e.macron = 333; - e.breve = 333; - e.dotaccent = 333; - e.dieresis = 333; - e.ring = 333; - e.cedilla = 333; - e.hungarumlaut = 333; - e.ogonek = 333; - e.caron = 333; - e.emdash = 1e3; - e.AE = 889; - e.ordfeminine = 276; - e.Lslash = 611; - e.Oslash = 722; - e.OE = 889; - e.ordmasculine = 310; - e.ae = 667; - e.dotlessi = 278; - e.lslash = 278; - e.oslash = 500; - e.oe = 722; - e.germandbls = 500; - e.Idieresis = 333; - e.eacute = 444; - e.abreve = 444; - e.uhungarumlaut = 500; - e.ecaron = 444; - e.Ydieresis = 722; - e.divide = 564; - e.Yacute = 722; - e.Acircumflex = 722; - e.aacute = 444; - e.Ucircumflex = 722; - e.yacute = 500; - e.scommaaccent = 389; - e.ecircumflex = 444; - e.Uring = 722; - e.Udieresis = 722; - e.aogonek = 444; - e.Uacute = 722; - e.uogonek = 500; - e.Edieresis = 611; - e.Dcroat = 722; - e.commaaccent = 250; - e.copyright = 760; - e.Emacron = 611; - e.ccaron = 444; - e.aring = 444; - e.Ncommaaccent = 722; - e.lacute = 278; - e.agrave = 444; - e.Tcommaaccent = 611; - e.Cacute = 667; - e.atilde = 444; - e.Edotaccent = 611; - e.scaron = 389; - e.scedilla = 389; - e.iacute = 278; - e.lozenge = 471; - e.Rcaron = 667; - e.Gcommaaccent = 722; - e.ucircumflex = 500; - e.acircumflex = 444; - e.Amacron = 722; - e.rcaron = 333; - e.ccedilla = 444; - e.Zdotaccent = 611; - e.Thorn = 556; - e.Omacron = 722; - e.Racute = 667; - e.Sacute = 556; - e.dcaron = 588; - e.Umacron = 722; - e.uring = 500; - e.threesuperior = 300; - e.Ograve = 722; - e.Agrave = 722; - e.Abreve = 722; - e.multiply = 564; - e.uacute = 500; - e.Tcaron = 611; - e.partialdiff = 476; - e.ydieresis = 500; - e.Nacute = 722; - e.icircumflex = 278; - e.Ecircumflex = 611; - e.adieresis = 444; - e.edieresis = 444; - e.cacute = 444; - e.nacute = 500; - e.umacron = 500; - e.Ncaron = 722; - e.Iacute = 333; - e.plusminus = 564; - e.brokenbar = 200; - e.registered = 760; - e.Gbreve = 722; - e.Idotaccent = 333; - e.summation = 600; - e.Egrave = 611; - e.racute = 333; - e.omacron = 500; - e.Zacute = 611; - e.Zcaron = 611; - e.greaterequal = 549; - e.Eth = 722; - e.Ccedilla = 667; - e.lcommaaccent = 278; - e.tcaron = 326; - e.eogonek = 444; - e.Uogonek = 722; - e.Aacute = 722; - e.Adieresis = 722; - e.egrave = 444; - e.zacute = 444; - e.iogonek = 278; - e.Oacute = 722; - e.oacute = 500; - e.amacron = 444; - e.sacute = 389; - e.idieresis = 278; - e.Ocircumflex = 722; - e.Ugrave = 722; - e.Delta = 612; - e.thorn = 500; - e.twosuperior = 300; - e.Odieresis = 722; - e.mu = 500; - e.igrave = 278; - e.ohungarumlaut = 500; - e.Eogonek = 611; - e.dcroat = 500; - e.threequarters = 750; - e.Scedilla = 556; - e.lcaron = 344; - e.Kcommaaccent = 722; - e.Lacute = 611; - e.trademark = 980; - e.edotaccent = 444; - e.Igrave = 333; - e.Imacron = 333; - e.Lcaron = 611; - e.onehalf = 750; - e.lessequal = 549; - e.ocircumflex = 500; - e.ntilde = 500; - e.Uhungarumlaut = 722; - e.Eacute = 611; - e.emacron = 444; - e.gbreve = 500; - e.onequarter = 750; - e.Scaron = 556; - e.Scommaaccent = 556; - e.Ohungarumlaut = 722; - e.degree = 400; - e.ograve = 500; - e.Ccaron = 667; - e.ugrave = 500; - e.radical = 453; - e.Dcaron = 722; - e.rcommaaccent = 333; - e.Ntilde = 722; - e.otilde = 500; - e.Rcommaaccent = 667; - e.Lcommaaccent = 611; - e.Atilde = 722; - e.Aogonek = 722; - e.Aring = 722; - e.Otilde = 722; - e.zdotaccent = 444; - e.Ecaron = 611; - e.Iogonek = 333; - e.kcommaaccent = 500; - e.minus = 564; - e.Icircumflex = 333; - e.ncaron = 500; - e.tcommaaccent = 278; - e.logicalnot = 564; - e.odieresis = 500; - e.udieresis = 500; - e.notequal = 549; - e.gcommaaccent = 500; - e.eth = 500; - e.zcaron = 444; - e.ncommaaccent = 500; - e.onesuperior = 300; - e.imacron = 278; - e.Euro = 500; - }); - e["Times-Bold"] = (0, r.getLookupTableFactory)(function (e) { - e.space = 250; - e.exclam = 333; - e.quotedbl = 555; - e.numbersign = 500; - e.dollar = 500; - e.percent = 1e3; - e.ampersand = 833; - e.quoteright = 333; - e.parenleft = 333; - e.parenright = 333; - e.asterisk = 500; - e.plus = 570; - e.comma = 250; - e.hyphen = 333; - e.period = 250; - e.slash = 278; - e.zero = 500; - e.one = 500; - e.two = 500; - e.three = 500; - e.four = 500; - e.five = 500; - e.six = 500; - e.seven = 500; - e.eight = 500; - e.nine = 500; - e.colon = 333; - e.semicolon = 333; - e.less = 570; - e.equal = 570; - e.greater = 570; - e.question = 500; - e.at = 930; - e.A = 722; - e.B = 667; - e.C = 722; - e.D = 722; - e.E = 667; - e.F = 611; - e.G = 778; - e.H = 778; - e.I = 389; - e.J = 500; - e.K = 778; - e.L = 667; - e.M = 944; - e.N = 722; - e.O = 778; - e.P = 611; - e.Q = 778; - e.R = 722; - e.S = 556; - e.T = 667; - e.U = 722; - e.V = 722; - e.W = 1e3; - e.X = 722; - e.Y = 722; - e.Z = 667; - e.bracketleft = 333; - e.backslash = 278; - e.bracketright = 333; - e.asciicircum = 581; - e.underscore = 500; - e.quoteleft = 333; - e.a = 500; - e.b = 556; - e.c = 444; - e.d = 556; - e.e = 444; - e.f = 333; - e.g = 500; - e.h = 556; - e.i = 278; - e.j = 333; - e.k = 556; - e.l = 278; - e.m = 833; - e.n = 556; - e.o = 500; - e.p = 556; - e.q = 556; - e.r = 444; - e.s = 389; - e.t = 333; - e.u = 556; - e.v = 500; - e.w = 722; - e.x = 500; - e.y = 500; - e.z = 444; - e.braceleft = 394; - e.bar = 220; - e.braceright = 394; - e.asciitilde = 520; - e.exclamdown = 333; - e.cent = 500; - e.sterling = 500; - e.fraction = 167; - e.yen = 500; - e.florin = 500; - e.section = 500; - e.currency = 500; - e.quotesingle = 278; - e.quotedblleft = 500; - e.guillemotleft = 500; - e.guilsinglleft = 333; - e.guilsinglright = 333; - e.fi = 556; - e.fl = 556; - e.endash = 500; - e.dagger = 500; - e.daggerdbl = 500; - e.periodcentered = 250; - e.paragraph = 540; - e.bullet = 350; - e.quotesinglbase = 333; - e.quotedblbase = 500; - e.quotedblright = 500; - e.guillemotright = 500; - e.ellipsis = 1e3; - e.perthousand = 1e3; - e.questiondown = 500; - e.grave = 333; - e.acute = 333; - e.circumflex = 333; - e.tilde = 333; - e.macron = 333; - e.breve = 333; - e.dotaccent = 333; - e.dieresis = 333; - e.ring = 333; - e.cedilla = 333; - e.hungarumlaut = 333; - e.ogonek = 333; - e.caron = 333; - e.emdash = 1e3; - e.AE = 1e3; - e.ordfeminine = 300; - e.Lslash = 667; - e.Oslash = 778; - e.OE = 1e3; - e.ordmasculine = 330; - e.ae = 722; - e.dotlessi = 278; - e.lslash = 278; - e.oslash = 500; - e.oe = 722; - e.germandbls = 556; - e.Idieresis = 389; - e.eacute = 444; - e.abreve = 500; - e.uhungarumlaut = 556; - e.ecaron = 444; - e.Ydieresis = 722; - e.divide = 570; - e.Yacute = 722; - e.Acircumflex = 722; - e.aacute = 500; - e.Ucircumflex = 722; - e.yacute = 500; - e.scommaaccent = 389; - e.ecircumflex = 444; - e.Uring = 722; - e.Udieresis = 722; - e.aogonek = 500; - e.Uacute = 722; - e.uogonek = 556; - e.Edieresis = 667; - e.Dcroat = 722; - e.commaaccent = 250; - e.copyright = 747; - e.Emacron = 667; - e.ccaron = 444; - e.aring = 500; - e.Ncommaaccent = 722; - e.lacute = 278; - e.agrave = 500; - e.Tcommaaccent = 667; - e.Cacute = 722; - e.atilde = 500; - e.Edotaccent = 667; - e.scaron = 389; - e.scedilla = 389; - e.iacute = 278; - e.lozenge = 494; - e.Rcaron = 722; - e.Gcommaaccent = 778; - e.ucircumflex = 556; - e.acircumflex = 500; - e.Amacron = 722; - e.rcaron = 444; - e.ccedilla = 444; - e.Zdotaccent = 667; - e.Thorn = 611; - e.Omacron = 778; - e.Racute = 722; - e.Sacute = 556; - e.dcaron = 672; - e.Umacron = 722; - e.uring = 556; - e.threesuperior = 300; - e.Ograve = 778; - e.Agrave = 722; - e.Abreve = 722; - e.multiply = 570; - e.uacute = 556; - e.Tcaron = 667; - e.partialdiff = 494; - e.ydieresis = 500; - e.Nacute = 722; - e.icircumflex = 278; - e.Ecircumflex = 667; - e.adieresis = 500; - e.edieresis = 444; - e.cacute = 444; - e.nacute = 556; - e.umacron = 556; - e.Ncaron = 722; - e.Iacute = 389; - e.plusminus = 570; - e.brokenbar = 220; - e.registered = 747; - e.Gbreve = 778; - e.Idotaccent = 389; - e.summation = 600; - e.Egrave = 667; - e.racute = 444; - e.omacron = 500; - e.Zacute = 667; - e.Zcaron = 667; - e.greaterequal = 549; - e.Eth = 722; - e.Ccedilla = 722; - e.lcommaaccent = 278; - e.tcaron = 416; - e.eogonek = 444; - e.Uogonek = 722; - e.Aacute = 722; - e.Adieresis = 722; - e.egrave = 444; - e.zacute = 444; - e.iogonek = 278; - e.Oacute = 778; - e.oacute = 500; - e.amacron = 500; - e.sacute = 389; - e.idieresis = 278; - e.Ocircumflex = 778; - e.Ugrave = 722; - e.Delta = 612; - e.thorn = 556; - e.twosuperior = 300; - e.Odieresis = 778; - e.mu = 556; - e.igrave = 278; - e.ohungarumlaut = 500; - e.Eogonek = 667; - e.dcroat = 556; - e.threequarters = 750; - e.Scedilla = 556; - e.lcaron = 394; - e.Kcommaaccent = 778; - e.Lacute = 667; - e.trademark = 1e3; - e.edotaccent = 444; - e.Igrave = 389; - e.Imacron = 389; - e.Lcaron = 667; - e.onehalf = 750; - e.lessequal = 549; - e.ocircumflex = 500; - e.ntilde = 556; - e.Uhungarumlaut = 722; - e.Eacute = 667; - e.emacron = 444; - e.gbreve = 500; - e.onequarter = 750; - e.Scaron = 556; - e.Scommaaccent = 556; - e.Ohungarumlaut = 778; - e.degree = 400; - e.ograve = 500; - e.Ccaron = 722; - e.ugrave = 556; - e.radical = 549; - e.Dcaron = 722; - e.rcommaaccent = 444; - e.Ntilde = 722; - e.otilde = 500; - e.Rcommaaccent = 722; - e.Lcommaaccent = 667; - e.Atilde = 722; - e.Aogonek = 722; - e.Aring = 722; - e.Otilde = 778; - e.zdotaccent = 444; - e.Ecaron = 667; - e.Iogonek = 389; - e.kcommaaccent = 556; - e.minus = 570; - e.Icircumflex = 389; - e.ncaron = 556; - e.tcommaaccent = 333; - e.logicalnot = 570; - e.odieresis = 500; - e.udieresis = 556; - e.notequal = 549; - e.gcommaaccent = 500; - e.eth = 500; - e.zcaron = 444; - e.ncommaaccent = 556; - e.onesuperior = 300; - e.imacron = 278; - e.Euro = 500; - }); - e["Times-BoldItalic"] = (0, r.getLookupTableFactory)(function (e) { - e.space = 250; - e.exclam = 389; - e.quotedbl = 555; - e.numbersign = 500; - e.dollar = 500; - e.percent = 833; - e.ampersand = 778; - e.quoteright = 333; - e.parenleft = 333; - e.parenright = 333; - e.asterisk = 500; - e.plus = 570; - e.comma = 250; - e.hyphen = 333; - e.period = 250; - e.slash = 278; - e.zero = 500; - e.one = 500; - e.two = 500; - e.three = 500; - e.four = 500; - e.five = 500; - e.six = 500; - e.seven = 500; - e.eight = 500; - e.nine = 500; - e.colon = 333; - e.semicolon = 333; - e.less = 570; - e.equal = 570; - e.greater = 570; - e.question = 500; - e.at = 832; - e.A = 667; - e.B = 667; - e.C = 667; - e.D = 722; - e.E = 667; - e.F = 667; - e.G = 722; - e.H = 778; - e.I = 389; - e.J = 500; - e.K = 667; - e.L = 611; - e.M = 889; - e.N = 722; - e.O = 722; - e.P = 611; - e.Q = 722; - e.R = 667; - e.S = 556; - e.T = 611; - e.U = 722; - e.V = 667; - e.W = 889; - e.X = 667; - e.Y = 611; - e.Z = 611; - e.bracketleft = 333; - e.backslash = 278; - e.bracketright = 333; - e.asciicircum = 570; - e.underscore = 500; - e.quoteleft = 333; - e.a = 500; - e.b = 500; - e.c = 444; - e.d = 500; - e.e = 444; - e.f = 333; - e.g = 500; - e.h = 556; - e.i = 278; - e.j = 278; - e.k = 500; - e.l = 278; - e.m = 778; - e.n = 556; - e.o = 500; - e.p = 500; - e.q = 500; - e.r = 389; - e.s = 389; - e.t = 278; - e.u = 556; - e.v = 444; - e.w = 667; - e.x = 500; - e.y = 444; - e.z = 389; - e.braceleft = 348; - e.bar = 220; - e.braceright = 348; - e.asciitilde = 570; - e.exclamdown = 389; - e.cent = 500; - e.sterling = 500; - e.fraction = 167; - e.yen = 500; - e.florin = 500; - e.section = 500; - e.currency = 500; - e.quotesingle = 278; - e.quotedblleft = 500; - e.guillemotleft = 500; - e.guilsinglleft = 333; - e.guilsinglright = 333; - e.fi = 556; - e.fl = 556; - e.endash = 500; - e.dagger = 500; - e.daggerdbl = 500; - e.periodcentered = 250; - e.paragraph = 500; - e.bullet = 350; - e.quotesinglbase = 333; - e.quotedblbase = 500; - e.quotedblright = 500; - e.guillemotright = 500; - e.ellipsis = 1e3; - e.perthousand = 1e3; - e.questiondown = 500; - e.grave = 333; - e.acute = 333; - e.circumflex = 333; - e.tilde = 333; - e.macron = 333; - e.breve = 333; - e.dotaccent = 333; - e.dieresis = 333; - e.ring = 333; - e.cedilla = 333; - e.hungarumlaut = 333; - e.ogonek = 333; - e.caron = 333; - e.emdash = 1e3; - e.AE = 944; - e.ordfeminine = 266; - e.Lslash = 611; - e.Oslash = 722; - e.OE = 944; - e.ordmasculine = 300; - e.ae = 722; - e.dotlessi = 278; - e.lslash = 278; - e.oslash = 500; - e.oe = 722; - e.germandbls = 500; - e.Idieresis = 389; - e.eacute = 444; - e.abreve = 500; - e.uhungarumlaut = 556; - e.ecaron = 444; - e.Ydieresis = 611; - e.divide = 570; - e.Yacute = 611; - e.Acircumflex = 667; - e.aacute = 500; - e.Ucircumflex = 722; - e.yacute = 444; - e.scommaaccent = 389; - e.ecircumflex = 444; - e.Uring = 722; - e.Udieresis = 722; - e.aogonek = 500; - e.Uacute = 722; - e.uogonek = 556; - e.Edieresis = 667; - e.Dcroat = 722; - e.commaaccent = 250; - e.copyright = 747; - e.Emacron = 667; - e.ccaron = 444; - e.aring = 500; - e.Ncommaaccent = 722; - e.lacute = 278; - e.agrave = 500; - e.Tcommaaccent = 611; - e.Cacute = 667; - e.atilde = 500; - e.Edotaccent = 667; - e.scaron = 389; - e.scedilla = 389; - e.iacute = 278; - e.lozenge = 494; - e.Rcaron = 667; - e.Gcommaaccent = 722; - e.ucircumflex = 556; - e.acircumflex = 500; - e.Amacron = 667; - e.rcaron = 389; - e.ccedilla = 444; - e.Zdotaccent = 611; - e.Thorn = 611; - e.Omacron = 722; - e.Racute = 667; - e.Sacute = 556; - e.dcaron = 608; - e.Umacron = 722; - e.uring = 556; - e.threesuperior = 300; - e.Ograve = 722; - e.Agrave = 667; - e.Abreve = 667; - e.multiply = 570; - e.uacute = 556; - e.Tcaron = 611; - e.partialdiff = 494; - e.ydieresis = 444; - e.Nacute = 722; - e.icircumflex = 278; - e.Ecircumflex = 667; - e.adieresis = 500; - e.edieresis = 444; - e.cacute = 444; - e.nacute = 556; - e.umacron = 556; - e.Ncaron = 722; - e.Iacute = 389; - e.plusminus = 570; - e.brokenbar = 220; - e.registered = 747; - e.Gbreve = 722; - e.Idotaccent = 389; - e.summation = 600; - e.Egrave = 667; - e.racute = 389; - e.omacron = 500; - e.Zacute = 611; - e.Zcaron = 611; - e.greaterequal = 549; - e.Eth = 722; - e.Ccedilla = 667; - e.lcommaaccent = 278; - e.tcaron = 366; - e.eogonek = 444; - e.Uogonek = 722; - e.Aacute = 667; - e.Adieresis = 667; - e.egrave = 444; - e.zacute = 389; - e.iogonek = 278; - e.Oacute = 722; - e.oacute = 500; - e.amacron = 500; - e.sacute = 389; - e.idieresis = 278; - e.Ocircumflex = 722; - e.Ugrave = 722; - e.Delta = 612; - e.thorn = 500; - e.twosuperior = 300; - e.Odieresis = 722; - e.mu = 576; - e.igrave = 278; - e.ohungarumlaut = 500; - e.Eogonek = 667; - e.dcroat = 500; - e.threequarters = 750; - e.Scedilla = 556; - e.lcaron = 382; - e.Kcommaaccent = 667; - e.Lacute = 611; - e.trademark = 1e3; - e.edotaccent = 444; - e.Igrave = 389; - e.Imacron = 389; - e.Lcaron = 611; - e.onehalf = 750; - e.lessequal = 549; - e.ocircumflex = 500; - e.ntilde = 556; - e.Uhungarumlaut = 722; - e.Eacute = 667; - e.emacron = 444; - e.gbreve = 500; - e.onequarter = 750; - e.Scaron = 556; - e.Scommaaccent = 556; - e.Ohungarumlaut = 722; - e.degree = 400; - e.ograve = 500; - e.Ccaron = 667; - e.ugrave = 556; - e.radical = 549; - e.Dcaron = 722; - e.rcommaaccent = 389; - e.Ntilde = 722; - e.otilde = 500; - e.Rcommaaccent = 667; - e.Lcommaaccent = 611; - e.Atilde = 667; - e.Aogonek = 667; - e.Aring = 667; - e.Otilde = 722; - e.zdotaccent = 389; - e.Ecaron = 667; - e.Iogonek = 389; - e.kcommaaccent = 500; - e.minus = 606; - e.Icircumflex = 389; - e.ncaron = 556; - e.tcommaaccent = 278; - e.logicalnot = 606; - e.odieresis = 500; - e.udieresis = 556; - e.notequal = 549; - e.gcommaaccent = 500; - e.eth = 500; - e.zcaron = 389; - e.ncommaaccent = 556; - e.onesuperior = 300; - e.imacron = 278; - e.Euro = 500; - }); - e["Times-Italic"] = (0, r.getLookupTableFactory)(function (e) { - e.space = 250; - e.exclam = 333; - e.quotedbl = 420; - e.numbersign = 500; - e.dollar = 500; - e.percent = 833; - e.ampersand = 778; - e.quoteright = 333; - e.parenleft = 333; - e.parenright = 333; - e.asterisk = 500; - e.plus = 675; - e.comma = 250; - e.hyphen = 333; - e.period = 250; - e.slash = 278; - e.zero = 500; - e.one = 500; - e.two = 500; - e.three = 500; - e.four = 500; - e.five = 500; - e.six = 500; - e.seven = 500; - e.eight = 500; - e.nine = 500; - e.colon = 333; - e.semicolon = 333; - e.less = 675; - e.equal = 675; - e.greater = 675; - e.question = 500; - e.at = 920; - e.A = 611; - e.B = 611; - e.C = 667; - e.D = 722; - e.E = 611; - e.F = 611; - e.G = 722; - e.H = 722; - e.I = 333; - e.J = 444; - e.K = 667; - e.L = 556; - e.M = 833; - e.N = 667; - e.O = 722; - e.P = 611; - e.Q = 722; - e.R = 611; - e.S = 500; - e.T = 556; - e.U = 722; - e.V = 611; - e.W = 833; - e.X = 611; - e.Y = 556; - e.Z = 556; - e.bracketleft = 389; - e.backslash = 278; - e.bracketright = 389; - e.asciicircum = 422; - e.underscore = 500; - e.quoteleft = 333; - e.a = 500; - e.b = 500; - e.c = 444; - e.d = 500; - e.e = 444; - e.f = 278; - e.g = 500; - e.h = 500; - e.i = 278; - e.j = 278; - e.k = 444; - e.l = 278; - e.m = 722; - e.n = 500; - e.o = 500; - e.p = 500; - e.q = 500; - e.r = 389; - e.s = 389; - e.t = 278; - e.u = 500; - e.v = 444; - e.w = 667; - e.x = 444; - e.y = 444; - e.z = 389; - e.braceleft = 400; - e.bar = 275; - e.braceright = 400; - e.asciitilde = 541; - e.exclamdown = 389; - e.cent = 500; - e.sterling = 500; - e.fraction = 167; - e.yen = 500; - e.florin = 500; - e.section = 500; - e.currency = 500; - e.quotesingle = 214; - e.quotedblleft = 556; - e.guillemotleft = 500; - e.guilsinglleft = 333; - e.guilsinglright = 333; - e.fi = 500; - e.fl = 500; - e.endash = 500; - e.dagger = 500; - e.daggerdbl = 500; - e.periodcentered = 250; - e.paragraph = 523; - e.bullet = 350; - e.quotesinglbase = 333; - e.quotedblbase = 556; - e.quotedblright = 556; - e.guillemotright = 500; - e.ellipsis = 889; - e.perthousand = 1e3; - e.questiondown = 500; - e.grave = 333; - e.acute = 333; - e.circumflex = 333; - e.tilde = 333; - e.macron = 333; - e.breve = 333; - e.dotaccent = 333; - e.dieresis = 333; - e.ring = 333; - e.cedilla = 333; - e.hungarumlaut = 333; - e.ogonek = 333; - e.caron = 333; - e.emdash = 889; - e.AE = 889; - e.ordfeminine = 276; - e.Lslash = 556; - e.Oslash = 722; - e.OE = 944; - e.ordmasculine = 310; - e.ae = 667; - e.dotlessi = 278; - e.lslash = 278; - e.oslash = 500; - e.oe = 667; - e.germandbls = 500; - e.Idieresis = 333; - e.eacute = 444; - e.abreve = 500; - e.uhungarumlaut = 500; - e.ecaron = 444; - e.Ydieresis = 556; - e.divide = 675; - e.Yacute = 556; - e.Acircumflex = 611; - e.aacute = 500; - e.Ucircumflex = 722; - e.yacute = 444; - e.scommaaccent = 389; - e.ecircumflex = 444; - e.Uring = 722; - e.Udieresis = 722; - e.aogonek = 500; - e.Uacute = 722; - e.uogonek = 500; - e.Edieresis = 611; - e.Dcroat = 722; - e.commaaccent = 250; - e.copyright = 760; - e.Emacron = 611; - e.ccaron = 444; - e.aring = 500; - e.Ncommaaccent = 667; - e.lacute = 278; - e.agrave = 500; - e.Tcommaaccent = 556; - e.Cacute = 667; - e.atilde = 500; - e.Edotaccent = 611; - e.scaron = 389; - e.scedilla = 389; - e.iacute = 278; - e.lozenge = 471; - e.Rcaron = 611; - e.Gcommaaccent = 722; - e.ucircumflex = 500; - e.acircumflex = 500; - e.Amacron = 611; - e.rcaron = 389; - e.ccedilla = 444; - e.Zdotaccent = 556; - e.Thorn = 611; - e.Omacron = 722; - e.Racute = 611; - e.Sacute = 500; - e.dcaron = 544; - e.Umacron = 722; - e.uring = 500; - e.threesuperior = 300; - e.Ograve = 722; - e.Agrave = 611; - e.Abreve = 611; - e.multiply = 675; - e.uacute = 500; - e.Tcaron = 556; - e.partialdiff = 476; - e.ydieresis = 444; - e.Nacute = 667; - e.icircumflex = 278; - e.Ecircumflex = 611; - e.adieresis = 500; - e.edieresis = 444; - e.cacute = 444; - e.nacute = 500; - e.umacron = 500; - e.Ncaron = 667; - e.Iacute = 333; - e.plusminus = 675; - e.brokenbar = 275; - e.registered = 760; - e.Gbreve = 722; - e.Idotaccent = 333; - e.summation = 600; - e.Egrave = 611; - e.racute = 389; - e.omacron = 500; - e.Zacute = 556; - e.Zcaron = 556; - e.greaterequal = 549; - e.Eth = 722; - e.Ccedilla = 667; - e.lcommaaccent = 278; - e.tcaron = 300; - e.eogonek = 444; - e.Uogonek = 722; - e.Aacute = 611; - e.Adieresis = 611; - e.egrave = 444; - e.zacute = 389; - e.iogonek = 278; - e.Oacute = 722; - e.oacute = 500; - e.amacron = 500; - e.sacute = 389; - e.idieresis = 278; - e.Ocircumflex = 722; - e.Ugrave = 722; - e.Delta = 612; - e.thorn = 500; - e.twosuperior = 300; - e.Odieresis = 722; - e.mu = 500; - e.igrave = 278; - e.ohungarumlaut = 500; - e.Eogonek = 611; - e.dcroat = 500; - e.threequarters = 750; - e.Scedilla = 500; - e.lcaron = 300; - e.Kcommaaccent = 667; - e.Lacute = 556; - e.trademark = 980; - e.edotaccent = 444; - e.Igrave = 333; - e.Imacron = 333; - e.Lcaron = 611; - e.onehalf = 750; - e.lessequal = 549; - e.ocircumflex = 500; - e.ntilde = 500; - e.Uhungarumlaut = 722; - e.Eacute = 611; - e.emacron = 444; - e.gbreve = 500; - e.onequarter = 750; - e.Scaron = 500; - e.Scommaaccent = 500; - e.Ohungarumlaut = 722; - e.degree = 400; - e.ograve = 500; - e.Ccaron = 667; - e.ugrave = 500; - e.radical = 453; - e.Dcaron = 722; - e.rcommaaccent = 389; - e.Ntilde = 667; - e.otilde = 500; - e.Rcommaaccent = 611; - e.Lcommaaccent = 556; - e.Atilde = 611; - e.Aogonek = 611; - e.Aring = 611; - e.Otilde = 722; - e.zdotaccent = 389; - e.Ecaron = 611; - e.Iogonek = 333; - e.kcommaaccent = 444; - e.minus = 675; - e.Icircumflex = 333; - e.ncaron = 500; - e.tcommaaccent = 278; - e.logicalnot = 675; - e.odieresis = 500; - e.udieresis = 500; - e.notequal = 549; - e.gcommaaccent = 500; - e.eth = 500; - e.zcaron = 389; - e.ncommaaccent = 500; - e.onesuperior = 300; - e.imacron = 278; - e.Euro = 500; - }); - e.ZapfDingbats = (0, r.getLookupTableFactory)(function (e) { - e.space = 278; - e.a1 = 974; - e.a2 = 961; - e.a202 = 974; - e.a3 = 980; - e.a4 = 719; - e.a5 = 789; - e.a119 = 790; - e.a118 = 791; - e.a117 = 690; - e.a11 = 960; - e.a12 = 939; - e.a13 = 549; - e.a14 = 855; - e.a15 = 911; - e.a16 = 933; - e.a105 = 911; - e.a17 = 945; - e.a18 = 974; - e.a19 = 755; - e.a20 = 846; - e.a21 = 762; - e.a22 = 761; - e.a23 = 571; - e.a24 = 677; - e.a25 = 763; - e.a26 = 760; - e.a27 = 759; - e.a28 = 754; - e.a6 = 494; - e.a7 = 552; - e.a8 = 537; - e.a9 = 577; - e.a10 = 692; - e.a29 = 786; - e.a30 = 788; - e.a31 = 788; - e.a32 = 790; - e.a33 = 793; - e.a34 = 794; - e.a35 = 816; - e.a36 = 823; - e.a37 = 789; - e.a38 = 841; - e.a39 = 823; - e.a40 = 833; - e.a41 = 816; - e.a42 = 831; - e.a43 = 923; - e.a44 = 744; - e.a45 = 723; - e.a46 = 749; - e.a47 = 790; - e.a48 = 792; - e.a49 = 695; - e.a50 = 776; - e.a51 = 768; - e.a52 = 792; - e.a53 = 759; - e.a54 = 707; - e.a55 = 708; - e.a56 = 682; - e.a57 = 701; - e.a58 = 826; - e.a59 = 815; - e.a60 = 789; - e.a61 = 789; - e.a62 = 707; - e.a63 = 687; - e.a64 = 696; - e.a65 = 689; - e.a66 = 786; - e.a67 = 787; - e.a68 = 713; - e.a69 = 791; - e.a70 = 785; - e.a71 = 791; - e.a72 = 873; - e.a73 = 761; - e.a74 = 762; - e.a203 = 762; - e.a75 = 759; - e.a204 = 759; - e.a76 = 892; - e.a77 = 892; - e.a78 = 788; - e.a79 = 784; - e.a81 = 438; - e.a82 = 138; - e.a83 = 277; - e.a84 = 415; - e.a97 = 392; - e.a98 = 392; - e.a99 = 668; - e.a100 = 668; - e.a89 = 390; - e.a90 = 390; - e.a93 = 317; - e.a94 = 317; - e.a91 = 276; - e.a92 = 276; - e.a205 = 509; - e.a85 = 509; - e.a206 = 410; - e.a86 = 410; - e.a87 = 234; - e.a88 = 234; - e.a95 = 334; - e.a96 = 334; - e.a101 = 732; - e.a102 = 544; - e.a103 = 544; - e.a104 = 910; - e.a106 = 667; - e.a107 = 760; - e.a108 = 760; - e.a112 = 776; - e.a111 = 595; - e.a110 = 694; - e.a109 = 626; - e.a120 = 788; - e.a121 = 788; - e.a122 = 788; - e.a123 = 788; - e.a124 = 788; - e.a125 = 788; - e.a126 = 788; - e.a127 = 788; - e.a128 = 788; - e.a129 = 788; - e.a130 = 788; - e.a131 = 788; - e.a132 = 788; - e.a133 = 788; - e.a134 = 788; - e.a135 = 788; - e.a136 = 788; - e.a137 = 788; - e.a138 = 788; - e.a139 = 788; - e.a140 = 788; - e.a141 = 788; - e.a142 = 788; - e.a143 = 788; - e.a144 = 788; - e.a145 = 788; - e.a146 = 788; - e.a147 = 788; - e.a148 = 788; - e.a149 = 788; - e.a150 = 788; - e.a151 = 788; - e.a152 = 788; - e.a153 = 788; - e.a154 = 788; - e.a155 = 788; - e.a156 = 788; - e.a157 = 788; - e.a158 = 788; - e.a159 = 788; - e.a160 = 894; - e.a161 = 838; - e.a163 = 1016; - e.a164 = 458; - e.a196 = 748; - e.a165 = 924; - e.a192 = 748; - e.a166 = 918; - e.a167 = 927; - e.a168 = 928; - e.a169 = 928; - e.a170 = 834; - e.a171 = 873; - e.a172 = 828; - e.a173 = 924; - e.a162 = 924; - e.a174 = 917; - e.a175 = 930; - e.a176 = 931; - e.a177 = 463; - e.a178 = 883; - e.a179 = 836; - e.a193 = 836; - e.a180 = 867; - e.a199 = 867; - e.a181 = 696; - e.a200 = 696; - e.a182 = 874; - e.a201 = 874; - e.a183 = 760; - e.a184 = 946; - e.a197 = 771; - e.a185 = 865; - e.a194 = 771; - e.a198 = 888; - e.a186 = 967; - e.a195 = 888; - e.a187 = 831; - e.a188 = 873; - e.a189 = 927; - e.a190 = 970; - e.a191 = 918; - }); - }); - t.getMetrics = n; - const i = (0, r.getLookupTableFactory)(function (e) { - e.Courier = { - ascent: 629, - descent: -157, - capHeight: 562, - xHeight: -426, - }; - e["Courier-Bold"] = { - ascent: 629, - descent: -157, - capHeight: 562, - xHeight: 439, - }; - e["Courier-Oblique"] = { - ascent: 629, - descent: -157, - capHeight: 562, - xHeight: 426, - }; - e["Courier-BoldOblique"] = { - ascent: 629, - descent: -157, - capHeight: 562, - xHeight: 426, - }; - e.Helvetica = { - ascent: 718, - descent: -207, - capHeight: 718, - xHeight: 523, - }; - e["Helvetica-Bold"] = { - ascent: 718, - descent: -207, - capHeight: 718, - xHeight: 532, - }; - e["Helvetica-Oblique"] = { - ascent: 718, - descent: -207, - capHeight: 718, - xHeight: 523, - }; - e["Helvetica-BoldOblique"] = { - ascent: 718, - descent: -207, - capHeight: 718, - xHeight: 532, - }; - e["Times-Roman"] = { - ascent: 683, - descent: -217, - capHeight: 662, - xHeight: 450, - }; - e["Times-Bold"] = { - ascent: 683, - descent: -217, - capHeight: 676, - xHeight: 461, - }; - e["Times-Italic"] = { - ascent: 683, - descent: -217, - capHeight: 653, - xHeight: 441, - }; - e["Times-BoldItalic"] = { - ascent: 683, - descent: -217, - capHeight: 669, - xHeight: 462, - }; - e.Symbol = { - ascent: Math.NaN, - descent: Math.NaN, - capHeight: Math.NaN, - xHeight: Math.NaN, - }; - e.ZapfDingbats = { - ascent: Math.NaN, - descent: Math.NaN, - capHeight: Math.NaN, - xHeight: Math.NaN, - }; - }); - t.getFontBasicMetrics = i; - }, - (e, t) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.GlyfTable = void 0; - t.GlyfTable = class GlyfTable { - constructor({ - glyfTable: e, - isGlyphLocationsLong: t, - locaTable: a, - numGlyphs: r, - }) { - this.glyphs = []; - const n = new DataView(a.buffer, a.byteOffset, a.byteLength), - i = new DataView(e.buffer, e.byteOffset, e.byteLength), - s = t ? 4 : 2; - let o = t ? n.getUint32(0) : 2 * n.getUint16(0), - c = 0; - for (let e = 0; e < r; e++) { - c += s; - const e = t ? n.getUint32(c) : 2 * n.getUint16(c); - if (e === o) { - this.glyphs.push(new Glyph({})); - continue; - } - const a = Glyph.parse(o, i); - this.glyphs.push(a); - o = e; - } - } - getSize() { - return this.glyphs.reduce( - (e, t) => e + ((t.getSize() + 3) & -4), - 0, - ); - } - write() { - const e = this.getSize(), - t = new DataView(new ArrayBuffer(e)), - a = e > 131070, - r = a ? 4 : 2, - n = new DataView(new ArrayBuffer((this.glyphs.length + 1) * r)); - a ? n.setUint32(0, 0) : n.setUint16(0, 0); - let i = 0, - s = 0; - for (const e of this.glyphs) { - i += e.write(i, t); - i = (i + 3) & -4; - s += r; - a ? n.setUint32(s, i) : n.setUint16(s, i >> 1); - } - return { - isLocationLong: a, - loca: new Uint8Array(n.buffer), - glyf: new Uint8Array(t.buffer), - }; - } - scale(e) { - for (let t = 0, a = this.glyphs.length; t < a; t++) - this.glyphs[t].scale(e[t]); - } - }; - class Glyph { - constructor({ - header: e = null, - simple: t = null, - composites: a = null, - }) { - this.header = e; - this.simple = t; - this.composites = a; - } - static parse(e, t) { - const [a, r] = GlyphHeader.parse(e, t); - e += a; - if (r.numberOfContours < 0) { - const a = []; - for (;;) { - const [r, n] = CompositeGlyph.parse(e, t); - e += r; - a.push(n); - if (!(32 & n.flags)) break; - } - return new Glyph({ header: r, composites: a }); - } - const n = SimpleGlyph.parse(e, t, r.numberOfContours); - return new Glyph({ header: r, simple: n }); - } - getSize() { - if (!this.header) return 0; - const e = this.simple - ? this.simple.getSize() - : this.composites.reduce((e, t) => e + t.getSize(), 0); - return this.header.getSize() + e; - } - write(e, t) { - if (!this.header) return 0; - const a = e; - e += this.header.write(e, t); - if (this.simple) e += this.simple.write(e, t); - else for (const a of this.composites) e += a.write(e, t); - return e - a; - } - scale(e) { - if (!this.header) return; - const t = (this.header.xMin + this.header.xMax) / 2; - this.header.scale(t, e); - if (this.simple) this.simple.scale(t, e); - else for (const a of this.composites) a.scale(t, e); - } - } - class GlyphHeader { - constructor({ - numberOfContours: e, - xMin: t, - yMin: a, - xMax: r, - yMax: n, - }) { - this.numberOfContours = e; - this.xMin = t; - this.yMin = a; - this.xMax = r; - this.yMax = n; - } - static parse(e, t) { - return [ - 10, - new GlyphHeader({ - numberOfContours: t.getInt16(e), - xMin: t.getInt16(e + 2), - yMin: t.getInt16(e + 4), - xMax: t.getInt16(e + 6), - yMax: t.getInt16(e + 8), - }), - ]; - } - getSize() { - return 10; - } - write(e, t) { - t.setInt16(e, this.numberOfContours); - t.setInt16(e + 2, this.xMin); - t.setInt16(e + 4, this.yMin); - t.setInt16(e + 6, this.xMax); - t.setInt16(e + 8, this.yMax); - return 10; - } - scale(e, t) { - this.xMin = Math.round(e + (this.xMin - e) * t); - this.xMax = Math.round(e + (this.xMax - e) * t); - } - } - class Contour { - constructor({ flags: e, xCoordinates: t, yCoordinates: a }) { - this.xCoordinates = t; - this.yCoordinates = a; - this.flags = e; - } - } - class SimpleGlyph { - constructor({ contours: e, instructions: t }) { - this.contours = e; - this.instructions = t; - } - static parse(e, t, a) { - const r = []; - for (let n = 0; n < a; n++) { - const a = t.getUint16(e); - e += 2; - r.push(a); - } - const n = r[a - 1] + 1, - i = t.getUint16(e); - e += 2; - const s = new Uint8Array(t).slice(e, e + i); - e += i; - const o = []; - for (let a = 0; a < n; e++, a++) { - let r = t.getUint8(e); - o.push(r); - if (8 & r) { - const n = t.getUint8(++e); - r ^= 8; - for (let e = 0; e < n; e++) o.push(r); - a += n; - } - } - const c = []; - let l = [], - h = [], - u = []; - const d = []; - let f = 0, - g = 0; - for (let a = 0; a < n; a++) { - const n = o[a]; - if (2 & n) { - const a = t.getUint8(e++); - g += 16 & n ? a : -a; - l.push(g); - } else if (16 & n) l.push(g); - else { - g += t.getInt16(e); - e += 2; - l.push(g); - } - if (r[f] === a) { - f++; - c.push(l); - l = []; - } - } - g = 0; - f = 0; - for (let a = 0; a < n; a++) { - const n = o[a]; - if (4 & n) { - const a = t.getUint8(e++); - g += 32 & n ? a : -a; - h.push(g); - } else if (32 & n) h.push(g); - else { - g += t.getInt16(e); - e += 2; - h.push(g); - } - u.push((1 & n) | (64 & n)); - if (r[f] === a) { - l = c[f]; - f++; - d.push( - new Contour({ flags: u, xCoordinates: l, yCoordinates: h }), - ); - h = []; - u = []; - } - } - return new SimpleGlyph({ contours: d, instructions: s }); - } - getSize() { - let e = 2 * this.contours.length + 2 + this.instructions.length, - t = 0, - a = 0; - for (const r of this.contours) { - e += r.flags.length; - for (let n = 0, i = r.xCoordinates.length; n < i; n++) { - const i = r.xCoordinates[n], - s = r.yCoordinates[n]; - let o = Math.abs(i - t); - o > 255 ? (e += 2) : o > 0 && (e += 1); - t = i; - o = Math.abs(s - a); - o > 255 ? (e += 2) : o > 0 && (e += 1); - a = s; - } - } - return e; - } - write(e, t) { - const a = e, - r = [], - n = [], - i = []; - let s = 0, - o = 0; - for (const a of this.contours) { - for (let e = 0, t = a.xCoordinates.length; e < t; e++) { - let t = a.flags[e]; - const c = a.xCoordinates[e]; - let l = c - s; - if (0 === l) { - t |= 16; - r.push(0); - } else { - const e = Math.abs(l); - if (e <= 255) { - t |= l >= 0 ? 18 : 2; - r.push(e); - } else r.push(l); - } - s = c; - const h = a.yCoordinates[e]; - l = h - o; - if (0 === l) { - t |= 32; - n.push(0); - } else { - const e = Math.abs(l); - if (e <= 255) { - t |= l >= 0 ? 36 : 4; - n.push(e); - } else n.push(l); - } - o = h; - i.push(t); - } - t.setUint16(e, r.length - 1); - e += 2; - } - t.setUint16(e, this.instructions.length); - e += 2; - if (this.instructions.length) { - new Uint8Array(t.buffer, 0, t.buffer.byteLength).set( - this.instructions, - e, - ); - e += this.instructions.length; - } - for (const a of i) t.setUint8(e++, a); - for (let a = 0, n = r.length; a < n; a++) { - const n = r[a], - s = i[a]; - if (2 & s) t.setUint8(e++, n); - else if (!(16 & s)) { - t.setInt16(e, n); - e += 2; - } - } - for (let a = 0, r = n.length; a < r; a++) { - const r = n[a], - s = i[a]; - if (4 & s) t.setUint8(e++, r); - else if (!(32 & s)) { - t.setInt16(e, r); - e += 2; - } - } - return e - a; - } - scale(e, t) { - for (const a of this.contours) - if (0 !== a.xCoordinates.length) - for (let r = 0, n = a.xCoordinates.length; r < n; r++) - a.xCoordinates[r] = Math.round( - e + (a.xCoordinates[r] - e) * t, - ); - } - } - class CompositeGlyph { - constructor({ - flags: e, - glyphIndex: t, - argument1: a, - argument2: r, - transf: n, - instructions: i, - }) { - this.flags = e; - this.glyphIndex = t; - this.argument1 = a; - this.argument2 = r; - this.transf = n; - this.instructions = i; - } - static parse(e, t) { - const a = e, - r = []; - let n = t.getUint16(e); - const i = t.getUint16(e + 2); - e += 4; - let s, o; - if (1 & n) { - if (2 & n) { - s = t.getInt16(e); - o = t.getInt16(e + 2); - } else { - s = t.getUint16(e); - o = t.getUint16(e + 2); - } - e += 4; - n ^= 1; - } else { - if (2 & n) { - s = t.getInt8(e); - o = t.getInt8(e + 1); - } else { - s = t.getUint8(e); - o = t.getUint8(e + 1); - } - e += 2; - } - if (8 & n) { - r.push(t.getUint16(e)); - e += 2; - } else if (64 & n) { - r.push(t.getUint16(e), t.getUint16(e + 2)); - e += 4; - } else if (128 & n) { - r.push( - t.getUint16(e), - t.getUint16(e + 2), - t.getUint16(e + 4), - t.getUint16(e + 6), - ); - e += 8; - } - let c = null; - if (256 & n) { - const a = t.getUint16(e); - e += 2; - c = new Uint8Array(t).slice(e, e + a); - e += a; - } - return [ - e - a, - new CompositeGlyph({ - flags: n, - glyphIndex: i, - argument1: s, - argument2: o, - transf: r, - instructions: c, - }), - ]; - } - getSize() { - let e = 4 + 2 * this.transf.length; - 256 & this.flags && (e += 2 + this.instructions.length); - e += 2; - 2 & this.flags - ? (this.argument1 >= -128 && - this.argument1 <= 127 && - this.argument2 >= -128 && - this.argument2 <= 127) || - (e += 2) - : (this.argument1 >= 0 && - this.argument1 <= 255 && - this.argument2 >= 0 && - this.argument2 <= 255) || - (e += 2); - return e; - } - write(e, t) { - const a = e; - 2 & this.flags - ? (this.argument1 >= -128 && - this.argument1 <= 127 && - this.argument2 >= -128 && - this.argument2 <= 127) || - (this.flags |= 1) - : (this.argument1 >= 0 && - this.argument1 <= 255 && - this.argument2 >= 0 && - this.argument2 <= 255) || - (this.flags |= 1); - t.setUint16(e, this.flags); - t.setUint16(e + 2, this.glyphIndex); - e += 4; - if (1 & this.flags) { - if (2 & this.flags) { - t.setInt16(e, this.argument1); - t.setInt16(e + 2, this.argument2); - } else { - t.setUint16(e, this.argument1); - t.setUint16(e + 2, this.argument2); - } - e += 4; - } else { - t.setUint8(e, this.argument1); - t.setUint8(e + 1, this.argument2); - e += 2; - } - if (256 & this.flags) { - t.setUint16(e, this.instructions.length); - e += 2; - if (this.instructions.length) { - new Uint8Array(t.buffer, 0, t.buffer.byteLength).set( - this.instructions, - e, - ); - e += this.instructions.length; - } - } - return e - a; - } - scale(e, t) {} - } - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.OpenTypeFileBuilder = void 0; - var r = a(3), - n = a(2); - function writeInt16(e, t, a) { - e[t] = (a >> 8) & 255; - e[t + 1] = 255 & a; - } - function writeInt32(e, t, a) { - e[t] = (a >> 24) & 255; - e[t + 1] = (a >> 16) & 255; - e[t + 2] = (a >> 8) & 255; - e[t + 3] = 255 & a; - } - function writeData(e, t, a) { - if (a instanceof Uint8Array) e.set(a, t); - else if ("string" == typeof a) - for (let r = 0, n = a.length; r < n; r++) - e[t++] = 255 & a.charCodeAt(r); - else for (const r of a) e[t++] = 255 & r; - } - class OpenTypeFileBuilder { - constructor(e) { - this.sfnt = e; - this.tables = Object.create(null); - } - static getSearchParams(e, t) { - let a = 1, - r = 0; - for (; (a ^ e) > a; ) { - a <<= 1; - r++; - } - const n = a * t; - return { range: n, entry: r, rangeShift: t * e - n }; - } - toArray() { - let e = this.sfnt; - const t = this.tables, - a = Object.keys(t); - a.sort(); - const i = a.length; - let s, - o, - c, - l, - h, - u = 12 + 16 * i; - const d = [u]; - for (s = 0; s < i; s++) { - l = t[a[s]]; - u += ((l.length + 3) & -4) >>> 0; - d.push(u); - } - const f = new Uint8Array(u); - for (s = 0; s < i; s++) { - l = t[a[s]]; - writeData(f, d[s], l); - } - "true" === e && (e = (0, n.string32)(65536)); - f[0] = 255 & e.charCodeAt(0); - f[1] = 255 & e.charCodeAt(1); - f[2] = 255 & e.charCodeAt(2); - f[3] = 255 & e.charCodeAt(3); - writeInt16(f, 4, i); - const g = OpenTypeFileBuilder.getSearchParams(i, 16); - writeInt16(f, 6, g.range); - writeInt16(f, 8, g.entry); - writeInt16(f, 10, g.rangeShift); - u = 12; - for (s = 0; s < i; s++) { - h = a[s]; - f[u] = 255 & h.charCodeAt(0); - f[u + 1] = 255 & h.charCodeAt(1); - f[u + 2] = 255 & h.charCodeAt(2); - f[u + 3] = 255 & h.charCodeAt(3); - let e = 0; - for (o = d[s], c = d[s + 1]; o < c; o += 4) { - e = (e + (0, r.readUint32)(f, o)) >>> 0; - } - writeInt32(f, u + 4, e); - writeInt32(f, u + 8, d[s]); - writeInt32(f, u + 12, t[h].length); - u += 16; - } - return f; - } - addTable(e, t) { - if (e in this.tables) - throw new Error("Table " + e + " already exists"); - this.tables[e] = t; - } - } - t.OpenTypeFileBuilder = OpenTypeFileBuilder; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.Type1Font = void 0; - var r = a(35), - n = a(2), - i = a(38), - s = a(3), - o = a(8), - c = a(49); - function findBlock(e, t, a) { - const r = e.length, - n = t.length, - i = r - n; - let o = a, - c = !1; - for (; o < i; ) { - let a = 0; - for (; a < n && e[o + a] === t[a]; ) a++; - if (a >= n) { - o += a; - for (; o < r && (0, s.isWhiteSpace)(e[o]); ) o++; - c = !0; - break; - } - o++; - } - return { found: c, length: o }; - } - t.Type1Font = class Type1Font { - constructor(e, t, a) { - let r = a.length1, - s = a.length2, - l = t.peekBytes(6); - const h = 128 === l[0] && 1 === l[1]; - if (h) { - t.skip(6); - r = (l[5] << 24) | (l[4] << 16) | (l[3] << 8) | l[2]; - } - const u = (function getHeaderBlock(e, t) { - const a = [101, 101, 120, 101, 99], - r = e.pos; - let i, s, c, l; - try { - i = e.getBytes(t); - s = i.length; - } catch {} - if (s === t) { - c = findBlock(i, a, t - 2 * a.length); - if (c.found && c.length === t) - return { stream: new o.Stream(i), length: t }; - } - (0, n.warn)( - 'Invalid "Length1" property in Type1 font -- trying to recover.', - ); - e.pos = r; - for (;;) { - c = findBlock(e.peekBytes(2048), a, 0); - if (0 === c.length) break; - e.pos += c.length; - if (c.found) { - l = e.pos - r; - break; - } - } - e.pos = r; - if (l) - return { stream: new o.Stream(e.getBytes(l)), length: l }; - (0, n.warn)( - 'Unable to recover "Length1" property in Type1 font -- using as is.', - ); - return { stream: new o.Stream(e.getBytes(t)), length: t }; - })(t, r); - new c.Type1Parser( - u.stream, - !1, - i.SEAC_ANALYSIS_ENABLED, - ).extractFontHeader(a); - if (h) { - l = t.getBytes(6); - s = (l[5] << 24) | (l[4] << 16) | (l[3] << 8) | l[2]; - } - const d = (function getEexecBlock(e, t) { - const a = e.getBytes(); - if (0 === a.length) - throw new n.FormatError( - "getEexecBlock - no font program found.", - ); - return { stream: new o.Stream(a), length: a.length }; - })(t), - f = new c.Type1Parser( - d.stream, - !0, - i.SEAC_ANALYSIS_ENABLED, - ).extractFontProgram(a); - for (const e in f.properties) a[e] = f.properties[e]; - const g = f.charstrings, - p = this.getType2Charstrings(g), - m = this.getType2Subrs(f.subrs); - this.charstrings = g; - this.data = this.wrap(e, p, this.charstrings, m, a); - this.seacs = this.getSeacs(f.charstrings); - } - get numGlyphs() { - return this.charstrings.length + 1; - } - getCharset() { - const e = [".notdef"]; - for (const { glyphName: t } of this.charstrings) e.push(t); - return e; - } - getGlyphMapping(e) { - const t = this.charstrings; - if (e.composite) { - const a = Object.create(null); - for (let r = 0, n = t.length; r < n; r++) { - a[e.cMap.charCodeOf(r)] = r + 1; - } - return a; - } - const a = [".notdef"]; - let r, n; - for (n = 0; n < t.length; n++) a.push(t[n].glyphName); - const s = e.builtInEncoding; - if (s) { - r = Object.create(null); - for (const e in s) { - n = a.indexOf(s[e]); - n >= 0 && (r[e] = n); - } - } - return (0, i.type1FontGlyphMapping)(e, r, a); - } - hasGlyphId(e) { - if (e < 0 || e >= this.numGlyphs) return !1; - if (0 === e) return !0; - return this.charstrings[e - 1].charstring.length > 0; - } - getSeacs(e) { - const t = []; - for (let a = 0, r = e.length; a < r; a++) { - const r = e[a]; - r.seac && (t[a + 1] = r.seac); - } - return t; - } - getType2Charstrings(e) { - const t = []; - for (const a of e) t.push(a.charstring); - return t; - } - getType2Subrs(e) { - let t = 0; - const a = e.length; - t = a < 1133 ? 107 : a < 33769 ? 1131 : 32768; - const r = []; - let n; - for (n = 0; n < t; n++) r.push([11]); - for (n = 0; n < a; n++) r.push(e[n]); - return r; - } - wrap(e, t, a, n, i) { - const s = new r.CFF(); - s.header = new r.CFFHeader(1, 0, 4, 4); - s.names = [e]; - const o = new r.CFFTopDict(); - o.setByName("version", 391); - o.setByName("Notice", 392); - o.setByName("FullName", 393); - o.setByName("FamilyName", 394); - o.setByName("Weight", 395); - o.setByName("Encoding", null); - o.setByName("FontMatrix", i.fontMatrix); - o.setByName("FontBBox", i.bbox); - o.setByName("charset", null); - o.setByName("CharStrings", null); - o.setByName("Private", null); - s.topDict = o; - const c = new r.CFFStrings(); - c.add("Version 0.11"); - c.add("See original notice"); - c.add(e); - c.add(e); - c.add("Medium"); - s.strings = c; - s.globalSubrIndex = new r.CFFIndex(); - const l = t.length, - h = [".notdef"]; - let u, d; - for (u = 0; u < l; u++) { - const e = a[u].glyphName; - -1 === r.CFFStandardStrings.indexOf(e) && c.add(e); - h.push(e); - } - s.charset = new r.CFFCharset(!1, 0, h); - const f = new r.CFFIndex(); - f.add([139, 14]); - for (u = 0; u < l; u++) f.add(t[u]); - s.charStrings = f; - const g = new r.CFFPrivateDict(); - g.setByName("Subrs", null); - const p = [ - "BlueValues", - "OtherBlues", - "FamilyBlues", - "FamilyOtherBlues", - "StemSnapH", - "StemSnapV", - "BlueShift", - "BlueFuzz", - "BlueScale", - "LanguageGroup", - "ExpansionFactor", - "ForceBold", - "StdHW", - "StdVW", - ]; - for (u = 0, d = p.length; u < d; u++) { - const e = p[u]; - if (!(e in i.privateData)) continue; - const t = i.privateData[e]; - if (Array.isArray(t)) - for (let e = t.length - 1; e > 0; e--) t[e] -= t[e - 1]; - g.setByName(e, t); - } - s.topDict.privateDict = g; - const m = new r.CFFIndex(); - for (u = 0, d = n.length; u < d; u++) m.add(n[u]); - g.subrsIndex = m; - return new r.CFFCompiler(s).compile(); - } - }; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.Type1Parser = void 0; - var r = a(37), - n = a(3), - i = a(8), - s = a(2); - const o = [4], - c = [5], - l = [6], - h = [7], - u = [8], - d = [12, 35], - f = [14], - g = [21], - p = [22], - m = [30], - b = [31]; - class Type1CharString { - constructor() { - this.width = 0; - this.lsb = 0; - this.flexing = !1; - this.output = []; - this.stack = []; - } - convert(e, t, a) { - const r = e.length; - let n, - i, - y, - w = !1; - for (let S = 0; S < r; S++) { - let r = e[S]; - if (r < 32) { - 12 === r && (r = (r << 8) + e[++S]); - switch (r) { - case 1: - case 3: - case 9: - case 3072: - case 3073: - case 3074: - case 3105: - this.stack = []; - break; - case 4: - if (this.flexing) { - if (this.stack.length < 1) { - w = !0; - break; - } - const e = this.stack.pop(); - this.stack.push(0, e); - break; - } - w = this.executeCommand(1, o); - break; - case 5: - w = this.executeCommand(2, c); - break; - case 6: - w = this.executeCommand(1, l); - break; - case 7: - w = this.executeCommand(1, h); - break; - case 8: - w = this.executeCommand(6, u); - break; - case 10: - if (this.stack.length < 1) { - w = !0; - break; - } - y = this.stack.pop(); - if (!t[y]) { - w = !0; - break; - } - w = this.convert(t[y], t, a); - break; - case 11: - return w; - case 13: - if (this.stack.length < 2) { - w = !0; - break; - } - n = this.stack.pop(); - i = this.stack.pop(); - this.lsb = i; - this.width = n; - this.stack.push(n, i); - w = this.executeCommand(2, p); - break; - case 14: - this.output.push(f[0]); - break; - case 21: - if (this.flexing) break; - w = this.executeCommand(2, g); - break; - case 22: - if (this.flexing) { - this.stack.push(0); - break; - } - w = this.executeCommand(1, p); - break; - case 30: - w = this.executeCommand(4, m); - break; - case 31: - w = this.executeCommand(4, b); - break; - case 3078: - if (a) { - const e = this.stack.at(-5); - this.seac = this.stack.splice(-4, 4); - this.seac[0] += this.lsb - e; - w = this.executeCommand(0, f); - } else w = this.executeCommand(4, f); - break; - case 3079: - if (this.stack.length < 4) { - w = !0; - break; - } - this.stack.pop(); - n = this.stack.pop(); - const e = this.stack.pop(); - i = this.stack.pop(); - this.lsb = i; - this.width = n; - this.stack.push(n, i, e); - w = this.executeCommand(3, g); - break; - case 3084: - if (this.stack.length < 2) { - w = !0; - break; - } - const S = this.stack.pop(), - x = this.stack.pop(); - this.stack.push(x / S); - break; - case 3088: - if (this.stack.length < 2) { - w = !0; - break; - } - y = this.stack.pop(); - const C = this.stack.pop(); - if (0 === y && 3 === C) { - const e = this.stack.splice(-17, 17); - this.stack.push( - e[2] + e[0], - e[3] + e[1], - e[4], - e[5], - e[6], - e[7], - e[8], - e[9], - e[10], - e[11], - e[12], - e[13], - e[14], - ); - w = this.executeCommand(13, d, !0); - this.flexing = !1; - this.stack.push(e[15], e[16]); - } else 1 === y && 0 === C && (this.flexing = !0); - break; - case 3089: - break; - default: - (0, s.warn)( - 'Unknown type 1 charstring command of "' + r + '"', - ); - } - if (w) break; - } else { - r <= 246 - ? (r -= 139) - : (r = - r <= 250 - ? 256 * (r - 247) + e[++S] + 108 - : r <= 254 - ? -256 * (r - 251) - e[++S] - 108 - : ((255 & e[++S]) << 24) | - ((255 & e[++S]) << 16) | - ((255 & e[++S]) << 8) | - ((255 & e[++S]) << 0)); - this.stack.push(r); - } - } - return w; - } - executeCommand(e, t, a) { - const r = this.stack.length; - if (e > r) return !0; - const n = r - e; - for (let e = n; e < r; e++) { - let t = this.stack[e]; - if (Number.isInteger(t)) - this.output.push(28, (t >> 8) & 255, 255 & t); - else { - t = (65536 * t) | 0; - this.output.push( - 255, - (t >> 24) & 255, - (t >> 16) & 255, - (t >> 8) & 255, - 255 & t, - ); - } - } - this.output.push(...t); - a ? this.stack.splice(n, e) : (this.stack.length = 0); - return !1; - } - } - function isHexDigit(e) { - return ( - (e >= 48 && e <= 57) || - (e >= 65 && e <= 70) || - (e >= 97 && e <= 102) - ); - } - function decrypt(e, t, a) { - if (a >= e.length) return new Uint8Array(0); - let r, - n, - i = 0 | t; - for (r = 0; r < a; r++) i = (52845 * (e[r] + i) + 22719) & 65535; - const s = e.length - a, - o = new Uint8Array(s); - for (r = a, n = 0; n < s; r++, n++) { - const t = e[r]; - o[n] = t ^ (i >> 8); - i = (52845 * (t + i) + 22719) & 65535; - } - return o; - } - function isSpecial(e) { - return ( - 47 === e || - 91 === e || - 93 === e || - 123 === e || - 125 === e || - 40 === e || - 41 === e - ); - } - t.Type1Parser = class Type1Parser { - constructor(e, t, a) { - if (t) { - const t = e.getBytes(), - a = !( - (isHexDigit(t[0]) || (0, n.isWhiteSpace)(t[0])) && - isHexDigit(t[1]) && - isHexDigit(t[2]) && - isHexDigit(t[3]) && - isHexDigit(t[4]) && - isHexDigit(t[5]) && - isHexDigit(t[6]) && - isHexDigit(t[7]) - ); - e = new i.Stream( - a - ? decrypt(t, 55665, 4) - : (function decryptAscii(e, t, a) { - let r = 0 | t; - const n = e.length, - i = new Uint8Array(n >>> 1); - let s, o; - for (s = 0, o = 0; s < n; s++) { - const t = e[s]; - if (!isHexDigit(t)) continue; - s++; - let a; - for (; s < n && !isHexDigit((a = e[s])); ) s++; - if (s < n) { - const e = parseInt(String.fromCharCode(t, a), 16); - i[o++] = e ^ (r >> 8); - r = (52845 * (e + r) + 22719) & 65535; - } - } - return i.slice(a, o); - })(t, 55665, 4), - ); - } - this.seacAnalysisEnabled = !!a; - this.stream = e; - this.nextChar(); - } - readNumberArray() { - this.getToken(); - const e = []; - for (;;) { - const t = this.getToken(); - if (null === t || "]" === t || "}" === t) break; - e.push(parseFloat(t || 0)); - } - return e; - } - readNumber() { - const e = this.getToken(); - return parseFloat(e || 0); - } - readInt() { - const e = this.getToken(); - return 0 | parseInt(e || 0, 10); - } - readBoolean() { - return "true" === this.getToken() ? 1 : 0; - } - nextChar() { - return (this.currentChar = this.stream.getByte()); - } - prevChar() { - this.stream.skip(-2); - return (this.currentChar = this.stream.getByte()); - } - getToken() { - let e = !1, - t = this.currentChar; - for (;;) { - if (-1 === t) return null; - if (e) (10 !== t && 13 !== t) || (e = !1); - else if (37 === t) e = !0; - else if (!(0, n.isWhiteSpace)(t)) break; - t = this.nextChar(); - } - if (isSpecial(t)) { - this.nextChar(); - return String.fromCharCode(t); - } - let a = ""; - do { - a += String.fromCharCode(t); - t = this.nextChar(); - } while (t >= 0 && !(0, n.isWhiteSpace)(t) && !isSpecial(t)); - return a; - } - readCharStrings(e, t) { - return -1 === t ? e : decrypt(e, 4330, t); - } - extractFontProgram(e) { - const t = this.stream, - a = [], - r = [], - n = Object.create(null); - n.lenIV = 4; - const i = { - subrs: [], - charstrings: [], - properties: { privateData: n }, - }; - let s, o, c, l; - for (; null !== (s = this.getToken()); ) - if ("/" === s) { - s = this.getToken(); - switch (s) { - case "CharStrings": - this.getToken(); - this.getToken(); - this.getToken(); - this.getToken(); - for (;;) { - s = this.getToken(); - if (null === s || "end" === s) break; - if ("/" !== s) continue; - const e = this.getToken(); - o = this.readInt(); - this.getToken(); - c = o > 0 ? t.getBytes(o) : new Uint8Array(0); - l = i.properties.privateData.lenIV; - const a = this.readCharStrings(c, l); - this.nextChar(); - s = this.getToken(); - "noaccess" === s - ? this.getToken() - : "/" === s && this.prevChar(); - r.push({ glyph: e, encoded: a }); - } - break; - case "Subrs": - this.readInt(); - this.getToken(); - for (; "dup" === this.getToken(); ) { - const e = this.readInt(); - o = this.readInt(); - this.getToken(); - c = o > 0 ? t.getBytes(o) : new Uint8Array(0); - l = i.properties.privateData.lenIV; - const r = this.readCharStrings(c, l); - this.nextChar(); - s = this.getToken(); - "noaccess" === s && this.getToken(); - a[e] = r; - } - break; - case "BlueValues": - case "OtherBlues": - case "FamilyBlues": - case "FamilyOtherBlues": - const e = this.readNumberArray(); - e.length > 0 && e.length, 0; - break; - case "StemSnapH": - case "StemSnapV": - i.properties.privateData[s] = this.readNumberArray(); - break; - case "StdHW": - case "StdVW": - i.properties.privateData[s] = this.readNumberArray()[0]; - break; - case "BlueShift": - case "lenIV": - case "BlueFuzz": - case "BlueScale": - case "LanguageGroup": - i.properties.privateData[s] = this.readNumber(); - break; - case "ExpansionFactor": - i.properties.privateData[s] = this.readNumber() || 0.06; - break; - case "ForceBold": - i.properties.privateData[s] = this.readBoolean(); - } - } - for (const { encoded: t, glyph: n } of r) { - const r = new Type1CharString(), - s = r.convert(t, a, this.seacAnalysisEnabled); - let o = r.output; - s && (o = [14]); - const c = { - glyphName: n, - charstring: o, - width: r.width, - lsb: r.lsb, - seac: r.seac, - }; - ".notdef" === n - ? i.charstrings.unshift(c) - : i.charstrings.push(c); - if (e.builtInEncoding) { - const t = e.builtInEncoding.indexOf(n); - t > -1 && - void 0 === e.widths[t] && - t >= e.firstChar && - t <= e.lastChar && - (e.widths[t] = r.width); - } - } - return i; - } - extractFontHeader(e) { - let t; - for (; null !== (t = this.getToken()); ) - if ("/" === t) { - t = this.getToken(); - switch (t) { - case "FontMatrix": - const a = this.readNumberArray(); - e.fontMatrix = a; - break; - case "Encoding": - const n = this.getToken(); - let i; - if (/^\d+$/.test(n)) { - i = []; - const e = 0 | parseInt(n, 10); - this.getToken(); - for (let a = 0; a < e; a++) { - t = this.getToken(); - for (; "dup" !== t && "def" !== t; ) { - t = this.getToken(); - if (null === t) return; - } - if ("def" === t) break; - const e = this.readInt(); - this.getToken(); - const a = this.getToken(); - i[e] = a; - this.getToken(); - } - } else i = (0, r.getEncoding)(n); - e.builtInEncoding = i; - break; - case "FontBBox": - const s = this.readNumberArray(); - e.ascent = Math.max(s[3], s[1]); - e.descent = Math.min(s[1], s[3]); - e.ascentScaled = !0; - } - } - } - }; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.Pattern = void 0; - t.clearPatternCaches = function clearPatternCaches() { - f = Object.create(null); - }; - t.getTilingPatternIR = function getTilingPatternIR(e, t, a) { - const n = t.getArray("Matrix"), - i = r.Util.normalizeRect(t.getArray("BBox")), - s = t.get("XStep"), - o = t.get("YStep"), - c = t.get("PaintType"), - l = t.get("TilingType"); - if (i[2] - i[0] == 0 || i[3] - i[1] == 0) - throw new r.FormatError( - `Invalid getTilingPatternIR /BBox array: [${i}].`, - ); - return ["TilingPattern", a, e, n, i, s, o, c, l]; - }; - var r = a(2), - n = a(5), - i = a(12), - s = a(3); - const o = 2, - c = 3, - l = 4, - h = 5, - u = 6, - d = 7; - t.Pattern = class Pattern { - constructor() { - (0, r.unreachable)("Cannot initialize Pattern."); - } - static parseShading(e, t, a, i, f) { - const g = e instanceof n.BaseStream ? e.dict : e, - p = g.get("ShadingType"); - try { - switch (p) { - case o: - case c: - return new RadialAxialShading(g, t, a, i, f); - case l: - case h: - case u: - case d: - return new MeshShading(e, t, a, i, f); - default: - throw new r.FormatError("Unsupported ShadingType: " + p); - } - } catch (e) { - if (e instanceof s.MissingDataException) throw e; - (0, r.warn)(e); - return new DummyShading(); - } - } - }; - class BaseShading { - static SMALL_NUMBER = 1e-6; - constructor() { - this.constructor === BaseShading && - (0, r.unreachable)("Cannot initialize BaseShading."); - } - getIR() { - (0, r.unreachable)("Abstract method `getIR` called."); - } - } - class RadialAxialShading extends BaseShading { - constructor(e, t, a, n, s) { - super(); - this.coordsArr = e.getArray("Coords"); - this.shadingType = e.get("ShadingType"); - const o = i.ColorSpace.parse({ - cs: e.getRaw("CS") || e.getRaw("ColorSpace"), - xref: t, - resources: a, - pdfFunctionFactory: n, - localColorSpaceCache: s, - }), - l = e.getArray("BBox"); - this.bbox = - Array.isArray(l) && 4 === l.length - ? r.Util.normalizeRect(l) - : null; - let h = 0, - u = 1; - if (e.has("Domain")) { - const t = e.getArray("Domain"); - h = t[0]; - u = t[1]; - } - let d = !1, - f = !1; - if (e.has("Extend")) { - const t = e.getArray("Extend"); - d = t[0]; - f = t[1]; - } - if (!(this.shadingType !== c || (d && f))) { - const [e, t, a, n, i, s] = this.coordsArr, - o = Math.hypot(e - n, t - i); - a <= s + o && - s <= a + o && - (0, r.warn)("Unsupported radial gradient."); - } - this.extendStart = d; - this.extendEnd = f; - const g = e.getRaw("Function"), - p = n.createFromArray(g), - m = (u - h) / 840, - b = (this.colorStops = []); - if (h >= u || m <= 0) { - (0, r.info)("Bad shading domain."); - return; - } - const y = new Float32Array(o.numComps), - w = new Float32Array(1); - let S, - x = 0; - w[0] = h; - p(w, 0, y, 0); - let C = o.getRgb(y, 0); - const k = r.Util.makeHexColor(C[0], C[1], C[2]); - b.push([0, k]); - let v = 1; - w[0] = h + m; - p(w, 0, y, 0); - let F = o.getRgb(y, 0), - O = F[0] - C[0] + 1, - T = F[1] - C[1] + 1, - M = F[2] - C[2] + 1, - D = F[0] - C[0] - 1, - E = F[1] - C[1] - 1, - N = F[2] - C[2] - 1; - for (let e = 2; e < 840; e++) { - w[0] = h + e * m; - p(w, 0, y, 0); - S = o.getRgb(y, 0); - const t = e - x; - O = Math.min(O, (S[0] - C[0] + 1) / t); - T = Math.min(T, (S[1] - C[1] + 1) / t); - M = Math.min(M, (S[2] - C[2] + 1) / t); - D = Math.max(D, (S[0] - C[0] - 1) / t); - E = Math.max(E, (S[1] - C[1] - 1) / t); - N = Math.max(N, (S[2] - C[2] - 1) / t); - if (!(D <= O && E <= T && N <= M)) { - const e = r.Util.makeHexColor(F[0], F[1], F[2]); - b.push([v / 840, e]); - O = S[0] - F[0] + 1; - T = S[1] - F[1] + 1; - M = S[2] - F[2] + 1; - D = S[0] - F[0] - 1; - E = S[1] - F[1] - 1; - N = S[2] - F[2] - 1; - x = v; - C = F; - } - v = e; - F = S; - } - const R = r.Util.makeHexColor(F[0], F[1], F[2]); - b.push([1, R]); - let L = "transparent"; - if (e.has("Background")) { - S = o.getRgb(e.get("Background"), 0); - L = r.Util.makeHexColor(S[0], S[1], S[2]); - } - if (!d) { - b.unshift([0, L]); - b[1][0] += BaseShading.SMALL_NUMBER; - } - if (!f) { - b.at(-1)[0] -= BaseShading.SMALL_NUMBER; - b.push([1, L]); - } - this.colorStops = b; - } - getIR() { - const e = this.coordsArr, - t = this.shadingType; - let a, n, i, s, l; - if (t === o) { - n = [e[0], e[1]]; - i = [e[2], e[3]]; - s = null; - l = null; - a = "axial"; - } else if (t === c) { - n = [e[0], e[1]]; - i = [e[3], e[4]]; - s = e[2]; - l = e[5]; - a = "radial"; - } else (0, r.unreachable)(`getPattern type unknown: ${t}`); - return ["RadialAxial", a, this.bbox, this.colorStops, n, i, s, l]; - } - } - class MeshStreamReader { - constructor(e, t) { - this.stream = e; - this.context = t; - this.buffer = 0; - this.bufferLength = 0; - const a = t.numComps; - this.tmpCompsBuf = new Float32Array(a); - const r = t.colorSpace.numComps; - this.tmpCsCompsBuf = t.colorFn - ? new Float32Array(r) - : this.tmpCompsBuf; - } - get hasData() { - if (this.stream.end) return this.stream.pos < this.stream.end; - if (this.bufferLength > 0) return !0; - const e = this.stream.getByte(); - if (e < 0) return !1; - this.buffer = e; - this.bufferLength = 8; - return !0; - } - readBits(e) { - let t = this.buffer, - a = this.bufferLength; - if (32 === e) { - if (0 === a) - return ( - ((this.stream.getByte() << 24) | - (this.stream.getByte() << 16) | - (this.stream.getByte() << 8) | - this.stream.getByte()) >>> - 0 - ); - t = - (t << 24) | - (this.stream.getByte() << 16) | - (this.stream.getByte() << 8) | - this.stream.getByte(); - const e = this.stream.getByte(); - this.buffer = e & ((1 << a) - 1); - return ((t << (8 - a)) | ((255 & e) >> a)) >>> 0; - } - if (8 === e && 0 === a) return this.stream.getByte(); - for (; a < e; ) { - t = (t << 8) | this.stream.getByte(); - a += 8; - } - a -= e; - this.bufferLength = a; - this.buffer = t & ((1 << a) - 1); - return t >> a; - } - align() { - this.buffer = 0; - this.bufferLength = 0; - } - readFlag() { - return this.readBits(this.context.bitsPerFlag); - } - readCoordinate() { - const e = this.context.bitsPerCoordinate, - t = this.readBits(e), - a = this.readBits(e), - r = this.context.decode, - n = e < 32 ? 1 / ((1 << e) - 1) : 2.3283064365386963e-10; - return [ - t * n * (r[1] - r[0]) + r[0], - a * n * (r[3] - r[2]) + r[2], - ]; - } - readComponents() { - const e = this.context.numComps, - t = this.context.bitsPerComponent, - a = t < 32 ? 1 / ((1 << t) - 1) : 2.3283064365386963e-10, - r = this.context.decode, - n = this.tmpCompsBuf; - for (let i = 0, s = 4; i < e; i++, s += 2) { - const e = this.readBits(t); - n[i] = e * a * (r[s + 1] - r[s]) + r[s]; - } - const i = this.tmpCsCompsBuf; - this.context.colorFn && this.context.colorFn(n, 0, i, 0); - return this.context.colorSpace.getRgb(i, 0); - } - } - let f = Object.create(null); - function getB(e) { - return (f[e] ||= (function buildB(e) { - const t = []; - for (let a = 0; a <= e; a++) { - const r = a / e, - n = 1 - r; - t.push( - new Float32Array([ - n ** 3, - 3 * r * n ** 2, - 3 * r ** 2 * n, - r ** 3, - ]), - ); - } - return t; - })(e)); - } - class MeshShading extends BaseShading { - static MIN_SPLIT_PATCH_CHUNKS_AMOUNT = 3; - static MAX_SPLIT_PATCH_CHUNKS_AMOUNT = 20; - static TRIANGLE_DENSITY = 20; - constructor(e, t, a, s, o) { - super(); - if (!(e instanceof n.BaseStream)) - throw new r.FormatError("Mesh data is not a stream"); - const c = e.dict; - this.shadingType = c.get("ShadingType"); - const f = c.getArray("BBox"); - this.bbox = - Array.isArray(f) && 4 === f.length - ? r.Util.normalizeRect(f) - : null; - const g = i.ColorSpace.parse({ - cs: c.getRaw("CS") || c.getRaw("ColorSpace"), - xref: t, - resources: a, - pdfFunctionFactory: s, - localColorSpaceCache: o, - }); - this.background = c.has("Background") - ? g.getRgb(c.get("Background"), 0) - : null; - const p = c.getRaw("Function"), - m = p ? s.createFromArray(p) : null; - this.coords = []; - this.colors = []; - this.figures = []; - const b = { - bitsPerCoordinate: c.get("BitsPerCoordinate"), - bitsPerComponent: c.get("BitsPerComponent"), - bitsPerFlag: c.get("BitsPerFlag"), - decode: c.getArray("Decode"), - colorFn: m, - colorSpace: g, - numComps: m ? 1 : g.numComps, - }, - y = new MeshStreamReader(e, b); - let w = !1; - switch (this.shadingType) { - case l: - this._decodeType4Shading(y); - break; - case h: - const e = 0 | c.get("VerticesPerRow"); - if (e < 2) throw new r.FormatError("Invalid VerticesPerRow"); - this._decodeType5Shading(y, e); - break; - case u: - this._decodeType6Shading(y); - w = !0; - break; - case d: - this._decodeType7Shading(y); - w = !0; - break; - default: - (0, r.unreachable)("Unsupported mesh type."); - } - if (w) { - this._updateBounds(); - for (let e = 0, t = this.figures.length; e < t; e++) - this._buildFigureFromPatch(e); - } - this._updateBounds(); - this._packData(); - } - _decodeType4Shading(e) { - const t = this.coords, - a = this.colors, - n = [], - i = []; - let s = 0; - for (; e.hasData; ) { - const o = e.readFlag(), - c = e.readCoordinate(), - l = e.readComponents(); - if (0 === s) { - if (!(0 <= o && o <= 2)) - throw new r.FormatError("Unknown type4 flag"); - switch (o) { - case 0: - s = 3; - break; - case 1: - i.push(i.at(-2), i.at(-1)); - s = 1; - break; - case 2: - i.push(i.at(-3), i.at(-1)); - s = 1; - } - n.push(o); - } - i.push(t.length); - t.push(c); - a.push(l); - s--; - e.align(); - } - this.figures.push({ - type: "triangles", - coords: new Int32Array(i), - colors: new Int32Array(i), - }); - } - _decodeType5Shading(e, t) { - const a = this.coords, - r = this.colors, - n = []; - for (; e.hasData; ) { - const t = e.readCoordinate(), - i = e.readComponents(); - n.push(a.length); - a.push(t); - r.push(i); - } - this.figures.push({ - type: "lattice", - coords: new Int32Array(n), - colors: new Int32Array(n), - verticesPerRow: t, - }); - } - _decodeType6Shading(e) { - const t = this.coords, - a = this.colors, - n = new Int32Array(16), - i = new Int32Array(4); - for (; e.hasData; ) { - const s = e.readFlag(); - if (!(0 <= s && s <= 3)) - throw new r.FormatError("Unknown type6 flag"); - const o = t.length; - for (let a = 0, r = 0 !== s ? 8 : 12; a < r; a++) - t.push(e.readCoordinate()); - const c = a.length; - for (let t = 0, r = 0 !== s ? 2 : 4; t < r; t++) - a.push(e.readComponents()); - let l, h, u, d; - switch (s) { - case 0: - n[12] = o + 3; - n[13] = o + 4; - n[14] = o + 5; - n[15] = o + 6; - n[8] = o + 2; - n[11] = o + 7; - n[4] = o + 1; - n[7] = o + 8; - n[0] = o; - n[1] = o + 11; - n[2] = o + 10; - n[3] = o + 9; - i[2] = c + 1; - i[3] = c + 2; - i[0] = c; - i[1] = c + 3; - break; - case 1: - l = n[12]; - h = n[13]; - u = n[14]; - d = n[15]; - n[12] = d; - n[13] = o + 0; - n[14] = o + 1; - n[15] = o + 2; - n[8] = u; - n[11] = o + 3; - n[4] = h; - n[7] = o + 4; - n[0] = l; - n[1] = o + 7; - n[2] = o + 6; - n[3] = o + 5; - l = i[2]; - h = i[3]; - i[2] = h; - i[3] = c; - i[0] = l; - i[1] = c + 1; - break; - case 2: - l = n[15]; - h = n[11]; - n[12] = n[3]; - n[13] = o + 0; - n[14] = o + 1; - n[15] = o + 2; - n[8] = n[7]; - n[11] = o + 3; - n[4] = h; - n[7] = o + 4; - n[0] = l; - n[1] = o + 7; - n[2] = o + 6; - n[3] = o + 5; - l = i[3]; - i[2] = i[1]; - i[3] = c; - i[0] = l; - i[1] = c + 1; - break; - case 3: - n[12] = n[0]; - n[13] = o + 0; - n[14] = o + 1; - n[15] = o + 2; - n[8] = n[1]; - n[11] = o + 3; - n[4] = n[2]; - n[7] = o + 4; - n[0] = n[3]; - n[1] = o + 7; - n[2] = o + 6; - n[3] = o + 5; - i[2] = i[0]; - i[3] = c; - i[0] = i[1]; - i[1] = c + 1; - } - n[5] = t.length; - t.push([ - (-4 * t[n[0]][0] - - t[n[15]][0] + - 6 * (t[n[4]][0] + t[n[1]][0]) - - 2 * (t[n[12]][0] + t[n[3]][0]) + - 3 * (t[n[13]][0] + t[n[7]][0])) / - 9, - (-4 * t[n[0]][1] - - t[n[15]][1] + - 6 * (t[n[4]][1] + t[n[1]][1]) - - 2 * (t[n[12]][1] + t[n[3]][1]) + - 3 * (t[n[13]][1] + t[n[7]][1])) / - 9, - ]); - n[6] = t.length; - t.push([ - (-4 * t[n[3]][0] - - t[n[12]][0] + - 6 * (t[n[2]][0] + t[n[7]][0]) - - 2 * (t[n[0]][0] + t[n[15]][0]) + - 3 * (t[n[4]][0] + t[n[14]][0])) / - 9, - (-4 * t[n[3]][1] - - t[n[12]][1] + - 6 * (t[n[2]][1] + t[n[7]][1]) - - 2 * (t[n[0]][1] + t[n[15]][1]) + - 3 * (t[n[4]][1] + t[n[14]][1])) / - 9, - ]); - n[9] = t.length; - t.push([ - (-4 * t[n[12]][0] - - t[n[3]][0] + - 6 * (t[n[8]][0] + t[n[13]][0]) - - 2 * (t[n[0]][0] + t[n[15]][0]) + - 3 * (t[n[11]][0] + t[n[1]][0])) / - 9, - (-4 * t[n[12]][1] - - t[n[3]][1] + - 6 * (t[n[8]][1] + t[n[13]][1]) - - 2 * (t[n[0]][1] + t[n[15]][1]) + - 3 * (t[n[11]][1] + t[n[1]][1])) / - 9, - ]); - n[10] = t.length; - t.push([ - (-4 * t[n[15]][0] - - t[n[0]][0] + - 6 * (t[n[11]][0] + t[n[14]][0]) - - 2 * (t[n[12]][0] + t[n[3]][0]) + - 3 * (t[n[2]][0] + t[n[8]][0])) / - 9, - (-4 * t[n[15]][1] - - t[n[0]][1] + - 6 * (t[n[11]][1] + t[n[14]][1]) - - 2 * (t[n[12]][1] + t[n[3]][1]) + - 3 * (t[n[2]][1] + t[n[8]][1])) / - 9, - ]); - this.figures.push({ - type: "patch", - coords: new Int32Array(n), - colors: new Int32Array(i), - }); - } - } - _decodeType7Shading(e) { - const t = this.coords, - a = this.colors, - n = new Int32Array(16), - i = new Int32Array(4); - for (; e.hasData; ) { - const s = e.readFlag(); - if (!(0 <= s && s <= 3)) - throw new r.FormatError("Unknown type7 flag"); - const o = t.length; - for (let a = 0, r = 0 !== s ? 12 : 16; a < r; a++) - t.push(e.readCoordinate()); - const c = a.length; - for (let t = 0, r = 0 !== s ? 2 : 4; t < r; t++) - a.push(e.readComponents()); - let l, h, u, d; - switch (s) { - case 0: - n[12] = o + 3; - n[13] = o + 4; - n[14] = o + 5; - n[15] = o + 6; - n[8] = o + 2; - n[9] = o + 13; - n[10] = o + 14; - n[11] = o + 7; - n[4] = o + 1; - n[5] = o + 12; - n[6] = o + 15; - n[7] = o + 8; - n[0] = o; - n[1] = o + 11; - n[2] = o + 10; - n[3] = o + 9; - i[2] = c + 1; - i[3] = c + 2; - i[0] = c; - i[1] = c + 3; - break; - case 1: - l = n[12]; - h = n[13]; - u = n[14]; - d = n[15]; - n[12] = d; - n[13] = o + 0; - n[14] = o + 1; - n[15] = o + 2; - n[8] = u; - n[9] = o + 9; - n[10] = o + 10; - n[11] = o + 3; - n[4] = h; - n[5] = o + 8; - n[6] = o + 11; - n[7] = o + 4; - n[0] = l; - n[1] = o + 7; - n[2] = o + 6; - n[3] = o + 5; - l = i[2]; - h = i[3]; - i[2] = h; - i[3] = c; - i[0] = l; - i[1] = c + 1; - break; - case 2: - l = n[15]; - h = n[11]; - n[12] = n[3]; - n[13] = o + 0; - n[14] = o + 1; - n[15] = o + 2; - n[8] = n[7]; - n[9] = o + 9; - n[10] = o + 10; - n[11] = o + 3; - n[4] = h; - n[5] = o + 8; - n[6] = o + 11; - n[7] = o + 4; - n[0] = l; - n[1] = o + 7; - n[2] = o + 6; - n[3] = o + 5; - l = i[3]; - i[2] = i[1]; - i[3] = c; - i[0] = l; - i[1] = c + 1; - break; - case 3: - n[12] = n[0]; - n[13] = o + 0; - n[14] = o + 1; - n[15] = o + 2; - n[8] = n[1]; - n[9] = o + 9; - n[10] = o + 10; - n[11] = o + 3; - n[4] = n[2]; - n[5] = o + 8; - n[6] = o + 11; - n[7] = o + 4; - n[0] = n[3]; - n[1] = o + 7; - n[2] = o + 6; - n[3] = o + 5; - i[2] = i[0]; - i[3] = c; - i[0] = i[1]; - i[1] = c + 1; - } - this.figures.push({ - type: "patch", - coords: new Int32Array(n), - colors: new Int32Array(i), - }); - } - } - _buildFigureFromPatch(e) { - const t = this.figures[e]; - (0, r.assert)("patch" === t.type, "Unexpected patch mesh figure"); - const a = this.coords, - n = this.colors, - i = t.coords, - s = t.colors, - o = Math.min(a[i[0]][0], a[i[3]][0], a[i[12]][0], a[i[15]][0]), - c = Math.min(a[i[0]][1], a[i[3]][1], a[i[12]][1], a[i[15]][1]), - l = Math.max(a[i[0]][0], a[i[3]][0], a[i[12]][0], a[i[15]][0]), - h = Math.max(a[i[0]][1], a[i[3]][1], a[i[12]][1], a[i[15]][1]); - let u = Math.ceil( - ((l - o) * MeshShading.TRIANGLE_DENSITY) / - (this.bounds[2] - this.bounds[0]), - ); - u = Math.max( - MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT, - Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, u), - ); - let d = Math.ceil( - ((h - c) * MeshShading.TRIANGLE_DENSITY) / - (this.bounds[3] - this.bounds[1]), - ); - d = Math.max( - MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT, - Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, d), - ); - const f = u + 1, - g = new Int32Array((d + 1) * f), - p = new Int32Array((d + 1) * f); - let m = 0; - const b = new Uint8Array(3), - y = new Uint8Array(3), - w = n[s[0]], - S = n[s[1]], - x = n[s[2]], - C = n[s[3]], - k = getB(d), - v = getB(u); - for (let e = 0; e <= d; e++) { - b[0] = ((w[0] * (d - e) + x[0] * e) / d) | 0; - b[1] = ((w[1] * (d - e) + x[1] * e) / d) | 0; - b[2] = ((w[2] * (d - e) + x[2] * e) / d) | 0; - y[0] = ((S[0] * (d - e) + C[0] * e) / d) | 0; - y[1] = ((S[1] * (d - e) + C[1] * e) / d) | 0; - y[2] = ((S[2] * (d - e) + C[2] * e) / d) | 0; - for (let t = 0; t <= u; t++, m++) { - if (!((0 !== e && e !== d) || (0 !== t && t !== u))) continue; - let r = 0, - s = 0, - o = 0; - for (let n = 0; n <= 3; n++) - for (let c = 0; c <= 3; c++, o++) { - const l = k[e][n] * v[t][c]; - r += a[i[o]][0] * l; - s += a[i[o]][1] * l; - } - g[m] = a.length; - a.push([r, s]); - p[m] = n.length; - const c = new Uint8Array(3); - c[0] = ((b[0] * (u - t) + y[0] * t) / u) | 0; - c[1] = ((b[1] * (u - t) + y[1] * t) / u) | 0; - c[2] = ((b[2] * (u - t) + y[2] * t) / u) | 0; - n.push(c); - } - } - g[0] = i[0]; - p[0] = s[0]; - g[u] = i[3]; - p[u] = s[1]; - g[f * d] = i[12]; - p[f * d] = s[2]; - g[f * d + u] = i[15]; - p[f * d + u] = s[3]; - this.figures[e] = { - type: "lattice", - coords: g, - colors: p, - verticesPerRow: f, - }; - } - _updateBounds() { - let e = this.coords[0][0], - t = this.coords[0][1], - a = e, - r = t; - for (let n = 1, i = this.coords.length; n < i; n++) { - const i = this.coords[n][0], - s = this.coords[n][1]; - e = e > i ? i : e; - t = t > s ? s : t; - a = a < i ? i : a; - r = r < s ? s : r; - } - this.bounds = [e, t, a, r]; - } - _packData() { - let e, t, a, r; - const n = this.coords, - i = new Float32Array(2 * n.length); - for (e = 0, a = 0, t = n.length; e < t; e++) { - const t = n[e]; - i[a++] = t[0]; - i[a++] = t[1]; - } - this.coords = i; - const s = this.colors, - o = new Uint8Array(3 * s.length); - for (e = 0, a = 0, t = s.length; e < t; e++) { - const t = s[e]; - o[a++] = t[0]; - o[a++] = t[1]; - o[a++] = t[2]; - } - this.colors = o; - const c = this.figures; - for (e = 0, t = c.length; e < t; e++) { - const t = c[e], - n = t.coords, - i = t.colors; - for (a = 0, r = n.length; a < r; a++) { - n[a] *= 2; - i[a] *= 3; - } - } - } - getIR() { - return [ - "Mesh", - this.shadingType, - this.coords, - this.colors, - this.figures, - this.bounds, - this.bbox, - this.background, - ]; - } - } - class DummyShading extends BaseShading { - getIR() { - return ["Dummy"]; - } - } - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.getXfaFontDict = function getXfaFontDict(e) { - const t = (function getXfaFontWidths(e) { - const t = getXfaFontName(e); - if (!t) return null; - const { baseWidths: a, baseMapping: r, factors: n } = t, - i = n ? a.map((e, t) => e * n[t]) : a; - let s, - o = -2; - const c = []; - for (const [e, t] of r - .map((e, t) => [e, t]) - .sort(([e], [t]) => e - t)) - if (-1 !== e) - if (e === o + 1) { - s.push(i[t]); - o += 1; - } else { - o = e; - s = [i[t]]; - c.push(e, s); - } - return c; - })(e), - a = new n.Dict(null); - a.set("BaseFont", n.Name.get(e)); - a.set("Type", n.Name.get("Font")); - a.set("Subtype", n.Name.get("CIDFontType2")); - a.set("Encoding", n.Name.get("Identity-H")); - a.set("CIDToGIDMap", n.Name.get("Identity")); - a.set("W", t); - a.set("FirstChar", t[0]); - a.set("LastChar", t.at(-2) + t.at(-1).length - 1); - const r = new n.Dict(null); - a.set("FontDescriptor", r); - const i = new n.Dict(null); - i.set("Ordering", "Identity"); - i.set("Registry", "Adobe"); - i.set("Supplement", 0); - a.set("CIDSystemInfo", i); - return a; - }; - t.getXfaFontName = getXfaFontName; - var r = a(52), - n = a(4), - i = a(53), - s = a(54), - o = a(55), - c = a(56), - l = a(3), - h = a(38); - const u = (0, l.getLookupTableFactory)(function (e) { - e["MyriadPro-Regular"] = e["PdfJS-Fallback-Regular"] = { - name: "LiberationSans-Regular", - factors: o.MyriadProRegularFactors, - baseWidths: s.LiberationSansRegularWidths, - baseMapping: s.LiberationSansRegularMapping, - metrics: o.MyriadProRegularMetrics, - }; - e["MyriadPro-Bold"] = e["PdfJS-Fallback-Bold"] = { - name: "LiberationSans-Bold", - factors: o.MyriadProBoldFactors, - baseWidths: s.LiberationSansBoldWidths, - baseMapping: s.LiberationSansBoldMapping, - metrics: o.MyriadProBoldMetrics, - }; - e["MyriadPro-It"] = - e["MyriadPro-Italic"] = - e["PdfJS-Fallback-Italic"] = - { - name: "LiberationSans-Italic", - factors: o.MyriadProItalicFactors, - baseWidths: s.LiberationSansItalicWidths, - baseMapping: s.LiberationSansItalicMapping, - metrics: o.MyriadProItalicMetrics, - }; - e["MyriadPro-BoldIt"] = - e["MyriadPro-BoldItalic"] = - e["PdfJS-Fallback-BoldItalic"] = - { - name: "LiberationSans-BoldItalic", - factors: o.MyriadProBoldItalicFactors, - baseWidths: s.LiberationSansBoldItalicWidths, - baseMapping: s.LiberationSansBoldItalicMapping, - metrics: o.MyriadProBoldItalicMetrics, - }; - e.ArialMT = - e.Arial = - e["Arial-Regular"] = - { - name: "LiberationSans-Regular", - baseWidths: s.LiberationSansRegularWidths, - baseMapping: s.LiberationSansRegularMapping, - }; - e["Arial-BoldMT"] = e["Arial-Bold"] = { - name: "LiberationSans-Bold", - baseWidths: s.LiberationSansBoldWidths, - baseMapping: s.LiberationSansBoldMapping, - }; - e["Arial-ItalicMT"] = e["Arial-Italic"] = { - name: "LiberationSans-Italic", - baseWidths: s.LiberationSansItalicWidths, - baseMapping: s.LiberationSansItalicMapping, - }; - e["Arial-BoldItalicMT"] = e["Arial-BoldItalic"] = { - name: "LiberationSans-BoldItalic", - baseWidths: s.LiberationSansBoldItalicWidths, - baseMapping: s.LiberationSansBoldItalicMapping, - }; - e["Calibri-Regular"] = { - name: "LiberationSans-Regular", - factors: r.CalibriRegularFactors, - baseWidths: s.LiberationSansRegularWidths, - baseMapping: s.LiberationSansRegularMapping, - metrics: r.CalibriRegularMetrics, - }; - e["Calibri-Bold"] = { - name: "LiberationSans-Bold", - factors: r.CalibriBoldFactors, - baseWidths: s.LiberationSansBoldWidths, - baseMapping: s.LiberationSansBoldMapping, - metrics: r.CalibriBoldMetrics, - }; - e["Calibri-Italic"] = { - name: "LiberationSans-Italic", - factors: r.CalibriItalicFactors, - baseWidths: s.LiberationSansItalicWidths, - baseMapping: s.LiberationSansItalicMapping, - metrics: r.CalibriItalicMetrics, - }; - e["Calibri-BoldItalic"] = { - name: "LiberationSans-BoldItalic", - factors: r.CalibriBoldItalicFactors, - baseWidths: s.LiberationSansBoldItalicWidths, - baseMapping: s.LiberationSansBoldItalicMapping, - metrics: r.CalibriBoldItalicMetrics, - }; - e["Segoeui-Regular"] = { - name: "LiberationSans-Regular", - factors: c.SegoeuiRegularFactors, - baseWidths: s.LiberationSansRegularWidths, - baseMapping: s.LiberationSansRegularMapping, - metrics: c.SegoeuiRegularMetrics, - }; - e["Segoeui-Bold"] = { - name: "LiberationSans-Bold", - factors: c.SegoeuiBoldFactors, - baseWidths: s.LiberationSansBoldWidths, - baseMapping: s.LiberationSansBoldMapping, - metrics: c.SegoeuiBoldMetrics, - }; - e["Segoeui-Italic"] = { - name: "LiberationSans-Italic", - factors: c.SegoeuiItalicFactors, - baseWidths: s.LiberationSansItalicWidths, - baseMapping: s.LiberationSansItalicMapping, - metrics: c.SegoeuiItalicMetrics, - }; - e["Segoeui-BoldItalic"] = { - name: "LiberationSans-BoldItalic", - factors: c.SegoeuiBoldItalicFactors, - baseWidths: s.LiberationSansBoldItalicWidths, - baseMapping: s.LiberationSansBoldItalicMapping, - metrics: c.SegoeuiBoldItalicMetrics, - }; - e["Helvetica-Regular"] = e.Helvetica = { - name: "LiberationSans-Regular", - factors: i.HelveticaRegularFactors, - baseWidths: s.LiberationSansRegularWidths, - baseMapping: s.LiberationSansRegularMapping, - metrics: i.HelveticaRegularMetrics, - }; - e["Helvetica-Bold"] = { - name: "LiberationSans-Bold", - factors: i.HelveticaBoldFactors, - baseWidths: s.LiberationSansBoldWidths, - baseMapping: s.LiberationSansBoldMapping, - metrics: i.HelveticaBoldMetrics, - }; - e["Helvetica-Italic"] = { - name: "LiberationSans-Italic", - factors: i.HelveticaItalicFactors, - baseWidths: s.LiberationSansItalicWidths, - baseMapping: s.LiberationSansItalicMapping, - metrics: i.HelveticaItalicMetrics, - }; - e["Helvetica-BoldItalic"] = { - name: "LiberationSans-BoldItalic", - factors: i.HelveticaBoldItalicFactors, - baseWidths: s.LiberationSansBoldItalicWidths, - baseMapping: s.LiberationSansBoldItalicMapping, - metrics: i.HelveticaBoldItalicMetrics, - }; - }); - function getXfaFontName(e) { - const t = (0, h.normalizeFontName)(e); - return u()[t]; - } - }, - (e, t) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.CalibriRegularMetrics = - t.CalibriRegularFactors = - t.CalibriItalicMetrics = - t.CalibriItalicFactors = - t.CalibriBoldMetrics = - t.CalibriBoldItalicMetrics = - t.CalibriBoldItalicFactors = - t.CalibriBoldFactors = - void 0; - t.CalibriBoldFactors = [ - 1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, - 0.97566, 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, - 0.96134, 1.54657, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, - 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.82845, 0.82845, - 0.85284, 0.85284, 0.85284, 0.75859, 0.92138, 0.83908, 0.7762, - 0.73293, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356, 0.95958, - 0.59526, 0.75727, 0.69225, 1.04924, 0.9121, 0.86943, 0.79795, - 0.88198, 0.77958, 0.70864, 0.81055, 0.90399, 0.88653, 0.96017, - 0.82577, 0.77892, 0.78257, 0.97507, 1.54657, 0.97507, 0.85284, - 0.89552, 0.90176, 0.88762, 0.8785, 0.75241, 0.8785, 0.90518, - 0.95015, 0.77618, 0.8785, 0.88401, 0.91916, 0.86304, 0.88401, - 0.91488, 0.8785, 0.8801, 0.8785, 0.8785, 0.91343, 0.7173, 1.04106, - 0.8785, 0.85075, 0.95794, 0.82616, 0.85162, 0.79492, 0.88331, - 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, - 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, 1.12401, 0.96839, - 0.85284, 0.68787, 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, - 0.90323, 1, 1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, 0.78864, - 0.82845, 0.84133, 0.75859, 0.83908, 0.83908, 0.83908, 0.83908, - 0.83908, 0.83908, 0.77539, 0.73293, 0.73133, 0.73133, 0.73133, - 0.73133, 0.95958, 0.95958, 0.95958, 0.95958, 0.88506, 0.9121, - 0.86943, 0.86943, 0.86943, 0.86943, 0.86943, 0.85284, 0.87508, - 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795, 0.90807, - 0.88762, 0.88762, 0.88762, 0.88762, 0.88762, 0.88762, 0.8715, - 0.75241, 0.90518, 0.90518, 0.90518, 0.90518, 0.88401, 0.88401, - 0.88401, 0.88401, 0.8785, 0.8785, 0.8801, 0.8801, 0.8801, 0.8801, - 0.8801, 0.90747, 0.89049, 0.8785, 0.8785, 0.8785, 0.8785, 0.85162, - 0.8785, 0.85162, 0.83908, 0.88762, 0.83908, 0.88762, 0.83908, - 0.88762, 0.73293, 0.75241, 0.73293, 0.75241, 0.73293, 0.75241, - 0.73293, 0.75241, 0.87289, 0.83016, 0.88506, 0.93125, 0.73133, - 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, - 0.73133, 0.90518, 0.81921, 0.77618, 0.81921, 0.77618, 0.81921, - 0.77618, 1, 1, 0.87356, 0.8785, 0.91075, 0.89608, 0.95958, 0.88401, - 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, - 0.88401, 0.76229, 0.90167, 0.59526, 0.91916, 1, 1, 0.86304, 0.69225, - 0.88401, 1, 1, 0.70424, 0.79468, 0.91926, 0.88175, 0.70823, 0.94903, - 0.9121, 0.8785, 1, 1, 0.9121, 0.8785, 0.87802, 0.88656, 0.8785, - 0.86943, 0.8801, 0.86943, 0.8801, 0.86943, 0.8801, 0.87402, 0.89291, - 0.77958, 0.91343, 1, 1, 0.77958, 0.91343, 0.70864, 0.7173, 0.70864, - 0.7173, 0.70864, 0.7173, 0.70864, 0.7173, 1, 1, 0.81055, 0.75841, - 0.81055, 1.06452, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, - 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.96017, 0.95794, - 0.77892, 0.85162, 0.77892, 0.78257, 0.79492, 0.78257, 0.79492, - 0.78257, 0.79492, 0.9297, 0.56892, 0.83908, 0.88762, 0.77539, - 0.8715, 0.87508, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 1.20528, - 1, 1.15543, 0.70674, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161, - 1.06303, 0.83908, 0.80352, 0.57184, 0.6965, 0.56289, 0.82001, - 0.56029, 0.81235, 1.02988, 0.83908, 0.7762, 0.68156, 0.80367, - 0.73133, 0.78257, 0.87356, 0.86943, 0.95958, 0.75727, 0.89019, - 1.04924, 0.9121, 0.7648, 0.86943, 0.87356, 0.79795, 0.78275, - 0.81055, 0.77892, 0.9762, 0.82577, 0.99819, 0.84896, 0.95958, - 0.77892, 0.96108, 1.01407, 0.89049, 1.02988, 0.94211, 0.96108, - 0.8936, 0.84021, 0.87842, 0.96399, 0.79109, 0.89049, 1.00813, - 1.02988, 0.86077, 0.87445, 0.92099, 0.84723, 0.86513, 0.8801, - 0.75638, 0.85714, 0.78216, 0.79586, 0.87965, 0.94211, 0.97747, - 0.78287, 0.97926, 0.84971, 1.02988, 0.94211, 0.8801, 0.94211, - 0.84971, 0.73133, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90264, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90518, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90548, 1, 1, 1, 1, 1, 1, 0.96017, - 0.95794, 0.96017, 0.95794, 0.96017, 0.95794, 0.77892, 0.85162, 1, 1, - 0.89552, 0.90527, 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.92794, - 0.87012, 0.87012, 0.87012, 0.89552, 0.89552, 1.42259, 0.71143, - 1.06152, 1, 1, 1.03372, 1.03372, 0.97171, 1.4956, 2.2807, 0.93835, - 0.83406, 0.91133, 0.84107, 0.91133, 1, 1, 1, 0.72021, 1, 1.23108, - 0.83489, 0.88525, 0.88525, 0.81499, 0.90527, 1.81055, 0.90527, - 1.81055, 1.31006, 1.53711, 0.94434, 1.08696, 1, 0.95018, 0.77192, - 0.85284, 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747, - 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, - 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99862, - 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - ]; - t.CalibriBoldMetrics = { lineHeight: 1.2207, lineGap: 0.2207 }; - t.CalibriBoldItalicFactors = [ - 1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, - 0.97566, 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, - 0.96134, 1.56239, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, - 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.82845, 0.82845, - 0.85284, 0.85284, 0.85284, 0.75859, 0.92138, 0.83908, 0.7762, - 0.71805, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356, 0.95958, - 0.59526, 0.75727, 0.69225, 1.04924, 0.90872, 0.85938, 0.79795, - 0.87068, 0.77958, 0.69766, 0.81055, 0.90399, 0.88653, 0.96068, - 0.82577, 0.77892, 0.78257, 0.97507, 1.529, 0.97507, 0.85284, - 0.89552, 0.90176, 0.94908, 0.86411, 0.74012, 0.86411, 0.88323, - 0.95015, 0.86411, 0.86331, 0.88401, 0.91916, 0.86304, 0.88401, - 0.9039, 0.86331, 0.86331, 0.86411, 0.86411, 0.90464, 0.70852, - 1.04106, 0.86331, 0.84372, 0.95794, 0.82616, 0.84548, 0.79492, - 0.88331, 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133, - 0.89552, 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, 1.19129, - 0.96839, 0.85284, 0.68787, 0.70645, 0.85592, 0.90747, 1.01466, - 1.0088, 0.90323, 1, 1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, - 0.78864, 0.82845, 0.84133, 0.75859, 0.83908, 0.83908, 0.83908, - 0.83908, 0.83908, 0.83908, 0.77539, 0.71805, 0.73133, 0.73133, - 0.73133, 0.73133, 0.95958, 0.95958, 0.95958, 0.95958, 0.88506, - 0.90872, 0.85938, 0.85938, 0.85938, 0.85938, 0.85938, 0.85284, - 0.87068, 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795, - 0.90807, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, - 0.85887, 0.74012, 0.88323, 0.88323, 0.88323, 0.88323, 0.88401, - 0.88401, 0.88401, 0.88401, 0.8785, 0.86331, 0.86331, 0.86331, - 0.86331, 0.86331, 0.86331, 0.90747, 0.89049, 0.86331, 0.86331, - 0.86331, 0.86331, 0.84548, 0.86411, 0.84548, 0.83908, 0.94908, - 0.83908, 0.94908, 0.83908, 0.94908, 0.71805, 0.74012, 0.71805, - 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.87289, 0.79538, - 0.88506, 0.92726, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133, - 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.81921, 0.86411, - 0.81921, 0.86411, 0.81921, 0.86411, 1, 1, 0.87356, 0.86331, 0.91075, - 0.8777, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, - 0.95958, 0.88401, 0.95958, 0.88401, 0.76467, 0.90167, 0.59526, - 0.91916, 1, 1, 0.86304, 0.69225, 0.88401, 1, 1, 0.70424, 0.77312, - 0.91926, 0.88175, 0.70823, 0.94903, 0.90872, 0.86331, 1, 1, 0.90872, - 0.86331, 0.86906, 0.88116, 0.86331, 0.85938, 0.86331, 0.85938, - 0.86331, 0.85938, 0.86331, 0.87402, 0.86549, 0.77958, 0.90464, 1, 1, - 0.77958, 0.90464, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766, - 0.70852, 0.69766, 0.70852, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, - 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, - 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.96068, 0.95794, - 0.77892, 0.84548, 0.77892, 0.78257, 0.79492, 0.78257, 0.79492, - 0.78257, 0.79492, 0.9297, 0.56892, 0.83908, 0.94908, 0.77539, - 0.85887, 0.87068, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 1.20528, - 1, 1.15543, 0.70088, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161, - 1.48387, 0.83908, 0.80352, 0.57118, 0.6965, 0.56347, 0.79179, - 0.55853, 0.80346, 1.02988, 0.83908, 0.7762, 0.67174, 0.86036, - 0.73133, 0.78257, 0.87356, 0.86441, 0.95958, 0.75727, 0.89019, - 1.04924, 0.90872, 0.74889, 0.85938, 0.87891, 0.79795, 0.7957, - 0.81055, 0.77892, 0.97447, 0.82577, 0.97466, 0.87179, 0.95958, - 0.77892, 0.94252, 0.95612, 0.8753, 1.02988, 0.92733, 0.94252, - 0.87411, 0.84021, 0.8728, 0.95612, 0.74081, 0.8753, 1.02189, - 1.02988, 0.84814, 0.87445, 0.91822, 0.84723, 0.85668, 0.86331, - 0.81344, 0.87581, 0.76422, 0.82046, 0.96057, 0.92733, 0.99375, - 0.78022, 0.95452, 0.86015, 1.02988, 0.92733, 0.86331, 0.92733, - 0.86015, 0.73133, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90631, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.88323, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85174, 1, 1, 1, 1, 1, 1, 0.96068, - 0.95794, 0.96068, 0.95794, 0.96068, 0.95794, 0.77892, 0.84548, 1, 1, - 0.89552, 0.90527, 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.89807, - 0.87012, 0.87012, 0.87012, 0.89552, 0.89552, 1.42259, 0.71094, - 1.06152, 1, 1, 1.03372, 1.03372, 0.97171, 1.4956, 2.2807, 0.92972, - 0.83406, 0.91133, 0.83326, 0.91133, 1, 1, 1, 0.72021, 1, 1.23108, - 0.83489, 0.88525, 0.88525, 0.81499, 0.90616, 1.81055, 0.90527, - 1.81055, 1.3107, 1.53711, 0.94434, 1.08696, 1, 0.95018, 0.77192, - 0.85284, 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747, - 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, - 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99862, - 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - ]; - t.CalibriBoldItalicMetrics = { lineHeight: 1.2207, lineGap: 0.2207 }; - t.CalibriItalicFactors = [ - 1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, - 1.02269, 1.15601, 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, - 0.90861, 1.39543, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, - 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.96309, 0.96309, - 0.85284, 0.85284, 0.85284, 0.83319, 0.88071, 0.8675, 0.81552, - 0.72346, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685, - 0.6377, 0.77892, 0.75593, 1.02638, 0.89249, 0.84118, 0.77452, - 0.85374, 0.75186, 0.67789, 0.79776, 0.88844, 0.85066, 0.94309, - 0.77818, 0.7306, 0.76659, 1.10369, 1.38313, 1.10369, 1.06139, - 0.89552, 0.8739, 0.9245, 0.9245, 0.83203, 0.9245, 0.85865, 1.09842, - 0.9245, 0.9245, 1.03297, 1.07692, 0.90918, 1.03297, 0.94959, 0.9245, - 0.92274, 0.9245, 0.9245, 1.02933, 0.77832, 1.20562, 0.9245, 0.8916, - 0.98986, 0.86621, 0.89453, 0.79004, 0.94152, 1.77256, 0.94152, - 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.91729, - 0.89552, 1.17889, 1.13254, 1.16359, 0.92098, 0.85284, 0.68787, - 0.71353, 0.84737, 0.90747, 1.0088, 1.0044, 0.87683, 1, 1.09091, 1, - 0.92229, 0.739, 1.15642, 0.92098, 0.76288, 0.80504, 0.80972, - 0.75859, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.76318, - 0.72346, 0.73206, 0.73206, 0.73206, 0.73206, 0.90685, 0.90685, - 0.90685, 0.90685, 0.86477, 0.89249, 0.84118, 0.84118, 0.84118, - 0.84118, 0.84118, 0.85284, 0.84557, 0.88844, 0.88844, 0.88844, - 0.88844, 0.7306, 0.77452, 0.86331, 0.9245, 0.9245, 0.9245, 0.9245, - 0.9245, 0.9245, 0.84843, 0.83203, 0.85865, 0.85865, 0.85865, - 0.85865, 0.82601, 0.82601, 0.82601, 0.82601, 0.94469, 0.9245, - 0.92274, 0.92274, 0.92274, 0.92274, 0.92274, 0.90747, 0.86651, - 0.9245, 0.9245, 0.9245, 0.9245, 0.89453, 0.9245, 0.89453, 0.8675, - 0.9245, 0.8675, 0.9245, 0.8675, 0.9245, 0.72346, 0.83203, 0.72346, - 0.83203, 0.72346, 0.83203, 0.72346, 0.83203, 0.85193, 0.8875, - 0.86477, 0.99034, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, - 0.85865, 0.73206, 0.85865, 0.73206, 0.85865, 0.81105, 0.9245, - 0.81105, 0.9245, 0.81105, 0.9245, 1, 1, 0.86275, 0.9245, 0.90872, - 0.93591, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 0.82601, - 0.90685, 1.03297, 0.90685, 0.82601, 0.77896, 1.05611, 0.6377, - 1.07692, 1, 1, 0.90918, 0.75593, 1.03297, 1, 1, 0.76032, 0.9375, - 0.98156, 0.93407, 0.77261, 1.11429, 0.89249, 0.9245, 1, 1, 0.89249, - 0.9245, 0.92534, 0.86698, 0.9245, 0.84118, 0.92274, 0.84118, - 0.92274, 0.84118, 0.92274, 0.8667, 0.86291, 0.75186, 1.02933, 1, 1, - 0.75186, 1.02933, 0.67789, 0.77832, 0.67789, 0.77832, 0.67789, - 0.77832, 0.67789, 0.77832, 1, 1, 0.79776, 0.97655, 0.79776, 1.23023, - 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, - 0.88844, 0.9245, 0.88844, 0.9245, 0.94309, 0.98986, 0.7306, 0.89453, - 0.7306, 0.76659, 0.79004, 0.76659, 0.79004, 0.76659, 0.79004, - 1.09231, 0.54873, 0.8675, 0.9245, 0.76318, 0.84843, 0.84557, - 0.86651, 1, 1, 0.79776, 1.20562, 1.18622, 1.18622, 1, 1.1437, - 0.67009, 0.96334, 0.93695, 1.35191, 1.40909, 0.95161, 1.48387, - 0.8675, 0.90861, 0.6192, 0.7363, 0.64824, 0.82411, 0.56321, 0.85696, - 1.23516, 0.8675, 0.81552, 0.7286, 0.84134, 0.73206, 0.76659, - 0.86275, 0.84369, 0.90685, 0.77892, 0.85871, 1.02638, 0.89249, - 0.75828, 0.84118, 0.85984, 0.77452, 0.76466, 0.79776, 0.7306, - 0.90782, 0.77818, 0.903, 0.87291, 0.90685, 0.7306, 0.99058, 1.03667, - 0.94635, 1.23516, 0.9849, 0.99058, 0.92393, 0.8916, 0.942, 1.03667, - 0.75026, 0.94635, 1.0297, 1.23516, 0.90918, 0.94048, 0.98217, - 0.89746, 0.84153, 0.92274, 0.82507, 0.88832, 0.84438, 0.88178, - 1.03525, 0.9849, 1.00225, 0.78086, 0.97248, 0.89404, 1.23516, - 0.9849, 0.92274, 0.9849, 0.89404, 0.73206, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 0.89693, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 0.85865, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90933, 1, - 1, 1, 1, 1, 1, 0.94309, 0.98986, 0.94309, 0.98986, 0.94309, 0.98986, - 0.7306, 0.89453, 1, 1, 0.89552, 0.90527, 1, 0.90186, 1.12308, - 1.12308, 1.12308, 1.12308, 1.2566, 1.2566, 1.2566, 0.89552, 0.89552, - 1.42259, 0.68994, 1.03809, 1, 1, 1.0176, 1.0176, 1.11523, 1.4956, - 2.01462, 0.97858, 0.82616, 0.91133, 0.83437, 0.91133, 1, 1, 1, - 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90572, - 1.81055, 0.90749, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, - 0.97094, 0.7589, 0.85284, 0.90747, 1.19658, 0.69825, 0.97622, - 1.33512, 0.90747, 0.90747, 0.85284, 0.90747, 0.90747, 1.44947, - 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, - 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1, - 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - ]; - t.CalibriItalicMetrics = { lineHeight: 1.2207, lineGap: 0.2207 }; - t.CalibriRegularFactors = [ - 1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, - 1.02269, 1.15601, 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, - 0.90861, 1.39016, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, - 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.96309, 0.96309, - 0.85284, 0.85284, 0.85284, 0.83319, 0.88071, 0.8675, 0.81552, - 0.73834, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685, - 0.6377, 0.77892, 0.75593, 1.02638, 0.89385, 0.85122, 0.77452, - 0.86503, 0.75186, 0.68887, 0.79776, 0.88844, 0.85066, 0.94258, - 0.77818, 0.7306, 0.76659, 1.10369, 1.39016, 1.10369, 1.06139, - 0.89552, 0.8739, 0.86128, 0.94469, 0.8457, 0.94469, 0.89464, - 1.09842, 0.84636, 0.94469, 1.03297, 1.07692, 0.90918, 1.03297, - 0.95897, 0.94469, 0.9482, 0.94469, 0.94469, 1.04692, 0.78223, - 1.20562, 0.94469, 0.90332, 0.98986, 0.86621, 0.90527, 0.79004, - 0.94152, 1.77256, 0.94152, 0.85284, 0.97801, 0.89552, 0.91133, - 0.89552, 0.91133, 1.91729, 0.89552, 1.17889, 1.13254, 1.08707, - 0.92098, 0.85284, 0.68787, 0.71353, 0.84737, 0.90747, 1.0088, - 1.0044, 0.87683, 1, 1.09091, 1, 0.92229, 0.739, 1.15642, 0.92098, - 0.76288, 0.80504, 0.80972, 0.75859, 0.8675, 0.8675, 0.8675, 0.8675, - 0.8675, 0.8675, 0.76318, 0.73834, 0.73206, 0.73206, 0.73206, - 0.73206, 0.90685, 0.90685, 0.90685, 0.90685, 0.86477, 0.89385, - 0.85122, 0.85122, 0.85122, 0.85122, 0.85122, 0.85284, 0.85311, - 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.77452, 0.86331, - 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.8693, - 0.8457, 0.89464, 0.89464, 0.89464, 0.89464, 0.82601, 0.82601, - 0.82601, 0.82601, 0.94469, 0.94469, 0.9482, 0.9482, 0.9482, 0.9482, - 0.9482, 0.90747, 0.86651, 0.94469, 0.94469, 0.94469, 0.94469, - 0.90527, 0.94469, 0.90527, 0.8675, 0.86128, 0.8675, 0.86128, 0.8675, - 0.86128, 0.73834, 0.8457, 0.73834, 0.8457, 0.73834, 0.8457, 0.73834, - 0.8457, 0.85193, 0.92454, 0.86477, 0.9921, 0.73206, 0.89464, - 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, - 0.89464, 0.81105, 0.84636, 0.81105, 0.84636, 0.81105, 0.84636, 1, 1, - 0.86275, 0.94469, 0.90872, 0.95786, 0.90685, 0.82601, 0.90685, - 0.82601, 0.90685, 0.82601, 0.90685, 1.03297, 0.90685, 0.82601, - 0.77741, 1.05611, 0.6377, 1.07692, 1, 1, 0.90918, 0.75593, 1.03297, - 1, 1, 0.76032, 0.90452, 0.98156, 1.11842, 0.77261, 1.11429, 0.89385, - 0.94469, 1, 1, 0.89385, 0.94469, 0.95877, 0.86901, 0.94469, 0.85122, - 0.9482, 0.85122, 0.9482, 0.85122, 0.9482, 0.8667, 0.90016, 0.75186, - 1.04692, 1, 1, 0.75186, 1.04692, 0.68887, 0.78223, 0.68887, 0.78223, - 0.68887, 0.78223, 0.68887, 0.78223, 1, 1, 0.79776, 0.92188, 0.79776, - 1.23023, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, - 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.94258, - 0.98986, 0.7306, 0.90527, 0.7306, 0.76659, 0.79004, 0.76659, - 0.79004, 0.76659, 0.79004, 1.09231, 0.54873, 0.8675, 0.86128, - 0.76318, 0.8693, 0.85311, 0.86651, 1, 1, 0.79776, 1.20562, 1.18622, - 1.18622, 1, 1.1437, 0.67742, 0.96334, 0.93695, 1.35191, 1.40909, - 0.95161, 1.48387, 0.86686, 0.90861, 0.62267, 0.74359, 0.65649, - 0.85498, 0.56963, 0.88254, 1.23516, 0.8675, 0.81552, 0.75443, - 0.84503, 0.73206, 0.76659, 0.86275, 0.85122, 0.90685, 0.77892, - 0.85746, 1.02638, 0.89385, 0.75657, 0.85122, 0.86275, 0.77452, - 0.74171, 0.79776, 0.7306, 0.95165, 0.77818, 0.89772, 0.88831, - 0.90685, 0.7306, 0.98142, 1.02191, 0.96576, 1.23516, 0.99018, - 0.98142, 0.9236, 0.89258, 0.94035, 1.02191, 0.78848, 0.96576, - 0.9561, 1.23516, 0.90918, 0.92578, 0.95424, 0.89746, 0.83969, - 0.9482, 0.80113, 0.89442, 0.85208, 0.86155, 0.98022, 0.99018, - 1.00452, 0.81209, 0.99247, 0.89181, 1.23516, 0.99018, 0.9482, - 0.99018, 0.89181, 0.73206, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 0.88844, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 0.89464, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.96766, 1, 1, 1, 1, 1, - 1, 0.94258, 0.98986, 0.94258, 0.98986, 0.94258, 0.98986, 0.7306, - 0.90527, 1, 1, 0.89552, 0.90527, 1, 0.90186, 1.12308, 1.12308, - 1.12308, 1.12308, 1.2566, 1.2566, 1.2566, 0.89552, 0.89552, 1.42259, - 0.69043, 1.03809, 1, 1, 1.0176, 1.0176, 1.11523, 1.4956, 2.01462, - 0.99331, 0.82616, 0.91133, 0.84286, 0.91133, 1, 1, 1, 0.70508, 1, - 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90527, 1.81055, - 0.90527, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, - 0.7589, 0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, - 0.90747, 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, - 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99862, - 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1, 1.07185, - 0.99413, 0.96334, 1.08065, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - ]; - t.CalibriRegularMetrics = { lineHeight: 1.2207, lineGap: 0.2207 }; - }, - (e, t) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.HelveticaRegularMetrics = - t.HelveticaRegularFactors = - t.HelveticaItalicMetrics = - t.HelveticaItalicFactors = - t.HelveticaBoldMetrics = - t.HelveticaBoldItalicMetrics = - t.HelveticaBoldItalicFactors = - t.HelveticaBoldFactors = - void 0; - t.HelveticaBoldFactors = [ - 0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, - 0.99977, 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, - 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, - 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, - 1.00003, 1.00003, 1.00003, 1.00026, 0.9999, 0.99977, 0.99977, - 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, - 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001, - 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, - 1.00001, 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, - 0.99973, 0.99998, 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, - 0.99998, 1.00026, 1.00026, 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, - 1.00026, 1.00026, 1.00026, 1.00026, 0.99959, 0.99973, 0.99998, - 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1, 0.99959, 1.00077, - 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, - 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, - 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, - 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, - 1.00026, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, - 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, - 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, - 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, - 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, - 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973, - 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, - 1.00026, 1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, - 1.00026, 1.00026, 1.00026, 0.99973, 1.00026, 0.99973, 0.99977, - 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, - 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, - 1.03374, 0.99977, 1.00026, 1.00001, 0.99973, 1.00001, 0.99973, - 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, - 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, - 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, - 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.00042, 0.99973, - 0.99973, 1.0006, 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, - 1.00026, 1.0006, 1.00026, 1.03828, 1.00026, 0.99999, 1.00026, - 1.0006, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, - 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, - 1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, - 0.99977, 0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, - 0.99973, 1.00001, 0.99973, 1.00026, 0.99998, 1.00026, 0.8121, - 1.00026, 0.99998, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, - 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, - 1.00016, 1.00022, 1.00001, 0.99973, 1.00001, 1.00026, 1, 1.00026, 1, - 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1, 0.99982, 1.00022, - 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998, 0.99998, - 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, - 0.99998, 1.00034, 0.99977, 1, 0.99997, 1.00026, 1.00078, 1.00036, - 0.99973, 1.00013, 1.0006, 0.99977, 0.99977, 0.99988, 0.85148, - 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 0.99977, 1.00001, - 0.99999, 0.99977, 1.00069, 1.00022, 0.99977, 1.00001, 0.99984, - 1.00026, 1.00001, 1.00024, 1.00001, 0.9999, 1, 1.0006, 1.00001, - 1.00041, 0.99962, 1.00026, 1.0006, 0.99995, 1.00041, 0.99942, - 0.99973, 0.99927, 1.00082, 0.99902, 1.00026, 1.00087, 1.0006, - 1.00069, 0.99973, 0.99867, 0.99973, 0.9993, 1.00026, 1.00049, - 1.00056, 1, 0.99988, 0.99935, 0.99995, 0.99954, 1.00055, 0.99945, - 1.00032, 1.0006, 0.99995, 1.00026, 0.99995, 1.00032, 1.00001, - 1.00008, 0.99971, 1.00019, 0.9994, 1.00001, 1.0006, 1.00044, - 0.99973, 1.00023, 1.00047, 1, 0.99942, 0.99561, 0.99989, 1.00035, - 0.99977, 1.00035, 0.99977, 1.00019, 0.99944, 1.00001, 1.00021, - 0.99926, 1.00035, 1.00035, 0.99942, 1.00048, 0.99999, 0.99977, - 1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 0.99989, 1.00057, - 1.00001, 0.99936, 1.00052, 1.00012, 0.99996, 1.00043, 1, 1.00035, - 0.9994, 0.99976, 1.00035, 0.99973, 1.00052, 1.00041, 1.00119, - 1.00037, 0.99973, 1.00002, 0.99986, 1.00041, 1.00041, 0.99902, - 0.9996, 1.00034, 0.99999, 1.00026, 0.99999, 1.00026, 0.99973, - 1.00052, 0.99973, 1, 0.99973, 1.00041, 1.00075, 0.9994, 1.0003, - 0.99999, 1, 1.00041, 0.99955, 1, 0.99915, 0.99973, 0.99973, 1.00026, - 1.00119, 0.99955, 0.99973, 1.0006, 0.99911, 1.0006, 1.00026, - 0.99972, 1.00026, 0.99902, 1.00041, 0.99973, 0.99999, 1, 1, 1.00038, - 1.0005, 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, - 1.00001, 0.99973, 1, 1, 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, - 1.0006, 1.0006, 1, 1, 1, 0.99973, 0.99973, 0.99972, 1, 1, 1.00106, - 0.99999, 0.99998, 0.99998, 0.99999, 0.99998, 1.66475, 1, 0.99973, - 0.99973, 1.00023, 0.99973, 0.99971, 1.00047, 1.00023, 1, 0.99991, - 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1, 1, 1, 1, 1, 1, 1, - 0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, - 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, - 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, - 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, - 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, - 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, - 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, - 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, - 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, - 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, - 1.00026, 0.99972, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, - 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, - 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - ]; - t.HelveticaBoldMetrics = { lineHeight: 1.2, lineGap: 0.2 }; - t.HelveticaBoldItalicFactors = [ - 0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, - 0.99977, 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, - 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, - 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, - 1.00003, 1.00003, 1.00003, 1.00026, 0.9999, 0.99977, 0.99977, - 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, - 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001, - 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, - 1.00001, 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, - 0.99973, 0.99998, 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, - 0.99998, 1.00026, 1.00026, 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, - 1.00026, 1.00026, 1.00026, 1.00026, 0.99959, 0.99973, 0.99998, - 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1, 0.99959, 1.00077, - 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, - 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, - 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, - 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, - 1.00026, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, - 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, - 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, - 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, - 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, - 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973, - 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, - 1.00026, 1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, - 1.00026, 1.00026, 1.00026, 0.99973, 1.00026, 0.99973, 0.99977, - 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, - 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, - 1.0044, 0.99977, 1.00026, 1.00001, 0.99973, 1.00001, 0.99973, - 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, - 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, - 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, - 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99971, 0.99973, - 0.99973, 1.0006, 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, - 1.00026, 1.0006, 1.00026, 1.01011, 1.00026, 0.99999, 1.00026, - 1.0006, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, - 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, - 1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, - 0.99977, 0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, - 0.99973, 1.00001, 0.99973, 1.00026, 0.99998, 1.00026, 0.8121, - 1.00026, 0.99998, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, - 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, - 1.00016, 1.00022, 1.00001, 0.99973, 1.00001, 1.00026, 1, 1.00026, 1, - 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1, 0.99982, 1.00022, - 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998, 0.99998, - 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, - 0.99998, 0.99998, 0.99977, 1, 1, 1.00026, 0.99969, 0.99972, 0.99981, - 0.9998, 1.0006, 0.99977, 0.99977, 1.00022, 0.91155, 1.00001, - 1.00026, 0.99977, 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, - 0.99977, 0.99966, 1.00022, 1.00032, 1.00001, 0.99944, 1.00026, - 1.00001, 0.99968, 1.00001, 1.00047, 1, 1.0006, 1.00001, 0.99981, - 1.00101, 1.00026, 1.0006, 0.99948, 0.99981, 1.00064, 0.99973, - 0.99942, 1.00101, 1.00061, 1.00026, 1.00069, 1.0006, 1.00014, - 0.99973, 1.01322, 0.99973, 1.00065, 1.00026, 1.00012, 0.99923, 1, - 1.00064, 1.00076, 0.99948, 1.00055, 1.00063, 1.00007, 0.99943, - 1.0006, 0.99948, 1.00026, 0.99948, 0.99943, 1.00001, 1.00001, - 1.00029, 1.00038, 1.00035, 1.00001, 1.0006, 1.0006, 0.99973, - 0.99978, 1.00001, 1.00057, 0.99989, 0.99967, 0.99964, 0.99967, - 0.99977, 0.99999, 0.99977, 1.00038, 0.99977, 1.00001, 0.99973, - 1.00066, 0.99967, 0.99967, 1.00041, 0.99998, 0.99999, 0.99977, - 1.00022, 0.99967, 1.00001, 0.99977, 1.00026, 0.99964, 1.00031, - 1.00001, 0.99999, 0.99999, 1, 1.00023, 1, 1, 0.99999, 1.00035, - 1.00001, 0.99999, 0.99973, 0.99977, 0.99999, 1.00058, 0.99973, - 0.99973, 0.99955, 0.9995, 1.00026, 1.00026, 1.00032, 0.99989, - 1.00034, 0.99999, 1.00026, 1.00026, 1.00026, 0.99973, 0.45998, - 0.99973, 1.00026, 0.99973, 1.00001, 0.99999, 0.99982, 0.99994, - 0.99996, 1, 1.00042, 1.00044, 1.00029, 1.00023, 0.99973, 0.99973, - 1.00026, 0.99949, 1.00002, 0.99973, 1.0006, 1.0006, 1.0006, 0.99975, - 1.00026, 1.00026, 1.00032, 0.98685, 0.99973, 1.00026, 1, 1, 0.99966, - 1.00044, 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, - 1.00001, 0.99973, 1, 1, 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, - 1.0006, 1.0006, 1, 1, 1, 0.99973, 0.99973, 0.99972, 1, 1, 1.00106, - 0.99999, 0.99998, 0.99998, 0.99999, 0.99998, 1.66475, 1, 0.99973, - 0.99973, 1, 0.99973, 0.99971, 0.99978, 1, 1, 0.99991, 0.99984, - 1.00002, 1.00002, 1.00002, 1.00002, 1.00098, 1, 1, 1, 1.00049, 1, 1, - 0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, - 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, - 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, - 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, - 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, - 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, - 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, - 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, - 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, - 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, - 1.00026, 0.99972, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, - 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, - 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - ]; - t.HelveticaBoldItalicMetrics = { lineHeight: 1.35, lineGap: 0.2 }; - t.HelveticaItalicFactors = [ - 0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, - 1.00001, 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, - 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, - 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1, - 1.00003, 1.00003, 1.00003, 0.99973, 0.99987, 1.00001, 1.00001, - 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 1, - 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, - 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, - 1.00001, 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, - 0.99973, 0.99973, 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, - 0.99924, 0.99924, 1, 0.99924, 0.99999, 0.99973, 0.99973, 0.99973, - 0.99973, 0.99998, 1, 1.0006, 0.99973, 1, 0.99977, 1, 1, 1, 1.00005, - 1.0009, 1.00005, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, - 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, - 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, - 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, - 1.00002, 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, - 1.00001, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, - 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, - 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, - 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, - 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973, 0.99973, - 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, - 0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, - 0.99973, 0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, - 0.99973, 1.00001, 0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, - 0.99977, 1, 0.99977, 1.0288, 0.99977, 0.99973, 1.00001, 0.99973, - 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, - 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, - 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.0006, - 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006, - 1.0006, 0.99946, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, - 0.99924, 0.99973, 0.99924, 0.99973, 1.06311, 0.99973, 1.00024, - 0.99973, 0.99924, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, - 0.99973, 1.00041, 0.9998, 0.99973, 1.00022, 0.99973, 1.00022, - 0.99973, 1.00022, 0.99973, 1, 1.00016, 0.99977, 0.99998, 0.99977, - 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1, 1.00001, 1, - 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.89547, 1.00026, 1.0006, - 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, - 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, - 1.00001, 1, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, - 0.99973, 1.00001, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 1, - 1.00026, 1.0006, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, - 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 1.00001, 1, - 1.00054, 0.99977, 1.00084, 1.00007, 0.99973, 1.00013, 0.99924, - 1.00001, 1.00001, 0.99945, 0.91221, 1.00001, 1.00026, 0.99977, - 1.00022, 1.0006, 1.00001, 1.00001, 0.99999, 0.99977, 0.99933, - 1.00022, 1.00054, 1.00001, 1.00065, 1.00026, 1.00001, 1.0001, - 1.00001, 1.00052, 1, 1.0006, 1.00001, 0.99945, 0.99897, 0.99968, - 0.99924, 1.00036, 0.99945, 0.99949, 1, 1.0006, 0.99897, 0.99918, - 0.99968, 0.99911, 0.99924, 1, 0.99962, 1.01487, 1, 1.0005, 0.99973, - 1.00012, 1.00043, 1, 0.99995, 0.99994, 1.00036, 0.99947, 1.00019, - 1.00063, 1.00025, 0.99924, 1.00036, 0.99973, 1.00036, 1.00025, - 1.00001, 1.00001, 1.00027, 1.0001, 1.00068, 1.00001, 1.0006, 1.0006, - 1, 1.00008, 0.99957, 0.99972, 0.9994, 0.99954, 0.99975, 1.00051, - 1.00001, 1.00019, 1.00001, 1.0001, 0.99986, 1.00001, 1.00001, - 1.00038, 0.99954, 0.99954, 0.9994, 1.00066, 0.99999, 0.99977, - 1.00022, 1.00054, 1.00001, 0.99977, 1.00026, 0.99975, 1.0001, - 1.00001, 0.99993, 0.9995, 0.99955, 1.00016, 0.99978, 0.99974, - 1.00019, 1.00022, 0.99955, 1.00053, 0.99973, 1.00089, 1.00005, - 0.99967, 1.00048, 0.99973, 1.00002, 1.00034, 0.99973, 0.99973, - 0.99964, 1.00006, 1.00066, 0.99947, 0.99973, 0.98894, 0.99973, 1, - 0.44898, 1, 0.99946, 1, 1.00039, 1.00082, 0.99991, 0.99991, 0.99985, - 1.00022, 1.00023, 1.00061, 1.00006, 0.99966, 0.99973, 0.99973, - 0.99973, 1.00019, 1.0008, 1, 0.99924, 0.99924, 0.99924, 0.99983, - 1.00044, 0.99973, 0.99964, 0.98332, 1, 0.99973, 1, 1, 0.99962, - 0.99895, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016, 0.99977, - 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924, - 0.99924, 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, - 1.00267, 0.99999, 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, - 0.99973, 1.00023, 0.99973, 1.00423, 0.99925, 0.99999, 1, 0.99991, - 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1.00049, 1, 1.00245, 1, - 1, 1, 1, 0.96329, 1, 1.20985, 1.39713, 1.00003, 0.8254, 1.00015, 1, - 1.00035, 1.00027, 1.00031, 1.00031, 1.00003, 1.00031, 1.00031, - 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, - 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, - 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, - 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, - 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, - 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, - 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, - 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, - 1.00026, 1.00026, 0.95317, 0.99999, 0.99999, 0.99999, 0.99999, - 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, - 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - ]; - t.HelveticaItalicMetrics = { lineHeight: 1.35, lineGap: 0.2 }; - t.HelveticaRegularFactors = [ - 0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, - 1.00001, 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, - 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, - 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1, - 1.00003, 1.00003, 1.00003, 0.99973, 0.99987, 1.00001, 1.00001, - 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 1, - 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, - 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, - 1.00001, 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, - 0.99973, 0.99973, 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, - 0.99924, 0.99924, 1, 0.99924, 0.99999, 0.99973, 0.99973, 0.99973, - 0.99973, 0.99998, 1, 1.0006, 0.99973, 1, 0.99977, 1, 1, 1, 1.00005, - 1.0009, 1.00005, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, - 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, - 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, - 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, - 1.00002, 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, - 1.00001, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, - 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, - 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, - 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, - 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973, 0.99973, - 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, - 0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, - 0.99973, 0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, - 0.99973, 1.00001, 0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, - 0.99977, 1, 0.99977, 1.04596, 0.99977, 0.99973, 1.00001, 0.99973, - 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, - 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, - 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.0006, - 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006, - 1.0006, 1.00019, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, - 0.99924, 0.99973, 0.99924, 0.99973, 1.02572, 0.99973, 1.00005, - 0.99973, 0.99924, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, - 0.99973, 0.99999, 0.9998, 0.99973, 1.00022, 0.99973, 1.00022, - 0.99973, 1.00022, 0.99973, 1, 1.00016, 0.99977, 0.99998, 0.99977, - 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1, 1.00001, 1, - 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.84533, 1.00026, 1.0006, - 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, - 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, - 1.00001, 1, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, - 0.99973, 1.00001, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 1, - 1.00026, 1.0006, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, - 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99928, 1, - 0.99977, 1.00013, 1.00055, 0.99947, 0.99945, 0.99941, 0.99924, - 1.00001, 1.00001, 1.0004, 0.91621, 1.00001, 1.00026, 0.99977, - 1.00022, 1.0006, 1.00001, 1.00005, 0.99999, 0.99977, 1.00015, - 1.00022, 0.99977, 1.00001, 0.99973, 1.00026, 1.00001, 1.00019, - 1.00001, 0.99946, 1, 1.0006, 1.00001, 0.99978, 1.00045, 0.99973, - 0.99924, 1.00023, 0.99978, 0.99966, 1, 1.00065, 1.00045, 1.00019, - 0.99973, 0.99973, 0.99924, 1, 1, 0.96499, 1, 1.00055, 0.99973, - 1.00008, 1.00027, 1, 0.9997, 0.99995, 1.00023, 0.99933, 1.00019, - 1.00015, 1.00031, 0.99924, 1.00023, 0.99973, 1.00023, 1.00031, - 1.00001, 0.99928, 1.00029, 1.00092, 1.00035, 1.00001, 1.0006, - 1.0006, 1, 0.99988, 0.99975, 1, 1.00082, 0.99561, 0.9996, 1.00035, - 1.00001, 0.99962, 1.00001, 1.00092, 0.99964, 1.00001, 0.99963, - 0.99999, 1.00035, 1.00035, 1.00082, 0.99962, 0.99999, 0.99977, - 1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 0.9996, 0.99967, - 1.00001, 1.00034, 1.00074, 1.00054, 1.00053, 1.00063, 0.99971, - 0.99962, 1.00035, 0.99975, 0.99977, 0.99973, 1.00043, 0.99953, - 1.0007, 0.99915, 0.99973, 1.00008, 0.99892, 1.00073, 1.00073, - 1.00114, 0.99915, 1.00073, 0.99955, 0.99973, 1.00092, 0.99973, 1, - 0.99998, 1, 1.0003, 1, 1.00043, 1.00001, 0.99969, 1.0003, 1, - 1.00035, 1.00001, 0.9995, 1, 1.00092, 0.99973, 0.99973, 0.99973, - 1.0007, 0.9995, 1, 0.99924, 1.0006, 0.99924, 0.99972, 1.00062, - 0.99973, 1.00114, 1.00073, 1, 0.99955, 1, 1, 1.00047, 0.99968, - 1.00016, 0.99977, 1.00016, 0.99977, 1.00016, 0.99977, 1.00001, 1, 1, - 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924, 0.99924, - 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267, - 0.99999, 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, - 1.00023, 0.99973, 0.99971, 0.99925, 1.00023, 1, 0.99991, 0.99984, - 1.00002, 1.00002, 1.00002, 1.00002, 1, 1, 1, 1, 1, 1, 1, 0.96329, 1, - 1.20985, 1.39713, 1.00003, 0.8254, 1.00015, 1, 1.00035, 1.00027, - 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, - 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, - 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, - 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, - 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, - 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, - 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, - 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, - 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, - 0.95317, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, - 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - ]; - t.HelveticaRegularMetrics = { lineHeight: 1.2, lineGap: 0.2 }; - }, - (e, t) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.LiberationSansRegularWidths = - t.LiberationSansRegularMapping = - t.LiberationSansItalicWidths = - t.LiberationSansItalicMapping = - t.LiberationSansBoldWidths = - t.LiberationSansBoldMapping = - t.LiberationSansBoldItalicWidths = - t.LiberationSansBoldItalicMapping = - void 0; - t.LiberationSansBoldWidths = [ - 365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, - 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, - 556, 556, 333, 333, 584, 584, 584, 611, 975, 722, 722, 722, 722, - 667, 611, 778, 722, 278, 556, 722, 611, 833, 722, 778, 667, 778, - 722, 667, 611, 722, 667, 944, 667, 667, 611, 333, 278, 333, 584, - 556, 333, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, - 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, - 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, - 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, - 556, 278, 333, 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, - 722, 722, 722, 1e3, 722, 667, 667, 667, 667, 278, 278, 278, 278, - 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, - 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 556, 556, 556, - 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611, 611, 611, - 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556, - 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 719, 722, - 611, 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, - 778, 611, 778, 611, 778, 611, 722, 611, 722, 611, 278, 278, 278, - 278, 278, 278, 278, 278, 278, 278, 785, 556, 556, 278, 722, 556, - 556, 611, 278, 611, 278, 611, 385, 611, 479, 611, 278, 722, 611, - 722, 611, 722, 611, 708, 723, 611, 778, 611, 778, 611, 778, 611, - 1e3, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556, 667, - 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, - 722, 611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, - 611, 500, 611, 500, 611, 500, 278, 556, 722, 556, 1e3, 889, 778, - 611, 667, 556, 611, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 333, 333, 465, 722, 333, 853, 906, 474, 825, 927, 838, 278, 722, - 722, 601, 719, 667, 611, 722, 778, 278, 722, 667, 833, 722, 644, - 778, 722, 667, 600, 611, 667, 821, 667, 809, 802, 278, 667, 615, - 451, 611, 278, 582, 615, 610, 556, 606, 475, 460, 611, 541, 278, - 558, 556, 612, 556, 445, 611, 766, 619, 520, 684, 446, 582, 715, - 576, 753, 845, 278, 582, 611, 582, 845, 667, 669, 885, 567, 711, - 667, 278, 276, 556, 1094, 1062, 875, 610, 722, 622, 719, 722, 719, - 722, 567, 712, 667, 904, 626, 719, 719, 610, 702, 833, 722, 778, - 719, 667, 722, 611, 622, 854, 667, 730, 703, 1005, 1019, 870, 979, - 719, 711, 1031, 719, 556, 618, 615, 417, 635, 556, 709, 497, 615, - 615, 500, 635, 740, 604, 611, 604, 611, 556, 490, 556, 875, 556, - 615, 581, 833, 844, 729, 854, 615, 552, 854, 583, 556, 556, 611, - 417, 552, 556, 278, 281, 278, 969, 906, 611, 500, 615, 556, 604, - 778, 611, 487, 447, 944, 778, 944, 778, 944, 778, 667, 556, 333, - 333, 556, 1e3, 1e3, 552, 278, 278, 278, 278, 500, 500, 500, 556, - 556, 350, 1e3, 1e3, 240, 479, 333, 333, 604, 333, 167, 396, 556, - 556, 1094, 556, 885, 489, 1115, 1e3, 768, 600, 834, 834, 834, 834, - 1e3, 500, 1e3, 500, 1e3, 500, 500, 494, 612, 823, 713, 584, 549, - 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604, - 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, - 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, - 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, - 708, 708, 708, 708, 708, 708, 708, 708, 729, 604, 604, 354, 354, - 1e3, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, - 917, 750, 750, 531, 656, 594, 510, 500, 750, 750, 611, 611, 333, - 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333, 333, - 333, 333, 333, 333, - ]; - t.LiberationSansBoldMapping = [ - -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, - 538, 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, - 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, - 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, - 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, - 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, - 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, - 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, - 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, - 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, - 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, - 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, - 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, - 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, - 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, - 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, - 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, - 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, - 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, 8243, - 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, - 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, - 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, - 8734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, - 8992, 8993, 9472, 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, - 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, - 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, - 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600, 9604, - 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, - 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, - 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, - 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, - ]; - t.LiberationSansBoldItalicWidths = [ - 365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, - 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, - 556, 556, 333, 333, 584, 584, 584, 611, 975, 722, 722, 722, 722, - 667, 611, 778, 722, 278, 556, 722, 611, 833, 722, 778, 667, 778, - 722, 667, 611, 722, 667, 944, 667, 667, 611, 333, 278, 333, 584, - 556, 333, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, - 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, - 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, - 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, - 556, 278, 333, 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, - 722, 722, 722, 1e3, 722, 667, 667, 667, 667, 278, 278, 278, 278, - 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, - 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 556, 556, 556, - 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611, 611, 611, - 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556, - 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 740, 722, - 611, 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, - 778, 611, 778, 611, 778, 611, 722, 611, 722, 611, 278, 278, 278, - 278, 278, 278, 278, 278, 278, 278, 782, 556, 556, 278, 722, 556, - 556, 611, 278, 611, 278, 611, 396, 611, 479, 611, 278, 722, 611, - 722, 611, 722, 611, 708, 723, 611, 778, 611, 778, 611, 778, 611, - 1e3, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556, 667, - 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, - 722, 611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, - 611, 500, 611, 500, 611, 500, 278, 556, 722, 556, 1e3, 889, 778, - 611, 667, 556, 611, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 333, 333, 333, 722, 333, 854, 906, 473, 844, 930, 847, 278, 722, - 722, 610, 671, 667, 611, 722, 778, 278, 722, 667, 833, 722, 657, - 778, 718, 667, 590, 611, 667, 822, 667, 829, 781, 278, 667, 620, - 479, 611, 278, 591, 620, 621, 556, 610, 479, 492, 611, 558, 278, - 566, 556, 603, 556, 450, 611, 712, 605, 532, 664, 409, 591, 704, - 578, 773, 834, 278, 591, 611, 591, 834, 667, 667, 886, 614, 719, - 667, 278, 278, 556, 1094, 1042, 854, 622, 719, 677, 719, 722, 708, - 722, 614, 722, 667, 927, 643, 719, 719, 615, 687, 833, 722, 778, - 719, 667, 722, 611, 677, 781, 667, 729, 708, 979, 989, 854, 1e3, - 708, 719, 1042, 729, 556, 619, 604, 534, 618, 556, 736, 510, 611, - 611, 507, 622, 740, 604, 611, 611, 611, 556, 889, 556, 885, 556, - 646, 583, 889, 935, 707, 854, 594, 552, 865, 589, 556, 556, 611, - 469, 563, 556, 278, 278, 278, 969, 906, 611, 507, 619, 556, 611, - 778, 611, 575, 467, 944, 778, 944, 778, 944, 778, 667, 556, 333, - 333, 556, 1e3, 1e3, 552, 278, 278, 278, 278, 500, 500, 500, 556, - 556, 350, 1e3, 1e3, 240, 479, 333, 333, 604, 333, 167, 396, 556, - 556, 1104, 556, 885, 516, 1146, 1e3, 768, 600, 834, 834, 834, 834, - 999, 500, 1e3, 500, 1e3, 500, 500, 494, 612, 823, 713, 584, 549, - 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604, - 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, - 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, - 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, - 708, 708, 708, 708, 708, 708, 708, 708, 729, 604, 604, 354, 354, - 1e3, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, - 917, 750, 750, 531, 656, 594, 510, 500, 750, 750, 611, 611, 333, - 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333, 333, - 333, 333, 333, 333, - ]; - t.LiberationSansBoldItalicMapping = [ - -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, - 538, 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, - 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, - 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, - 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, - 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, - 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, - 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, - 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, - 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, - 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, - 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, - 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, - 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, - 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, - 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, - 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, - 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, - 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, 8243, - 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, - 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, - 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, - 8734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, - 8992, 8993, 9472, 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, - 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, - 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, - 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600, 9604, - 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, - 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, - 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, - 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, - ]; - t.LiberationSansItalicWidths = [ - 365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, - 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, - 556, 556, 278, 278, 584, 584, 584, 556, 1015, 667, 667, 722, 722, - 667, 611, 778, 722, 278, 500, 667, 556, 833, 722, 778, 667, 778, - 722, 667, 611, 722, 667, 944, 667, 667, 611, 278, 278, 278, 469, - 556, 333, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, - 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, - 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, - 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, - 537, 278, 333, 333, 365, 556, 834, 834, 834, 611, 667, 667, 667, - 667, 667, 667, 1e3, 722, 667, 667, 667, 667, 278, 278, 278, 278, - 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, - 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 500, 556, 556, - 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556, 556, 556, - 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556, - 667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 625, 722, - 556, 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, - 778, 556, 778, 556, 778, 556, 722, 556, 722, 556, 278, 278, 278, - 278, 278, 278, 278, 222, 278, 278, 733, 444, 500, 222, 667, 500, - 500, 556, 222, 556, 222, 556, 281, 556, 400, 556, 222, 722, 556, - 722, 556, 722, 556, 615, 723, 556, 778, 556, 778, 556, 778, 556, - 1e3, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500, 667, - 500, 667, 500, 611, 278, 611, 354, 611, 278, 722, 556, 722, 556, - 722, 556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, - 611, 500, 611, 500, 611, 500, 222, 556, 667, 556, 1e3, 889, 778, - 611, 667, 500, 611, 278, 333, 333, 333, 333, 333, 333, 333, 333, - 333, 333, 333, 667, 278, 789, 846, 389, 794, 865, 775, 222, 667, - 667, 570, 671, 667, 611, 722, 778, 278, 667, 667, 833, 722, 648, - 778, 725, 667, 600, 611, 667, 837, 667, 831, 761, 278, 667, 570, - 439, 555, 222, 550, 570, 571, 500, 556, 439, 463, 555, 542, 222, - 500, 492, 548, 500, 447, 556, 670, 573, 486, 603, 374, 550, 652, - 546, 728, 779, 222, 550, 556, 550, 779, 667, 667, 843, 544, 708, - 667, 278, 278, 500, 1066, 982, 844, 589, 715, 639, 724, 667, 651, - 667, 544, 704, 667, 917, 614, 715, 715, 589, 686, 833, 722, 778, - 725, 667, 722, 611, 639, 795, 667, 727, 673, 920, 923, 805, 886, - 651, 694, 1022, 682, 556, 562, 522, 493, 553, 556, 688, 465, 556, - 556, 472, 564, 686, 550, 556, 556, 556, 500, 833, 500, 835, 500, - 572, 518, 830, 851, 621, 736, 526, 492, 752, 534, 556, 556, 556, - 378, 496, 500, 222, 222, 222, 910, 828, 556, 472, 565, 500, 556, - 778, 556, 492, 339, 944, 722, 944, 722, 944, 722, 667, 500, 333, - 333, 556, 1e3, 1e3, 552, 222, 222, 222, 222, 333, 333, 333, 556, - 556, 350, 1e3, 1e3, 188, 354, 333, 333, 500, 333, 167, 365, 556, - 556, 1094, 556, 885, 323, 1083, 1e3, 768, 600, 834, 834, 834, 834, - 1e3, 500, 998, 500, 1e3, 500, 500, 494, 612, 823, 713, 584, 549, - 713, 979, 719, 274, 549, 549, 584, 549, 549, 604, 584, 604, 604, - 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, - 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, - 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, - 708, 708, 708, 708, 708, 708, 708, 708, 729, 604, 604, 354, 354, - 1e3, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, - 917, 750, 750, 531, 656, 594, 510, 500, 750, 750, 500, 500, 333, - 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324, 324, - 316, 328, 398, 285, - ]; - t.LiberationSansItalicMapping = [ - -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, - 538, 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, - 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, - 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, - 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, - 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, - 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, - 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, - 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, - 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, - 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, - 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, - 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, - 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, - 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, - 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, - 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, - 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, - 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, 8243, - 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, - 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, - 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, - 8734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, - 8992, 8993, 9472, 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, - 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, - 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, - 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600, 9604, - 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, - 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, - 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, - 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, - ]; - t.LiberationSansRegularWidths = [ - 365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, - 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, - 556, 556, 278, 278, 584, 584, 584, 556, 1015, 667, 667, 722, 722, - 667, 611, 778, 722, 278, 500, 667, 556, 833, 722, 778, 667, 778, - 722, 667, 611, 722, 667, 944, 667, 667, 611, 278, 278, 278, 469, - 556, 333, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, - 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, - 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, - 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, - 537, 278, 333, 333, 365, 556, 834, 834, 834, 611, 667, 667, 667, - 667, 667, 667, 1e3, 722, 667, 667, 667, 667, 278, 278, 278, 278, - 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, - 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 500, 556, 556, - 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556, 556, 556, - 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556, - 667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 615, 722, - 556, 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, - 778, 556, 778, 556, 778, 556, 722, 556, 722, 556, 278, 278, 278, - 278, 278, 278, 278, 222, 278, 278, 735, 444, 500, 222, 667, 500, - 500, 556, 222, 556, 222, 556, 292, 556, 334, 556, 222, 722, 556, - 722, 556, 722, 556, 604, 723, 556, 778, 556, 778, 556, 778, 556, - 1e3, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500, 667, - 500, 667, 500, 611, 278, 611, 375, 611, 278, 722, 556, 722, 556, - 722, 556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, - 611, 500, 611, 500, 611, 500, 222, 556, 667, 556, 1e3, 889, 778, - 611, 667, 500, 611, 278, 333, 333, 333, 333, 333, 333, 333, 333, - 333, 333, 333, 667, 278, 784, 838, 384, 774, 855, 752, 222, 667, - 667, 551, 668, 667, 611, 722, 778, 278, 667, 668, 833, 722, 650, - 778, 722, 667, 618, 611, 667, 798, 667, 835, 748, 278, 667, 578, - 446, 556, 222, 547, 578, 575, 500, 557, 446, 441, 556, 556, 222, - 500, 500, 576, 500, 448, 556, 690, 569, 482, 617, 395, 547, 648, - 525, 713, 781, 222, 547, 556, 547, 781, 667, 667, 865, 542, 719, - 667, 278, 278, 500, 1057, 1010, 854, 583, 722, 635, 719, 667, 656, - 667, 542, 677, 667, 923, 604, 719, 719, 583, 656, 833, 722, 778, - 719, 667, 722, 611, 635, 760, 667, 740, 667, 917, 938, 792, 885, - 656, 719, 1010, 722, 556, 573, 531, 365, 583, 556, 669, 458, 559, - 559, 438, 583, 688, 552, 556, 542, 556, 500, 458, 500, 823, 500, - 573, 521, 802, 823, 625, 719, 521, 510, 750, 542, 556, 556, 556, - 365, 510, 500, 222, 278, 222, 906, 812, 556, 438, 559, 500, 552, - 778, 556, 489, 411, 944, 722, 944, 722, 944, 722, 667, 500, 333, - 333, 556, 1e3, 1e3, 552, 222, 222, 222, 222, 333, 333, 333, 556, - 556, 350, 1e3, 1e3, 188, 354, 333, 333, 500, 333, 167, 365, 556, - 556, 1094, 556, 885, 323, 1073, 1e3, 768, 600, 834, 834, 834, 834, - 1e3, 500, 1e3, 500, 1e3, 500, 500, 494, 612, 823, 713, 584, 549, - 713, 979, 719, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604, - 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, - 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, - 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, - 708, 708, 708, 708, 708, 708, 708, 708, 729, 604, 604, 354, 354, - 1e3, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, - 917, 750, 750, 531, 656, 594, 510, 500, 750, 750, 500, 500, 333, - 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324, 324, - 316, 328, 398, 285, - ]; - t.LiberationSansRegularMapping = [ - -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, - 538, 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, - 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, - 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, - 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, - 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, - 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, - 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, - 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, - 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, - 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, - 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, - 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, - 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, - 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, - 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, - 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, - 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, - 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, 8243, - 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, - 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, - 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, - 8734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, - 8992, 8993, 9472, 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, - 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, - 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, - 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600, 9604, - 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, - 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, - 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, - 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, - ]; - }, - (e, t) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.MyriadProRegularMetrics = - t.MyriadProRegularFactors = - t.MyriadProItalicMetrics = - t.MyriadProItalicFactors = - t.MyriadProBoldMetrics = - t.MyriadProBoldItalicMetrics = - t.MyriadProBoldItalicFactors = - t.MyriadProBoldFactors = - void 0; - t.MyriadProBoldFactors = [ - 1.36898, 1, 1, 0.72706, 0.80479, 0.83734, 0.98894, 0.99793, 0.9897, - 0.93884, 0.86209, 0.94292, 0.94292, 1.16661, 1.02058, 0.93582, - 0.96694, 0.93582, 1.19137, 0.99793, 0.99793, 0.99793, 0.99793, - 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.78076, - 0.78076, 1.02058, 1.02058, 1.02058, 0.72851, 0.78966, 0.90838, - 0.83637, 0.82391, 0.96376, 0.80061, 0.86275, 0.8768, 0.95407, - 1.0258, 0.73901, 0.85022, 0.83655, 1.0156, 0.95546, 0.92179, - 0.87107, 0.92179, 0.82114, 0.8096, 0.89713, 0.94438, 0.95353, - 0.94083, 0.91905, 0.90406, 0.9446, 0.94292, 1.18777, 0.94292, - 1.02058, 0.89903, 0.90088, 0.94938, 0.97898, 0.81093, 0.97571, - 0.94938, 1.024, 0.9577, 0.95933, 0.98621, 1.0474, 0.97455, 0.98981, - 0.9672, 0.95933, 0.9446, 0.97898, 0.97407, 0.97646, 0.78036, - 1.10208, 0.95442, 0.95298, 0.97579, 0.9332, 0.94039, 0.938, 0.80687, - 1.01149, 0.80687, 1.02058, 0.80479, 0.99793, 0.99793, 0.99793, - 0.99793, 1.01149, 1.00872, 0.90088, 0.91882, 1.0213, 0.8361, - 1.02058, 0.62295, 0.54324, 0.89022, 1.08595, 1, 1, 0.90088, 1, - 0.97455, 0.93582, 0.90088, 1, 1.05686, 0.8361, 0.99642, 0.99642, - 0.99642, 0.72851, 0.90838, 0.90838, 0.90838, 0.90838, 0.90838, - 0.90838, 0.868, 0.82391, 0.80061, 0.80061, 0.80061, 0.80061, 1.0258, - 1.0258, 1.0258, 1.0258, 0.97484, 0.95546, 0.92179, 0.92179, 0.92179, - 0.92179, 0.92179, 1.02058, 0.92179, 0.94438, 0.94438, 0.94438, - 0.94438, 0.90406, 0.86958, 0.98225, 0.94938, 0.94938, 0.94938, - 0.94938, 0.94938, 0.94938, 0.9031, 0.81093, 0.94938, 0.94938, - 0.94938, 0.94938, 0.98621, 0.98621, 0.98621, 0.98621, 0.93969, - 0.95933, 0.9446, 0.9446, 0.9446, 0.9446, 0.9446, 1.08595, 0.9446, - 0.95442, 0.95442, 0.95442, 0.95442, 0.94039, 0.97898, 0.94039, - 0.90838, 0.94938, 0.90838, 0.94938, 0.90838, 0.94938, 0.82391, - 0.81093, 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093, - 0.96376, 0.84313, 0.97484, 0.97571, 0.80061, 0.94938, 0.80061, - 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, - 0.8768, 0.9577, 0.8768, 0.9577, 0.8768, 0.9577, 1, 1, 0.95407, - 0.95933, 0.97069, 0.95933, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, - 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 0.887, 1.01591, 0.73901, - 1.0474, 1, 1, 0.97455, 0.83655, 0.98981, 1, 1, 0.83655, 0.73977, - 0.83655, 0.73903, 0.84638, 1.033, 0.95546, 0.95933, 1, 1, 0.95546, - 0.95933, 0.8271, 0.95417, 0.95933, 0.92179, 0.9446, 0.92179, 0.9446, - 0.92179, 0.9446, 0.936, 0.91964, 0.82114, 0.97646, 1, 1, 0.82114, - 0.97646, 0.8096, 0.78036, 0.8096, 0.78036, 1, 1, 0.8096, 0.78036, 1, - 1, 0.89713, 0.77452, 0.89713, 1.10208, 0.94438, 0.95442, 0.94438, - 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, - 0.94438, 0.95442, 0.94083, 0.97579, 0.90406, 0.94039, 0.90406, - 0.9446, 0.938, 0.9446, 0.938, 0.9446, 0.938, 1, 0.99793, 0.90838, - 0.94938, 0.868, 0.9031, 0.92179, 0.9446, 1, 1, 0.89713, 1.10208, - 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, - 0.90088, 0.90088, 0.90989, 0.9358, 0.91945, 0.83181, 0.75261, - 0.87992, 0.82976, 0.96034, 0.83689, 0.97268, 1.0078, 0.90838, - 0.83637, 0.8019, 0.90157, 0.80061, 0.9446, 0.95407, 0.92436, 1.0258, - 0.85022, 0.97153, 1.0156, 0.95546, 0.89192, 0.92179, 0.92361, - 0.87107, 0.96318, 0.89713, 0.93704, 0.95638, 0.91905, 0.91709, - 0.92796, 1.0258, 0.93704, 0.94836, 1.0373, 0.95933, 1.0078, 0.95871, - 0.94836, 0.96174, 0.92601, 0.9498, 0.98607, 0.95776, 0.95933, - 1.05453, 1.0078, 0.98275, 0.9314, 0.95617, 0.91701, 1.05993, 0.9446, - 0.78367, 0.9553, 1, 0.86832, 1.0128, 0.95871, 0.99394, 0.87548, - 0.96361, 0.86774, 1.0078, 0.95871, 0.9446, 0.95871, 0.86774, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 0.94083, 0.97579, 0.94083, 0.97579, 0.94083, - 0.97579, 0.90406, 0.94039, 0.96694, 1, 0.89903, 1, 1, 1, 0.93582, - 0.93582, 0.93582, 1, 0.908, 0.908, 0.918, 0.94219, 0.94219, 0.96544, - 1, 1.285, 1, 1, 0.81079, 0.81079, 1, 1, 0.74854, 1, 1, 1, 1, - 0.99793, 1, 1, 1, 0.65, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1.17173, 1, 0.80535, 0.76169, 1.02058, 1.0732, 1.05486, 1, 1, - 1.30692, 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1.16161, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, - ]; - t.MyriadProBoldMetrics = { lineHeight: 1.2, lineGap: 0.2 }; - t.MyriadProBoldItalicFactors = [ - 1.36898, 1, 1, 0.66227, 0.80779, 0.81625, 0.97276, 0.97276, 0.97733, - 0.92222, 0.83266, 0.94292, 0.94292, 1.16148, 1.02058, 0.93582, - 0.96694, 0.93582, 1.17337, 0.97276, 0.97276, 0.97276, 0.97276, - 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.78076, - 0.78076, 1.02058, 1.02058, 1.02058, 0.71541, 0.76813, 0.85576, - 0.80591, 0.80729, 0.94299, 0.77512, 0.83655, 0.86523, 0.92222, - 0.98621, 0.71743, 0.81698, 0.79726, 0.98558, 0.92222, 0.90637, - 0.83809, 0.90637, 0.80729, 0.76463, 0.86275, 0.90699, 0.91605, - 0.9154, 0.85308, 0.85458, 0.90531, 0.94292, 1.21296, 0.94292, - 1.02058, 0.89903, 1.18616, 0.99613, 0.91677, 0.78216, 0.91677, - 0.90083, 0.98796, 0.9135, 0.92168, 0.95381, 0.98981, 0.95298, - 0.95381, 0.93459, 0.92168, 0.91513, 0.92004, 0.91677, 0.95077, - 0.748, 1.04502, 0.91677, 0.92061, 0.94236, 0.89544, 0.89364, 0.9, - 0.80687, 0.8578, 0.80687, 1.02058, 0.80779, 0.97276, 0.97276, - 0.97276, 0.97276, 0.8578, 0.99973, 1.18616, 0.91339, 1.08074, - 0.82891, 1.02058, 0.55509, 0.71526, 0.89022, 1.08595, 1, 1, 1.18616, - 1, 0.96736, 0.93582, 1.18616, 1, 1.04864, 0.82711, 0.99043, 0.99043, - 0.99043, 0.71541, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, - 0.85576, 0.845, 0.80729, 0.77512, 0.77512, 0.77512, 0.77512, - 0.98621, 0.98621, 0.98621, 0.98621, 0.95961, 0.92222, 0.90637, - 0.90637, 0.90637, 0.90637, 0.90637, 1.02058, 0.90251, 0.90699, - 0.90699, 0.90699, 0.90699, 0.85458, 0.83659, 0.94951, 0.99613, - 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.85811, 0.78216, - 0.90083, 0.90083, 0.90083, 0.90083, 0.95381, 0.95381, 0.95381, - 0.95381, 0.9135, 0.92168, 0.91513, 0.91513, 0.91513, 0.91513, - 0.91513, 1.08595, 0.91677, 0.91677, 0.91677, 0.91677, 0.91677, - 0.89364, 0.92332, 0.89364, 0.85576, 0.99613, 0.85576, 0.99613, - 0.85576, 0.99613, 0.80729, 0.78216, 0.80729, 0.78216, 0.80729, - 0.78216, 0.80729, 0.78216, 0.94299, 0.76783, 0.95961, 0.91677, - 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, - 0.90083, 0.77512, 0.90083, 0.86523, 0.9135, 0.86523, 0.9135, - 0.86523, 0.9135, 1, 1, 0.92222, 0.92168, 0.92222, 0.92168, 0.98621, - 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, - 0.98621, 0.95381, 0.86036, 0.97096, 0.71743, 0.98981, 1, 1, 0.95298, - 0.79726, 0.95381, 1, 1, 0.79726, 0.6894, 0.79726, 0.74321, 0.81691, - 1.0006, 0.92222, 0.92168, 1, 1, 0.92222, 0.92168, 0.79464, 0.92098, - 0.92168, 0.90637, 0.91513, 0.90637, 0.91513, 0.90637, 0.91513, - 0.909, 0.87514, 0.80729, 0.95077, 1, 1, 0.80729, 0.95077, 0.76463, - 0.748, 0.76463, 0.748, 1, 1, 0.76463, 0.748, 1, 1, 0.86275, 0.72651, - 0.86275, 1.04502, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, - 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, - 0.9154, 0.94236, 0.85458, 0.89364, 0.85458, 0.90531, 0.9, 0.90531, - 0.9, 0.90531, 0.9, 1, 0.97276, 0.85576, 0.99613, 0.845, 0.85811, - 0.90251, 0.91677, 1, 1, 0.86275, 1.04502, 1.18616, 1.18616, 1.18616, - 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.00899, - 1.30628, 0.85576, 0.80178, 0.66862, 0.7927, 0.69323, 0.88127, - 0.72459, 0.89711, 0.95381, 0.85576, 0.80591, 0.7805, 0.94729, - 0.77512, 0.90531, 0.92222, 0.90637, 0.98621, 0.81698, 0.92655, - 0.98558, 0.92222, 0.85359, 0.90637, 0.90976, 0.83809, 0.94523, - 0.86275, 0.83509, 0.93157, 0.85308, 0.83392, 0.92346, 0.98621, - 0.83509, 0.92886, 0.91324, 0.92168, 0.95381, 0.90646, 0.92886, - 0.90557, 0.86847, 0.90276, 0.91324, 0.86842, 0.92168, 0.99531, - 0.95381, 0.9224, 0.85408, 0.92699, 0.86847, 1.0051, 0.91513, - 0.80487, 0.93481, 1, 0.88159, 1.05214, 0.90646, 0.97355, 0.81539, - 0.89398, 0.85923, 0.95381, 0.90646, 0.91513, 0.90646, 0.85923, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 0.9154, 0.94236, 0.9154, 0.94236, 0.9154, 0.94236, - 0.85458, 0.89364, 0.96694, 1, 0.89903, 1, 1, 1, 0.91782, 0.91782, - 0.91782, 1, 0.896, 0.896, 0.896, 0.9332, 0.9332, 0.95973, 1, 1.26, - 1, 1, 0.80479, 0.80178, 1, 1, 0.85633, 1, 1, 1, 1, 0.97276, 1, 1, 1, - 0.698, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.14542, 1, - 0.79199, 0.78694, 1.02058, 1.03493, 1.05486, 1, 1, 1.23026, 1.08595, - 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1.20006, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - ]; - t.MyriadProBoldItalicMetrics = { lineHeight: 1.2, lineGap: 0.2 }; - t.MyriadProItalicFactors = [ - 1.36898, 1, 1, 0.65507, 0.84943, 0.85639, 0.88465, 0.88465, 0.86936, - 0.88307, 0.86948, 0.85283, 0.85283, 1.06383, 1.02058, 0.75945, - 0.9219, 0.75945, 1.17337, 0.88465, 0.88465, 0.88465, 0.88465, - 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.75945, - 0.75945, 1.02058, 1.02058, 1.02058, 0.69046, 0.70926, 0.85158, - 0.77812, 0.76852, 0.89591, 0.70466, 0.76125, 0.80094, 0.86822, - 0.83864, 0.728, 0.77212, 0.79475, 0.93637, 0.87514, 0.8588, 0.76013, - 0.8588, 0.72421, 0.69866, 0.77598, 0.85991, 0.80811, 0.87832, - 0.78112, 0.77512, 0.8562, 1.0222, 1.18417, 1.0222, 1.27014, 0.89903, - 1.15012, 0.93859, 0.94399, 0.846, 0.94399, 0.81453, 1.0186, 0.94219, - 0.96017, 1.03075, 1.02175, 0.912, 1.03075, 0.96998, 0.96017, - 0.93859, 0.94399, 0.94399, 0.95493, 0.746, 1.12658, 0.94578, 0.91, - 0.979, 0.882, 0.882, 0.83, 0.85034, 0.83537, 0.85034, 1.02058, - 0.70869, 0.88465, 0.88465, 0.88465, 0.88465, 0.83537, 0.90083, - 1.15012, 0.9161, 0.94565, 0.73541, 1.02058, 0.53609, 0.69353, - 0.79519, 1.08595, 1, 1, 1.15012, 1, 0.91974, 0.75945, 1.15012, 1, - 0.9446, 0.73361, 0.9005, 0.9005, 0.9005, 0.62864, 0.85158, 0.85158, - 0.85158, 0.85158, 0.85158, 0.85158, 0.773, 0.76852, 0.70466, - 0.70466, 0.70466, 0.70466, 0.83864, 0.83864, 0.83864, 0.83864, - 0.90561, 0.87514, 0.8588, 0.8588, 0.8588, 0.8588, 0.8588, 1.02058, - 0.85751, 0.85991, 0.85991, 0.85991, 0.85991, 0.77512, 0.76013, - 0.88075, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, - 0.8075, 0.846, 0.81453, 0.81453, 0.81453, 0.81453, 0.82424, 0.82424, - 0.82424, 0.82424, 0.9278, 0.96017, 0.93859, 0.93859, 0.93859, - 0.93859, 0.93859, 1.08595, 0.8562, 0.94578, 0.94578, 0.94578, - 0.94578, 0.882, 0.94578, 0.882, 0.85158, 0.93859, 0.85158, 0.93859, - 0.85158, 0.93859, 0.76852, 0.846, 0.76852, 0.846, 0.76852, 0.846, - 0.76852, 0.846, 0.89591, 0.8544, 0.90561, 0.94399, 0.70466, 0.81453, - 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, - 0.81453, 0.80094, 0.94219, 0.80094, 0.94219, 0.80094, 0.94219, 1, 1, - 0.86822, 0.96017, 0.86822, 0.96017, 0.83864, 0.82424, 0.83864, - 0.82424, 0.83864, 0.82424, 0.83864, 1.03075, 0.83864, 0.82424, - 0.81402, 1.02738, 0.728, 1.02175, 1, 1, 0.912, 0.79475, 1.03075, 1, - 1, 0.79475, 0.83911, 0.79475, 0.66266, 0.80553, 1.06676, 0.87514, - 0.96017, 1, 1, 0.87514, 0.96017, 0.86865, 0.87396, 0.96017, 0.8588, - 0.93859, 0.8588, 0.93859, 0.8588, 0.93859, 0.867, 0.84759, 0.72421, - 0.95493, 1, 1, 0.72421, 0.95493, 0.69866, 0.746, 0.69866, 0.746, 1, - 1, 0.69866, 0.746, 1, 1, 0.77598, 0.88417, 0.77598, 1.12658, - 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, - 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.87832, 0.979, - 0.77512, 0.882, 0.77512, 0.8562, 0.83, 0.8562, 0.83, 0.8562, 0.83, - 1, 0.88465, 0.85158, 0.93859, 0.773, 0.8075, 0.85751, 0.8562, 1, 1, - 0.77598, 1.12658, 1.15012, 1.15012, 1.15012, 1.15012, 1.15012, - 1.15313, 1.15012, 1.15012, 1.15012, 1.08106, 1.03901, 0.85158, - 0.77025, 0.62264, 0.7646, 0.65351, 0.86026, 0.69461, 0.89947, - 1.03075, 0.85158, 0.77812, 0.76449, 0.88836, 0.70466, 0.8562, - 0.86822, 0.8588, 0.83864, 0.77212, 0.85308, 0.93637, 0.87514, - 0.82352, 0.8588, 0.85701, 0.76013, 0.89058, 0.77598, 0.8156, - 0.82565, 0.78112, 0.77899, 0.89386, 0.83864, 0.8156, 0.9486, - 0.92388, 0.96186, 1.03075, 0.91123, 0.9486, 0.93298, 0.878, 0.93942, - 0.92388, 0.84596, 0.96186, 0.95119, 1.03075, 0.922, 0.88787, - 0.95829, 0.88, 0.93559, 0.93859, 0.78815, 0.93758, 1, 0.89217, - 1.03737, 0.91123, 0.93969, 0.77487, 0.85769, 0.86799, 1.03075, - 0.91123, 0.93859, 0.91123, 0.86799, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.87832, - 0.979, 0.87832, 0.979, 0.87832, 0.979, 0.77512, 0.882, 0.9219, 1, - 0.89903, 1, 1, 1, 0.87321, 0.87321, 0.87321, 1, 1.027, 1.027, 1.027, - 0.86847, 0.86847, 0.79121, 1, 1.124, 1, 1, 0.73572, 0.73572, 1, 1, - 0.85034, 1, 1, 1, 1, 0.88465, 1, 1, 1, 0.669, 1, 1.36145, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1.04828, 1, 0.74948, 0.75187, 1.02058, - 0.98391, 1.02119, 1, 1, 1.06233, 1.08595, 1.08595, 1, 1.08595, - 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05233, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - ]; - t.MyriadProItalicMetrics = { lineHeight: 1.2, lineGap: 0.2 }; - t.MyriadProRegularFactors = [ - 1.36898, 1, 1, 0.76305, 0.82784, 0.94935, 0.89364, 0.92241, 0.89073, - 0.90706, 0.98472, 0.85283, 0.85283, 1.0664, 1.02058, 0.74505, - 0.9219, 0.74505, 1.23456, 0.92241, 0.92241, 0.92241, 0.92241, - 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.74505, - 0.74505, 1.02058, 1.02058, 1.02058, 0.73002, 0.72601, 0.91755, - 0.8126, 0.80314, 0.92222, 0.73764, 0.79726, 0.83051, 0.90284, - 0.86023, 0.74, 0.8126, 0.84869, 0.96518, 0.91115, 0.8858, 0.79761, - 0.8858, 0.74498, 0.73914, 0.81363, 0.89591, 0.83659, 0.89633, - 0.85608, 0.8111, 0.90531, 1.0222, 1.22736, 1.0222, 1.27014, 0.89903, - 0.90088, 0.86667, 1.0231, 0.896, 1.01411, 0.90083, 1.05099, 1.00512, - 0.99793, 1.05326, 1.09377, 0.938, 1.06226, 1.00119, 0.99793, - 0.98714, 1.0231, 1.01231, 0.98196, 0.792, 1.19137, 0.99074, 0.962, - 1.01915, 0.926, 0.942, 0.856, 0.85034, 0.92006, 0.85034, 1.02058, - 0.69067, 0.92241, 0.92241, 0.92241, 0.92241, 0.92006, 0.9332, - 0.90088, 0.91882, 0.93484, 0.75339, 1.02058, 0.56866, 0.54324, - 0.79519, 1.08595, 1, 1, 0.90088, 1, 0.95325, 0.74505, 0.90088, 1, - 0.97198, 0.75339, 0.91009, 0.91009, 0.91009, 0.66466, 0.91755, - 0.91755, 0.91755, 0.91755, 0.91755, 0.91755, 0.788, 0.80314, - 0.73764, 0.73764, 0.73764, 0.73764, 0.86023, 0.86023, 0.86023, - 0.86023, 0.92915, 0.91115, 0.8858, 0.8858, 0.8858, 0.8858, 0.8858, - 1.02058, 0.8858, 0.89591, 0.89591, 0.89591, 0.89591, 0.8111, - 0.79611, 0.89713, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, - 0.86667, 0.86936, 0.896, 0.90083, 0.90083, 0.90083, 0.90083, - 0.84224, 0.84224, 0.84224, 0.84224, 0.97276, 0.99793, 0.98714, - 0.98714, 0.98714, 0.98714, 0.98714, 1.08595, 0.89876, 0.99074, - 0.99074, 0.99074, 0.99074, 0.942, 1.0231, 0.942, 0.91755, 0.86667, - 0.91755, 0.86667, 0.91755, 0.86667, 0.80314, 0.896, 0.80314, 0.896, - 0.80314, 0.896, 0.80314, 0.896, 0.92222, 0.93372, 0.92915, 1.01411, - 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, - 0.90083, 0.73764, 0.90083, 0.83051, 1.00512, 0.83051, 1.00512, - 0.83051, 1.00512, 1, 1, 0.90284, 0.99793, 0.90976, 0.99793, 0.86023, - 0.84224, 0.86023, 0.84224, 0.86023, 0.84224, 0.86023, 1.05326, - 0.86023, 0.84224, 0.82873, 1.07469, 0.74, 1.09377, 1, 1, 0.938, - 0.84869, 1.06226, 1, 1, 0.84869, 0.83704, 0.84869, 0.81441, 0.85588, - 1.08927, 0.91115, 0.99793, 1, 1, 0.91115, 0.99793, 0.91887, 0.90991, - 0.99793, 0.8858, 0.98714, 0.8858, 0.98714, 0.8858, 0.98714, 0.894, - 0.91434, 0.74498, 0.98196, 1, 1, 0.74498, 0.98196, 0.73914, 0.792, - 0.73914, 0.792, 1, 1, 0.73914, 0.792, 1, 1, 0.81363, 0.904, 0.81363, - 1.19137, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, - 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89633, - 1.01915, 0.8111, 0.942, 0.8111, 0.90531, 0.856, 0.90531, 0.856, - 0.90531, 0.856, 1, 0.92241, 0.91755, 0.86667, 0.788, 0.86936, - 0.8858, 0.89876, 1, 1, 0.81363, 1.19137, 0.90088, 0.90088, 0.90088, - 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90388, - 1.03901, 0.92138, 0.78105, 0.7154, 0.86169, 0.80513, 0.94007, - 0.82528, 0.98612, 1.06226, 0.91755, 0.8126, 0.81884, 0.92819, - 0.73764, 0.90531, 0.90284, 0.8858, 0.86023, 0.8126, 0.91172, - 0.96518, 0.91115, 0.83089, 0.8858, 0.87791, 0.79761, 0.89297, - 0.81363, 0.88157, 0.89992, 0.85608, 0.81992, 0.94307, 0.86023, - 0.88157, 0.95308, 0.98699, 0.99793, 1.06226, 0.95817, 0.95308, - 0.97358, 0.928, 0.98088, 0.98699, 0.92761, 0.99793, 0.96017, - 1.06226, 0.986, 0.944, 0.95978, 0.938, 0.96705, 0.98714, 0.80442, - 0.98972, 1, 0.89762, 1.04552, 0.95817, 0.99007, 0.87064, 0.91879, - 0.88888, 1.06226, 0.95817, 0.98714, 0.95817, 0.88888, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 0.89633, 1.01915, 0.89633, 1.01915, 0.89633, 1.01915, - 0.8111, 0.942, 0.9219, 1, 0.89903, 1, 1, 1, 0.93173, 0.93173, - 0.93173, 1, 1.06304, 1.06304, 1.06904, 0.89903, 0.89903, 0.80549, 1, - 1.156, 1, 1, 0.76575, 0.76575, 1, 1, 0.72458, 1, 1, 1, 1, 0.92241, - 1, 1, 1, 0.619, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1.07257, 1, 0.74705, 0.71119, 1.02058, 1.024, 1.02119, 1, 1, 1.1536, - 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1.05638, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - ]; - t.MyriadProRegularMetrics = { lineHeight: 1.2, lineGap: 0.2 }; - }, - (e, t) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.SegoeuiRegularMetrics = - t.SegoeuiRegularFactors = - t.SegoeuiItalicMetrics = - t.SegoeuiItalicFactors = - t.SegoeuiBoldMetrics = - t.SegoeuiBoldItalicMetrics = - t.SegoeuiBoldItalicFactors = - t.SegoeuiBoldFactors = - void 0; - t.SegoeuiBoldFactors = [ - 1.76738, 1, 1, 0.99297, 0.9824, 1.04016, 1.06497, 1.03424, 0.97529, - 1.17647, 1.23203, 1.1085, 1.1085, 1.16939, 1.2107, 0.9754, 1.21408, - 0.9754, 1.59578, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, - 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 0.81378, 0.81378, - 1.2107, 1.2107, 1.2107, 0.71703, 0.97847, 0.97363, 0.88776, 0.8641, - 1.02096, 0.79795, 0.85132, 0.914, 1.06085, 1.1406, 0.8007, 0.89858, - 0.83693, 1.14889, 1.09398, 0.97489, 0.92094, 0.97489, 0.90399, - 0.84041, 0.95923, 1.00135, 1, 1.06467, 0.98243, 0.90996, 0.99361, - 1.1085, 1.56942, 1.1085, 1.2107, 0.74627, 0.94282, 0.96752, 1.01519, - 0.86304, 1.01359, 0.97278, 1.15103, 1.01359, 0.98561, 1.02285, - 1.02285, 1.00527, 1.02285, 1.0302, 0.99041, 1.0008, 1.01519, - 1.01359, 1.02258, 0.79104, 1.16862, 0.99041, 0.97454, 1.02511, - 0.99298, 0.96752, 0.95801, 0.94856, 1.16579, 0.94856, 1.2107, - 0.9824, 1.03424, 1.03424, 1, 1.03424, 1.16579, 0.8727, 1.3871, - 1.18622, 1.10818, 1.04478, 1.2107, 1.18622, 0.75155, 0.94994, - 1.28826, 1.21408, 1.21408, 0.91056, 1, 0.91572, 0.9754, 0.64663, - 1.18328, 1.24866, 1.04478, 1.14169, 1.15749, 1.17389, 0.71703, - 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.93506, - 0.8641, 0.79795, 0.79795, 0.79795, 0.79795, 1.1406, 1.1406, 1.1406, - 1.1406, 1.02096, 1.09398, 0.97426, 0.97426, 0.97426, 0.97426, - 0.97426, 1.2107, 0.97489, 1.00135, 1.00135, 1.00135, 1.00135, - 0.90996, 0.92094, 1.02798, 0.96752, 0.96752, 0.96752, 0.96752, - 0.96752, 0.96752, 0.93136, 0.86304, 0.97278, 0.97278, 0.97278, - 0.97278, 1.02285, 1.02285, 1.02285, 1.02285, 0.97122, 0.99041, 1, 1, - 1, 1, 1, 1.28826, 1.0008, 0.99041, 0.99041, 0.99041, 0.99041, - 0.96752, 1.01519, 0.96752, 0.97363, 0.96752, 0.97363, 0.96752, - 0.97363, 0.96752, 0.8641, 0.86304, 0.8641, 0.86304, 0.8641, 0.86304, - 0.8641, 0.86304, 1.02096, 1.03057, 1.02096, 1.03517, 0.79795, - 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, - 0.79795, 0.97278, 0.914, 1.01359, 0.914, 1.01359, 0.914, 1.01359, 1, - 1, 1.06085, 0.98561, 1.06085, 1.00879, 1.1406, 1.02285, 1.1406, - 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 0.97138, - 1.08692, 0.8007, 1.02285, 1, 1, 1.00527, 0.83693, 1.02285, 1, 1, - 0.83693, 0.9455, 0.83693, 0.90418, 0.83693, 1.13005, 1.09398, - 0.99041, 1, 1, 1.09398, 0.99041, 0.96692, 1.09251, 0.99041, 0.97489, - 1.0008, 0.97489, 1.0008, 0.97489, 1.0008, 0.93994, 0.97931, 0.90399, - 1.02258, 1, 1, 0.90399, 1.02258, 0.84041, 0.79104, 0.84041, 0.79104, - 0.84041, 0.79104, 0.84041, 0.79104, 1, 1, 0.95923, 1.07034, 0.95923, - 1.16862, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, - 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.06467, - 1.02511, 0.90996, 0.96752, 0.90996, 0.99361, 0.95801, 0.99361, - 0.95801, 0.99361, 0.95801, 1.07733, 1.03424, 0.97363, 0.96752, - 0.93506, 0.93136, 0.97489, 1.0008, 1, 1, 0.95923, 1.16862, 1.15103, - 1.15103, 1.01173, 1.03959, 0.75953, 0.81378, 0.79912, 1.15103, - 1.21994, 0.95161, 0.87815, 1.01149, 0.81525, 0.7676, 0.98167, - 1.01134, 1.02546, 0.84097, 1.03089, 1.18102, 0.97363, 0.88776, - 0.85134, 0.97826, 0.79795, 0.99361, 1.06085, 0.97489, 1.1406, - 0.89858, 1.0388, 1.14889, 1.09398, 0.86039, 0.97489, 1.0595, - 0.92094, 0.94793, 0.95923, 0.90996, 0.99346, 0.98243, 1.02112, - 0.95493, 1.1406, 0.90996, 1.03574, 1.02597, 1.0008, 1.18102, - 1.06628, 1.03574, 1.0192, 1.01932, 1.00886, 0.97531, 1.0106, 1.0008, - 1.13189, 1.18102, 1.02277, 0.98683, 1.0016, 0.99561, 1.07237, - 1.0008, 0.90434, 0.99921, 0.93803, 0.8965, 1.23085, 1.06628, - 1.04983, 0.96268, 1.0499, 0.98439, 1.18102, 1.06628, 1.0008, - 1.06628, 0.98439, 0.79795, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1.09466, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 0.97278, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.02065, 1, 1, 1, 1, 1, - 1, 1.06467, 1.02511, 1.06467, 1.02511, 1.06467, 1.02511, 0.90996, - 0.96752, 1, 1.21408, 0.89903, 1, 1, 0.75155, 1.04394, 1.04394, - 1.04394, 1.04394, 0.98633, 0.98633, 0.98633, 0.73047, 0.73047, - 1.20642, 0.91211, 1.25635, 1.222, 1.02956, 1.03372, 1.03372, - 0.96039, 1.24633, 1, 1.12454, 0.93503, 1.03424, 1.19687, 1.03424, 1, - 1, 1, 0.771, 1, 1, 1.15749, 1.15749, 1.15749, 1.10948, 0.86279, - 0.94434, 0.86279, 0.94434, 0.86182, 1, 1, 1.16897, 1, 0.96085, - 0.90137, 1.2107, 1.18416, 1.13973, 0.69825, 0.9716, 2.10339, - 1.29004, 1.29004, 1.21172, 1.29004, 1.29004, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, - 1.18874, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, - 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.09193, 1.09193, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - ]; - t.SegoeuiBoldMetrics = { lineHeight: 1.33008, lineGap: 0 }; - t.SegoeuiBoldItalicFactors = [ - 1.76738, 1, 1, 0.98946, 1.03959, 1.04016, 1.02809, 1.036, 0.97639, - 1.10953, 1.23203, 1.11144, 1.11144, 1.16939, 1.21237, 0.9754, - 1.21261, 0.9754, 1.59754, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, - 1.036, 1.036, 1.036, 1.036, 0.81378, 0.81378, 1.21237, 1.21237, - 1.21237, 0.73541, 0.97847, 0.97363, 0.89723, 0.87897, 1.0426, - 0.79429, 0.85292, 0.91149, 1.05815, 1.1406, 0.79631, 0.90128, - 0.83853, 1.04396, 1.10615, 0.97552, 0.94436, 0.97552, 0.88641, - 0.80527, 0.96083, 1.00135, 1, 1.06777, 0.9817, 0.91142, 0.99361, - 1.11144, 1.57293, 1.11144, 1.21237, 0.74627, 1.31818, 1.06585, - 0.97042, 0.83055, 0.97042, 0.93503, 1.1261, 0.97042, 0.97922, - 1.14236, 0.94552, 1.01054, 1.14236, 1.02471, 0.97922, 0.94165, - 0.97042, 0.97042, 1.0276, 0.78929, 1.1261, 0.97922, 0.95874, - 1.02197, 0.98507, 0.96752, 0.97168, 0.95107, 1.16579, 0.95107, - 1.21237, 1.03959, 1.036, 1.036, 1, 1.036, 1.16579, 0.87357, 1.31818, - 1.18754, 1.26781, 1.05356, 1.21237, 1.18622, 0.79487, 0.94994, - 1.29004, 1.24047, 1.24047, 1.31818, 1, 0.91484, 0.9754, 1.31818, - 1.1349, 1.24866, 1.05356, 1.13934, 1.15574, 1.17389, 0.73541, - 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.94385, - 0.87897, 0.79429, 0.79429, 0.79429, 0.79429, 1.1406, 1.1406, 1.1406, - 1.1406, 1.0426, 1.10615, 0.97552, 0.97552, 0.97552, 0.97552, - 0.97552, 1.21237, 0.97552, 1.00135, 1.00135, 1.00135, 1.00135, - 0.91142, 0.94436, 0.98721, 1.06585, 1.06585, 1.06585, 1.06585, - 1.06585, 1.06585, 0.96705, 0.83055, 0.93503, 0.93503, 0.93503, - 0.93503, 1.14236, 1.14236, 1.14236, 1.14236, 0.93125, 0.97922, - 0.94165, 0.94165, 0.94165, 0.94165, 0.94165, 1.29004, 0.94165, - 0.97922, 0.97922, 0.97922, 0.97922, 0.96752, 0.97042, 0.96752, - 0.97363, 1.06585, 0.97363, 1.06585, 0.97363, 1.06585, 0.87897, - 0.83055, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897, 0.83055, - 1.0426, 1.0033, 1.0426, 0.97042, 0.79429, 0.93503, 0.79429, 0.93503, - 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.91149, - 0.97042, 0.91149, 0.97042, 0.91149, 0.97042, 1, 1, 1.05815, 0.97922, - 1.05815, 0.97922, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, - 1.1406, 1.14236, 1.1406, 1.14236, 0.97441, 1.04302, 0.79631, - 1.01582, 1, 1, 1.01054, 0.83853, 1.14236, 1, 1, 0.83853, 1.09125, - 0.83853, 0.90418, 0.83853, 1.19508, 1.10615, 0.97922, 1, 1, 1.10615, - 0.97922, 1.01034, 1.10466, 0.97922, 0.97552, 0.94165, 0.97552, - 0.94165, 0.97552, 0.94165, 0.91602, 0.91981, 0.88641, 1.0276, 1, 1, - 0.88641, 1.0276, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527, - 0.78929, 0.80527, 0.78929, 1, 1, 0.96083, 1.05403, 0.95923, 1.16862, - 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, - 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.06777, 1.02197, - 0.91142, 0.96752, 0.91142, 0.99361, 0.97168, 0.99361, 0.97168, - 0.99361, 0.97168, 1.23199, 1.036, 0.97363, 1.06585, 0.94385, - 0.96705, 0.97552, 0.94165, 1, 1, 0.96083, 1.1261, 1.31818, 1.31818, - 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, - 0.95161, 1.27126, 1.00811, 0.83284, 0.77702, 0.99137, 0.95253, - 1.0347, 0.86142, 1.07205, 1.14236, 0.97363, 0.89723, 0.86869, - 1.09818, 0.79429, 0.99361, 1.05815, 0.97552, 1.1406, 0.90128, - 1.06662, 1.04396, 1.10615, 0.84918, 0.97552, 1.04694, 0.94436, - 0.98015, 0.96083, 0.91142, 1.00356, 0.9817, 1.01945, 0.98999, - 1.1406, 0.91142, 1.04961, 0.9898, 1.00639, 1.14236, 1.07514, - 1.04961, 0.99607, 1.02897, 1.008, 0.9898, 0.95134, 1.00639, 1.11121, - 1.14236, 1.00518, 0.97981, 1.02186, 1, 1.08578, 0.94165, 0.99314, - 0.98387, 0.93028, 0.93377, 1.35125, 1.07514, 1.10687, 0.93491, - 1.04232, 1.00351, 1.14236, 1.07514, 0.94165, 1.07514, 1.00351, - 0.79429, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.09097, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.93503, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 0.96609, 1, 1, 1, 1, 1, 1, 1.06777, 1.02197, - 1.06777, 1.02197, 1.06777, 1.02197, 0.91142, 0.96752, 1, 1.21261, - 0.89903, 1, 1, 0.75155, 1.04745, 1.04745, 1.04745, 1.04394, 0.98633, - 0.98633, 0.98633, 0.72959, 0.72959, 1.20502, 0.91406, 1.26514, - 1.222, 1.02956, 1.03372, 1.03372, 0.96039, 1.24633, 1, 1.09125, - 0.93327, 1.03336, 1.16541, 1.036, 1, 1, 1, 0.771, 1, 1, 1.15574, - 1.15574, 1.15574, 1.15574, 0.86364, 0.94434, 0.86279, 0.94434, - 0.86224, 1, 1, 1.16798, 1, 0.96085, 0.90068, 1.21237, 1.18416, - 1.13904, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21339, - 1.29004, 1.29004, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, - 0.87025, 0.87025, 0.87025, 0.87025, 1.18775, 1.42603, 1, 1.42603, - 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, - 1, 1, 1, 1.13269, 1.13269, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, - ]; - t.SegoeuiBoldItalicMetrics = { lineHeight: 1.33008, lineGap: 0 }; - t.SegoeuiItalicFactors = [ - 1.76738, 1, 1, 0.98946, 1.14763, 1.05365, 1.06234, 0.96927, 0.92586, - 1.15373, 1.18414, 0.91349, 0.91349, 1.07403, 1.17308, 0.78383, - 1.20088, 0.78383, 1.42531, 0.96927, 0.96927, 0.96927, 0.96927, - 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.78383, - 0.78383, 1.17308, 1.17308, 1.17308, 0.77349, 0.94565, 0.94729, - 0.85944, 0.88506, 0.9858, 0.74817, 0.80016, 0.88449, 0.98039, - 0.95782, 0.69238, 0.89898, 0.83231, 0.98183, 1.03989, 0.96924, - 0.86237, 0.96924, 0.80595, 0.74524, 0.86091, 0.95402, 0.94143, - 0.98448, 0.8858, 0.83089, 0.93285, 1.0949, 1.39016, 1.0949, 1.45994, - 0.74627, 1.04839, 0.97454, 0.97454, 0.87207, 0.97454, 0.87533, - 1.06151, 0.97454, 1.00176, 1.16484, 1.08132, 0.98047, 1.16484, - 1.02989, 1.01054, 0.96225, 0.97454, 0.97454, 1.06598, 0.79004, - 1.16344, 1.00351, 0.94629, 0.9973, 0.91016, 0.96777, 0.9043, - 0.91082, 0.92481, 0.91082, 1.17308, 0.95748, 0.96927, 0.96927, 1, - 0.96927, 0.92481, 0.80597, 1.04839, 1.23393, 1.1781, 0.9245, - 1.17308, 1.20808, 0.63218, 0.94261, 1.24822, 1.09971, 1.09971, - 1.04839, 1, 0.85273, 0.78032, 1.04839, 1.09971, 1.22326, 0.9245, - 1.09836, 1.13525, 1.15222, 0.70424, 0.94729, 0.94729, 0.94729, - 0.94729, 0.94729, 0.94729, 0.85498, 0.88506, 0.74817, 0.74817, - 0.74817, 0.74817, 0.95782, 0.95782, 0.95782, 0.95782, 0.9858, - 1.03989, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 1.17308, - 0.96924, 0.95402, 0.95402, 0.95402, 0.95402, 0.83089, 0.86237, - 0.88409, 0.97454, 0.97454, 0.97454, 0.97454, 0.97454, 0.97454, - 0.92916, 0.87207, 0.87533, 0.87533, 0.87533, 0.87533, 0.93146, - 0.93146, 0.93146, 0.93146, 0.93854, 1.01054, 0.96225, 0.96225, - 0.96225, 0.96225, 0.96225, 1.24822, 0.8761, 1.00351, 1.00351, - 1.00351, 1.00351, 0.96777, 0.97454, 0.96777, 0.94729, 0.97454, - 0.94729, 0.97454, 0.94729, 0.97454, 0.88506, 0.87207, 0.88506, - 0.87207, 0.88506, 0.87207, 0.88506, 0.87207, 0.9858, 0.95391, - 0.9858, 0.97454, 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, - 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.88449, 0.97454, - 0.88449, 0.97454, 0.88449, 0.97454, 1, 1, 0.98039, 1.00176, 0.98039, - 1.00176, 0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 0.93146, - 0.95782, 1.16484, 0.95782, 0.93146, 0.84421, 1.12761, 0.69238, - 1.08132, 1, 1, 0.98047, 0.83231, 1.16484, 1, 1, 0.84723, 1.04861, - 0.84723, 0.78755, 0.83231, 1.23736, 1.03989, 1.01054, 1, 1, 1.03989, - 1.01054, 0.9857, 1.03849, 1.01054, 0.96924, 0.96225, 0.96924, - 0.96225, 0.96924, 0.96225, 0.92383, 0.90171, 0.80595, 1.06598, 1, 1, - 0.80595, 1.06598, 0.74524, 0.79004, 0.74524, 0.79004, 0.74524, - 0.79004, 0.74524, 0.79004, 1, 1, 0.86091, 1.02759, 0.85771, 1.16344, - 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, - 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.98448, 0.9973, - 0.83089, 0.96777, 0.83089, 0.93285, 0.9043, 0.93285, 0.9043, - 0.93285, 0.9043, 1.31868, 0.96927, 0.94729, 0.97454, 0.85498, - 0.92916, 0.96924, 0.8761, 1, 1, 0.86091, 1.16344, 1.04839, 1.04839, - 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, - 0.81965, 0.81965, 0.94729, 0.78032, 0.71022, 0.90883, 0.84171, - 0.99877, 0.77596, 1.05734, 1.2, 0.94729, 0.85944, 0.82791, 0.9607, - 0.74817, 0.93285, 0.98039, 0.96924, 0.95782, 0.89898, 0.98316, - 0.98183, 1.03989, 0.78614, 0.96924, 0.97642, 0.86237, 0.86075, - 0.86091, 0.83089, 0.90082, 0.8858, 0.97296, 1.01284, 0.95782, - 0.83089, 1.0976, 1.04, 1.03342, 1.2, 1.0675, 1.0976, 0.98205, - 1.03809, 1.05097, 1.04, 0.95364, 1.03342, 1.05401, 1.2, 1.02148, - 1.0119, 1.04724, 1.0127, 1.02732, 0.96225, 0.8965, 0.97783, 0.93574, - 0.94818, 1.30679, 1.0675, 1.11826, 0.99821, 1.0557, 1.0326, 1.2, - 1.0675, 0.96225, 1.0675, 1.0326, 0.74817, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1.03754, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 0.87533, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.98705, 1, 1, - 1, 1, 1, 1, 0.98448, 0.9973, 0.98448, 0.9973, 0.98448, 0.9973, - 0.83089, 0.96777, 1, 1.20088, 0.89903, 1, 1, 0.75155, 0.94945, - 0.94945, 0.94945, 0.94945, 1.12317, 1.12317, 1.12317, 0.67603, - 0.67603, 1.15621, 0.73584, 1.21191, 1.22135, 1.06483, 0.94868, - 0.94868, 0.95996, 1.24633, 1, 1.07497, 0.87709, 0.96927, 1.01473, - 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.09836, 1.09836, 1.09836, 1.01522, - 0.86321, 0.94434, 0.8649, 0.94434, 0.86182, 1, 1, 1.083, 1, 0.91578, - 0.86438, 1.17308, 1.18416, 1.14589, 0.69825, 0.97622, 1.96791, - 1.24822, 1.24822, 1.17308, 1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, - 1.17984, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, - 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.10742, 1.10742, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - ]; - t.SegoeuiItalicMetrics = { lineHeight: 1.33008, lineGap: 0 }; - t.SegoeuiRegularFactors = [ - 1.76738, 1, 1, 0.98594, 1.02285, 1.10454, 1.06234, 0.96927, 0.92037, - 1.19985, 1.2046, 0.90616, 0.90616, 1.07152, 1.1714, 0.78032, - 1.20088, 0.78032, 1.40246, 0.96927, 0.96927, 0.96927, 0.96927, - 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.78032, - 0.78032, 1.1714, 1.1714, 1.1714, 0.80597, 0.94084, 0.96706, 0.85944, - 0.85734, 0.97093, 0.75842, 0.79936, 0.88198, 0.9831, 0.95782, - 0.71387, 0.86969, 0.84636, 1.07796, 1.03584, 0.96924, 0.83968, - 0.96924, 0.82826, 0.79649, 0.85771, 0.95132, 0.93119, 0.98965, - 0.88433, 0.8287, 0.93365, 1.08612, 1.3638, 1.08612, 1.45786, - 0.74627, 0.80499, 0.91484, 1.05707, 0.92383, 1.05882, 0.9403, - 1.12654, 1.05882, 1.01756, 1.09011, 1.09011, 0.99414, 1.09011, - 1.034, 1.01756, 1.05356, 1.05707, 1.05882, 1.04399, 0.84863, - 1.21968, 1.01756, 0.95801, 1.00068, 0.91797, 0.96777, 0.9043, - 0.90351, 0.92105, 0.90351, 1.1714, 0.85337, 0.96927, 0.96927, - 0.99912, 0.96927, 0.92105, 0.80597, 1.2434, 1.20808, 1.05937, - 0.90957, 1.1714, 1.20808, 0.75155, 0.94261, 1.24644, 1.09971, - 1.09971, 0.84751, 1, 0.85273, 0.78032, 0.61584, 1.05425, 1.17914, - 0.90957, 1.08665, 1.11593, 1.14169, 0.73381, 0.96706, 0.96706, - 0.96706, 0.96706, 0.96706, 0.96706, 0.86035, 0.85734, 0.75842, - 0.75842, 0.75842, 0.75842, 0.95782, 0.95782, 0.95782, 0.95782, - 0.97093, 1.03584, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, - 1.1714, 0.96924, 0.95132, 0.95132, 0.95132, 0.95132, 0.8287, - 0.83968, 0.89049, 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, - 0.91484, 0.93575, 0.92383, 0.9403, 0.9403, 0.9403, 0.9403, 0.8717, - 0.8717, 0.8717, 0.8717, 1.00527, 1.01756, 1.05356, 1.05356, 1.05356, - 1.05356, 1.05356, 1.24644, 0.95923, 1.01756, 1.01756, 1.01756, - 1.01756, 0.96777, 1.05707, 0.96777, 0.96706, 0.91484, 0.96706, - 0.91484, 0.96706, 0.91484, 0.85734, 0.92383, 0.85734, 0.92383, - 0.85734, 0.92383, 0.85734, 0.92383, 0.97093, 1.0969, 0.97093, - 1.05882, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, - 0.9403, 0.75842, 0.9403, 0.88198, 1.05882, 0.88198, 1.05882, - 0.88198, 1.05882, 1, 1, 0.9831, 1.01756, 0.9831, 1.01756, 0.95782, - 0.8717, 0.95782, 0.8717, 0.95782, 0.8717, 0.95782, 1.09011, 0.95782, - 0.8717, 0.84784, 1.11551, 0.71387, 1.09011, 1, 1, 0.99414, 0.84636, - 1.09011, 1, 1, 0.84636, 1.0536, 0.84636, 0.94298, 0.84636, 1.23297, - 1.03584, 1.01756, 1, 1, 1.03584, 1.01756, 1.00323, 1.03444, 1.01756, - 0.96924, 1.05356, 0.96924, 1.05356, 0.96924, 1.05356, 0.93066, - 0.98293, 0.82826, 1.04399, 1, 1, 0.82826, 1.04399, 0.79649, 0.84863, - 0.79649, 0.84863, 0.79649, 0.84863, 0.79649, 0.84863, 1, 1, 0.85771, - 1.17318, 0.85771, 1.21968, 0.95132, 1.01756, 0.95132, 1.01756, - 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, - 1.01756, 0.98965, 1.00068, 0.8287, 0.96777, 0.8287, 0.93365, 0.9043, - 0.93365, 0.9043, 0.93365, 0.9043, 1.08571, 0.96927, 0.96706, - 0.91484, 0.86035, 0.93575, 0.96924, 0.95923, 1, 1, 0.85771, 1.21968, - 1.11437, 1.11437, 0.93109, 0.91202, 0.60411, 0.84164, 0.55572, - 1.01173, 0.97361, 0.81818, 0.81818, 0.96635, 0.78032, 0.72727, - 0.92366, 0.98601, 1.03405, 0.77968, 1.09799, 1.2, 0.96706, 0.85944, - 0.85638, 0.96491, 0.75842, 0.93365, 0.9831, 0.96924, 0.95782, - 0.86969, 0.94152, 1.07796, 1.03584, 0.78437, 0.96924, 0.98715, - 0.83968, 0.83491, 0.85771, 0.8287, 0.94492, 0.88433, 0.9287, 1.0098, - 0.95782, 0.8287, 1.0625, 0.98248, 1.03424, 1.2, 1.01071, 1.0625, - 0.95246, 1.03809, 1.04912, 0.98248, 1.00221, 1.03424, 1.05443, 1.2, - 1.04785, 0.99609, 1.00169, 1.05176, 0.99346, 1.05356, 0.9087, - 1.03004, 0.95542, 0.93117, 1.23362, 1.01071, 1.07831, 1.02512, - 1.05205, 1.03502, 1.2, 1.01071, 1.05356, 1.01071, 1.03502, 0.75842, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.03719, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.9403, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1.04021, 1, 1, 1, 1, 1, 1, 0.98965, 1.00068, 0.98965, - 1.00068, 0.98965, 1.00068, 0.8287, 0.96777, 1, 1.20088, 0.89903, 1, - 1, 0.75155, 1.03077, 1.03077, 1.03077, 1.03077, 1.13196, 1.13196, - 1.13196, 0.67428, 0.67428, 1.16039, 0.73291, 1.20996, 1.22135, - 1.06483, 0.94868, 0.94868, 0.95996, 1.24633, 1, 1.07497, 0.87796, - 0.96927, 1.01518, 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.10539, 1.10539, - 1.11358, 1.06967, 0.86279, 0.94434, 0.86279, 0.94434, 0.86182, 1, 1, - 1.083, 1, 0.91578, 0.86507, 1.1714, 1.18416, 1.14589, 0.69825, - 0.97622, 1.9697, 1.24822, 1.24822, 1.17238, 1.24822, 1.24822, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, - 0.87025, 0.87025, 1.18083, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, - 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.10938, - 1.10938, 1, 1, 1, 1.05425, 1.09971, 1.09971, 1.09971, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, - ]; - t.SegoeuiRegularMetrics = { lineHeight: 1.33008, lineGap: 0 }; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.PostScriptEvaluator = - t.PostScriptCompiler = - t.PDFFunctionFactory = - void 0; - t.isPDFFunction = function isPDFFunction(e) { - let t; - if (e instanceof r.Dict) t = e; - else { - if (!(e instanceof s.BaseStream)) return !1; - t = e.dict; - } - return t.has("FunctionType"); - }; - var r = a(4), - n = a(2), - i = a(58), - s = a(5), - o = a(59); - t.PDFFunctionFactory = class PDFFunctionFactory { - constructor({ xref: e, isEvalSupported: t = !0 }) { - this.xref = e; - this.isEvalSupported = !1 !== t; - } - create(e) { - const t = this.getCached(e); - if (t) return t; - const a = PDFFunction.parse({ - xref: this.xref, - isEvalSupported: this.isEvalSupported, - fn: e instanceof r.Ref ? this.xref.fetch(e) : e, - }); - this._cache(e, a); - return a; - } - createFromArray(e) { - const t = this.getCached(e); - if (t) return t; - const a = PDFFunction.parseArray({ - xref: this.xref, - isEvalSupported: this.isEvalSupported, - fnObj: e instanceof r.Ref ? this.xref.fetch(e) : e, - }); - this._cache(e, a); - return a; - } - getCached(e) { - let t; - e instanceof r.Ref - ? (t = e) - : e instanceof r.Dict - ? (t = e.objId) - : e instanceof s.BaseStream && (t = e.dict?.objId); - if (t) { - const e = this._localFunctionCache.getByRef(t); - if (e) return e; - } - return null; - } - _cache(e, t) { - if (!t) - throw new Error( - 'PDFFunctionFactory._cache - expected "parsedFunction" argument.', - ); - let a; - e instanceof r.Ref - ? (a = e) - : e instanceof r.Dict - ? (a = e.objId) - : e instanceof s.BaseStream && (a = e.dict?.objId); - a && this._localFunctionCache.set(null, a, t); - } - get _localFunctionCache() { - return (0, n.shadow)( - this, - "_localFunctionCache", - new o.LocalFunctionCache(), - ); - } - }; - function toNumberArray(e) { - if (!Array.isArray(e)) return null; - const t = e.length; - for (let a = 0; a < t; a++) - if ("number" != typeof e[a]) { - const a = new Array(t); - for (let r = 0; r < t; r++) a[r] = +e[r]; - return a; - } - return e; - } - class PDFFunction { - static getSampleArray(e, t, a, r) { - let n, - i, - s = 1; - for (n = 0, i = e.length; n < i; n++) s *= e[n]; - s *= t; - const o = new Array(s); - let c = 0, - l = 0; - const h = 1 / (2 ** a - 1), - u = r.getBytes((s * a + 7) / 8); - let d = 0; - for (n = 0; n < s; n++) { - for (; c < a; ) { - l <<= 8; - l |= u[d++]; - c += 8; - } - c -= a; - o[n] = (l >> c) * h; - l &= (1 << c) - 1; - } - return o; - } - static parse({ xref: e, isEvalSupported: t, fn: a }) { - const r = a.dict || a; - switch (r.get("FunctionType")) { - case 0: - return this.constructSampled({ - xref: e, - isEvalSupported: t, - fn: a, - dict: r, - }); - case 1: - break; - case 2: - return this.constructInterpolated({ - xref: e, - isEvalSupported: t, - dict: r, - }); - case 3: - return this.constructStiched({ - xref: e, - isEvalSupported: t, - dict: r, - }); - case 4: - return this.constructPostScript({ - xref: e, - isEvalSupported: t, - fn: a, - dict: r, - }); - } - throw new n.FormatError("Unknown type of function"); - } - static parseArray({ xref: e, isEvalSupported: t, fnObj: a }) { - if (!Array.isArray(a)) - return this.parse({ xref: e, isEvalSupported: t, fn: a }); - const r = []; - for (const n of a) - r.push( - this.parse({ - xref: e, - isEvalSupported: t, - fn: e.fetchIfRef(n), - }), - ); - return function (e, t, a, n) { - for (let i = 0, s = r.length; i < s; i++) r[i](e, t, a, n + i); - }; - } - static constructSampled({ - xref: e, - isEvalSupported: t, - fn: a, - dict: r, - }) { - function toMultiArray(e) { - const t = e.length, - a = []; - let r = 0; - for (let n = 0; n < t; n += 2) a[r++] = [e[n], e[n + 1]]; - return a; - } - function interpolate(e, t, a, r, n) { - return r + ((n - r) / (a - t)) * (e - t); - } - let i = toNumberArray(r.getArray("Domain")), - s = toNumberArray(r.getArray("Range")); - if (!i || !s) throw new n.FormatError("No domain or range"); - const o = i.length / 2, - c = s.length / 2; - i = toMultiArray(i); - s = toMultiArray(s); - const l = toNumberArray(r.getArray("Size")), - h = r.get("BitsPerSample"), - u = r.get("Order") || 1; - 1 !== u && - (0, n.info)("No support for cubic spline interpolation: " + u); - let d = toNumberArray(r.getArray("Encode")); - if (d) d = toMultiArray(d); - else { - d = []; - for (let e = 0; e < o; ++e) d.push([0, l[e] - 1]); - } - let f = toNumberArray(r.getArray("Decode")); - f = f ? toMultiArray(f) : s; - const g = this.getSampleArray(l, c, h, a); - return function constructSampledFn(e, t, a, r) { - const n = 1 << o, - h = new Float64Array(n), - u = new Uint32Array(n); - let p, m; - for (m = 0; m < n; m++) h[m] = 1; - let b = c, - y = 1; - for (p = 0; p < o; ++p) { - const a = i[p][0], - r = i[p][1]; - let s = interpolate( - Math.min(Math.max(e[t + p], a), r), - a, - r, - d[p][0], - d[p][1], - ); - const o = l[p]; - s = Math.min(Math.max(s, 0), o - 1); - const c = s < o - 1 ? Math.floor(s) : s - 1, - f = c + 1 - s, - g = s - c, - w = c * b, - S = w + b; - for (m = 0; m < n; m++) - if (m & y) { - h[m] *= g; - u[m] += S; - } else { - h[m] *= f; - u[m] += w; - } - b *= o; - y <<= 1; - } - for (m = 0; m < c; ++m) { - let e = 0; - for (p = 0; p < n; p++) e += g[u[p] + m] * h[p]; - e = interpolate(e, 0, 1, f[m][0], f[m][1]); - a[r + m] = Math.min(Math.max(e, s[m][0]), s[m][1]); - } - }; - } - static constructInterpolated({ - xref: e, - isEvalSupported: t, - dict: a, - }) { - const r = toNumberArray(a.getArray("C0")) || [0], - n = toNumberArray(a.getArray("C1")) || [1], - i = a.get("N"), - s = []; - for (let e = 0, t = r.length; e < t; ++e) s.push(n[e] - r[e]); - const o = s.length; - return function constructInterpolatedFn(e, t, a, n) { - const c = 1 === i ? e[t] : e[t] ** i; - for (let e = 0; e < o; ++e) a[n + e] = r[e] + c * s[e]; - }; - } - static constructStiched({ xref: e, isEvalSupported: t, dict: a }) { - const r = toNumberArray(a.getArray("Domain")); - if (!r) throw new n.FormatError("No domain"); - if (1 !== r.length / 2) - throw new n.FormatError("Bad domain for stiched function"); - const i = []; - for (const r of a.get("Functions")) - i.push( - this.parse({ - xref: e, - isEvalSupported: t, - fn: e.fetchIfRef(r), - }), - ); - const s = toNumberArray(a.getArray("Bounds")), - o = toNumberArray(a.getArray("Encode")), - c = new Float32Array(1); - return function constructStichedFn(e, t, a, n) { - const l = (function constructStichedFromIRClip(e, t, a) { - e > a ? (e = a) : e < t && (e = t); - return e; - })(e[t], r[0], r[1]), - h = s.length; - let u; - for (u = 0; u < h && !(l < s[u]); ++u); - let d = r[0]; - u > 0 && (d = s[u - 1]); - let f = r[1]; - u < s.length && (f = s[u]); - const g = o[2 * u], - p = o[2 * u + 1]; - c[0] = d === f ? g : g + ((l - d) * (p - g)) / (f - d); - i[u](c, 0, a, n); - }; - } - static constructPostScript({ - xref: e, - isEvalSupported: t, - fn: a, - dict: r, - }) { - const s = toNumberArray(r.getArray("Domain")), - o = toNumberArray(r.getArray("Range")); - if (!s) throw new n.FormatError("No domain."); - if (!o) throw new n.FormatError("No range."); - const c = new i.PostScriptLexer(a), - l = new i.PostScriptParser(c).parse(); - if (t && n.FeatureTest.isEvalSupported) { - const e = new PostScriptCompiler().compile(l, s, o); - if (e) - return new Function( - "src", - "srcOffset", - "dest", - "destOffset", - e, - ); - } - (0, n.info)("Unable to compile PS function"); - const h = o.length >> 1, - u = s.length >> 1, - d = new PostScriptEvaluator(l), - f = Object.create(null); - let g = 8192; - const p = new Float32Array(u); - return function constructPostScriptFn(e, t, a, r) { - let n, - i, - s = ""; - const c = p; - for (n = 0; n < u; n++) { - i = e[t + n]; - c[n] = i; - s += i + "_"; - } - const l = f[s]; - if (void 0 !== l) { - a.set(l, r); - return; - } - const m = new Float32Array(h), - b = d.execute(c), - y = b.length - h; - for (n = 0; n < h; n++) { - i = b[y + n]; - let e = o[2 * n]; - if (i < e) i = e; - else { - e = o[2 * n + 1]; - i > e && (i = e); - } - m[n] = i; - } - if (g > 0) { - g--; - f[s] = m; - } - a.set(m, r); - }; - } - } - class PostScriptStack { - static MAX_STACK_SIZE = 100; - constructor(e) { - this.stack = e ? Array.from(e) : []; - } - push(e) { - if (this.stack.length >= PostScriptStack.MAX_STACK_SIZE) - throw new Error("PostScript function stack overflow."); - this.stack.push(e); - } - pop() { - if (this.stack.length <= 0) - throw new Error("PostScript function stack underflow."); - return this.stack.pop(); - } - copy(e) { - if (this.stack.length + e >= PostScriptStack.MAX_STACK_SIZE) - throw new Error("PostScript function stack overflow."); - const t = this.stack; - for (let a = t.length - e, r = e - 1; r >= 0; r--, a++) - t.push(t[a]); - } - index(e) { - this.push(this.stack[this.stack.length - e - 1]); - } - roll(e, t) { - const a = this.stack, - r = a.length - e, - n = a.length - 1, - i = r + (t - Math.floor(t / e) * e); - for (let e = r, t = n; e < t; e++, t--) { - const r = a[e]; - a[e] = a[t]; - a[t] = r; - } - for (let e = r, t = i - 1; e < t; e++, t--) { - const r = a[e]; - a[e] = a[t]; - a[t] = r; - } - for (let e = i, t = n; e < t; e++, t--) { - const r = a[e]; - a[e] = a[t]; - a[t] = r; - } - } - } - class PostScriptEvaluator { - constructor(e) { - this.operators = e; - } - execute(e) { - const t = new PostScriptStack(e); - let a = 0; - const r = this.operators, - i = r.length; - let s, o, c; - for (; a < i; ) { - s = r[a++]; - if ("number" != typeof s) - switch (s) { - case "jz": - c = t.pop(); - o = t.pop(); - o || (a = c); - break; - case "j": - o = t.pop(); - a = o; - break; - case "abs": - o = t.pop(); - t.push(Math.abs(o)); - break; - case "add": - c = t.pop(); - o = t.pop(); - t.push(o + c); - break; - case "and": - c = t.pop(); - o = t.pop(); - "boolean" == typeof o && "boolean" == typeof c - ? t.push(o && c) - : t.push(o & c); - break; - case "atan": - c = t.pop(); - o = t.pop(); - o = (Math.atan2(o, c) / Math.PI) * 180; - o < 0 && (o += 360); - t.push(o); - break; - case "bitshift": - c = t.pop(); - o = t.pop(); - o > 0 ? t.push(o << c) : t.push(o >> c); - break; - case "ceiling": - o = t.pop(); - t.push(Math.ceil(o)); - break; - case "copy": - o = t.pop(); - t.copy(o); - break; - case "cos": - o = t.pop(); - t.push(Math.cos(((o % 360) / 180) * Math.PI)); - break; - case "cvi": - o = 0 | t.pop(); - t.push(o); - break; - case "cvr": - break; - case "div": - c = t.pop(); - o = t.pop(); - t.push(o / c); - break; - case "dup": - t.copy(1); - break; - case "eq": - c = t.pop(); - o = t.pop(); - t.push(o === c); - break; - case "exch": - t.roll(2, 1); - break; - case "exp": - c = t.pop(); - o = t.pop(); - t.push(o ** c); - break; - case "false": - t.push(!1); - break; - case "floor": - o = t.pop(); - t.push(Math.floor(o)); - break; - case "ge": - c = t.pop(); - o = t.pop(); - t.push(o >= c); - break; - case "gt": - c = t.pop(); - o = t.pop(); - t.push(o > c); - break; - case "idiv": - c = t.pop(); - o = t.pop(); - t.push((o / c) | 0); - break; - case "index": - o = t.pop(); - t.index(o); - break; - case "le": - c = t.pop(); - o = t.pop(); - t.push(o <= c); - break; - case "ln": - o = t.pop(); - t.push(Math.log(o)); - break; - case "log": - o = t.pop(); - t.push(Math.log10(o)); - break; - case "lt": - c = t.pop(); - o = t.pop(); - t.push(o < c); - break; - case "mod": - c = t.pop(); - o = t.pop(); - t.push(o % c); - break; - case "mul": - c = t.pop(); - o = t.pop(); - t.push(o * c); - break; - case "ne": - c = t.pop(); - o = t.pop(); - t.push(o !== c); - break; - case "neg": - o = t.pop(); - t.push(-o); - break; - case "not": - o = t.pop(); - "boolean" == typeof o ? t.push(!o) : t.push(~o); - break; - case "or": - c = t.pop(); - o = t.pop(); - "boolean" == typeof o && "boolean" == typeof c - ? t.push(o || c) - : t.push(o | c); - break; - case "pop": - t.pop(); - break; - case "roll": - c = t.pop(); - o = t.pop(); - t.roll(o, c); - break; - case "round": - o = t.pop(); - t.push(Math.round(o)); - break; - case "sin": - o = t.pop(); - t.push(Math.sin(((o % 360) / 180) * Math.PI)); - break; - case "sqrt": - o = t.pop(); - t.push(Math.sqrt(o)); - break; - case "sub": - c = t.pop(); - o = t.pop(); - t.push(o - c); - break; - case "true": - t.push(!0); - break; - case "truncate": - o = t.pop(); - o = o < 0 ? Math.ceil(o) : Math.floor(o); - t.push(o); - break; - case "xor": - c = t.pop(); - o = t.pop(); - "boolean" == typeof o && "boolean" == typeof c - ? t.push(o !== c) - : t.push(o ^ c); - break; - default: - throw new n.FormatError(`Unknown operator ${s}`); - } - else t.push(s); - } - return t.stack; - } - } - t.PostScriptEvaluator = PostScriptEvaluator; - class AstNode { - constructor(e) { - this.type = e; - } - visit(e) { - (0, n.unreachable)("abstract method"); - } - } - class AstArgument extends AstNode { - constructor(e, t, a) { - super("args"); - this.index = e; - this.min = t; - this.max = a; - } - visit(e) { - e.visitArgument(this); - } - } - class AstLiteral extends AstNode { - constructor(e) { - super("literal"); - this.number = e; - this.min = e; - this.max = e; - } - visit(e) { - e.visitLiteral(this); - } - } - class AstBinaryOperation extends AstNode { - constructor(e, t, a, r, n) { - super("binary"); - this.op = e; - this.arg1 = t; - this.arg2 = a; - this.min = r; - this.max = n; - } - visit(e) { - e.visitBinaryOperation(this); - } - } - class AstMin extends AstNode { - constructor(e, t) { - super("max"); - this.arg = e; - this.min = e.min; - this.max = t; - } - visit(e) { - e.visitMin(this); - } - } - class AstVariable extends AstNode { - constructor(e, t, a) { - super("var"); - this.index = e; - this.min = t; - this.max = a; - } - visit(e) { - e.visitVariable(this); - } - } - class AstVariableDefinition extends AstNode { - constructor(e, t) { - super("definition"); - this.variable = e; - this.arg = t; - } - visit(e) { - e.visitVariableDefinition(this); - } - } - class ExpressionBuilderVisitor { - constructor() { - this.parts = []; - } - visitArgument(e) { - this.parts.push( - "Math.max(", - e.min, - ", Math.min(", - e.max, - ", src[srcOffset + ", - e.index, - "]))", - ); - } - visitVariable(e) { - this.parts.push("v", e.index); - } - visitLiteral(e) { - this.parts.push(e.number); - } - visitBinaryOperation(e) { - this.parts.push("("); - e.arg1.visit(this); - this.parts.push(" ", e.op, " "); - e.arg2.visit(this); - this.parts.push(")"); - } - visitVariableDefinition(e) { - this.parts.push("var "); - e.variable.visit(this); - this.parts.push(" = "); - e.arg.visit(this); - this.parts.push(";"); - } - visitMin(e) { - this.parts.push("Math.min("); - e.arg.visit(this); - this.parts.push(", ", e.max, ")"); - } - toString() { - return this.parts.join(""); - } - } - function buildAddOperation(e, t) { - return "literal" === t.type && 0 === t.number - ? e - : "literal" === e.type && 0 === e.number - ? t - : "literal" === t.type && "literal" === e.type - ? new AstLiteral(e.number + t.number) - : new AstBinaryOperation( - "+", - e, - t, - e.min + t.min, - e.max + t.max, - ); - } - function buildMulOperation(e, t) { - if ("literal" === t.type) { - if (0 === t.number) return new AstLiteral(0); - if (1 === t.number) return e; - if ("literal" === e.type) - return new AstLiteral(e.number * t.number); - } - if ("literal" === e.type) { - if (0 === e.number) return new AstLiteral(0); - if (1 === e.number) return t; - } - const a = Math.min( - e.min * t.min, - e.min * t.max, - e.max * t.min, - e.max * t.max, - ), - r = Math.max( - e.min * t.min, - e.min * t.max, - e.max * t.min, - e.max * t.max, - ); - return new AstBinaryOperation("*", e, t, a, r); - } - function buildSubOperation(e, t) { - if ("literal" === t.type) { - if (0 === t.number) return e; - if ("literal" === e.type) - return new AstLiteral(e.number - t.number); - } - return "binary" === t.type && - "-" === t.op && - "literal" === e.type && - 1 === e.number && - "literal" === t.arg1.type && - 1 === t.arg1.number - ? t.arg2 - : new AstBinaryOperation("-", e, t, e.min - t.max, e.max - t.min); - } - function buildMinOperation(e, t) { - return e.min >= t - ? new AstLiteral(t) - : e.max <= t - ? e - : new AstMin(e, t); - } - class PostScriptCompiler { - compile(e, t, a) { - const r = [], - n = [], - i = t.length >> 1, - s = a.length >> 1; - let o, - c, - l, - h, - u, - d, - f, - g, - p = 0; - for (let e = 0; e < i; e++) - r.push(new AstArgument(e, t[2 * e], t[2 * e + 1])); - for (let t = 0, a = e.length; t < a; t++) { - g = e[t]; - if ("number" != typeof g) - switch (g) { - case "add": - if (r.length < 2) return null; - h = r.pop(); - l = r.pop(); - r.push(buildAddOperation(l, h)); - break; - case "cvr": - if (r.length < 1) return null; - break; - case "mul": - if (r.length < 2) return null; - h = r.pop(); - l = r.pop(); - r.push(buildMulOperation(l, h)); - break; - case "sub": - if (r.length < 2) return null; - h = r.pop(); - l = r.pop(); - r.push(buildSubOperation(l, h)); - break; - case "exch": - if (r.length < 2) return null; - u = r.pop(); - d = r.pop(); - r.push(u, d); - break; - case "pop": - if (r.length < 1) return null; - r.pop(); - break; - case "index": - if (r.length < 1) return null; - l = r.pop(); - if ("literal" !== l.type) return null; - o = l.number; - if (o < 0 || !Number.isInteger(o) || r.length < o) - return null; - u = r[r.length - o - 1]; - if ("literal" === u.type || "var" === u.type) { - r.push(u); - break; - } - f = new AstVariable(p++, u.min, u.max); - r[r.length - o - 1] = f; - r.push(f); - n.push(new AstVariableDefinition(f, u)); - break; - case "dup": - if (r.length < 1) return null; - if ( - "number" == typeof e[t + 1] && - "gt" === e[t + 2] && - e[t + 3] === t + 7 && - "jz" === e[t + 4] && - "pop" === e[t + 5] && - e[t + 6] === e[t + 1] - ) { - l = r.pop(); - r.push(buildMinOperation(l, e[t + 1])); - t += 6; - break; - } - u = r.at(-1); - if ("literal" === u.type || "var" === u.type) { - r.push(u); - break; - } - f = new AstVariable(p++, u.min, u.max); - r[r.length - 1] = f; - r.push(f); - n.push(new AstVariableDefinition(f, u)); - break; - case "roll": - if (r.length < 2) return null; - h = r.pop(); - l = r.pop(); - if ("literal" !== h.type || "literal" !== l.type) - return null; - c = h.number; - o = l.number; - if ( - o <= 0 || - !Number.isInteger(o) || - !Number.isInteger(c) || - r.length < o - ) - return null; - c = ((c % o) + o) % o; - if (0 === c) break; - r.push(...r.splice(r.length - o, o - c)); - break; - default: - return null; - } - else r.push(new AstLiteral(g)); - } - if (r.length !== s) return null; - const m = []; - for (const e of n) { - const t = new ExpressionBuilderVisitor(); - e.visit(t); - m.push(t.toString()); - } - for (let e = 0, t = r.length; e < t; e++) { - const t = r[e], - n = new ExpressionBuilderVisitor(); - t.visit(n); - const i = a[2 * e], - s = a[2 * e + 1], - o = [n.toString()]; - if (i > t.min) { - o.unshift("Math.max(", i, ", "); - o.push(")"); - } - if (s < t.max) { - o.unshift("Math.min(", s, ", "); - o.push(")"); - } - o.unshift("dest[destOffset + ", e, "] = "); - o.push(";"); - m.push(o.join("")); - } - return m.join("\n"); - } - } - t.PostScriptCompiler = PostScriptCompiler; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.PostScriptParser = t.PostScriptLexer = void 0; - var r = a(2), - n = a(4), - i = a(3); - t.PostScriptParser = class PostScriptParser { - constructor(e) { - this.lexer = e; - this.operators = []; - this.token = null; - this.prev = null; - } - nextToken() { - this.prev = this.token; - this.token = this.lexer.getToken(); - } - accept(e) { - if (this.token.type === e) { - this.nextToken(); - return !0; - } - return !1; - } - expect(e) { - if (this.accept(e)) return !0; - throw new r.FormatError( - `Unexpected symbol: found ${this.token.type} expected ${e}.`, - ); - } - parse() { - this.nextToken(); - this.expect(s.LBRACE); - this.parseBlock(); - this.expect(s.RBRACE); - return this.operators; - } - parseBlock() { - for (;;) - if (this.accept(s.NUMBER)) this.operators.push(this.prev.value); - else if (this.accept(s.OPERATOR)) - this.operators.push(this.prev.value); - else { - if (!this.accept(s.LBRACE)) return; - this.parseCondition(); - } - } - parseCondition() { - const e = this.operators.length; - this.operators.push(null, null); - this.parseBlock(); - this.expect(s.RBRACE); - if (this.accept(s.IF)) { - this.operators[e] = this.operators.length; - this.operators[e + 1] = "jz"; - } else { - if (!this.accept(s.LBRACE)) - throw new r.FormatError( - "PS Function: error parsing conditional.", - ); - { - const t = this.operators.length; - this.operators.push(null, null); - const a = this.operators.length; - this.parseBlock(); - this.expect(s.RBRACE); - this.expect(s.IFELSE); - this.operators[t] = this.operators.length; - this.operators[t + 1] = "j"; - this.operators[e] = a; - this.operators[e + 1] = "jz"; - } - } - } - }; - const s = { - LBRACE: 0, - RBRACE: 1, - NUMBER: 2, - OPERATOR: 3, - IF: 4, - IFELSE: 5, - }; - class PostScriptToken { - static get opCache() { - return (0, r.shadow)(this, "opCache", Object.create(null)); - } - constructor(e, t) { - this.type = e; - this.value = t; - } - static getOperator(e) { - return (PostScriptToken.opCache[e] ||= new PostScriptToken( - s.OPERATOR, - e, - )); - } - static get LBRACE() { - return (0, r.shadow)( - this, - "LBRACE", - new PostScriptToken(s.LBRACE, "{"), - ); - } - static get RBRACE() { - return (0, r.shadow)( - this, - "RBRACE", - new PostScriptToken(s.RBRACE, "}"), - ); - } - static get IF() { - return (0, r.shadow)(this, "IF", new PostScriptToken(s.IF, "IF")); - } - static get IFELSE() { - return (0, r.shadow)( - this, - "IFELSE", - new PostScriptToken(s.IFELSE, "IFELSE"), - ); - } - } - t.PostScriptLexer = class PostScriptLexer { - constructor(e) { - this.stream = e; - this.nextChar(); - this.strBuf = []; - } - nextChar() { - return (this.currentChar = this.stream.getByte()); - } - getToken() { - let e = !1, - t = this.currentChar; - for (;;) { - if (t < 0) return n.EOF; - if (e) (10 !== t && 13 !== t) || (e = !1); - else if (37 === t) e = !0; - else if (!(0, i.isWhiteSpace)(t)) break; - t = this.nextChar(); - } - switch (0 | t) { - case 48: - case 49: - case 50: - case 51: - case 52: - case 53: - case 54: - case 55: - case 56: - case 57: - case 43: - case 45: - case 46: - return new PostScriptToken(s.NUMBER, this.getNumber()); - case 123: - this.nextChar(); - return PostScriptToken.LBRACE; - case 125: - this.nextChar(); - return PostScriptToken.RBRACE; - } - const a = this.strBuf; - a.length = 0; - a[0] = String.fromCharCode(t); - for ( - ; - (t = this.nextChar()) >= 0 && - ((t >= 65 && t <= 90) || (t >= 97 && t <= 122)); - - ) - a.push(String.fromCharCode(t)); - const r = a.join(""); - switch (r.toLowerCase()) { - case "if": - return PostScriptToken.IF; - case "ifelse": - return PostScriptToken.IFELSE; - default: - return PostScriptToken.getOperator(r); - } - } - getNumber() { - let e = this.currentChar; - const t = this.strBuf; - t.length = 0; - t[0] = String.fromCharCode(e); - for ( - ; - (e = this.nextChar()) >= 0 && - ((e >= 48 && e <= 57) || 45 === e || 46 === e); - - ) - t.push(String.fromCharCode(e)); - const a = parseFloat(t.join("")); - if (isNaN(a)) - throw new r.FormatError(`Invalid floating point number: ${a}`); - return a; - } - }; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.RegionalImageCache = - t.LocalTilingPatternCache = - t.LocalImageCache = - t.LocalGStateCache = - t.LocalFunctionCache = - t.LocalColorSpaceCache = - t.GlobalImageCache = - void 0; - var r = a(2), - n = a(4); - class BaseLocalCache { - constructor(e) { - this.constructor === BaseLocalCache && - (0, r.unreachable)("Cannot initialize BaseLocalCache."); - this._onlyRefs = !0 === e?.onlyRefs; - if (!this._onlyRefs) { - this._nameRefMap = new Map(); - this._imageMap = new Map(); - } - this._imageCache = new n.RefSetCache(); - } - getByName(e) { - this._onlyRefs && - (0, r.unreachable)("Should not call `getByName` method."); - const t = this._nameRefMap.get(e); - return t ? this.getByRef(t) : this._imageMap.get(e) || null; - } - getByRef(e) { - return this._imageCache.get(e) || null; - } - set(e, t, a) { - (0, r.unreachable)("Abstract method `set` called."); - } - } - t.LocalImageCache = class LocalImageCache extends BaseLocalCache { - set(e, t = null, a) { - if ("string" != typeof e) - throw new Error( - 'LocalImageCache.set - expected "name" argument.', - ); - if (t) { - if (this._imageCache.has(t)) return; - this._nameRefMap.set(e, t); - this._imageCache.put(t, a); - } else this._imageMap.has(e) || this._imageMap.set(e, a); - } - }; - t.LocalColorSpaceCache = class LocalColorSpaceCache extends ( - BaseLocalCache - ) { - set(e = null, t = null, a) { - if ("string" != typeof e && !t) - throw new Error( - 'LocalColorSpaceCache.set - expected "name" and/or "ref" argument.', - ); - if (t) { - if (this._imageCache.has(t)) return; - null !== e && this._nameRefMap.set(e, t); - this._imageCache.put(t, a); - } else this._imageMap.has(e) || this._imageMap.set(e, a); - } - }; - t.LocalFunctionCache = class LocalFunctionCache extends ( - BaseLocalCache - ) { - constructor(e) { - super({ onlyRefs: !0 }); - } - set(e = null, t, a) { - if (!t) - throw new Error( - 'LocalFunctionCache.set - expected "ref" argument.', - ); - this._imageCache.has(t) || this._imageCache.put(t, a); - } - }; - t.LocalGStateCache = class LocalGStateCache extends BaseLocalCache { - set(e, t = null, a) { - if ("string" != typeof e) - throw new Error( - 'LocalGStateCache.set - expected "name" argument.', - ); - if (t) { - if (this._imageCache.has(t)) return; - this._nameRefMap.set(e, t); - this._imageCache.put(t, a); - } else this._imageMap.has(e) || this._imageMap.set(e, a); - } - }; - t.LocalTilingPatternCache = class LocalTilingPatternCache extends ( - BaseLocalCache - ) { - constructor(e) { - super({ onlyRefs: !0 }); - } - set(e = null, t, a) { - if (!t) - throw new Error( - 'LocalTilingPatternCache.set - expected "ref" argument.', - ); - this._imageCache.has(t) || this._imageCache.put(t, a); - } - }; - t.RegionalImageCache = class RegionalImageCache extends ( - BaseLocalCache - ) { - constructor(e) { - super({ onlyRefs: !0 }); - } - set(e = null, t, a) { - if (!t) - throw new Error( - 'RegionalImageCache.set - expected "ref" argument.', - ); - this._imageCache.has(t) || this._imageCache.put(t, a); - } - }; - class GlobalImageCache { - static NUM_PAGES_THRESHOLD = 2; - static MIN_IMAGES_TO_CACHE = 10; - static MAX_BYTE_SIZE = 5 * r.MAX_IMAGE_SIZE_TO_CACHE; - constructor() { - this._refCache = new n.RefSetCache(); - this._imageCache = new n.RefSetCache(); - } - get _byteSize() { - let e = 0; - for (const t of this._imageCache) e += t.byteSize; - return e; - } - get _cacheLimitReached() { - return ( - !( - this._imageCache.size < GlobalImageCache.MIN_IMAGES_TO_CACHE - ) && !(this._byteSize < GlobalImageCache.MAX_BYTE_SIZE) - ); - } - shouldCache(e, t) { - let a = this._refCache.get(e); - if (!a) { - a = new Set(); - this._refCache.put(e, a); - } - a.add(t); - return ( - !(a.size < GlobalImageCache.NUM_PAGES_THRESHOLD) && - !(!this._imageCache.has(e) && this._cacheLimitReached) - ); - } - addByteSize(e, t) { - const a = this._imageCache.get(e); - a && (a.byteSize || (a.byteSize = t)); - } - getData(e, t) { - const a = this._refCache.get(e); - if (!a) return null; - if (a.size < GlobalImageCache.NUM_PAGES_THRESHOLD) return null; - const r = this._imageCache.get(e); - if (!r) return null; - a.add(t); - return r; - } - setData(e, t) { - if (!this._refCache.has(e)) - throw new Error( - 'GlobalImageCache.setData - expected "shouldCache" to have been called.', - ); - this._imageCache.has(e) || - (this._cacheLimitReached - ? (0, r.warn)( - "GlobalImageCache.setData - cache limit reached.", - ) - : this._imageCache.put(e, t)); - } - clear(e = !1) { - e || this._refCache.clear(); - this._imageCache.clear(); - } - } - t.GlobalImageCache = GlobalImageCache; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.bidi = function bidi(e, t = -1, a = !1) { - let c = !0; - const l = e.length; - if (0 === l || a) return createBidiText(e, c, a); - s.length = l; - o.length = l; - let h, - u, - d = 0; - for (h = 0; h < l; ++h) { - s[h] = e.charAt(h); - const t = e.charCodeAt(h); - let a = "L"; - if (t <= 255) a = n[t]; - else if (1424 <= t && t <= 1524) a = "R"; - else if (1536 <= t && t <= 1791) { - a = i[255 & t]; - a || - (0, r.warn)( - "Bidi: invalid Unicode character " + t.toString(16), - ); - } else - ((1792 <= t && t <= 2220) || - (64336 <= t && t <= 65023) || - (65136 <= t && t <= 65279)) && - (a = "AL"); - ("R" !== a && "AL" !== a && "AN" !== a) || d++; - o[h] = a; - } - if (0 === d) { - c = !0; - return createBidiText(e, c); - } - if (-1 === t) - if (d / l < 0.3 && l > 4) { - c = !0; - t = 0; - } else { - c = !1; - t = 1; - } - const f = []; - for (h = 0; h < l; ++h) f[h] = t; - const g = isOdd(t) ? "R" : "L", - p = g, - m = p; - let b, - y = p; - for (h = 0; h < l; ++h) "NSM" === o[h] ? (o[h] = y) : (y = o[h]); - y = p; - for (h = 0; h < l; ++h) { - b = o[h]; - "EN" === b - ? (o[h] = "AL" === y ? "AN" : "EN") - : ("R" !== b && "L" !== b && "AL" !== b) || (y = b); - } - for (h = 0; h < l; ++h) { - b = o[h]; - "AL" === b && (o[h] = "R"); - } - for (h = 1; h < l - 1; ++h) { - "ES" === o[h] && - "EN" === o[h - 1] && - "EN" === o[h + 1] && - (o[h] = "EN"); - "CS" !== o[h] || - ("EN" !== o[h - 1] && "AN" !== o[h - 1]) || - o[h + 1] !== o[h - 1] || - (o[h] = o[h - 1]); - } - for (h = 0; h < l; ++h) - if ("EN" === o[h]) { - for (let e = h - 1; e >= 0 && "ET" === o[e]; --e) o[e] = "EN"; - for (let e = h + 1; e < l && "ET" === o[e]; ++e) o[e] = "EN"; - } - for (h = 0; h < l; ++h) { - b = o[h]; - ("WS" !== b && "ES" !== b && "ET" !== b && "CS" !== b) || - (o[h] = "ON"); - } - y = p; - for (h = 0; h < l; ++h) { - b = o[h]; - "EN" === b - ? (o[h] = "L" === y ? "L" : "EN") - : ("R" !== b && "L" !== b) || (y = b); - } - for (h = 0; h < l; ++h) - if ("ON" === o[h]) { - const e = findUnequal(o, h + 1, "ON"); - let t = p; - h > 0 && (t = o[h - 1]); - let a = m; - e + 1 < l && (a = o[e + 1]); - "L" !== t && (t = "R"); - "L" !== a && (a = "R"); - t === a && setValues(o, h, e, t); - h = e - 1; - } - for (h = 0; h < l; ++h) "ON" === o[h] && (o[h] = g); - for (h = 0; h < l; ++h) { - b = o[h]; - isEven(f[h]) - ? "R" === b - ? (f[h] += 1) - : ("AN" !== b && "EN" !== b) || (f[h] += 2) - : ("L" !== b && "AN" !== b && "EN" !== b) || (f[h] += 1); - } - let w, - S = -1, - x = 99; - for (h = 0, u = f.length; h < u; ++h) { - w = f[h]; - S < w && (S = w); - x > w && isOdd(w) && (x = w); - } - for (w = S; w >= x; --w) { - let e = -1; - for (h = 0, u = f.length; h < u; ++h) - if (f[h] < w) { - if (e >= 0) { - reverseValues(s, e, h); - e = -1; - } - } else e < 0 && (e = h); - e >= 0 && reverseValues(s, e, f.length); - } - for (h = 0, u = s.length; h < u; ++h) { - const e = s[h]; - ("<" !== e && ">" !== e) || (s[h] = ""); - } - return createBidiText(s.join(""), c); - }; - var r = a(2); - const n = [ - "BN", - "BN", - "BN", - "BN", - "BN", - "BN", - "BN", - "BN", - "BN", - "S", - "B", - "S", - "WS", - "B", - "BN", - "BN", - "BN", - "BN", - "BN", - "BN", - "BN", - "BN", - "BN", - "BN", - "BN", - "BN", - "BN", - "BN", - "B", - "B", - "B", - "S", - "WS", - "ON", - "ON", - "ET", - "ET", - "ET", - "ON", - "ON", - "ON", - "ON", - "ON", - "ES", - "CS", - "ES", - "CS", - "CS", - "EN", - "EN", - "EN", - "EN", - "EN", - "EN", - "EN", - "EN", - "EN", - "EN", - "CS", - "ON", - "ON", - "ON", - "ON", - "ON", - "ON", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "ON", - "ON", - "ON", - "ON", - "ON", - "ON", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "ON", - "ON", - "ON", - "ON", - "BN", - "BN", - "BN", - "BN", - "BN", - "BN", - "B", - "BN", - "BN", - "BN", - "BN", - "BN", - "BN", - "BN", - "BN", - "BN", - "BN", - "BN", - "BN", - "BN", - "BN", - "BN", - "BN", - "BN", - "BN", - "BN", - "BN", - "BN", - "BN", - "BN", - "BN", - "BN", - "BN", - "CS", - "ON", - "ET", - "ET", - "ET", - "ET", - "ON", - "ON", - "ON", - "ON", - "L", - "ON", - "ON", - "BN", - "ON", - "ON", - "ET", - "ET", - "EN", - "EN", - "ON", - "L", - "ON", - "ON", - "ON", - "EN", - "L", - "ON", - "ON", - "ON", - "ON", - "ON", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "ON", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "ON", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - "L", - ], - i = [ - "AN", - "AN", - "AN", - "AN", - "AN", - "AN", - "ON", - "ON", - "AL", - "ET", - "ET", - "AL", - "CS", - "AL", - "ON", - "ON", - "NSM", - "NSM", - "NSM", - "NSM", - "NSM", - "NSM", - "NSM", - "NSM", - "NSM", - "NSM", - "NSM", - "AL", - "AL", - "", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "NSM", - "NSM", - "NSM", - "NSM", - "NSM", - "NSM", - "NSM", - "NSM", - "NSM", - "NSM", - "NSM", - "NSM", - "NSM", - "NSM", - "NSM", - "NSM", - "NSM", - "NSM", - "NSM", - "NSM", - "NSM", - "AN", - "AN", - "AN", - "AN", - "AN", - "AN", - "AN", - "AN", - "AN", - "AN", - "ET", - "AN", - "AN", - "AL", - "AL", - "AL", - "NSM", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - "NSM", - "NSM", - "NSM", - "NSM", - "NSM", - "NSM", - "NSM", - "AN", - "ON", - "NSM", - "NSM", - "NSM", - "NSM", - "NSM", - "NSM", - "AL", - "AL", - "NSM", - "NSM", - "ON", - "NSM", - "NSM", - "NSM", - "NSM", - "AL", - "AL", - "EN", - "EN", - "EN", - "EN", - "EN", - "EN", - "EN", - "EN", - "EN", - "EN", - "AL", - "AL", - "AL", - "AL", - "AL", - "AL", - ]; - function isOdd(e) { - return 0 != (1 & e); - } - function isEven(e) { - return 0 == (1 & e); - } - function findUnequal(e, t, a) { - let r, n; - for (r = t, n = e.length; r < n; ++r) if (e[r] !== a) return r; - return r; - } - function setValues(e, t, a, r) { - for (let n = t; n < a; ++n) e[n] = r; - } - function reverseValues(e, t, a) { - for (let r = t, n = a - 1; r < n; ++r, --n) { - const t = e[r]; - e[r] = e[n]; - e[n] = t; - } - } - function createBidiText(e, t, a = !1) { - let r = "ltr"; - a ? (r = "ttb") : t || (r = "rtl"); - return { str: e, dir: r }; - } - const s = [], - o = []; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.getFontSubstitution = function getFontSubstitution(e, t, a, u, d) { - const f = (u = (0, r.normalizeFontName)(u)); - let g = e.get(f); - if (g) return g; - let p = l.get(u); - if (!p) - for (const [e, t] of h) - if (u.startsWith(e)) { - u = `${t}${u.substring(e.length)}`; - p = l.get(u); - break; - } - let m = !1; - if (!p) { - p = l.get(d); - m = !0; - } - const b = `${t.getDocId()}_s${t.createFontId()}`; - if (!p) { - if (!(0, n.validateFontName)(u)) { - e.set(f, null); - return null; - } - const t = /bold/gi.test(u), - a = /oblique|italic/gi.test(u); - g = { - css: b, - guessFallback: !0, - loadedName: b, - baseFontName: u, - src: `local(${u})`, - style: (t && a && c) || (t && s) || (a && o) || i, - }; - e.set(f, g); - return g; - } - const y = []; - m && (0, n.validateFontName)(u) && y.push(`local(${u})`); - const { style: w, ultimate: S } = generateFont(p, y, a), - x = null === S; - g = { - css: `${b}${x ? "" : `,${S}`}`, - guessFallback: x, - loadedName: b, - baseFontName: u, - src: y.join(","), - style: w, - }; - e.set(f, g); - return g; - }; - var r = a(38), - n = a(3); - const i = { style: "normal", weight: "normal" }, - s = { style: "normal", weight: "bold" }, - o = { style: "italic", weight: "normal" }, - c = { style: "italic", weight: "bold" }, - l = new Map([ - [ - "Times-Roman", - { - local: [ - "Times New Roman", - "Times-Roman", - "Times", - "Liberation Serif", - "Nimbus Roman", - "Nimbus Roman L", - "Tinos", - "Thorndale", - "TeX Gyre Termes", - "FreeSerif", - "DejaVu Serif", - "Bitstream Vera Serif", - "Ubuntu", - ], - style: i, - ultimate: "serif", - }, - ], - [ - "Times-Bold", - { alias: "Times-Roman", style: s, ultimate: "serif" }, - ], - [ - "Times-Italic", - { alias: "Times-Roman", style: o, ultimate: "serif" }, - ], - [ - "Times-BoldItalic", - { alias: "Times-Roman", style: c, ultimate: "serif" }, - ], - [ - "Helvetica", - { - local: [ - "Helvetica", - "Helvetica Neue", - "Arial", - "Arial Nova", - "Liberation Sans", - "Arimo", - "Nimbus Sans", - "Nimbus Sans L", - "A030", - "TeX Gyre Heros", - "FreeSans", - "DejaVu Sans", - "Albany", - "Bitstream Vera Sans", - "Arial Unicode MS", - "Microsoft Sans Serif", - "Apple Symbols", - "Cantarell", - ], - path: "LiberationSans-Regular.ttf", - style: i, - ultimate: "sans-serif", - }, - ], - [ - "Helvetica-Bold", - { - alias: "Helvetica", - path: "LiberationSans-Bold.ttf", - style: s, - ultimate: "sans-serif", - }, - ], - [ - "Helvetica-Oblique", - { - alias: "Helvetica", - path: "LiberationSans-Italic.ttf", - style: o, - ultimate: "sans-serif", - }, - ], - [ - "Helvetica-BoldOblique", - { - alias: "Helvetica", - path: "LiberationSans-BoldItalic.ttf", - style: c, - ultimate: "sans-serif", - }, - ], - [ - "Courier", - { - local: [ - "Courier", - "Courier New", - "Liberation Mono", - "Nimbus Mono", - "Nimbus Mono L", - "Cousine", - "Cumberland", - "TeX Gyre Cursor", - "FreeMono", - ], - style: i, - ultimate: "monospace", - }, - ], - [ - "Courier-Bold", - { alias: "Courier", style: s, ultimate: "monospace" }, - ], - [ - "Courier-Oblique", - { alias: "Courier", style: o, ultimate: "monospace" }, - ], - [ - "Courier-BoldOblique", - { alias: "Courier", style: c, ultimate: "monospace" }, - ], - [ - "ArialBlack", - { - local: ["Arial Black"], - style: { style: "normal", weight: "900" }, - fallback: "Helvetica-Bold", - }, - ], - ["ArialBlack-Bold", { alias: "ArialBlack" }], - [ - "ArialBlack-Italic", - { - alias: "ArialBlack", - style: { style: "italic", weight: "900" }, - fallback: "Helvetica-BoldOblique", - }, - ], - ["ArialBlack-BoldItalic", { alias: "ArialBlack-Italic" }], - [ - "ArialNarrow", - { - local: [ - "Arial Narrow", - "Liberation Sans Narrow", - "Helvetica Condensed", - "Nimbus Sans Narrow", - "TeX Gyre Heros Cn", - ], - style: i, - fallback: "Helvetica", - }, - ], - [ - "ArialNarrow-Bold", - { alias: "ArialNarrow", style: s, fallback: "Helvetica-Bold" }, - ], - [ - "ArialNarrow-Italic", - { - alias: "ArialNarrow", - style: o, - fallback: "Helvetica-Oblique", - }, - ], - [ - "ArialNarrow-BoldItalic", - { - alias: "ArialNarrow", - style: c, - fallback: "Helvetica-BoldOblique", - }, - ], - [ - "Calibri", - { - local: ["Calibri", "Carlito"], - style: i, - fallback: "Helvetica", - }, - ], - [ - "Calibri-Bold", - { alias: "Calibri", style: s, fallback: "Helvetica-Bold" }, - ], - [ - "Calibri-Italic", - { alias: "Calibri", style: o, fallback: "Helvetica-Oblique" }, - ], - [ - "Calibri-BoldItalic", - { - alias: "Calibri", - style: c, - fallback: "Helvetica-BoldOblique", - }, - ], - ["Wingdings", { local: ["Wingdings", "URW Dingbats"], style: i }], - ["Wingdings-Regular", { alias: "Wingdings" }], - ["Wingdings-Bold", { alias: "Wingdings" }], - ]), - h = new Map([["Arial-Black", "ArialBlack"]]); - function generateFont( - { alias: e, local: t, path: a, fallback: r, style: n, ultimate: i }, - h, - u, - d = !0, - f = !0, - g = "", - ) { - const p = { style: null, ultimate: null }; - if (t) { - const e = g ? ` ${g}` : ""; - for (const a of t) h.push(`local(${a}${e})`); - } - if (e) { - const t = l.get(e), - i = - g || - (function getStyleToAppend(e) { - switch (e) { - case s: - return "Bold"; - case o: - return "Italic"; - case c: - return "Bold Italic"; - default: - if ("bold" === e?.weight) return "Bold"; - if ("italic" === e?.style) return "Italic"; - } - return ""; - })(n); - Object.assign(p, generateFont(t, h, u, d && !r, f && !a, i)); - } - n && (p.style = n); - i && (p.ultimate = i); - if (d && r) { - const e = l.get(r), - { ultimate: t } = generateFont(e, h, u, d, f && !a, g); - p.ultimate ||= t; - } - f && a && u && h.push(`url(${u}${a})`); - return p; - } - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.ImageResizer = void 0; - var r = a(2); - class ImageResizer { - constructor(e, t) { - this._imgData = e; - this._isMask = t; - } - static needsToBeResized(e, t) { - if (e <= this._goodSquareLength && t <= this._goodSquareLength) - return !1; - const { MAX_DIM: a } = this; - if (e > a || t > a) return !0; - const r = e * t; - if (this._hasMaxArea) return r > this.MAX_AREA; - if (r < this._goodSquareLength ** 2) return !1; - if (this._areGoodDims(e, t)) { - this._goodSquareLength = Math.max( - this._goodSquareLength, - Math.floor(Math.sqrt(e * t)), - ); - return !1; - } - this._goodSquareLength = this._guessMax( - this._goodSquareLength, - a, - 128, - 0, - ); - return r > (this.MAX_AREA = this._goodSquareLength ** 2); - } - static get MAX_DIM() { - return (0, r.shadow)( - this, - "MAX_DIM", - this._guessMax(2048, 65537, 0, 1), - ); - } - static get MAX_AREA() { - this._hasMaxArea = !0; - return (0, r.shadow)( - this, - "MAX_AREA", - this._guessMax( - ImageResizer._goodSquareLength, - this.MAX_DIM, - 128, - 0, - ) ** 2, - ); - } - static set MAX_AREA(e) { - if (e >= 0) { - this._hasMaxArea = !0; - (0, r.shadow)(this, "MAX_AREA", e); - } - } - static setMaxArea(e) { - this._hasMaxArea || (this.MAX_AREA = e >> 2); - } - static _areGoodDims(e, t) { - try { - const a = new OffscreenCanvas(e, t), - r = a.getContext("2d"); - r.fillRect(0, 0, 1, 1); - const n = r.getImageData(0, 0, 1, 1).data[3]; - a.width = a.height = 1; - return 0 !== n; - } catch { - return !1; - } - } - static _guessMax(e, t, a, r) { - for (; e + a + 1 < t; ) { - const a = Math.floor((e + t) / 2), - n = r || a; - this._areGoodDims(a, n) ? (e = a) : (t = a); - } - return e; - } - static async createImage(e, t = !1) { - return new ImageResizer(e, t)._createImage(); - } - async _createImage() { - const e = this._encodeBMP(), - t = new Blob([e.buffer], { type: "image/bmp" }), - a = createImageBitmap(t), - { MAX_AREA: r, MAX_DIM: n } = ImageResizer, - { _imgData: i } = this, - { width: s, height: o } = i, - c = Math.max(s / n, o / n, Math.sqrt((s * o) / r)), - l = Math.max(c, 2), - h = Math.round(10 * (c + 1.25)) / 10 / l, - u = Math.floor(Math.log2(h)), - d = new Array(u + 2).fill(2); - d[0] = l; - d.splice(-1, 1, h / (1 << u)); - let f = s, - g = o, - p = await a; - for (const e of d) { - const t = f, - a = g; - f = Math.floor(f / e) - 1; - g = Math.floor(g / e) - 1; - const r = new OffscreenCanvas(f, g); - r.getContext("2d").drawImage(p, 0, 0, t, a, 0, 0, f, g); - p = r.transferToImageBitmap(); - } - i.data = null; - i.bitmap = p; - i.width = f; - i.height = g; - return i; - } - _encodeBMP() { - const { width: e, height: t, kind: a } = this._imgData; - let n, - i = this._imgData.data, - s = new Uint8Array(0), - o = s, - c = 0; - switch (a) { - case r.ImageKind.GRAYSCALE_1BPP: { - n = 1; - s = new Uint8Array( - this._isMask - ? [255, 255, 255, 255, 0, 0, 0, 0] - : [0, 0, 0, 0, 255, 255, 255, 255], - ); - const a = (e + 7) >> 3, - r = (a + 3) & -4; - if (a !== r) { - const e = new Uint8Array(r * t); - let n = 0; - for (let s = 0, o = t * a; s < o; s += a, n += r) - e.set(i.subarray(s, s + a), n); - i = e; - } - break; - } - case r.ImageKind.RGB_24BPP: - n = 24; - if (3 & e) { - const a = 3 * e, - r = (a + 3) & -4, - n = r - a, - s = new Uint8Array(r * t); - let o = 0; - for (let e = 0, r = t * a; e < r; e += a) { - const t = i.subarray(e, e + a); - for (let e = 0; e < a; e += 3) { - s[o++] = t[e + 2]; - s[o++] = t[e + 1]; - s[o++] = t[e]; - } - o += n; - } - i = s; - } else - for (let e = 0, t = i.length; e < t; e += 3) { - const t = i[e]; - i[e] = i[e + 2]; - i[e + 2] = t; - } - break; - case r.ImageKind.RGBA_32BPP: - n = 32; - c = 3; - o = new Uint8Array(68); - const a = new DataView(o.buffer); - if (r.FeatureTest.isLittleEndian) { - a.setUint32(0, 255, !0); - a.setUint32(4, 65280, !0); - a.setUint32(8, 16711680, !0); - a.setUint32(12, 4278190080, !0); - } else { - a.setUint32(0, 4278190080, !0); - a.setUint32(4, 16711680, !0); - a.setUint32(8, 65280, !0); - a.setUint32(12, 255, !0); - } - break; - default: - throw new Error("invalid format"); - } - let l = 0; - const h = 40 + o.length, - u = 14 + h + s.length + i.length, - d = new Uint8Array(u), - f = new DataView(d.buffer); - f.setUint16(l, 19778, !0); - l += 2; - f.setUint32(l, u, !0); - l += 4; - f.setUint32(l, 0, !0); - l += 4; - f.setUint32(l, 14 + h + s.length, !0); - l += 4; - f.setUint32(l, h, !0); - l += 4; - f.setInt32(l, e, !0); - l += 4; - f.setInt32(l, -t, !0); - l += 4; - f.setUint16(l, 1, !0); - l += 2; - f.setUint16(l, n, !0); - l += 2; - f.setUint32(l, c, !0); - l += 4; - f.setUint32(l, 0, !0); - l += 4; - f.setInt32(l, 0, !0); - l += 4; - f.setInt32(l, 0, !0); - l += 4; - f.setUint32(l, s.length / 4, !0); - l += 4; - f.setUint32(l, 0, !0); - l += 4; - d.set(o, l); - l += o.length; - d.set(s, l); - l += s.length; - d.set(i, l); - return d; - } - } - t.ImageResizer = ImageResizer; - ImageResizer._goodSquareLength = 2048; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.MurmurHash3_64 = void 0; - var r = a(2); - const n = 3285377520, - i = 4294901760, - s = 65535; - t.MurmurHash3_64 = class MurmurHash3_64 { - constructor(e) { - this.h1 = e ? 4294967295 & e : n; - this.h2 = e ? 4294967295 & e : n; - } - update(e) { - let t, a; - if ("string" == typeof e) { - t = new Uint8Array(2 * e.length); - a = 0; - for (let r = 0, n = e.length; r < n; r++) { - const n = e.charCodeAt(r); - if (n <= 255) t[a++] = n; - else { - t[a++] = n >>> 8; - t[a++] = 255 & n; - } - } - } else { - if (!(0, r.isArrayBuffer)(e)) - throw new Error( - "Wrong data format in MurmurHash3_64_update. Input must be a string or array.", - ); - t = e.slice(); - a = t.byteLength; - } - const n = a >> 2, - o = a - 4 * n, - c = new Uint32Array(t.buffer, 0, n); - let l = 0, - h = 0, - u = this.h1, - d = this.h2; - const f = 3432918353, - g = 461845907, - p = 11601, - m = 13715; - for (let e = 0; e < n; e++) - if (1 & e) { - l = c[e]; - l = ((l * f) & i) | ((l * p) & s); - l = (l << 15) | (l >>> 17); - l = ((l * g) & i) | ((l * m) & s); - u ^= l; - u = (u << 13) | (u >>> 19); - u = 5 * u + 3864292196; - } else { - h = c[e]; - h = ((h * f) & i) | ((h * p) & s); - h = (h << 15) | (h >>> 17); - h = ((h * g) & i) | ((h * m) & s); - d ^= h; - d = (d << 13) | (d >>> 19); - d = 5 * d + 3864292196; - } - l = 0; - switch (o) { - case 3: - l ^= t[4 * n + 2] << 16; - case 2: - l ^= t[4 * n + 1] << 8; - case 1: - l ^= t[4 * n]; - l = ((l * f) & i) | ((l * p) & s); - l = (l << 15) | (l >>> 17); - l = ((l * g) & i) | ((l * m) & s); - 1 & n ? (u ^= l) : (d ^= l); - } - this.h1 = u; - this.h2 = d; - } - hexdigest() { - let e = this.h1, - t = this.h2; - e ^= t >>> 1; - e = ((3981806797 * e) & i) | ((36045 * e) & s); - t = - ((4283543511 * t) & i) | - (((2950163797 * ((t << 16) | (e >>> 16))) & i) >>> 16); - e ^= t >>> 1; - e = ((444984403 * e) & i) | ((60499 * e) & s); - t = - ((3301882366 * t) & i) | - (((3120437893 * ((t << 16) | (e >>> 16))) & i) >>> 16); - e ^= t >>> 1; - return ( - (e >>> 0).toString(16).padStart(8, "0") + - (t >>> 0).toString(16).padStart(8, "0") - ); - } - }; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.OperatorList = void 0; - var r = a(2); - function addState(e, t, a, r, n) { - let i = e; - for (let e = 0, a = t.length - 1; e < a; e++) { - const a = t[e]; - i = i[a] ||= []; - } - i[t.at(-1)] = { checkFn: a, iterateFn: r, processFn: n }; - } - const n = []; - addState( - n, - [ - r.OPS.save, - r.OPS.transform, - r.OPS.paintInlineImageXObject, - r.OPS.restore, - ], - null, - function iterateInlineImageGroup(e, t) { - const a = e.fnArray, - n = (t - (e.iCurr - 3)) % 4; - switch (n) { - case 0: - return a[t] === r.OPS.save; - case 1: - return a[t] === r.OPS.transform; - case 2: - return a[t] === r.OPS.paintInlineImageXObject; - case 3: - return a[t] === r.OPS.restore; - } - throw new Error(`iterateInlineImageGroup - invalid pos: ${n}`); - }, - function foundInlineImageGroup(e, t) { - const a = e.fnArray, - n = e.argsArray, - i = e.iCurr, - s = i - 3, - o = i - 2, - c = i - 1, - l = Math.min(Math.floor((t - s) / 4), 200); - if (l < 10) return t - ((t - s) % 4); - let h = 0; - const u = []; - let d = 0, - f = 1, - g = 1; - for (let e = 0; e < l; e++) { - const t = n[o + (e << 2)], - a = n[c + (e << 2)][0]; - if (f + a.width > 1e3) { - h = Math.max(h, f); - g += d + 2; - f = 0; - d = 0; - } - u.push({ transform: t, x: f, y: g, w: a.width, h: a.height }); - f += a.width + 2; - d = Math.max(d, a.height); - } - const p = Math.max(h, f) + 1, - m = g + d + 1, - b = new Uint8Array(p * m * 4), - y = p << 2; - for (let e = 0; e < l; e++) { - const t = n[c + (e << 2)][0].data, - a = u[e].w << 2; - let r = 0, - i = (u[e].x + u[e].y * p) << 2; - b.set(t.subarray(0, a), i - y); - for (let n = 0, s = u[e].h; n < s; n++) { - b.set(t.subarray(r, r + a), i); - r += a; - i += y; - } - b.set(t.subarray(r - a, r), i); - for (; i >= 0; ) { - t[i - 4] = t[i]; - t[i - 3] = t[i + 1]; - t[i - 2] = t[i + 2]; - t[i - 1] = t[i + 3]; - t[i + a] = t[i + a - 4]; - t[i + a + 1] = t[i + a - 3]; - t[i + a + 2] = t[i + a - 2]; - t[i + a + 3] = t[i + a - 1]; - i -= y; - } - } - const w = { width: p, height: m }; - if (e.isOffscreenCanvasSupported) { - const e = new OffscreenCanvas(p, m); - e.getContext("2d").putImageData( - new ImageData(new Uint8ClampedArray(b.buffer), p, m), - 0, - 0, - ); - w.bitmap = e.transferToImageBitmap(); - w.data = null; - } else { - w.kind = r.ImageKind.RGBA_32BPP; - w.data = b; - } - a.splice(s, 4 * l, r.OPS.paintInlineImageXObjectGroup); - n.splice(s, 4 * l, [w, u]); - return s + 1; - }, - ); - addState( - n, - [ - r.OPS.save, - r.OPS.transform, - r.OPS.paintImageMaskXObject, - r.OPS.restore, - ], - null, - function iterateImageMaskGroup(e, t) { - const a = e.fnArray, - n = (t - (e.iCurr - 3)) % 4; - switch (n) { - case 0: - return a[t] === r.OPS.save; - case 1: - return a[t] === r.OPS.transform; - case 2: - return a[t] === r.OPS.paintImageMaskXObject; - case 3: - return a[t] === r.OPS.restore; - } - throw new Error(`iterateImageMaskGroup - invalid pos: ${n}`); - }, - function foundImageMaskGroup(e, t) { - const a = e.fnArray, - n = e.argsArray, - i = e.iCurr, - s = i - 3, - o = i - 2, - c = i - 1; - let l = Math.floor((t - s) / 4); - if (l < 10) return t - ((t - s) % 4); - let h, - u, - d = !1; - const f = n[c][0], - g = n[o][0], - p = n[o][1], - m = n[o][2], - b = n[o][3]; - if (p === m) { - d = !0; - h = o + 4; - let e = c + 4; - for (let t = 1; t < l; t++, h += 4, e += 4) { - u = n[h]; - if ( - n[e][0] !== f || - u[0] !== g || - u[1] !== p || - u[2] !== m || - u[3] !== b - ) { - t < 10 ? (d = !1) : (l = t); - break; - } - } - } - if (d) { - l = Math.min(l, 1e3); - const e = new Float32Array(2 * l); - h = o; - for (let t = 0; t < l; t++, h += 4) { - u = n[h]; - e[t << 1] = u[4]; - e[1 + (t << 1)] = u[5]; - } - a.splice(s, 4 * l, r.OPS.paintImageMaskXObjectRepeat); - n.splice(s, 4 * l, [f, g, p, m, b, e]); - } else { - l = Math.min(l, 100); - const e = []; - for (let t = 0; t < l; t++) { - u = n[o + (t << 2)]; - const a = n[c + (t << 2)][0]; - e.push({ - data: a.data, - width: a.width, - height: a.height, - interpolate: a.interpolate, - count: a.count, - transform: u, - }); - } - a.splice(s, 4 * l, r.OPS.paintImageMaskXObjectGroup); - n.splice(s, 4 * l, [e]); - } - return s + 1; - }, - ); - addState( - n, - [ - r.OPS.save, - r.OPS.transform, - r.OPS.paintImageXObject, - r.OPS.restore, - ], - function (e) { - const t = e.argsArray, - a = e.iCurr - 2; - return 0 === t[a][1] && 0 === t[a][2]; - }, - function iterateImageGroup(e, t) { - const a = e.fnArray, - n = e.argsArray, - i = (t - (e.iCurr - 3)) % 4; - switch (i) { - case 0: - return a[t] === r.OPS.save; - case 1: - if (a[t] !== r.OPS.transform) return !1; - const i = e.iCurr - 2, - s = n[i][0], - o = n[i][3]; - return ( - n[t][0] === s && - 0 === n[t][1] && - 0 === n[t][2] && - n[t][3] === o - ); - case 2: - if (a[t] !== r.OPS.paintImageXObject) return !1; - const c = n[e.iCurr - 1][0]; - return n[t][0] === c; - case 3: - return a[t] === r.OPS.restore; - } - throw new Error(`iterateImageGroup - invalid pos: ${i}`); - }, - function (e, t) { - const a = e.fnArray, - n = e.argsArray, - i = e.iCurr, - s = i - 3, - o = i - 2, - c = n[i - 1][0], - l = n[o][0], - h = n[o][3], - u = Math.min(Math.floor((t - s) / 4), 1e3); - if (u < 3) return t - ((t - s) % 4); - const d = new Float32Array(2 * u); - let f = o; - for (let e = 0; e < u; e++, f += 4) { - const t = n[f]; - d[e << 1] = t[4]; - d[1 + (e << 1)] = t[5]; - } - const g = [c, l, h, d]; - a.splice(s, 4 * u, r.OPS.paintImageXObjectRepeat); - n.splice(s, 4 * u, g); - return s + 1; - }, - ); - addState( - n, - [ - r.OPS.beginText, - r.OPS.setFont, - r.OPS.setTextMatrix, - r.OPS.showText, - r.OPS.endText, - ], - null, - function iterateShowTextGroup(e, t) { - const a = e.fnArray, - n = e.argsArray, - i = (t - (e.iCurr - 4)) % 5; - switch (i) { - case 0: - return a[t] === r.OPS.beginText; - case 1: - return a[t] === r.OPS.setFont; - case 2: - return a[t] === r.OPS.setTextMatrix; - case 3: - if (a[t] !== r.OPS.showText) return !1; - const i = e.iCurr - 3, - s = n[i][0], - o = n[i][1]; - return n[t][0] === s && n[t][1] === o; - case 4: - return a[t] === r.OPS.endText; - } - throw new Error(`iterateShowTextGroup - invalid pos: ${i}`); - }, - function (e, t) { - const a = e.fnArray, - r = e.argsArray, - n = e.iCurr, - i = n - 4, - s = n - 3, - o = n - 2, - c = n - 1, - l = n, - h = r[s][0], - u = r[s][1]; - let d = Math.min(Math.floor((t - i) / 5), 1e3); - if (d < 3) return t - ((t - i) % 5); - let f = i; - if ( - i >= 4 && - a[i - 4] === a[s] && - a[i - 3] === a[o] && - a[i - 2] === a[c] && - a[i - 1] === a[l] && - r[i - 4][0] === h && - r[i - 4][1] === u - ) { - d++; - f -= 5; - } - let g = f + 4; - for (let e = 1; e < d; e++) { - a.splice(g, 3); - r.splice(g, 3); - g += 2; - } - return g + 1; - }, - ); - class NullOptimizer { - constructor(e) { - this.queue = e; - } - _optimize() {} - push(e, t) { - this.queue.fnArray.push(e); - this.queue.argsArray.push(t); - this._optimize(); - } - flush() {} - reset() {} - } - class QueueOptimizer extends NullOptimizer { - constructor(e) { - super(e); - this.state = null; - this.context = { - iCurr: 0, - fnArray: e.fnArray, - argsArray: e.argsArray, - isOffscreenCanvasSupported: !1, - }; - this.match = null; - this.lastProcessed = 0; - } - set isOffscreenCanvasSupported(e) { - this.context.isOffscreenCanvasSupported = e; - } - _optimize() { - const e = this.queue.fnArray; - let t = this.lastProcessed, - a = e.length, - r = this.state, - i = this.match; - if (!r && !i && t + 1 === a && !n[e[t]]) { - this.lastProcessed = a; - return; - } - const s = this.context; - for (; t < a; ) { - if (i) { - if ((0, i.iterateFn)(s, t)) { - t++; - continue; - } - t = (0, i.processFn)(s, t + 1); - a = e.length; - i = null; - r = null; - if (t >= a) break; - } - r = (r || n)[e[t]]; - if (r && !Array.isArray(r)) { - s.iCurr = t; - t++; - if (!r.checkFn || (0, r.checkFn)(s)) { - i = r; - r = null; - } else r = null; - } else t++; - } - this.state = r; - this.match = i; - this.lastProcessed = t; - } - flush() { - for (; this.match; ) { - const e = this.queue.fnArray.length; - this.lastProcessed = (0, this.match.processFn)(this.context, e); - this.match = null; - this.state = null; - this._optimize(); - } - } - reset() { - this.state = null; - this.match = null; - this.lastProcessed = 0; - } - } - class OperatorList { - static CHUNK_SIZE = 1e3; - static CHUNK_SIZE_ABOUT = this.CHUNK_SIZE - 5; - constructor(e = 0, t) { - this._streamSink = t; - this.fnArray = []; - this.argsArray = []; - this.optimizer = - !t || e & r.RenderingIntentFlag.OPLIST - ? new NullOptimizer(this) - : new QueueOptimizer(this); - this.dependencies = new Set(); - this._totalLength = 0; - this.weight = 0; - this._resolved = t ? null : Promise.resolve(); - } - set isOffscreenCanvasSupported(e) { - this.optimizer.isOffscreenCanvasSupported = e; - } - get length() { - return this.argsArray.length; - } - get ready() { - return this._resolved || this._streamSink.ready; - } - get totalLength() { - return this._totalLength + this.length; - } - addOp(e, t) { - this.optimizer.push(e, t); - this.weight++; - this._streamSink && - (this.weight >= OperatorList.CHUNK_SIZE || - (this.weight >= OperatorList.CHUNK_SIZE_ABOUT && - (e === r.OPS.restore || e === r.OPS.endText))) && - this.flush(); - } - addImageOps(e, t, a) { - void 0 !== a && - this.addOp(r.OPS.beginMarkedContentProps, ["OC", a]); - this.addOp(e, t); - void 0 !== a && this.addOp(r.OPS.endMarkedContent, []); - } - addDependency(e) { - if (!this.dependencies.has(e)) { - this.dependencies.add(e); - this.addOp(r.OPS.dependency, [e]); - } - } - addDependencies(e) { - for (const t of e) this.addDependency(t); - } - addOpList(e) { - if (e instanceof OperatorList) { - for (const t of e.dependencies) this.dependencies.add(t); - for (let t = 0, a = e.length; t < a; t++) - this.addOp(e.fnArray[t], e.argsArray[t]); - } else - (0, r.warn)('addOpList - ignoring invalid "opList" parameter.'); - } - getIR() { - return { - fnArray: this.fnArray, - argsArray: this.argsArray, - length: this.length, - }; - } - get _transfers() { - const e = [], - { fnArray: t, argsArray: a, length: n } = this; - for (let i = 0; i < n; i++) - switch (t[i]) { - case r.OPS.paintInlineImageXObject: - case r.OPS.paintInlineImageXObjectGroup: - case r.OPS.paintImageMaskXObject: - const t = a[i][0]; - !t.cached && - t.data?.buffer instanceof ArrayBuffer && - e.push(t.data.buffer); - } - return e; - } - flush(e = !1, t = null) { - this.optimizer.flush(); - const a = this.length; - this._totalLength += a; - this._streamSink.enqueue( - { - fnArray: this.fnArray, - argsArray: this.argsArray, - lastChunk: e, - separateAnnots: t, - length: a, - }, - 1, - this._transfers, - ); - this.dependencies.clear(); - this.fnArray.length = 0; - this.argsArray.length = 0; - this.weight = 0; - this.optimizer.reset(); - } - } - t.OperatorList = OperatorList; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.PDFImage = void 0; - var r = a(2), - n = a(28), - i = a(5), - s = a(12), - o = a(18), - c = a(62), - l = a(26), - h = a(30), - u = a(4); - function decodeAndClamp(e, t, a, r) { - (e = t + e * a) < 0 ? (e = 0) : e > r && (e = r); - return e; - } - function resizeImageMask(e, t, a, r, n, i) { - const s = n * i; - let o; - o = - t <= 8 - ? new Uint8Array(s) - : t <= 16 - ? new Uint16Array(s) - : new Uint32Array(s); - const c = a / n, - l = r / i; - let h, - u, - d, - f, - g = 0; - const p = new Uint16Array(n), - m = a; - for (h = 0; h < n; h++) p[h] = Math.floor(h * c); - for (h = 0; h < i; h++) { - d = Math.floor(h * l) * m; - for (u = 0; u < n; u++) { - f = d + p[u]; - o[g++] = e[f]; - } - } - return o; - } - class PDFImage { - constructor({ - xref: e, - res: t, - image: a, - isInline: n = !1, - smask: o = null, - mask: c = null, - isMask: l = !1, - pdfFunctionFactory: d, - localColorSpaceCache: f, - }) { - this.image = a; - const g = a.dict, - p = g.get("F", "Filter"); - let m; - if (p instanceof u.Name) m = p.name; - else if (Array.isArray(p)) { - const t = e.fetchIfRef(p[0]); - t instanceof u.Name && (m = t.name); - } - switch (m) { - case "JPXDecode": - const e = new h.JpxImage(); - e.parseImageProperties(a.stream); - a.stream.reset(); - a.width = e.width; - a.height = e.height; - a.bitsPerComponent = e.bitsPerComponent; - a.numComps = e.componentsCount; - break; - case "JBIG2Decode": - a.bitsPerComponent = 1; - a.numComps = 1; - } - let b = g.get("W", "Width"), - y = g.get("H", "Height"); - if ( - Number.isInteger(a.width) && - a.width > 0 && - Number.isInteger(a.height) && - a.height > 0 && - (a.width !== b || a.height !== y) - ) { - (0, r.warn)( - "PDFImage - using the Width/Height of the image data, rather than the image dictionary.", - ); - b = a.width; - y = a.height; - } - if (b < 1 || y < 1) - throw new r.FormatError( - `Invalid image width: ${b} or height: ${y}`, - ); - this.width = b; - this.height = y; - this.interpolate = g.get("I", "Interpolate"); - this.imageMask = g.get("IM", "ImageMask") || !1; - this.matte = g.get("Matte") || !1; - let w = a.bitsPerComponent; - if (!w) { - w = g.get("BPC", "BitsPerComponent"); - if (!w) { - if (!this.imageMask) - throw new r.FormatError( - `Bits per component missing in image: ${this.imageMask}`, - ); - w = 1; - } - } - this.bpc = w; - if (!this.imageMask) { - let i = g.getRaw("CS") || g.getRaw("ColorSpace"); - if (!i) { - (0, r.info)("JPX images (which do not require color spaces)"); - switch (a.numComps) { - case 1: - i = u.Name.get("DeviceGray"); - break; - case 3: - i = u.Name.get("DeviceRGB"); - break; - case 4: - i = u.Name.get("DeviceCMYK"); - break; - default: - throw new Error( - `JPX images with ${a.numComps} color components not supported.`, - ); - } - } - this.colorSpace = s.ColorSpace.parse({ - cs: i, - xref: e, - resources: n ? t : null, - pdfFunctionFactory: d, - localColorSpaceCache: f, - }); - this.numComps = this.colorSpace.numComps; - } - this.decode = g.getArray("D", "Decode"); - this.needsDecode = !1; - if ( - this.decode && - ((this.colorSpace && - !this.colorSpace.isDefaultDecode(this.decode, w)) || - (l && !s.ColorSpace.isDefaultDecode(this.decode, 1))) - ) { - this.needsDecode = !0; - const e = (1 << w) - 1; - this.decodeCoefficients = []; - this.decodeAddends = []; - const t = "Indexed" === this.colorSpace?.name; - for (let a = 0, r = 0; a < this.decode.length; a += 2, ++r) { - const n = this.decode[a], - i = this.decode[a + 1]; - this.decodeCoefficients[r] = t ? (i - n) / e : i - n; - this.decodeAddends[r] = t ? n : e * n; - } - } - if (o) - this.smask = new PDFImage({ - xref: e, - res: t, - image: o, - isInline: n, - pdfFunctionFactory: d, - localColorSpaceCache: f, - }); - else if (c) - if (c instanceof i.BaseStream) { - c.dict.get("IM", "ImageMask") - ? (this.mask = new PDFImage({ - xref: e, - res: t, - image: c, - isInline: n, - isMask: !0, - pdfFunctionFactory: d, - localColorSpaceCache: f, - })) - : (0, r.warn)( - "Ignoring /Mask in image without /ImageMask.", - ); - } else this.mask = c; - } - static async buildImage({ - xref: e, - res: t, - image: a, - isInline: n = !1, - pdfFunctionFactory: s, - localColorSpaceCache: o, - }) { - const c = a; - let l = null, - h = null; - const u = a.dict.get("SMask"), - d = a.dict.get("Mask"); - u - ? u instanceof i.BaseStream - ? (l = u) - : (0, r.warn)("Unsupported /SMask format.") - : d && - (d instanceof i.BaseStream || Array.isArray(d) - ? (h = d) - : (0, r.warn)("Unsupported /Mask format.")); - return new PDFImage({ - xref: e, - res: t, - image: c, - isInline: n, - smask: l, - mask: h, - pdfFunctionFactory: s, - localColorSpaceCache: o, - }); - } - static createRawMask({ - imgArray: e, - width: t, - height: a, - imageIsFromDecodeStream: r, - inverseDecode: n, - interpolate: i, - }) { - const s = ((t + 7) >> 3) * a, - o = e.byteLength; - let c, l; - if (!r || (n && !(s === o))) - if (n) { - c = new Uint8Array(s); - c.set(e); - c.fill(255, o); - } else c = new Uint8Array(e); - else c = e; - if (n) for (l = 0; l < o; l++) c[l] ^= 255; - return { data: c, width: t, height: a, interpolate: i }; - } - static async createMask({ - imgArray: e, - width: t, - height: a, - imageIsFromDecodeStream: i, - inverseDecode: s, - interpolate: o, - isOffscreenCanvasSupported: l = !1, - }) { - const h = - 1 === t && 1 === a && s === (0 === e.length || !!(128 & e[0])); - if (h) return { isSingleOpaquePixel: h }; - if (l) { - if (c.ImageResizer.needsToBeResized(t, a)) { - const i = new Uint8ClampedArray(t * a * 4); - (0, n.convertBlackAndWhiteToRGBA)({ - src: e, - dest: i, - width: t, - height: a, - nonBlackColor: 0, - inverseDecode: s, - }); - return c.ImageResizer.createImage({ - kind: r.ImageKind.RGBA_32BPP, - data: i, - width: t, - height: a, - interpolate: o, - }); - } - const i = new OffscreenCanvas(t, a), - l = i.getContext("2d"), - h = l.createImageData(t, a); - (0, n.convertBlackAndWhiteToRGBA)({ - src: e, - dest: h.data, - width: t, - height: a, - nonBlackColor: 0, - inverseDecode: s, - }); - l.putImageData(h, 0, 0); - return { - data: null, - width: t, - height: a, - interpolate: o, - bitmap: i.transferToImageBitmap(), - }; - } - return this.createRawMask({ - imgArray: e, - width: t, - height: a, - inverseDecode: s, - imageIsFromDecodeStream: i, - interpolate: o, - }); - } - get drawWidth() { - return Math.max( - this.width, - this.smask?.width || 0, - this.mask?.width || 0, - ); - } - get drawHeight() { - return Math.max( - this.height, - this.smask?.height || 0, - this.mask?.height || 0, - ); - } - decodeBuffer(e) { - const t = this.bpc, - a = this.numComps, - r = this.decodeAddends, - n = this.decodeCoefficients, - i = (1 << t) - 1; - let s, o; - if (1 === t) { - for (s = 0, o = e.length; s < o; s++) e[s] = +!e[s]; - return; - } - let c = 0; - for (s = 0, o = this.width * this.height; s < o; s++) - for (let t = 0; t < a; t++) { - e[c] = decodeAndClamp(e[c], r[t], n[t], i); - c++; - } - } - getComponents(e) { - const t = this.bpc; - if (8 === t) return e; - const a = this.width, - r = this.height, - n = this.numComps, - i = a * r * n; - let s, - o = 0; - s = - t <= 8 - ? new Uint8Array(i) - : t <= 16 - ? new Uint16Array(i) - : new Uint32Array(i); - const c = a * n, - l = (1 << t) - 1; - let h, - u, - d = 0; - if (1 === t) { - let t, a, n; - for (let i = 0; i < r; i++) { - a = d + (-8 & c); - n = d + c; - for (; d < a; ) { - u = e[o++]; - s[d] = (u >> 7) & 1; - s[d + 1] = (u >> 6) & 1; - s[d + 2] = (u >> 5) & 1; - s[d + 3] = (u >> 4) & 1; - s[d + 4] = (u >> 3) & 1; - s[d + 5] = (u >> 2) & 1; - s[d + 6] = (u >> 1) & 1; - s[d + 7] = 1 & u; - d += 8; - } - if (d < n) { - u = e[o++]; - t = 128; - for (; d < n; ) { - s[d++] = +!!(u & t); - t >>= 1; - } - } - } - } else { - let a = 0; - u = 0; - for (d = 0, h = i; d < h; ++d) { - if (d % c == 0) { - u = 0; - a = 0; - } - for (; a < t; ) { - u = (u << 8) | e[o++]; - a += 8; - } - const r = a - t; - let n = u >> r; - n < 0 ? (n = 0) : n > l && (n = l); - s[d] = n; - u &= (1 << r) - 1; - a = r; - } - } - return s; - } - fillOpacity(e, t, a, n, i) { - const s = this.smask, - o = this.mask; - let c, l, h, u, d, f; - if (s) { - l = s.width; - h = s.height; - c = new Uint8ClampedArray(l * h); - s.fillGrayBuffer(c); - (l === t && h === a) || - (c = resizeImageMask(c, s.bpc, l, h, t, a)); - } else if (o) - if (o instanceof PDFImage) { - l = o.width; - h = o.height; - c = new Uint8ClampedArray(l * h); - o.numComps = 1; - o.fillGrayBuffer(c); - for (u = 0, d = l * h; u < d; ++u) c[u] = 255 - c[u]; - (l === t && h === a) || - (c = resizeImageMask(c, o.bpc, l, h, t, a)); - } else { - if (!Array.isArray(o)) - throw new r.FormatError("Unknown mask format."); - { - c = new Uint8ClampedArray(t * a); - const e = this.numComps; - for (u = 0, d = t * a; u < d; ++u) { - let t = 0; - const a = u * e; - for (f = 0; f < e; ++f) { - const e = i[a + f], - r = 2 * f; - if (e < o[r] || e > o[r + 1]) { - t = 255; - break; - } - } - c[u] = t; - } - } - } - if (c) - for (u = 0, f = 3, d = t * n; u < d; ++u, f += 4) e[f] = c[u]; - else for (u = 0, f = 3, d = t * n; u < d; ++u, f += 4) e[f] = 255; - } - undoPreblend(e, t, a) { - const r = this.smask?.matte; - if (!r) return; - const n = this.colorSpace.getRgb(r, 0), - i = n[0], - s = n[1], - o = n[2], - c = t * a * 4; - for (let t = 0; t < c; t += 4) { - const a = e[t + 3]; - if (0 === a) { - e[t] = 255; - e[t + 1] = 255; - e[t + 2] = 255; - continue; - } - const r = 255 / a; - e[t] = (e[t] - i) * r + i; - e[t + 1] = (e[t + 1] - s) * r + s; - e[t + 2] = (e[t + 2] - o) * r + o; - } - } - async createImageData(e = !1, t = !1) { - const a = this.drawWidth, - n = this.drawHeight, - i = { - width: a, - height: n, - interpolate: this.interpolate, - kind: 0, - data: null, - }, - s = this.numComps, - o = this.width, - h = this.height, - u = this.bpc, - d = (o * s * u + 7) >> 3, - f = t && c.ImageResizer.needsToBeResized(a, n); - if (!e) { - let e; - "DeviceGray" === this.colorSpace.name && 1 === u - ? (e = r.ImageKind.GRAYSCALE_1BPP) - : "DeviceRGB" !== this.colorSpace.name || - 8 !== u || - this.needsDecode || - (e = r.ImageKind.RGB_24BPP); - if (e && !this.smask && !this.mask && a === o && n === h) { - const s = this.getImageBytes(h * d, {}); - if (t) - return f - ? c.ImageResizer.createImage( - { - data: s, - kind: e, - width: a, - height: n, - interpolate: this.interpolate, - }, - this.needsDecode, - ) - : this.createBitmap(e, o, h, s); - i.kind = e; - i.data = s; - if (this.needsDecode) { - (0, r.assert)( - e === r.ImageKind.GRAYSCALE_1BPP, - "PDFImage.createImageData: The image must be grayscale.", - ); - const t = i.data; - for (let e = 0, a = t.length; e < a; e++) t[e] ^= 255; - } - return i; - } - if ( - this.image instanceof l.JpegStream && - !this.smask && - !this.mask && - !this.needsDecode - ) { - let e = h * d; - if (t && !f) { - let t = !1; - switch (this.colorSpace.name) { - case "DeviceGray": - e *= 4; - t = !0; - break; - case "DeviceRGB": - e = (e / 3) * 4; - t = !0; - break; - case "DeviceCMYK": - t = !0; - } - if (t) { - const t = this.getImageBytes(e, { - drawWidth: a, - drawHeight: n, - forceRGBA: !0, - }); - return this.createBitmap(r.ImageKind.RGBA_32BPP, a, n, t); - } - } else - switch (this.colorSpace.name) { - case "DeviceGray": - e *= 3; - case "DeviceRGB": - case "DeviceCMYK": - i.kind = r.ImageKind.RGB_24BPP; - i.data = this.getImageBytes(e, { - drawWidth: a, - drawHeight: n, - forceRGB: !0, - }); - return f ? c.ImageResizer.createImage(i) : i; - } - } - } - const g = this.getImageBytes(h * d, { internal: !0 }), - p = 0 | (((g.length / d) * n) / h), - m = this.getComponents(g); - let b, y, w, S, x, C; - if (t && !f) { - w = new OffscreenCanvas(a, n); - S = w.getContext("2d"); - x = S.createImageData(a, n); - C = x.data; - } - i.kind = r.ImageKind.RGBA_32BPP; - if (e || this.smask || this.mask) { - (t && !f) || (C = new Uint8ClampedArray(a * n * 4)); - b = 1; - y = !0; - this.fillOpacity(C, a, n, p, m); - } else { - if (!t || f) { - i.kind = r.ImageKind.RGB_24BPP; - C = new Uint8ClampedArray(a * n * 3); - b = 0; - } else { - new Uint32Array(C.buffer).fill( - r.FeatureTest.isLittleEndian ? 4278190080 : 255, - ); - b = 1; - } - y = !1; - } - this.needsDecode && this.decodeBuffer(m); - this.colorSpace.fillRgb(C, o, h, a, n, p, u, m, b); - y && this.undoPreblend(C, a, p); - if (t && !f) { - S.putImageData(x, 0, 0); - return { - data: null, - width: a, - height: n, - bitmap: w.transferToImageBitmap(), - interpolate: this.interpolate, - }; - } - i.data = C; - return f ? c.ImageResizer.createImage(i) : i; - } - fillGrayBuffer(e) { - const t = this.numComps; - if (1 !== t) - throw new r.FormatError( - `Reading gray scale from a color image: ${t}`, - ); - const a = this.width, - n = this.height, - i = this.bpc, - s = (a * t * i + 7) >> 3, - o = this.getImageBytes(n * s, { internal: !0 }), - c = this.getComponents(o); - let l, h; - if (1 === i) { - h = a * n; - if (this.needsDecode) - for (l = 0; l < h; ++l) e[l] = (c[l] - 1) & 255; - else for (l = 0; l < h; ++l) e[l] = 255 & -c[l]; - return; - } - this.needsDecode && this.decodeBuffer(c); - h = a * n; - const u = 255 / ((1 << i) - 1); - for (l = 0; l < h; ++l) e[l] = u * c[l]; - } - createBitmap(e, t, a, i) { - const s = new OffscreenCanvas(t, a), - o = s.getContext("2d"); - let c; - if (e === r.ImageKind.RGBA_32BPP) c = new ImageData(i, t, a); - else { - c = o.createImageData(t, a); - (0, n.convertToRGBA)({ - kind: e, - src: i, - dest: new Uint32Array(c.data.buffer), - width: t, - height: a, - inverseDecode: this.needsDecode, - }); - } - o.putImageData(c, 0, 0); - return { - data: null, - width: t, - height: a, - bitmap: s.transferToImageBitmap(), - interpolate: this.interpolate, - }; - } - getImageBytes( - e, - { - drawWidth: t, - drawHeight: a, - forceRGBA: n = !1, - forceRGB: i = !1, - internal: s = !1, - }, - ) { - this.image.reset(); - this.image.drawWidth = t || this.width; - this.image.drawHeight = a || this.height; - this.image.forceRGBA = !!n; - this.image.forceRGB = !!i; - const c = this.image.getBytes(e); - if (s || this.image instanceof o.DecodeStream) return c; - (0, r.assert)( - c instanceof Uint8Array, - 'PDFImage.getImageBytes: Unsupported "imageBytes" type.', - ); - return new Uint8Array(c); - } - } - t.PDFImage = PDFImage; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.Catalog = void 0; - var r = a(3), - n = a(2), - i = a(4), - s = a(67), - o = a(5), - c = a(68), - l = a(12), - h = a(69), - u = a(59), - d = a(70), - f = a(72); - function fetchDestination(e) { - e instanceof i.Dict && (e = e.get("D")); - return Array.isArray(e) ? e : null; - } - class Catalog { - constructor(e, t) { - this.pdfManager = e; - this.xref = t; - this._catDict = t.getCatalogObj(); - if (!(this._catDict instanceof i.Dict)) - throw new n.FormatError("Catalog object is not a dictionary."); - this.toplevelPagesDict; - this._actualNumPages = null; - this.fontCache = new i.RefSetCache(); - this.builtInCMapCache = new Map(); - this.standardFontDataCache = new Map(); - this.globalImageCache = new u.GlobalImageCache(); - this.pageKidsCountCache = new i.RefSetCache(); - this.pageIndexCache = new i.RefSetCache(); - this.nonBlendModesSet = new i.RefSet(); - this.systemFontCache = new Map(); - } - cloneDict() { - return this._catDict.clone(); - } - get version() { - const e = this._catDict.get("Version"); - if (e instanceof i.Name) { - if (r.PDF_VERSION_REGEXP.test(e.name)) - return (0, n.shadow)(this, "version", e.name); - (0, n.warn)(`Invalid PDF catalog version: ${e.name}`); - } - return (0, n.shadow)(this, "version", null); - } - get lang() { - const e = this._catDict.get("Lang"); - return (0, n.shadow)( - this, - "lang", - "string" == typeof e ? (0, n.stringToPDFString)(e) : null, - ); - } - get needsRendering() { - const e = this._catDict.get("NeedsRendering"); - return (0, n.shadow)( - this, - "needsRendering", - "boolean" == typeof e && e, - ); - } - get collection() { - let e = null; - try { - const t = this._catDict.get("Collection"); - t instanceof i.Dict && t.size > 0 && (e = t); - } catch (e) { - if (e instanceof r.MissingDataException) throw e; - (0, n.info)( - "Cannot fetch Collection entry; assuming no collection is present.", - ); - } - return (0, n.shadow)(this, "collection", e); - } - get acroForm() { - let e = null; - try { - const t = this._catDict.get("AcroForm"); - t instanceof i.Dict && t.size > 0 && (e = t); - } catch (e) { - if (e instanceof r.MissingDataException) throw e; - (0, n.info)( - "Cannot fetch AcroForm entry; assuming no forms are present.", - ); - } - return (0, n.shadow)(this, "acroForm", e); - } - get acroFormRef() { - const e = this._catDict.getRaw("AcroForm"); - return (0, n.shadow)( - this, - "acroFormRef", - e instanceof i.Ref ? e : null, - ); - } - get metadata() { - const e = this._catDict.getRaw("Metadata"); - if (!(e instanceof i.Ref)) - return (0, n.shadow)(this, "metadata", null); - let t = null; - try { - const a = this.xref.fetch( - e, - !this.xref.encrypt?.encryptMetadata, - ); - if (a instanceof o.BaseStream && a.dict instanceof i.Dict) { - const e = a.dict.get("Type"), - r = a.dict.get("Subtype"); - if ((0, i.isName)(e, "Metadata") && (0, i.isName)(r, "XML")) { - const e = (0, n.stringToUTF8String)(a.getString()); - e && (t = new d.MetadataParser(e).serializable); - } - } - } catch (e) { - if (e instanceof r.MissingDataException) throw e; - (0, n.info)(`Skipping invalid Metadata: "${e}".`); - } - return (0, n.shadow)(this, "metadata", t); - } - get markInfo() { - let e = null; - try { - e = this._readMarkInfo(); - } catch (e) { - if (e instanceof r.MissingDataException) throw e; - (0, n.warn)("Unable to read mark info."); - } - return (0, n.shadow)(this, "markInfo", e); - } - _readMarkInfo() { - const e = this._catDict.get("MarkInfo"); - if (!(e instanceof i.Dict)) return null; - const t = { Marked: !1, UserProperties: !1, Suspects: !1 }; - for (const a in t) { - const r = e.get(a); - "boolean" == typeof r && (t[a] = r); - } - return t; - } - get structTreeRoot() { - let e = null; - try { - e = this._readStructTreeRoot(); - } catch (e) { - if (e instanceof r.MissingDataException) throw e; - (0, n.warn)("Unable read to structTreeRoot info."); - } - return (0, n.shadow)(this, "structTreeRoot", e); - } - _readStructTreeRoot() { - const e = this._catDict.getRaw("StructTreeRoot"), - t = this.xref.fetchIfRef(e); - if (!(t instanceof i.Dict)) return null; - const a = new f.StructTreeRoot(t, e); - a.init(); - return a; - } - get toplevelPagesDict() { - const e = this._catDict.get("Pages"); - if (!(e instanceof i.Dict)) - throw new n.FormatError("Invalid top-level pages dictionary."); - return (0, n.shadow)(this, "toplevelPagesDict", e); - } - get documentOutline() { - let e = null; - try { - e = this._readDocumentOutline(); - } catch (e) { - if (e instanceof r.MissingDataException) throw e; - (0, n.warn)("Unable to read document outline."); - } - return (0, n.shadow)(this, "documentOutline", e); - } - _readDocumentOutline() { - let e = this._catDict.get("Outlines"); - if (!(e instanceof i.Dict)) return null; - e = e.getRaw("First"); - if (!(e instanceof i.Ref)) return null; - const t = { items: [] }, - a = [{ obj: e, parent: t }], - r = new i.RefSet(); - r.put(e); - const s = this.xref, - o = new Uint8ClampedArray(3); - for (; a.length > 0; ) { - const t = a.shift(), - c = s.fetchIfRef(t.obj); - if (null === c) continue; - if (!c.has("Title")) - throw new n.FormatError("Invalid outline item encountered."); - const h = { url: null, dest: null, action: null }; - Catalog.parseDestDictionary({ - destDict: c, - resultObj: h, - docBaseUrl: this.baseUrl, - docAttachments: this.attachments, - }); - const u = c.get("Title"), - d = c.get("F") || 0, - f = c.getArray("C"), - g = c.get("Count"); - let p = o; - !Array.isArray(f) || - 3 !== f.length || - (0 === f[0] && 0 === f[1] && 0 === f[2]) || - (p = l.ColorSpace.singletons.rgb.getRgb(f, 0)); - const m = { - action: h.action, - attachment: h.attachment, - dest: h.dest, - url: h.url, - unsafeUrl: h.unsafeUrl, - newWindow: h.newWindow, - setOCGState: h.setOCGState, - title: (0, n.stringToPDFString)(u), - color: p, - count: Number.isInteger(g) ? g : void 0, - bold: !!(2 & d), - italic: !!(1 & d), - items: [], - }; - t.parent.items.push(m); - e = c.getRaw("First"); - if (e instanceof i.Ref && !r.has(e)) { - a.push({ obj: e, parent: m }); - r.put(e); - } - e = c.getRaw("Next"); - if (e instanceof i.Ref && !r.has(e)) { - a.push({ obj: e, parent: t.parent }); - r.put(e); - } - } - return t.items.length > 0 ? t.items : null; - } - get permissions() { - let e = null; - try { - e = this._readPermissions(); - } catch (e) { - if (e instanceof r.MissingDataException) throw e; - (0, n.warn)("Unable to read permissions."); - } - return (0, n.shadow)(this, "permissions", e); - } - _readPermissions() { - const e = this.xref.trailer.get("Encrypt"); - if (!(e instanceof i.Dict)) return null; - let t = e.get("P"); - if ("number" != typeof t) return null; - t += 2 ** 32; - const a = []; - for (const e in n.PermissionFlag) { - const r = n.PermissionFlag[e]; - t & r && a.push(r); - } - return a; - } - get optionalContentConfig() { - let e = null; - try { - const t = this._catDict.get("OCProperties"); - if (!t) - return (0, n.shadow)(this, "optionalContentConfig", null); - const a = t.get("D"); - if (!a) - return (0, n.shadow)(this, "optionalContentConfig", null); - const r = t.get("OCGs"); - if (!Array.isArray(r)) - return (0, n.shadow)(this, "optionalContentConfig", null); - const s = [], - o = []; - for (const e of r) { - if (!(e instanceof i.Ref)) continue; - o.push(e); - const t = this.xref.fetchIfRef(e); - s.push({ - id: e.toString(), - name: - "string" == typeof t.get("Name") - ? (0, n.stringToPDFString)(t.get("Name")) - : null, - intent: - "string" == typeof t.get("Intent") - ? (0, n.stringToPDFString)(t.get("Intent")) - : null, - }); - } - e = this._readOptionalContentConfig(a, o); - e.groups = s; - } catch (e) { - if (e instanceof r.MissingDataException) throw e; - (0, n.warn)(`Unable to read optional content config: ${e}`); - } - return (0, n.shadow)(this, "optionalContentConfig", e); - } - _readOptionalContentConfig(e, t) { - function parseOnOff(e) { - const a = []; - if (Array.isArray(e)) - for (const r of e) - r instanceof i.Ref && t.includes(r) && a.push(r.toString()); - return a; - } - function parseOrder(e, a = 0) { - if (!Array.isArray(e)) return null; - const n = []; - for (const s of e) { - if (s instanceof i.Ref && t.includes(s)) { - r.put(s); - n.push(s.toString()); - continue; - } - const e = parseNestedOrder(s, a); - e && n.push(e); - } - if (a > 0) return n; - const s = []; - for (const e of t) r.has(e) || s.push(e.toString()); - s.length && n.push({ name: null, order: s }); - return n; - } - function parseNestedOrder(e, t) { - if (++t > s) { - (0, n.warn)("parseNestedOrder - reached MAX_NESTED_LEVELS."); - return null; - } - const r = a.fetchIfRef(e); - if (!Array.isArray(r)) return null; - const i = a.fetchIfRef(r[0]); - if ("string" != typeof i) return null; - const o = parseOrder(r.slice(1), t); - return o && o.length - ? { name: (0, n.stringToPDFString)(i), order: o } - : null; - } - const a = this.xref, - r = new i.RefSet(), - s = 10; - return { - name: - "string" == typeof e.get("Name") - ? (0, n.stringToPDFString)(e.get("Name")) - : null, - creator: - "string" == typeof e.get("Creator") - ? (0, n.stringToPDFString)(e.get("Creator")) - : null, - baseState: - e.get("BaseState") instanceof i.Name - ? e.get("BaseState").name - : null, - on: parseOnOff(e.get("ON")), - off: parseOnOff(e.get("OFF")), - order: parseOrder(e.get("Order")), - groups: null, - }; - } - setActualNumPages(e = null) { - this._actualNumPages = e; - } - get hasActualNumPages() { - return null !== this._actualNumPages; - } - get _pagesCount() { - const e = this.toplevelPagesDict.get("Count"); - if (!Number.isInteger(e)) - throw new n.FormatError( - "Page count in top-level pages dictionary is not an integer.", - ); - return (0, n.shadow)(this, "_pagesCount", e); - } - get numPages() { - return this.hasActualNumPages - ? this._actualNumPages - : this._pagesCount; - } - get destinations() { - const e = this._readDests(), - t = Object.create(null); - if (e instanceof s.NameTree) - for (const [a, r] of e.getAll()) { - const e = fetchDestination(r); - e && (t[(0, n.stringToPDFString)(a)] = e); - } - else - e instanceof i.Dict && - e.forEach(function (e, a) { - const r = fetchDestination(a); - r && (t[e] = r); - }); - return (0, n.shadow)(this, "destinations", t); - } - getDestination(e) { - const t = this._readDests(); - if (t instanceof s.NameTree) { - const a = fetchDestination(t.get(e)); - if (a) return a; - const r = this.destinations[e]; - if (r) { - (0, n.warn)( - `Found "${e}" at an incorrect position in the NameTree.`, - ); - return r; - } - } else if (t instanceof i.Dict) { - const a = fetchDestination(t.get(e)); - if (a) return a; - } - return null; - } - _readDests() { - const e = this._catDict.get("Names"); - return e?.has("Dests") - ? new s.NameTree(e.getRaw("Dests"), this.xref) - : this._catDict.has("Dests") - ? this._catDict.get("Dests") - : void 0; - } - get pageLabels() { - let e = null; - try { - e = this._readPageLabels(); - } catch (e) { - if (e instanceof r.MissingDataException) throw e; - (0, n.warn)("Unable to read page labels."); - } - return (0, n.shadow)(this, "pageLabels", e); - } - _readPageLabels() { - const e = this._catDict.getRaw("PageLabels"); - if (!e) return null; - const t = new Array(this.numPages); - let a = null, - o = ""; - const c = new s.NumberTree(e, this.xref).getAll(); - let l = "", - h = 1; - for (let e = 0, s = this.numPages; e < s; e++) { - const s = c.get(e); - if (void 0 !== s) { - if (!(s instanceof i.Dict)) - throw new n.FormatError("PageLabel is not a dictionary."); - if ( - s.has("Type") && - !(0, i.isName)(s.get("Type"), "PageLabel") - ) - throw new n.FormatError( - "Invalid type in PageLabel dictionary.", - ); - if (s.has("S")) { - const e = s.get("S"); - if (!(e instanceof i.Name)) - throw new n.FormatError( - "Invalid style in PageLabel dictionary.", - ); - a = e.name; - } else a = null; - if (s.has("P")) { - const e = s.get("P"); - if ("string" != typeof e) - throw new n.FormatError( - "Invalid prefix in PageLabel dictionary.", - ); - o = (0, n.stringToPDFString)(e); - } else o = ""; - if (s.has("St")) { - const e = s.get("St"); - if (!(Number.isInteger(e) && e >= 1)) - throw new n.FormatError( - "Invalid start in PageLabel dictionary.", - ); - h = e; - } else h = 1; - } - switch (a) { - case "D": - l = h; - break; - case "R": - case "r": - l = (0, r.toRomanNumerals)(h, "r" === a); - break; - case "A": - case "a": - const e = 26, - t = "a" === a ? 97 : 65, - i = h - 1; - l = String.fromCharCode(t + (i % e)).repeat( - Math.floor(i / e) + 1, - ); - break; - default: - if (a) - throw new n.FormatError( - `Invalid style "${a}" in PageLabel dictionary.`, - ); - l = ""; - } - t[e] = o + l; - h++; - } - return t; - } - get pageLayout() { - const e = this._catDict.get("PageLayout"); - let t = ""; - if (e instanceof i.Name) - switch (e.name) { - case "SinglePage": - case "OneColumn": - case "TwoColumnLeft": - case "TwoColumnRight": - case "TwoPageLeft": - case "TwoPageRight": - t = e.name; - } - return (0, n.shadow)(this, "pageLayout", t); - } - get pageMode() { - const e = this._catDict.get("PageMode"); - let t = "UseNone"; - if (e instanceof i.Name) - switch (e.name) { - case "UseNone": - case "UseOutlines": - case "UseThumbs": - case "FullScreen": - case "UseOC": - case "UseAttachments": - t = e.name; - } - return (0, n.shadow)(this, "pageMode", t); - } - get viewerPreferences() { - const e = this._catDict.get("ViewerPreferences"); - if (!(e instanceof i.Dict)) - return (0, n.shadow)(this, "viewerPreferences", null); - let t = null; - for (const a of e.getKeys()) { - const r = e.get(a); - let s; - switch (a) { - case "HideToolbar": - case "HideMenubar": - case "HideWindowUI": - case "FitWindow": - case "CenterWindow": - case "DisplayDocTitle": - case "PickTrayByPDFSize": - "boolean" == typeof r && (s = r); - break; - case "NonFullScreenPageMode": - if (r instanceof i.Name) - switch (r.name) { - case "UseNone": - case "UseOutlines": - case "UseThumbs": - case "UseOC": - s = r.name; - break; - default: - s = "UseNone"; - } - break; - case "Direction": - if (r instanceof i.Name) - switch (r.name) { - case "L2R": - case "R2L": - s = r.name; - break; - default: - s = "L2R"; - } - break; - case "ViewArea": - case "ViewClip": - case "PrintArea": - case "PrintClip": - if (r instanceof i.Name) - switch (r.name) { - case "MediaBox": - case "CropBox": - case "BleedBox": - case "TrimBox": - case "ArtBox": - s = r.name; - break; - default: - s = "CropBox"; - } - break; - case "PrintScaling": - if (r instanceof i.Name) - switch (r.name) { - case "None": - case "AppDefault": - s = r.name; - break; - default: - s = "AppDefault"; - } - break; - case "Duplex": - if (r instanceof i.Name) - switch (r.name) { - case "Simplex": - case "DuplexFlipShortEdge": - case "DuplexFlipLongEdge": - s = r.name; - break; - default: - s = "None"; - } - break; - case "PrintPageRange": - if (Array.isArray(r) && r.length % 2 == 0) { - r.every( - (e, t, a) => - Number.isInteger(e) && - e > 0 && - (0 === t || e >= a[t - 1]) && - e <= this.numPages, - ) && (s = r); - } - break; - case "NumCopies": - Number.isInteger(r) && r > 0 && (s = r); - break; - default: - (0, n.warn)( - `Ignoring non-standard key in ViewerPreferences: ${a}.`, - ); - continue; - } - if (void 0 !== s) { - t || (t = Object.create(null)); - t[a] = s; - } else - (0, n.warn)( - `Bad value, for key "${a}", in ViewerPreferences: ${r}.`, - ); - } - return (0, n.shadow)(this, "viewerPreferences", t); - } - get openAction() { - const e = this._catDict.get("OpenAction"), - t = Object.create(null); - if (e instanceof i.Dict) { - const a = new i.Dict(this.xref); - a.set("A", e); - const r = { url: null, dest: null, action: null }; - Catalog.parseDestDictionary({ destDict: a, resultObj: r }); - Array.isArray(r.dest) - ? (t.dest = r.dest) - : r.action && (t.action = r.action); - } else Array.isArray(e) && (t.dest = e); - return (0, n.shadow)( - this, - "openAction", - (0, n.objectSize)(t) > 0 ? t : null, - ); - } - get attachments() { - const e = this._catDict.get("Names"); - let t = null; - if (e instanceof i.Dict && e.has("EmbeddedFiles")) { - const a = new s.NameTree(e.getRaw("EmbeddedFiles"), this.xref); - for (const [e, r] of a.getAll()) { - const a = new h.FileSpec(r, this.xref); - t || (t = Object.create(null)); - t[(0, n.stringToPDFString)(e)] = a.serializable; - } - } - return (0, n.shadow)(this, "attachments", t); - } - get xfaImages() { - const e = this._catDict.get("Names"); - let t = null; - if (e instanceof i.Dict && e.has("XFAImages")) { - const a = new s.NameTree(e.getRaw("XFAImages"), this.xref); - for (const [e, r] of a.getAll()) { - t || (t = new i.Dict(this.xref)); - t.set((0, n.stringToPDFString)(e), r); - } - } - return (0, n.shadow)(this, "xfaImages", t); - } - _collectJavaScript() { - const e = this._catDict.get("Names"); - let t = null; - function appendIfJavaScriptDict(e, a) { - if (!(a instanceof i.Dict)) return; - if (!(0, i.isName)(a.get("S"), "JavaScript")) return; - let r = a.get("JS"); - if (r instanceof o.BaseStream) r = r.getString(); - else if ("string" != typeof r) return; - r = (0, n.stringToPDFString)(r).replaceAll("\0", ""); - r && (t ||= new Map()).set(e, r); - } - if (e instanceof i.Dict && e.has("JavaScript")) { - const t = new s.NameTree(e.getRaw("JavaScript"), this.xref); - for (const [e, a] of t.getAll()) - appendIfJavaScriptDict((0, n.stringToPDFString)(e), a); - } - const a = this._catDict.get("OpenAction"); - a && appendIfJavaScriptDict("OpenAction", a); - return t; - } - get jsActions() { - const e = this._collectJavaScript(); - let t = (0, r.collectActions)( - this.xref, - this._catDict, - n.DocumentActionEventType, - ); - if (e) { - t ||= Object.create(null); - for (const [a, r] of e) a in t ? t[a].push(r) : (t[a] = [r]); - } - return (0, n.shadow)(this, "jsActions", t); - } - async fontFallback(e, t) { - const a = await Promise.all(this.fontCache); - for (const r of a) - if (r.loadedName === e) { - r.fallback(t); - return; - } - } - async cleanup(e = !1) { - (0, c.clearGlobalCaches)(); - this.globalImageCache.clear(e); - this.pageKidsCountCache.clear(); - this.pageIndexCache.clear(); - this.nonBlendModesSet.clear(); - const t = await Promise.all(this.fontCache); - for (const { dict: e } of t) delete e.cacheKey; - this.fontCache.clear(); - this.builtInCMapCache.clear(); - this.standardFontDataCache.clear(); - this.systemFontCache.clear(); - } - async getPageDict(e) { - const t = [this.toplevelPagesDict], - a = new i.RefSet(), - r = this._catDict.getRaw("Pages"); - r instanceof i.Ref && a.put(r); - const s = this.xref, - o = this.pageKidsCountCache, - c = this.pageIndexCache; - let l = 0; - for (; t.length; ) { - const r = t.pop(); - if (r instanceof i.Ref) { - const h = o.get(r); - if (h >= 0 && l + h <= e) { - l += h; - continue; - } - if (a.has(r)) - throw new n.FormatError( - "Pages tree contains circular reference.", - ); - a.put(r); - const u = await s.fetchAsync(r); - if (u instanceof i.Dict) { - let t = u.getRaw("Type"); - t instanceof i.Ref && (t = await s.fetchAsync(t)); - if ((0, i.isName)(t, "Page") || !u.has("Kids")) { - o.has(r) || o.put(r, 1); - c.has(r) || c.put(r, l); - if (l === e) return [u, r]; - l++; - continue; - } - } - t.push(u); - continue; - } - if (!(r instanceof i.Dict)) - throw new n.FormatError( - "Page dictionary kid reference points to wrong type of object.", - ); - const { objId: h } = r; - let u = r.getRaw("Count"); - u instanceof i.Ref && (u = await s.fetchAsync(u)); - if (Number.isInteger(u) && u >= 0) { - h && !o.has(h) && o.put(h, u); - if (l + u <= e) { - l += u; - continue; - } - } - let d = r.getRaw("Kids"); - d instanceof i.Ref && (d = await s.fetchAsync(d)); - if (!Array.isArray(d)) { - let t = r.getRaw("Type"); - t instanceof i.Ref && (t = await s.fetchAsync(t)); - if ((0, i.isName)(t, "Page") || !r.has("Kids")) { - if (l === e) return [r, null]; - l++; - continue; - } - throw new n.FormatError( - "Page dictionary kids object is not an array.", - ); - } - for (let e = d.length - 1; e >= 0; e--) t.push(d[e]); - } - throw new Error(`Page index ${e} not found.`); - } - async getAllPageDicts(e = !1) { - const { ignoreErrors: t } = this.pdfManager.evaluatorOptions, - a = [{ currentNode: this.toplevelPagesDict, posInKids: 0 }], - s = new i.RefSet(), - o = this._catDict.getRaw("Pages"); - o instanceof i.Ref && s.put(o); - const c = new Map(), - l = this.xref, - h = this.pageIndexCache; - let u = 0; - function addPageDict(e, t) { - t && !h.has(t) && h.put(t, u); - c.set(u++, [e, t]); - } - function addPageError(a) { - if (a instanceof r.XRefEntryException && !e) throw a; - if (e && t && 0 === u) { - (0, n.warn)( - `getAllPageDicts - Skipping invalid first page: "${a}".`, - ); - a = i.Dict.empty; - } - c.set(u++, [a, null]); - } - for (; a.length > 0; ) { - const e = a.at(-1), - { currentNode: t, posInKids: r } = e; - let o = t.getRaw("Kids"); - if (o instanceof i.Ref) - try { - o = await l.fetchAsync(o); - } catch (e) { - addPageError(e); - break; - } - if (!Array.isArray(o)) { - addPageError( - new n.FormatError( - "Page dictionary kids object is not an array.", - ), - ); - break; - } - if (r >= o.length) { - a.pop(); - continue; - } - const c = o[r]; - let h; - if (c instanceof i.Ref) { - if (s.has(c)) { - addPageError( - new n.FormatError( - "Pages tree contains circular reference.", - ), - ); - break; - } - s.put(c); - try { - h = await l.fetchAsync(c); - } catch (e) { - addPageError(e); - break; - } - } else h = c; - if (!(h instanceof i.Dict)) { - addPageError( - new n.FormatError( - "Page dictionary kid reference points to wrong type of object.", - ), - ); - break; - } - let u = h.getRaw("Type"); - if (u instanceof i.Ref) - try { - u = await l.fetchAsync(u); - } catch (e) { - addPageError(e); - break; - } - (0, i.isName)(u, "Page") || !h.has("Kids") - ? addPageDict(h, c instanceof i.Ref ? c : null) - : a.push({ currentNode: h, posInKids: 0 }); - e.posInKids++; - } - return c; - } - getPageIndex(e) { - const t = this.pageIndexCache.get(e); - if (void 0 !== t) return Promise.resolve(t); - const a = this.xref; - let r = 0; - const next = (t) => - (function pagesBeforeRef(t) { - let r, - s = 0; - return a - .fetchAsync(t) - .then(function (a) { - if ( - (0, i.isRefsEqual)(t, e) && - !(0, i.isDict)(a, "Page") && - !( - a instanceof i.Dict && - !a.has("Type") && - a.has("Contents") - ) - ) - throw new n.FormatError( - "The reference does not point to a /Page dictionary.", - ); - if (!a) return null; - if (!(a instanceof i.Dict)) - throw new n.FormatError("Node must be a dictionary."); - r = a.getRaw("Parent"); - return a.getAsync("Parent"); - }) - .then(function (e) { - if (!e) return null; - if (!(e instanceof i.Dict)) - throw new n.FormatError("Parent must be a dictionary."); - return e.getAsync("Kids"); - }) - .then(function (e) { - if (!e) return null; - const o = []; - let c = !1; - for (const r of e) { - if (!(r instanceof i.Ref)) - throw new n.FormatError("Kid must be a reference."); - if ((0, i.isRefsEqual)(r, t)) { - c = !0; - break; - } - o.push( - a.fetchAsync(r).then(function (e) { - if (!(e instanceof i.Dict)) - throw new n.FormatError( - "Kid node must be a dictionary.", - ); - e.has("Count") ? (s += e.get("Count")) : s++; - }), - ); - } - if (!c) - throw new n.FormatError( - "Kid reference not found in parent's kids.", - ); - return Promise.all(o).then(function () { - return [s, r]; - }); - }); - })(t).then((t) => { - if (!t) { - this.pageIndexCache.put(e, r); - return r; - } - const [a, n] = t; - r += a; - return next(n); - }); - return next(e); - } - get baseUrl() { - const e = this._catDict.get("URI"); - if (e instanceof i.Dict) { - const t = e.get("Base"); - if ("string" == typeof t) { - const e = (0, n.createValidAbsoluteUrl)(t, null, { - tryConvertEncoding: !0, - }); - if (e) return (0, n.shadow)(this, "baseUrl", e.href); - } - } - return (0, n.shadow)(this, "baseUrl", this.pdfManager.docBaseUrl); - } - static parseDestDictionary({ - destDict: e, - resultObj: t, - docBaseUrl: a = null, - docAttachments: s = null, - }) { - if (!(e instanceof i.Dict)) { - (0, n.warn)( - "parseDestDictionary: `destDict` must be a dictionary.", - ); - return; - } - let c, - l, - h = e.get("A"); - if (!(h instanceof i.Dict)) - if (e.has("Dest")) h = e.get("Dest"); - else { - h = e.get("AA"); - h instanceof i.Dict && - (h.has("D") - ? (h = h.get("D")) - : h.has("U") && (h = h.get("U"))); - } - if (h instanceof i.Dict) { - const e = h.get("S"); - if (!(e instanceof i.Name)) { - (0, n.warn)( - "parseDestDictionary: Invalid type in Action dictionary.", - ); - return; - } - const a = e.name; - switch (a) { - case "ResetForm": - const e = h.get("Flags"), - u = 0 == (1 & ("number" == typeof e ? e : 0)), - d = [], - f = []; - for (const e of h.get("Fields") || []) - e instanceof i.Ref - ? f.push(e.toString()) - : "string" == typeof e && - d.push((0, n.stringToPDFString)(e)); - t.resetForm = { fields: d, refs: f, include: u }; - break; - case "URI": - c = h.get("URI"); - c instanceof i.Name && (c = "/" + c.name); - break; - case "GoTo": - l = h.get("D"); - break; - case "Launch": - case "GoToR": - const g = h.get("F"); - g instanceof i.Dict - ? (c = g.get("F") || null) - : "string" == typeof g && (c = g); - let p = h.get("D"); - if (p) { - p instanceof i.Name && (p = p.name); - if ("string" == typeof c) { - const e = c.split("#")[0]; - "string" == typeof p - ? (c = e + "#" + p) - : Array.isArray(p) && - (c = e + "#" + JSON.stringify(p)); - } - } - const m = h.get("NewWindow"); - "boolean" == typeof m && (t.newWindow = m); - break; - case "GoToE": - const b = h.get("T"); - let y; - if (s && b instanceof i.Dict) { - const e = b.get("R"), - t = b.get("N"); - (0, i.isName)(e, "C") && - "string" == typeof t && - (y = s[(0, n.stringToPDFString)(t)]); - } - y - ? (t.attachment = y) - : (0, n.warn)( - 'parseDestDictionary - unimplemented "GoToE" action.', - ); - break; - case "Named": - const w = h.get("N"); - w instanceof i.Name && (t.action = w.name); - break; - case "SetOCGState": - const S = h.get("State"), - x = h.get("PreserveRB"); - if (!Array.isArray(S) || 0 === S.length) break; - const C = []; - for (const e of S) - if (e instanceof i.Name) - switch (e.name) { - case "ON": - case "OFF": - case "Toggle": - C.push(e.name); - } - else e instanceof i.Ref && C.push(e.toString()); - if (C.length !== S.length) break; - t.setOCGState = { - state: C, - preserveRB: "boolean" != typeof x || x, - }; - break; - case "JavaScript": - const k = h.get("JS"); - let v; - k instanceof o.BaseStream - ? (v = k.getString()) - : "string" == typeof k && (v = k); - const F = - v && (0, r.recoverJsURL)((0, n.stringToPDFString)(v)); - if (F) { - c = F.url; - t.newWindow = F.newWindow; - break; - } - default: - if ("JavaScript" === a || "SubmitForm" === a) break; - (0, n.warn)( - `parseDestDictionary - unsupported action: "${a}".`, - ); - } - } else e.has("Dest") && (l = e.get("Dest")); - if ("string" == typeof c) { - const e = (0, n.createValidAbsoluteUrl)(c, a, { - addDefaultProtocol: !0, - tryConvertEncoding: !0, - }); - e && (t.url = e.href); - t.unsafeUrl = c; - } - if (l) { - l instanceof i.Name && (l = l.name); - "string" == typeof l - ? (t.dest = (0, n.stringToPDFString)(l)) - : Array.isArray(l) && (t.dest = l); - } - } - } - t.Catalog = Catalog; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.NumberTree = t.NameTree = void 0; - var r = a(4), - n = a(2); - class NameOrNumberTree { - constructor(e, t, a) { - this.constructor === NameOrNumberTree && - (0, n.unreachable)("Cannot initialize NameOrNumberTree."); - this.root = e; - this.xref = t; - this._type = a; - } - getAll() { - const e = new Map(); - if (!this.root) return e; - const t = this.xref, - a = new r.RefSet(); - a.put(this.root); - const i = [this.root]; - for (; i.length > 0; ) { - const s = t.fetchIfRef(i.shift()); - if (!(s instanceof r.Dict)) continue; - if (s.has("Kids")) { - const e = s.get("Kids"); - if (!Array.isArray(e)) continue; - for (const t of e) { - if (a.has(t)) - throw new n.FormatError( - `Duplicate entry in "${this._type}" tree.`, - ); - i.push(t); - a.put(t); - } - continue; - } - const o = s.get(this._type); - if (Array.isArray(o)) - for (let a = 0, r = o.length; a < r; a += 2) - e.set(t.fetchIfRef(o[a]), t.fetchIfRef(o[a + 1])); - } - return e; - } - get(e) { - if (!this.root) return null; - const t = this.xref; - let a = t.fetchIfRef(this.root), - r = 0; - for (; a.has("Kids"); ) { - if (++r > 10) { - (0, n.warn)( - `Search depth limit reached for "${this._type}" tree.`, - ); - return null; - } - const i = a.get("Kids"); - if (!Array.isArray(i)) return null; - let s = 0, - o = i.length - 1; - for (; s <= o; ) { - const r = (s + o) >> 1, - n = t.fetchIfRef(i[r]), - c = n.get("Limits"); - if (e < t.fetchIfRef(c[0])) o = r - 1; - else { - if (!(e > t.fetchIfRef(c[1]))) { - a = n; - break; - } - s = r + 1; - } - } - if (s > o) return null; - } - const i = a.get(this._type); - if (Array.isArray(i)) { - let a = 0, - r = i.length - 2; - for (; a <= r; ) { - const n = (a + r) >> 1, - s = n + (1 & n), - o = t.fetchIfRef(i[s]); - if (e < o) r = s - 2; - else { - if (!(e > o)) return t.fetchIfRef(i[s + 1]); - a = s + 2; - } - } - } - return null; - } - } - t.NameTree = class NameTree extends NameOrNumberTree { - constructor(e, t) { - super(e, t, "Names"); - } - }; - t.NumberTree = class NumberTree extends NameOrNumberTree { - constructor(e, t) { - super(e, t, "Nums"); - } - }; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.clearGlobalCaches = function clearGlobalCaches() { - (0, r.clearPatternCaches)(); - (0, n.clearPrimitiveCaches)(); - (0, i.clearUnicodeCaches)(); - }; - var r = a(50), - n = a(4), - i = a(40); - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.FileSpec = void 0; - var r = a(2), - n = a(5), - i = a(4); - function pickPlatformItem(e) { - return e.has("UF") - ? e.get("UF") - : e.has("F") - ? e.get("F") - : e.has("Unix") - ? e.get("Unix") - : e.has("Mac") - ? e.get("Mac") - : e.has("DOS") - ? e.get("DOS") - : null; - } - t.FileSpec = class FileSpec { - constructor(e, t) { - if (e instanceof i.Dict) { - this.xref = t; - this.root = e; - e.has("FS") && (this.fs = e.get("FS")); - this.description = e.has("Desc") - ? (0, r.stringToPDFString)(e.get("Desc")) - : ""; - e.has("RF") && - (0, r.warn)("Related file specifications are not supported"); - this.contentAvailable = !0; - if (!e.has("EF")) { - this.contentAvailable = !1; - (0, r.warn)( - "Non-embedded file specifications are not supported", - ); - } - } - } - get filename() { - if (!this._filename && this.root) { - const e = pickPlatformItem(this.root) || "unnamed"; - this._filename = (0, r.stringToPDFString)(e) - .replaceAll("\\\\", "\\") - .replaceAll("\\/", "/") - .replaceAll("\\", "/"); - } - return this._filename; - } - get content() { - if (!this.contentAvailable) return null; - !this.contentRef && - this.root && - (this.contentRef = pickPlatformItem(this.root.get("EF"))); - let e = null; - if (this.contentRef) { - const t = this.xref.fetchIfRef(this.contentRef); - t instanceof n.BaseStream - ? (e = t.getBytes()) - : (0, r.warn)( - "Embedded file specification points to non-existing/invalid content", - ); - } else - (0, r.warn)( - "Embedded file specification does not have a content", - ); - return e; - } - get serializable() { - return { filename: this.filename, content: this.content }; - } - }; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.MetadataParser = void 0; - var r = a(71); - t.MetadataParser = class MetadataParser { - constructor(e) { - e = this._repair(e); - const t = new r.SimpleXMLParser({ - lowerCaseName: !0, - }).parseFromString(e); - this._metadataMap = new Map(); - this._data = e; - t && this._parse(t); - } - _repair(e) { - return e - .replace(/^[^<]+/, "") - .replaceAll(/>\\376\\377([^<]+)/g, function (e, t) { - const a = t - .replaceAll( - /\\([0-3])([0-7])([0-7])/g, - function (e, t, a, r) { - return String.fromCharCode(64 * t + 8 * a + 1 * r); - }, - ) - .replaceAll(/&(amp|apos|gt|lt|quot);/g, function (e, t) { - switch (t) { - case "amp": - return "&"; - case "apos": - return "'"; - case "gt": - return ">"; - case "lt": - return "<"; - case "quot": - return '"'; - } - throw new Error(`_repair: ${t} isn't defined.`); - }), - r = [">"]; - for (let e = 0, t = a.length; e < t; e += 2) { - const t = 256 * a.charCodeAt(e) + a.charCodeAt(e + 1); - t >= 32 && t < 127 && 60 !== t && 62 !== t && 38 !== t - ? r.push(String.fromCharCode(t)) - : r.push( - "&#x" + (65536 + t).toString(16).substring(1) + ";", - ); - } - return r.join(""); - }); - } - _getSequence(e) { - const t = e.nodeName; - return "rdf:bag" !== t && "rdf:seq" !== t && "rdf:alt" !== t - ? null - : e.childNodes.filter((e) => "rdf:li" === e.nodeName); - } - _parseArray(e) { - if (!e.hasChildNodes()) return; - const [t] = e.childNodes, - a = this._getSequence(t) || []; - this._metadataMap.set( - e.nodeName, - a.map((e) => e.textContent.trim()), - ); - } - _parse(e) { - let t = e.documentElement; - if ("rdf:rdf" !== t.nodeName) { - t = t.firstChild; - for (; t && "rdf:rdf" !== t.nodeName; ) t = t.nextSibling; - } - if (t && "rdf:rdf" === t.nodeName && t.hasChildNodes()) - for (const e of t.childNodes) - if ("rdf:description" === e.nodeName) - for (const t of e.childNodes) { - const e = t.nodeName; - switch (e) { - case "#text": - continue; - case "dc:creator": - case "dc:subject": - this._parseArray(t); - continue; - } - this._metadataMap.set(e, t.textContent.trim()); - } - } - get serializable() { - return { parsedData: this._metadataMap, rawData: this._data }; - } - }; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.XMLParserErrorCode = - t.XMLParserBase = - t.SimpleXMLParser = - t.SimpleDOMNode = - void 0; - var r = a(3); - const n = { - NoError: 0, - EndOfDocument: -1, - UnterminatedCdat: -2, - UnterminatedXmlDeclaration: -3, - UnterminatedDoctypeDeclaration: -4, - UnterminatedComment: -5, - MalformedElement: -6, - OutOfMemory: -7, - UnterminatedAttributeValue: -8, - UnterminatedElement: -9, - ElementNeverBegun: -10, - }; - t.XMLParserErrorCode = n; - function isWhitespace(e, t) { - const a = e[t]; - return " " === a || "\n" === a || "\r" === a || "\t" === a; - } - class XMLParserBase { - _resolveEntities(e) { - return e.replaceAll(/&([^;]+);/g, (e, t) => { - if ("#x" === t.substring(0, 2)) - return String.fromCodePoint(parseInt(t.substring(2), 16)); - if ("#" === t.substring(0, 1)) - return String.fromCodePoint(parseInt(t.substring(1), 10)); - switch (t) { - case "lt": - return "<"; - case "gt": - return ">"; - case "amp": - return "&"; - case "quot": - return '"'; - case "apos": - return "'"; - } - return this.onResolveEntity(t); - }); - } - _parseContent(e, t) { - const a = []; - let r = t; - function skipWs() { - for (; r < e.length && isWhitespace(e, r); ) ++r; - } - for ( - ; - r < e.length && - !isWhitespace(e, r) && - ">" !== e[r] && - "/" !== e[r]; - - ) - ++r; - const n = e.substring(t, r); - skipWs(); - for ( - ; - r < e.length && ">" !== e[r] && "/" !== e[r] && "?" !== e[r]; - - ) { - skipWs(); - let t = "", - n = ""; - for (; r < e.length && !isWhitespace(e, r) && "=" !== e[r]; ) { - t += e[r]; - ++r; - } - skipWs(); - if ("=" !== e[r]) return null; - ++r; - skipWs(); - const i = e[r]; - if ('"' !== i && "'" !== i) return null; - const s = e.indexOf(i, ++r); - if (s < 0) return null; - n = e.substring(r, s); - a.push({ name: t, value: this._resolveEntities(n) }); - r = s + 1; - skipWs(); - } - return { name: n, attributes: a, parsed: r - t }; - } - _parseProcessingInstruction(e, t) { - let a = t; - for ( - ; - a < e.length && - !isWhitespace(e, a) && - ">" !== e[a] && - "?" !== e[a] && - "/" !== e[a]; - - ) - ++a; - const r = e.substring(t, a); - !(function skipWs() { - for (; a < e.length && isWhitespace(e, a); ) ++a; - })(); - const n = a; - for (; a < e.length && ("?" !== e[a] || ">" !== e[a + 1]); ) ++a; - return { name: r, value: e.substring(n, a), parsed: a - t }; - } - parseXml(e) { - let t = 0; - for (; t < e.length; ) { - let a = t; - if ("<" === e[t]) { - ++a; - let t; - switch (e[a]) { - case "/": - ++a; - t = e.indexOf(">", a); - if (t < 0) { - this.onError(n.UnterminatedElement); - return; - } - this.onEndElement(e.substring(a, t)); - a = t + 1; - break; - case "?": - ++a; - const r = this._parseProcessingInstruction(e, a); - if ( - "?>" !== e.substring(a + r.parsed, a + r.parsed + 2) - ) { - this.onError(n.UnterminatedXmlDeclaration); - return; - } - this.onPi(r.name, r.value); - a += r.parsed + 2; - break; - case "!": - if ("--" === e.substring(a + 1, a + 3)) { - t = e.indexOf("--\x3e", a + 3); - if (t < 0) { - this.onError(n.UnterminatedComment); - return; - } - this.onComment(e.substring(a + 3, t)); - a = t + 3; - } else if ("[CDATA[" === e.substring(a + 1, a + 8)) { - t = e.indexOf("]]>", a + 8); - if (t < 0) { - this.onError(n.UnterminatedCdat); - return; - } - this.onCdata(e.substring(a + 8, t)); - a = t + 3; - } else { - if ("DOCTYPE" !== e.substring(a + 1, a + 8)) { - this.onError(n.MalformedElement); - return; - } - { - const r = e.indexOf("[", a + 8); - let i = !1; - t = e.indexOf(">", a + 8); - if (t < 0) { - this.onError(n.UnterminatedDoctypeDeclaration); - return; - } - if (r > 0 && t > r) { - t = e.indexOf("]>", a + 8); - if (t < 0) { - this.onError(n.UnterminatedDoctypeDeclaration); - return; - } - i = !0; - } - const s = e.substring(a + 8, t + (i ? 1 : 0)); - this.onDoctype(s); - a = t + (i ? 2 : 1); - } - } - break; - default: - const i = this._parseContent(e, a); - if (null === i) { - this.onError(n.MalformedElement); - return; - } - let s = !1; - if ("/>" === e.substring(a + i.parsed, a + i.parsed + 2)) - s = !0; - else if ( - ">" !== e.substring(a + i.parsed, a + i.parsed + 1) - ) { - this.onError(n.UnterminatedElement); - return; - } - this.onBeginElement(i.name, i.attributes, s); - a += i.parsed + (s ? 2 : 1); - } - } else { - for (; a < e.length && "<" !== e[a]; ) a++; - const r = e.substring(t, a); - this.onText(this._resolveEntities(r)); - } - t = a; - } - } - onResolveEntity(e) { - return `&${e};`; - } - onPi(e, t) {} - onComment(e) {} - onCdata(e) {} - onDoctype(e) {} - onText(e) {} - onBeginElement(e, t, a) {} - onEndElement(e) {} - onError(e) {} - } - t.XMLParserBase = XMLParserBase; - class SimpleDOMNode { - constructor(e, t) { - this.nodeName = e; - this.nodeValue = t; - Object.defineProperty(this, "parentNode", { - value: null, - writable: !0, - }); - } - get firstChild() { - return this.childNodes?.[0]; - } - get nextSibling() { - const e = this.parentNode.childNodes; - if (!e) return; - const t = e.indexOf(this); - return -1 !== t ? e[t + 1] : void 0; - } - get textContent() { - return this.childNodes - ? this.childNodes - .map(function (e) { - return e.textContent; - }) - .join("") - : this.nodeValue || ""; - } - get children() { - return this.childNodes || []; - } - hasChildNodes() { - return this.childNodes?.length > 0; - } - searchNode(e, t) { - if (t >= e.length) return this; - const a = e[t]; - if (a.name.startsWith("#") && t < e.length - 1) - return this.searchNode(e, t + 1); - const r = []; - let n = this; - for (;;) { - if (a.name === n.nodeName) { - if (0 !== a.pos) { - if (0 === r.length) return null; - { - const [i] = r.pop(); - let s = 0; - for (const r of i.childNodes) - if (a.name === r.nodeName) { - if (s === a.pos) return r.searchNode(e, t + 1); - s++; - } - return n.searchNode(e, t + 1); - } - } - { - const a = n.searchNode(e, t + 1); - if (null !== a) return a; - } - } - if (n.childNodes?.length > 0) { - r.push([n, 0]); - n = n.childNodes[0]; - } else { - if (0 === r.length) return null; - for (; 0 !== r.length; ) { - const [e, t] = r.pop(), - a = t + 1; - if (a < e.childNodes.length) { - r.push([e, a]); - n = e.childNodes[a]; - break; - } - } - if (0 === r.length) return null; - } - } - } - dump(e) { - if ("#text" !== this.nodeName) { - e.push(`<${this.nodeName}`); - if (this.attributes) - for (const t of this.attributes) - e.push(` ${t.name}="${(0, r.encodeToXmlString)(t.value)}"`); - if (this.hasChildNodes()) { - e.push(">"); - for (const t of this.childNodes) t.dump(e); - e.push(``); - } else - this.nodeValue - ? e.push( - `>${(0, r.encodeToXmlString)(this.nodeValue)}`, - ) - : e.push("/>"); - } else e.push((0, r.encodeToXmlString)(this.nodeValue)); - } - } - t.SimpleDOMNode = SimpleDOMNode; - t.SimpleXMLParser = class SimpleXMLParser extends XMLParserBase { - constructor({ hasAttributes: e = !1, lowerCaseName: t = !1 }) { - super(); - this._currentFragment = null; - this._stack = null; - this._errorCode = n.NoError; - this._hasAttributes = e; - this._lowerCaseName = t; - } - parseFromString(e) { - this._currentFragment = []; - this._stack = []; - this._errorCode = n.NoError; - this.parseXml(e); - if (this._errorCode !== n.NoError) return; - const [t] = this._currentFragment; - return t ? { documentElement: t } : void 0; - } - onText(e) { - if ( - (function isWhitespaceString(e) { - for (let t = 0, a = e.length; t < a; t++) - if (!isWhitespace(e, t)) return !1; - return !0; - })(e) - ) - return; - const t = new SimpleDOMNode("#text", e); - this._currentFragment.push(t); - } - onCdata(e) { - const t = new SimpleDOMNode("#text", e); - this._currentFragment.push(t); - } - onBeginElement(e, t, a) { - this._lowerCaseName && (e = e.toLowerCase()); - const r = new SimpleDOMNode(e); - r.childNodes = []; - this._hasAttributes && (r.attributes = t); - this._currentFragment.push(r); - if (!a) { - this._stack.push(this._currentFragment); - this._currentFragment = r.childNodes; - } - } - onEndElement(e) { - this._currentFragment = this._stack.pop() || []; - const t = this._currentFragment.at(-1); - if (!t) return null; - for (const e of t.childNodes) e.parentNode = t; - return t; - } - onError(e) { - this._errorCode = e; - } - }; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.StructTreeRoot = t.StructTreePage = void 0; - var r = a(2), - n = a(4), - i = a(67), - s = a(73); - const o = 1, - c = 2, - l = 3, - h = 4, - u = 5; - class StructTreeRoot { - constructor(e, t) { - this.dict = e; - this.ref = t instanceof n.Ref ? t : null; - this.roleMap = new Map(); - this.structParentIds = null; - } - init() { - this.readRoleMap(); - } - #C(e, t, a) { - if (!(e instanceof n.Ref) || t < 0) return; - this.structParentIds ||= new n.RefSetCache(); - let r = this.structParentIds.get(e); - if (!r) { - r = []; - this.structParentIds.put(e, r); - } - r.push([t, a]); - } - addAnnotationIdToPage(e, t) { - this.#C(e, t, h); - } - readRoleMap() { - const e = this.dict.get("RoleMap"); - e instanceof n.Dict && - e.forEach((e, t) => { - t instanceof n.Name && this.roleMap.set(e, t.name); - }); - } - static async canCreateStructureTree({ - catalogRef: e, - pdfManager: t, - newAnnotationsByPage: a, - }) { - if (!(e instanceof n.Ref)) { - (0, r.warn)( - "Cannot save the struct tree: no catalog reference.", - ); - return !1; - } - let i = 0, - s = !0; - for (const [e, o] of a) { - const { ref: a } = await t.getPage(e); - if (!(a instanceof n.Ref)) { - (0, r.warn)( - `Cannot save the struct tree: page ${e} has no ref.`, - ); - s = !0; - break; - } - for (const e of o) - if (e.accessibilityData?.type) { - e.parentTreeId = i++; - s = !1; - } - } - if (s) { - for (const e of a.values()) - for (const t of e) delete t.parentTreeId; - return !1; - } - return !0; - } - static async createStructureTree({ - newAnnotationsByPage: e, - xref: t, - catalogRef: a, - pdfManager: r, - newRefs: i, - }) { - const o = r.catalog.cloneDict(), - c = t.getNewTemporaryRef(); - o.set("StructTreeRoot", c); - const l = []; - await (0, s.writeObject)(a, o, l, t); - i.push({ ref: a, data: l.join("") }); - const h = new n.Dict(t); - h.set("Type", n.Name.get("StructTreeRoot")); - const u = t.getNewTemporaryRef(); - h.set("ParentTree", u); - const d = []; - h.set("K", d); - const f = new n.Dict(t), - g = []; - f.set("Nums", g); - const p = await this.#k({ - newAnnotationsByPage: e, - structTreeRootRef: c, - kids: d, - nums: g, - xref: t, - pdfManager: r, - newRefs: i, - buffer: l, - }); - h.set("ParentTreeNextKey", p); - l.length = 0; - await (0, s.writeObject)(u, f, l, t); - i.push({ ref: u, data: l.join("") }); - l.length = 0; - await (0, s.writeObject)(c, h, l, t); - i.push({ ref: c, data: l.join("") }); - } - async canUpdateStructTree({ - pdfManager: e, - newAnnotationsByPage: t, - }) { - if (!this.ref) { - (0, r.warn)( - "Cannot update the struct tree: no root reference.", - ); - return !1; - } - let a = this.dict.get("ParentTreeNextKey"); - if (!Number.isInteger(a) || a < 0) { - (0, r.warn)("Cannot update the struct tree: invalid next key."); - return !1; - } - const i = this.dict.get("ParentTree"); - if (!(i instanceof n.Dict)) { - (0, r.warn)( - "Cannot update the struct tree: ParentTree isn't a dict.", - ); - return !1; - } - const s = i.get("Nums"); - if (!Array.isArray(s)) { - (0, r.warn)( - "Cannot update the struct tree: nums isn't an array.", - ); - return !1; - } - const { numPages: o } = e.catalog; - for (const a of t.keys()) { - const { pageDict: t, ref: i } = await e.getPage(a); - if (!(i instanceof n.Ref)) { - (0, r.warn)( - `Cannot save the struct tree: page ${a} has no ref.`, - ); - return !1; - } - const s = t.get("StructParents"); - if (!Number.isInteger(s) || s < 0 || s >= o) { - (0, r.warn)( - `Cannot save the struct tree: page ${a} has no id.`, - ); - return !1; - } - } - let c = !0; - for (const [r, n] of t) { - const { pageDict: t } = await e.getPage(r); - StructTreeRoot.#v({ - elements: n, - xref: this.dict.xref, - pageDict: t, - parentTree: i, - }); - for (const e of n) - if (e.accessibilityData?.type) { - e.parentTreeId = a++; - c = !1; - } - } - if (c) { - for (const e of t.values()) - for (const t of e) { - delete t.parentTreeId; - delete t.structTreeParent; - } - return !1; - } - return !0; - } - async updateStructureTree({ - newAnnotationsByPage: e, - pdfManager: t, - newRefs: a, - }) { - const r = this.dict.xref, - i = this.dict.clone(), - o = this.ref; - let c, - l = i.getRaw("ParentTree"); - if (l instanceof n.Ref) c = r.fetch(l); - else { - c = l; - l = r.getNewTemporaryRef(); - i.set("ParentTree", l); - } - c = c.clone(); - let h = c.getRaw("Nums"), - u = null; - if (h instanceof n.Ref) { - u = h; - h = r.fetch(u); - } - h = h.slice(); - u || c.set("Nums", h); - let d = i.getRaw("K"), - f = null; - if (d instanceof n.Ref) { - f = d; - d = r.fetch(f); - } else { - f = r.getNewTemporaryRef(); - i.set("K", f); - } - d = Array.isArray(d) ? d.slice() : [d]; - const g = [], - p = await StructTreeRoot.#k({ - newAnnotationsByPage: e, - structTreeRootRef: o, - kids: d, - nums: h, - xref: r, - pdfManager: t, - newRefs: a, - buffer: g, - }); - i.set("ParentTreeNextKey", p); - g.length = 0; - await (0, s.writeObject)(f, d, g, r); - a.push({ ref: f, data: g.join("") }); - if (u) { - g.length = 0; - await (0, s.writeObject)(u, h, g, r); - a.push({ ref: u, data: g.join("") }); - } - g.length = 0; - await (0, s.writeObject)(l, c, g, r); - a.push({ ref: l, data: g.join("") }); - g.length = 0; - await (0, s.writeObject)(o, i, g, r); - a.push({ ref: o, data: g.join("") }); - } - static async #k({ - newAnnotationsByPage: e, - structTreeRootRef: t, - kids: a, - nums: r, - xref: i, - pdfManager: o, - newRefs: c, - buffer: l, - }) { - const h = n.Name.get("OBJR"); - let u = -1 / 0; - for (const [d, f] of e) { - const { ref: e } = await o.getPage(d); - for (const { - accessibilityData: { - type: o, - title: d, - lang: g, - alt: p, - expanded: m, - actualText: b, - }, - ref: y, - parentTreeId: w, - structTreeParent: S, - } of f) { - u = Math.max(u, w); - const f = i.getNewTemporaryRef(), - x = new n.Dict(i); - x.set("S", n.Name.get(o)); - d && x.set("T", d); - g && x.set("Lang", g); - p && x.set("Alt", p); - m && x.set("E", m); - b && x.set("ActualText", b); - S - ? await this.#F({ - structTreeParent: S, - tagDict: x, - newTagRef: f, - fallbackRef: t, - xref: i, - newRefs: c, - buffer: l, - }) - : x.set("P", t); - const C = new n.Dict(i); - x.set("K", C); - C.set("Type", h); - C.set("Pg", e); - C.set("Obj", y); - l.length = 0; - await (0, s.writeObject)(f, x, l, i); - c.push({ ref: f, data: l.join("") }); - r.push(w, f); - a.push(f); - } - } - return u + 1; - } - static #v({ elements: e, xref: t, pageDict: a, parentTree: r }) { - const s = new Map(); - for (const t of e) - if (t.structTreeParentId) { - const e = parseInt(t.structTreeParentId.split("_mc")[1], 10); - s.set(e, t); - } - const o = a.get("StructParents"), - c = new i.NumberTree(r, t).get(o); - if (!Array.isArray(c)) return; - const updateElement = (e, a, r) => { - const i = s.get(e); - if (i) { - const e = a.getRaw("P"), - s = t.fetchIfRef(e); - e instanceof n.Ref && - s instanceof n.Dict && - (i.structTreeParent = { ref: r, dict: a }); - return !0; - } - return !1; - }; - for (const e of c) { - if (!(e instanceof n.Ref)) continue; - const a = t.fetch(e), - r = a.get("K"); - if (Number.isInteger(r)) updateElement(r, a, e); - else if (Array.isArray(r)) - for (let n of r) { - n = t.fetchIfRef(n); - if (Number.isInteger(n) && updateElement(n, a, e)) break; - } - } - } - static async #F({ - structTreeParent: { ref: e, dict: t }, - tagDict: a, - newTagRef: i, - fallbackRef: o, - xref: c, - newRefs: l, - buffer: h, - }) { - const u = t.getRaw("P"); - let d = c.fetchIfRef(u); - a.set("P", u); - let f, - g = !1, - p = d.getRaw("K"); - if (p instanceof n.Ref) f = c.fetch(p); - else { - f = p; - p = c.getNewTemporaryRef(); - d = d.clone(); - d.set("K", p); - g = !0; - } - if (Array.isArray(f)) { - const t = f.indexOf(e); - if (!(t >= 0)) { - (0, r.warn)( - "Cannot update the struct tree: parent kid not found.", - ); - a.set("P", o); - return; - } - f = f.slice(); - f.splice(t + 1, 0, i); - } else if (f instanceof n.Dict) { - f = [p, i]; - p = c.getNewTemporaryRef(); - d.set("K", p); - g = !0; - } - h.length = 0; - await (0, s.writeObject)(p, f, h, c); - l.push({ ref: p, data: h.join("") }); - if (g) { - h.length = 0; - await (0, s.writeObject)(u, d, h, c); - l.push({ ref: u, data: h.join("") }); - } - } - } - t.StructTreeRoot = StructTreeRoot; - class StructElementNode { - constructor(e, t) { - this.tree = e; - this.dict = t; - this.kids = []; - this.parseKids(); - } - get role() { - const e = this.dict.get("S"), - t = e instanceof n.Name ? e.name : "", - { root: a } = this.tree; - return a.roleMap.has(t) ? a.roleMap.get(t) : t; - } - parseKids() { - let e = null; - const t = this.dict.getRaw("Pg"); - t instanceof n.Ref && (e = t.toString()); - const a = this.dict.get("K"); - if (Array.isArray(a)) - for (const t of a) { - const a = this.parseKid(e, t); - a && this.kids.push(a); - } - else { - const t = this.parseKid(e, a); - t && this.kids.push(t); - } - } - parseKid(e, t) { - if (Number.isInteger(t)) - return this.tree.pageDict.objId !== e - ? null - : new StructElement({ type: o, mcid: t, pageObjId: e }); - let a = null; - t instanceof n.Ref - ? (a = this.dict.xref.fetch(t)) - : t instanceof n.Dict && (a = t); - if (!a) return null; - const r = a.getRaw("Pg"); - r instanceof n.Ref && (e = r.toString()); - const i = - a.get("Type") instanceof n.Name ? a.get("Type").name : null; - if ("MCR" === i) { - if (this.tree.pageDict.objId !== e) return null; - const t = a.getRaw("Stm"); - return new StructElement({ - type: c, - refObjId: t instanceof n.Ref ? t.toString() : null, - pageObjId: e, - mcid: a.get("MCID"), - }); - } - if ("OBJR" === i) { - if (this.tree.pageDict.objId !== e) return null; - const t = a.getRaw("Obj"); - return new StructElement({ - type: l, - refObjId: t instanceof n.Ref ? t.toString() : null, - pageObjId: e, - }); - } - return new StructElement({ type: u, dict: a }); - } - } - class StructElement { - constructor({ - type: e, - dict: t = null, - mcid: a = null, - pageObjId: r = null, - refObjId: n = null, - }) { - this.type = e; - this.dict = t; - this.mcid = a; - this.pageObjId = r; - this.refObjId = n; - this.parentNode = null; - } - } - t.StructTreePage = class StructTreePage { - constructor(e, t) { - this.root = e; - this.rootDict = e ? e.dict : null; - this.pageDict = t; - this.nodes = []; - } - parse(e) { - if (!this.root || !this.rootDict) return; - const t = this.rootDict.get("ParentTree"); - if (!t) return; - const a = this.pageDict.get("StructParents"), - r = e instanceof n.Ref && this.root.structParentIds?.get(e); - if (!Number.isInteger(a) && !r) return; - const s = new Map(), - o = new i.NumberTree(t, this.rootDict.xref); - if (Number.isInteger(a)) { - const e = o.get(a); - if (Array.isArray(e)) - for (const t of e) - t instanceof n.Ref && - this.addNode(this.rootDict.xref.fetch(t), s); - } - if (r) - for (const [e, t] of r) { - const a = o.get(e); - if (a) { - const e = this.addNode(this.rootDict.xref.fetchIfRef(a), s); - 1 === e?.kids?.length && - e.kids[0].type === l && - (e.kids[0].type = t); - } - } - } - addNode(e, t, a = 0) { - if (a > 40) { - (0, r.warn)("StructTree MAX_DEPTH reached."); - return null; - } - if (t.has(e)) return t.get(e); - const i = new StructElementNode(this, e); - t.set(e, i); - const s = e.get("P"); - if (!s || (0, n.isName)(s.get("Type"), "StructTreeRoot")) { - this.addTopLevelNode(e, i) || t.delete(e); - return i; - } - const o = this.addNode(s, t, a + 1); - if (!o) return i; - let c = !1; - for (const t of o.kids) - if (t.type === u && t.dict === e) { - t.parentNode = i; - c = !0; - } - c || t.delete(e); - return i; - } - addTopLevelNode(e, t) { - const a = this.rootDict.get("K"); - if (!a) return !1; - if (a instanceof n.Dict) { - if (a.objId !== e.objId) return !1; - this.nodes[0] = t; - return !0; - } - if (!Array.isArray(a)) return !0; - let r = !1; - for (let n = 0; n < a.length; n++) { - const i = a[n]; - if (i?.toString() === e.objId) { - this.nodes[n] = t; - r = !0; - } - } - return r; - } - get serializable() { - function nodeToSerializable(e, t, a = 0) { - if (a > 40) { - (0, r.warn)("StructTree too deep to be fully serialized."); - return; - } - const n = Object.create(null); - n.role = e.role; - n.children = []; - t.children.push(n); - const i = e.dict.get("Alt"); - "string" == typeof i && (n.alt = (0, r.stringToPDFString)(i)); - const s = e.dict.get("Lang"); - "string" == typeof s && (n.lang = (0, r.stringToPDFString)(s)); - for (const t of e.kids) { - const e = t.type === u ? t.parentNode : null; - e - ? nodeToSerializable(e, n, a + 1) - : t.type === o || t.type === c - ? n.children.push({ - type: "content", - id: `p${t.pageObjId}_mc${t.mcid}`, - }) - : t.type === l - ? n.children.push({ type: "object", id: t.refObjId }) - : t.type === h && - n.children.push({ - type: "annotation", - id: `${r.AnnotationPrefix}${t.refObjId}`, - }); - } - } - const e = Object.create(null); - e.children = []; - e.role = "Root"; - for (const t of this.nodes) t && nodeToSerializable(t, e); - return e; - } - }; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.incrementalUpdate = async function incrementalUpdate({ - originalData: e, - xrefInfo: t, - newRefs: a, - xref: o = null, - hasXfa: l = !1, - xfaDatasetsRef: h = null, - hasXfaDatasetsEntry: u = !1, - needAppearances: d, - acroFormRef: f = null, - acroForm: g = null, - xfaData: p = null, - }) { - await (async function updateAcroform({ - xref: e, - acroForm: t, - acroFormRef: a, - hasXfa: n, - hasXfaDatasetsEntry: i, - xfaDatasetsRef: s, - needAppearances: o, - newRefs: c, - }) { - !n || i || s || (0, r.warn)("XFA - Cannot save it"); - if (!o && (!n || !s || i)) return; - const l = t.clone(); - if (n && !i) { - const e = t.get("XFA").slice(); - e.splice(2, 0, "datasets"); - e.splice(3, 0, s); - l.set("XFA", e); - } - o && l.set("NeedAppearances", !0); - const h = []; - await writeObject(a, l, h, e); - c.push({ ref: a, data: h.join("") }); - })({ - xref: o, - acroForm: g, - acroFormRef: f, - hasXfa: l, - hasXfaDatasetsEntry: u, - xfaDatasetsRef: h, - needAppearances: d, - newRefs: a, - }); - l && - (function updateXFA({ - xfaData: e, - xfaDatasetsRef: t, - newRefs: a, - xref: n, - }) { - if (null === e) { - e = (function writeXFADataForAcroform(e, t) { - const a = new s.SimpleXMLParser({ - hasAttributes: !0, - }).parseFromString(e); - for (const { xfa: e } of t) { - if (!e) continue; - const { path: t, value: n } = e; - if (!t) continue; - const o = (0, i.parseXFAPath)(t); - let c = a.documentElement.searchNode(o, 0); - !c && - o.length > 1 && - (c = a.documentElement.searchNode([o.at(-1)], 0)); - c - ? (c.childNodes = Array.isArray(n) - ? n.map((e) => new s.SimpleDOMNode("value", e)) - : [new s.SimpleDOMNode("#text", n)]) - : (0, r.warn)(`Node not found for path: ${t}`); - } - const n = []; - a.documentElement.dump(n); - return n.join(""); - })(n.fetchIfRef(t).getString(), a); - } - const o = n.encrypt; - if (o) { - e = o.createCipherTransform(t.num, t.gen).encryptString(e); - } - const c = - `${t.num} ${t.gen} obj\n<< /Type /EmbeddedFile /Length ${e.length}>>\nstream\n` + - e + - "\nendstream\nendobj\n"; - a.push({ ref: t, data: c }); - })({ xfaData: p, xfaDatasetsRef: h, newRefs: a, xref: o }); - const m = new n.Dict(null), - b = t.newRef; - let y, w; - const S = e.at(-1); - if (10 === S || 13 === S) { - y = []; - w = e.length; - } else { - y = ["\n"]; - w = e.length + 1; - } - m.set("Size", b.num + 1); - m.set("Prev", t.startXRef); - m.set("Type", n.Name.get("XRef")); - null !== t.rootRef && m.set("Root", t.rootRef); - null !== t.infoRef && m.set("Info", t.infoRef); - null !== t.encryptRef && m.set("Encrypt", t.encryptRef); - a.push({ ref: b, data: "" }); - a = a.sort((e, t) => e.ref.num - t.ref.num); - const x = [[0, 1, 65535]], - C = [0, 1]; - let k = 0; - for (const { ref: e, data: t } of a) { - k = Math.max(k, w); - x.push([1, w, Math.min(e.gen, 65535)]); - w += t.length; - C.push(e.num, 1); - y.push(t); - } - m.set("Index", C); - if (Array.isArray(t.fileIds) && t.fileIds.length > 0) { - const e = (function computeMD5(e, t) { - const a = Math.floor(Date.now() / 1e3), - n = t.filename || "", - i = [a.toString(), n, e.toString()]; - let s = i.reduce((e, t) => e + t.length, 0); - for (const e of Object.values(t.info)) { - i.push(e); - s += e.length; - } - const o = new Uint8Array(s); - let l = 0; - for (const e of i) { - writeString(e, l, o); - l += e.length; - } - return (0, r.bytesToString)((0, c.calculateMD5)(o)); - })(w, t); - m.set("ID", [t.fileIds[0], e]); - } - const v = [1, Math.ceil(Math.log2(k) / 8), 2], - F = (v[0] + v[1] + v[2]) * x.length; - m.set("W", v); - m.set("Length", F); - y.push(`${b.num} ${b.gen} obj\n`); - await writeDict(m, y, null); - y.push(" stream\n"); - const O = y.reduce((e, t) => e + t.length, 0), - T = `\nendstream\nendobj\nstartxref\n${w}\n%%EOF\n`, - M = new Uint8Array(e.length + O + F + T.length); - M.set(e); - let D = e.length; - for (const e of y) { - writeString(e, D, M); - D += e.length; - } - for (const [e, t, a] of x) { - D = writeInt(e, v[0], D, M); - D = writeInt(t, v[1], D, M); - D = writeInt(a, v[2], D, M); - } - writeString(T, D, M); - return M; - }; - t.writeDict = writeDict; - t.writeObject = writeObject; - var r = a(2), - n = a(4), - i = a(3), - s = a(71), - o = a(5), - c = a(74); - async function writeObject(e, t, a, { encrypt: r = null }) { - const i = r?.createCipherTransform(e.num, e.gen); - a.push(`${e.num} ${e.gen} obj\n`); - t instanceof n.Dict - ? await writeDict(t, a, i) - : t instanceof o.BaseStream - ? await writeStream(t, a, i) - : Array.isArray(t) && (await writeArray(t, a, i)); - a.push("\nendobj\n"); - } - async function writeDict(e, t, a) { - t.push("<<"); - for (const r of e.getKeys()) { - t.push(` /${(0, i.escapePDFName)(r)} `); - await writeValue(e.getRaw(r), t, a); - } - t.push(">>"); - } - async function writeStream(e, t, a) { - let i = e.getString(); - const { dict: s } = e, - [o, c] = await Promise.all([ - s.getAsync("Filter"), - s.getAsync("DecodeParms"), - ]), - l = Array.isArray(o) ? await s.xref.fetchIfRefAsync(o[0]) : o, - h = (0, n.isName)(l, "FlateDecode"); - if ( - "undefined" != typeof CompressionStream && - (i.length >= 256 || h) - ) - try { - const e = (0, r.stringToBytes)(i), - t = new CompressionStream("deflate"), - a = t.writable.getWriter(); - a.write(e); - a.close(); - const l = await new Response(t.readable).arrayBuffer(); - i = (0, r.bytesToString)(new Uint8Array(l)); - let u, d; - if (o) { - if (!h) { - u = Array.isArray(o) - ? [n.Name.get("FlateDecode"), ...o] - : [n.Name.get("FlateDecode"), o]; - c && (d = Array.isArray(c) ? [null, ...c] : [null, c]); - } - } else u = n.Name.get("FlateDecode"); - u && s.set("Filter", u); - d && s.set("DecodeParms", d); - } catch (e) { - (0, r.info)(`writeStream - cannot compress data: "${e}".`); - } - a && (i = a.encryptString(i)); - s.set("Length", i.length); - await writeDict(s, t, a); - t.push(" stream\n", i, "\nendstream"); - } - async function writeArray(e, t, a) { - t.push("["); - let r = !0; - for (const n of e) { - r ? (r = !1) : t.push(" "); - await writeValue(n, t, a); - } - t.push("]"); - } - async function writeValue(e, t, a) { - if (e instanceof n.Name) t.push(`/${(0, i.escapePDFName)(e.name)}`); - else if (e instanceof n.Ref) t.push(`${e.num} ${e.gen} R`); - else if (Array.isArray(e)) await writeArray(e, t, a); - else if ("string" == typeof e) { - a && (e = a.encryptString(e)); - t.push(`(${(0, i.escapeString)(e)})`); - } else - "number" == typeof e - ? t.push((0, i.numberToString)(e)) - : "boolean" == typeof e - ? t.push(e.toString()) - : e instanceof n.Dict - ? await writeDict(e, t, a) - : e instanceof o.BaseStream - ? await writeStream(e, t, a) - : null === e - ? t.push("null") - : (0, r.warn)( - `Unhandled value in writer: ${typeof e}, please file a bug.`, - ); - } - function writeInt(e, t, a, r) { - for (let n = t + a - 1; n > a - 1; n--) { - r[n] = 255 & e; - e >>= 8; - } - return a + t; - } - function writeString(e, t, a) { - for (let r = 0, n = e.length; r < n; r++) - a[t + r] = 255 & e.charCodeAt(r); - } - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.calculateSHA256 = - t.calculateMD5 = - t.PDF20 = - t.PDF17 = - t.CipherTransformFactory = - t.ARCFourCipher = - t.AES256Cipher = - t.AES128Cipher = - void 0; - t.calculateSHA384 = calculateSHA384; - t.calculateSHA512 = void 0; - var r = a(2), - n = a(4), - i = a(75); - class ARCFourCipher { - constructor(e) { - this.a = 0; - this.b = 0; - const t = new Uint8Array(256), - a = e.length; - for (let e = 0; e < 256; ++e) t[e] = e; - for (let r = 0, n = 0; r < 256; ++r) { - const i = t[r]; - n = (n + i + e[r % a]) & 255; - t[r] = t[n]; - t[n] = i; - } - this.s = t; - } - encryptBlock(e) { - let t = this.a, - a = this.b; - const r = this.s, - n = e.length, - i = new Uint8Array(n); - for (let s = 0; s < n; ++s) { - t = (t + 1) & 255; - const n = r[t]; - a = (a + n) & 255; - const o = r[a]; - r[t] = o; - r[a] = n; - i[s] = e[s] ^ r[(n + o) & 255]; - } - this.a = t; - this.b = a; - return i; - } - decryptBlock(e) { - return this.encryptBlock(e); - } - encrypt(e) { - return this.encryptBlock(e); - } - } - t.ARCFourCipher = ARCFourCipher; - const s = (function calculateMD5Closure() { - const e = new Uint8Array([ - 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, - 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, - 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, - 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, - ]), - t = new Int32Array([ - -680876936, -389564586, 606105819, -1044525330, -176418897, - 1200080426, -1473231341, -45705983, 1770035416, -1958414417, - -42063, -1990404162, 1804603682, -40341101, -1502002290, - 1236535329, -165796510, -1069501632, 643717713, -373897302, - -701558691, 38016083, -660478335, -405537848, 568446438, - -1019803690, -187363961, 1163531501, -1444681467, -51403784, - 1735328473, -1926607734, -378558, -2022574463, 1839030562, - -35309556, -1530992060, 1272893353, -155497632, -1094730640, - 681279174, -358537222, -722521979, 76029189, -640364487, - -421815835, 530742520, -995338651, -198630844, 1126891415, - -1416354905, -57434055, 1700485571, -1894986606, -1051523, - -2054922799, 1873313359, -30611744, -1560198380, 1309151649, - -145523070, -1120210379, 718787259, -343485551, - ]); - return function hash(a, r, n) { - let i = 1732584193, - s = -271733879, - o = -1732584194, - c = 271733878; - const l = (n + 72) & -64, - h = new Uint8Array(l); - let u, d; - for (u = 0; u < n; ++u) h[u] = a[r++]; - h[u++] = 128; - const f = l - 8; - for (; u < f; ) h[u++] = 0; - h[u++] = (n << 3) & 255; - h[u++] = (n >> 5) & 255; - h[u++] = (n >> 13) & 255; - h[u++] = (n >> 21) & 255; - h[u++] = (n >>> 29) & 255; - h[u++] = 0; - h[u++] = 0; - h[u++] = 0; - const g = new Int32Array(16); - for (u = 0; u < l; ) { - for (d = 0; d < 16; ++d, u += 4) - g[d] = - h[u] | - (h[u + 1] << 8) | - (h[u + 2] << 16) | - (h[u + 3] << 24); - let a, - r, - n = i, - l = s, - f = o, - p = c; - for (d = 0; d < 64; ++d) { - if (d < 16) { - a = (l & f) | (~l & p); - r = d; - } else if (d < 32) { - a = (p & l) | (~p & f); - r = (5 * d + 1) & 15; - } else if (d < 48) { - a = l ^ f ^ p; - r = (3 * d + 5) & 15; - } else { - a = f ^ (l | ~p); - r = (7 * d) & 15; - } - const i = p, - s = (n + a + t[d] + g[r]) | 0, - o = e[d]; - p = f; - f = l; - l = (l + ((s << o) | (s >>> (32 - o)))) | 0; - n = i; - } - i = (i + n) | 0; - s = (s + l) | 0; - o = (o + f) | 0; - c = (c + p) | 0; - } - return new Uint8Array([ - 255 & i, - (i >> 8) & 255, - (i >> 16) & 255, - (i >>> 24) & 255, - 255 & s, - (s >> 8) & 255, - (s >> 16) & 255, - (s >>> 24) & 255, - 255 & o, - (o >> 8) & 255, - (o >> 16) & 255, - (o >>> 24) & 255, - 255 & c, - (c >> 8) & 255, - (c >> 16) & 255, - (c >>> 24) & 255, - ]); - }; - })(); - t.calculateMD5 = s; - class Word64 { - constructor(e, t) { - this.high = 0 | e; - this.low = 0 | t; - } - and(e) { - this.high &= e.high; - this.low &= e.low; - } - xor(e) { - this.high ^= e.high; - this.low ^= e.low; - } - or(e) { - this.high |= e.high; - this.low |= e.low; - } - shiftRight(e) { - if (e >= 32) { - this.low = (this.high >>> (e - 32)) | 0; - this.high = 0; - } else { - this.low = (this.low >>> e) | (this.high << (32 - e)); - this.high = (this.high >>> e) | 0; - } - } - shiftLeft(e) { - if (e >= 32) { - this.high = this.low << (e - 32); - this.low = 0; - } else { - this.high = (this.high << e) | (this.low >>> (32 - e)); - this.low <<= e; - } - } - rotateRight(e) { - let t, a; - if (32 & e) { - a = this.low; - t = this.high; - } else { - t = this.low; - a = this.high; - } - e &= 31; - this.low = (t >>> e) | (a << (32 - e)); - this.high = (a >>> e) | (t << (32 - e)); - } - not() { - this.high = ~this.high; - this.low = ~this.low; - } - add(e) { - const t = (this.low >>> 0) + (e.low >>> 0); - let a = (this.high >>> 0) + (e.high >>> 0); - t > 4294967295 && (a += 1); - this.low = 0 | t; - this.high = 0 | a; - } - copyTo(e, t) { - e[t] = (this.high >>> 24) & 255; - e[t + 1] = (this.high >> 16) & 255; - e[t + 2] = (this.high >> 8) & 255; - e[t + 3] = 255 & this.high; - e[t + 4] = (this.low >>> 24) & 255; - e[t + 5] = (this.low >> 16) & 255; - e[t + 6] = (this.low >> 8) & 255; - e[t + 7] = 255 & this.low; - } - assign(e) { - this.high = e.high; - this.low = e.low; - } - } - const o = (function calculateSHA256Closure() { - function rotr(e, t) { - return (e >>> t) | (e << (32 - t)); - } - function ch(e, t, a) { - return (e & t) ^ (~e & a); - } - function maj(e, t, a) { - return (e & t) ^ (e & a) ^ (t & a); - } - function sigma(e) { - return rotr(e, 2) ^ rotr(e, 13) ^ rotr(e, 22); - } - function sigmaPrime(e) { - return rotr(e, 6) ^ rotr(e, 11) ^ rotr(e, 25); - } - function littleSigma(e) { - return rotr(e, 7) ^ rotr(e, 18) ^ (e >>> 3); - } - const e = [ - 1116352408, 1899447441, 3049323471, 3921009573, 961987163, - 1508970993, 2453635748, 2870763221, 3624381080, 310598401, - 607225278, 1426881987, 1925078388, 2162078206, 2614888103, - 3248222580, 3835390401, 4022224774, 264347078, 604807628, - 770255983, 1249150122, 1555081692, 1996064986, 2554220882, - 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, - 113926993, 338241895, 666307205, 773529912, 1294757372, - 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, - 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, - 3600352804, 4094571909, 275423344, 430227734, 506948616, - 659060556, 883997877, 958139571, 1322822218, 1537002063, - 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, - 2428436474, 2756734187, 3204031479, 3329325298, - ]; - return function hash(t, a, r) { - let n = 1779033703, - i = 3144134277, - s = 1013904242, - o = 2773480762, - c = 1359893119, - l = 2600822924, - h = 528734635, - u = 1541459225; - const d = 64 * Math.ceil((r + 9) / 64), - f = new Uint8Array(d); - let g, p; - for (g = 0; g < r; ++g) f[g] = t[a++]; - f[g++] = 128; - const m = d - 8; - for (; g < m; ) f[g++] = 0; - f[g++] = 0; - f[g++] = 0; - f[g++] = 0; - f[g++] = (r >>> 29) & 255; - f[g++] = (r >> 21) & 255; - f[g++] = (r >> 13) & 255; - f[g++] = (r >> 5) & 255; - f[g++] = (r << 3) & 255; - const b = new Uint32Array(64); - for (g = 0; g < d; ) { - for (p = 0; p < 16; ++p) { - b[p] = - (f[g] << 24) | - (f[g + 1] << 16) | - (f[g + 2] << 8) | - f[g + 3]; - g += 4; - } - for (p = 16; p < 64; ++p) - b[p] = - ((rotr((y = b[p - 2]), 17) ^ rotr(y, 19) ^ (y >>> 10)) + - b[p - 7] + - littleSigma(b[p - 15]) + - b[p - 16]) | - 0; - let t, - a, - r = n, - d = i, - m = s, - w = o, - S = c, - x = l, - C = h, - k = u; - for (p = 0; p < 64; ++p) { - t = k + sigmaPrime(S) + ch(S, x, C) + e[p] + b[p]; - a = sigma(r) + maj(r, d, m); - k = C; - C = x; - x = S; - S = (w + t) | 0; - w = m; - m = d; - d = r; - r = (t + a) | 0; - } - n = (n + r) | 0; - i = (i + d) | 0; - s = (s + m) | 0; - o = (o + w) | 0; - c = (c + S) | 0; - l = (l + x) | 0; - h = (h + C) | 0; - u = (u + k) | 0; - } - var y; - return new Uint8Array([ - (n >> 24) & 255, - (n >> 16) & 255, - (n >> 8) & 255, - 255 & n, - (i >> 24) & 255, - (i >> 16) & 255, - (i >> 8) & 255, - 255 & i, - (s >> 24) & 255, - (s >> 16) & 255, - (s >> 8) & 255, - 255 & s, - (o >> 24) & 255, - (o >> 16) & 255, - (o >> 8) & 255, - 255 & o, - (c >> 24) & 255, - (c >> 16) & 255, - (c >> 8) & 255, - 255 & c, - (l >> 24) & 255, - (l >> 16) & 255, - (l >> 8) & 255, - 255 & l, - (h >> 24) & 255, - (h >> 16) & 255, - (h >> 8) & 255, - 255 & h, - (u >> 24) & 255, - (u >> 16) & 255, - (u >> 8) & 255, - 255 & u, - ]); - }; - })(); - t.calculateSHA256 = o; - const c = (function calculateSHA512Closure() { - function ch(e, t, a, r, n) { - e.assign(t); - e.and(a); - n.assign(t); - n.not(); - n.and(r); - e.xor(n); - } - function maj(e, t, a, r, n) { - e.assign(t); - e.and(a); - n.assign(t); - n.and(r); - e.xor(n); - n.assign(a); - n.and(r); - e.xor(n); - } - function sigma(e, t, a) { - e.assign(t); - e.rotateRight(28); - a.assign(t); - a.rotateRight(34); - e.xor(a); - a.assign(t); - a.rotateRight(39); - e.xor(a); - } - function sigmaPrime(e, t, a) { - e.assign(t); - e.rotateRight(14); - a.assign(t); - a.rotateRight(18); - e.xor(a); - a.assign(t); - a.rotateRight(41); - e.xor(a); - } - function littleSigma(e, t, a) { - e.assign(t); - e.rotateRight(1); - a.assign(t); - a.rotateRight(8); - e.xor(a); - a.assign(t); - a.shiftRight(7); - e.xor(a); - } - function littleSigmaPrime(e, t, a) { - e.assign(t); - e.rotateRight(19); - a.assign(t); - a.rotateRight(61); - e.xor(a); - a.assign(t); - a.shiftRight(6); - e.xor(a); - } - const e = [ - new Word64(1116352408, 3609767458), - new Word64(1899447441, 602891725), - new Word64(3049323471, 3964484399), - new Word64(3921009573, 2173295548), - new Word64(961987163, 4081628472), - new Word64(1508970993, 3053834265), - new Word64(2453635748, 2937671579), - new Word64(2870763221, 3664609560), - new Word64(3624381080, 2734883394), - new Word64(310598401, 1164996542), - new Word64(607225278, 1323610764), - new Word64(1426881987, 3590304994), - new Word64(1925078388, 4068182383), - new Word64(2162078206, 991336113), - new Word64(2614888103, 633803317), - new Word64(3248222580, 3479774868), - new Word64(3835390401, 2666613458), - new Word64(4022224774, 944711139), - new Word64(264347078, 2341262773), - new Word64(604807628, 2007800933), - new Word64(770255983, 1495990901), - new Word64(1249150122, 1856431235), - new Word64(1555081692, 3175218132), - new Word64(1996064986, 2198950837), - new Word64(2554220882, 3999719339), - new Word64(2821834349, 766784016), - new Word64(2952996808, 2566594879), - new Word64(3210313671, 3203337956), - new Word64(3336571891, 1034457026), - new Word64(3584528711, 2466948901), - new Word64(113926993, 3758326383), - new Word64(338241895, 168717936), - new Word64(666307205, 1188179964), - new Word64(773529912, 1546045734), - new Word64(1294757372, 1522805485), - new Word64(1396182291, 2643833823), - new Word64(1695183700, 2343527390), - new Word64(1986661051, 1014477480), - new Word64(2177026350, 1206759142), - new Word64(2456956037, 344077627), - new Word64(2730485921, 1290863460), - new Word64(2820302411, 3158454273), - new Word64(3259730800, 3505952657), - new Word64(3345764771, 106217008), - new Word64(3516065817, 3606008344), - new Word64(3600352804, 1432725776), - new Word64(4094571909, 1467031594), - new Word64(275423344, 851169720), - new Word64(430227734, 3100823752), - new Word64(506948616, 1363258195), - new Word64(659060556, 3750685593), - new Word64(883997877, 3785050280), - new Word64(958139571, 3318307427), - new Word64(1322822218, 3812723403), - new Word64(1537002063, 2003034995), - new Word64(1747873779, 3602036899), - new Word64(1955562222, 1575990012), - new Word64(2024104815, 1125592928), - new Word64(2227730452, 2716904306), - new Word64(2361852424, 442776044), - new Word64(2428436474, 593698344), - new Word64(2756734187, 3733110249), - new Word64(3204031479, 2999351573), - new Word64(3329325298, 3815920427), - new Word64(3391569614, 3928383900), - new Word64(3515267271, 566280711), - new Word64(3940187606, 3454069534), - new Word64(4118630271, 4000239992), - new Word64(116418474, 1914138554), - new Word64(174292421, 2731055270), - new Word64(289380356, 3203993006), - new Word64(460393269, 320620315), - new Word64(685471733, 587496836), - new Word64(852142971, 1086792851), - new Word64(1017036298, 365543100), - new Word64(1126000580, 2618297676), - new Word64(1288033470, 3409855158), - new Word64(1501505948, 4234509866), - new Word64(1607167915, 987167468), - new Word64(1816402316, 1246189591), - ]; - return function hash(t, a, r, n = !1) { - let i, s, o, c, l, h, u, d; - if (n) { - i = new Word64(3418070365, 3238371032); - s = new Word64(1654270250, 914150663); - o = new Word64(2438529370, 812702999); - c = new Word64(355462360, 4144912697); - l = new Word64(1731405415, 4290775857); - h = new Word64(2394180231, 1750603025); - u = new Word64(3675008525, 1694076839); - d = new Word64(1203062813, 3204075428); - } else { - i = new Word64(1779033703, 4089235720); - s = new Word64(3144134277, 2227873595); - o = new Word64(1013904242, 4271175723); - c = new Word64(2773480762, 1595750129); - l = new Word64(1359893119, 2917565137); - h = new Word64(2600822924, 725511199); - u = new Word64(528734635, 4215389547); - d = new Word64(1541459225, 327033209); - } - const f = 128 * Math.ceil((r + 17) / 128), - g = new Uint8Array(f); - let p, m; - for (p = 0; p < r; ++p) g[p] = t[a++]; - g[p++] = 128; - const b = f - 16; - for (; p < b; ) g[p++] = 0; - g[p++] = 0; - g[p++] = 0; - g[p++] = 0; - g[p++] = 0; - g[p++] = 0; - g[p++] = 0; - g[p++] = 0; - g[p++] = 0; - g[p++] = 0; - g[p++] = 0; - g[p++] = 0; - g[p++] = (r >>> 29) & 255; - g[p++] = (r >> 21) & 255; - g[p++] = (r >> 13) & 255; - g[p++] = (r >> 5) & 255; - g[p++] = (r << 3) & 255; - const y = new Array(80); - for (p = 0; p < 80; p++) y[p] = new Word64(0, 0); - let w = new Word64(0, 0), - S = new Word64(0, 0), - x = new Word64(0, 0), - C = new Word64(0, 0), - k = new Word64(0, 0), - v = new Word64(0, 0), - F = new Word64(0, 0), - O = new Word64(0, 0); - const T = new Word64(0, 0), - M = new Word64(0, 0), - D = new Word64(0, 0), - E = new Word64(0, 0); - let N, R; - for (p = 0; p < f; ) { - for (m = 0; m < 16; ++m) { - y[m].high = - (g[p] << 24) | - (g[p + 1] << 16) | - (g[p + 2] << 8) | - g[p + 3]; - y[m].low = - (g[p + 4] << 24) | - (g[p + 5] << 16) | - (g[p + 6] << 8) | - g[p + 7]; - p += 8; - } - for (m = 16; m < 80; ++m) { - N = y[m]; - littleSigmaPrime(N, y[m - 2], E); - N.add(y[m - 7]); - littleSigma(D, y[m - 15], E); - N.add(D); - N.add(y[m - 16]); - } - w.assign(i); - S.assign(s); - x.assign(o); - C.assign(c); - k.assign(l); - v.assign(h); - F.assign(u); - O.assign(d); - for (m = 0; m < 80; ++m) { - T.assign(O); - sigmaPrime(D, k, E); - T.add(D); - ch(D, k, v, F, E); - T.add(D); - T.add(e[m]); - T.add(y[m]); - sigma(M, w, E); - maj(D, w, S, x, E); - M.add(D); - N = O; - O = F; - F = v; - v = k; - C.add(T); - k = C; - C = x; - x = S; - S = w; - N.assign(T); - N.add(M); - w = N; - } - i.add(w); - s.add(S); - o.add(x); - c.add(C); - l.add(k); - h.add(v); - u.add(F); - d.add(O); - } - if (n) { - R = new Uint8Array(48); - i.copyTo(R, 0); - s.copyTo(R, 8); - o.copyTo(R, 16); - c.copyTo(R, 24); - l.copyTo(R, 32); - h.copyTo(R, 40); - } else { - R = new Uint8Array(64); - i.copyTo(R, 0); - s.copyTo(R, 8); - o.copyTo(R, 16); - c.copyTo(R, 24); - l.copyTo(R, 32); - h.copyTo(R, 40); - u.copyTo(R, 48); - d.copyTo(R, 56); - } - return R; - }; - })(); - t.calculateSHA512 = c; - function calculateSHA384(e, t, a) { - return c(e, t, a, !0); - } - class NullCipher { - decryptBlock(e) { - return e; - } - encrypt(e) { - return e; - } - } - class AESBaseCipher { - constructor() { - this.constructor === AESBaseCipher && - (0, r.unreachable)("Cannot initialize AESBaseCipher."); - this._s = new Uint8Array([ - 99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, - 171, 118, 202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, - 175, 156, 164, 114, 192, 183, 253, 147, 38, 54, 63, 247, 204, - 52, 165, 229, 241, 113, 216, 49, 21, 4, 199, 35, 195, 24, 150, - 5, 154, 7, 18, 128, 226, 235, 39, 178, 117, 9, 131, 44, 26, 27, - 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132, 83, 209, 0, - 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207, 208, - 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, - 168, 81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, - 255, 243, 210, 205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, - 61, 100, 93, 25, 115, 96, 129, 79, 220, 34, 42, 144, 136, 70, - 238, 184, 20, 222, 94, 11, 219, 224, 50, 58, 10, 73, 6, 36, 92, - 194, 211, 172, 98, 145, 149, 228, 121, 231, 200, 55, 109, 141, - 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8, 186, 120, 37, - 46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189, 139, 138, - 112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, - 29, 158, 225, 248, 152, 17, 105, 217, 142, 148, 155, 30, 135, - 233, 206, 85, 40, 223, 140, 161, 137, 13, 191, 230, 66, 104, 65, - 153, 45, 15, 176, 84, 187, 22, - ]); - this._inv_s = new Uint8Array([ - 82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129, 243, - 215, 251, 124, 227, 57, 130, 155, 47, 255, 135, 52, 142, 67, 68, - 196, 222, 233, 203, 84, 123, 148, 50, 166, 194, 35, 61, 238, 76, - 149, 11, 66, 250, 195, 78, 8, 46, 161, 102, 40, 217, 36, 178, - 118, 91, 162, 73, 109, 139, 209, 37, 114, 248, 246, 100, 134, - 104, 152, 22, 212, 164, 92, 204, 93, 101, 182, 146, 108, 112, - 72, 80, 253, 237, 185, 218, 94, 21, 70, 87, 167, 141, 157, 132, - 144, 216, 171, 0, 140, 188, 211, 10, 247, 228, 88, 5, 184, 179, - 69, 6, 208, 44, 30, 143, 202, 63, 15, 2, 193, 175, 189, 3, 1, - 19, 138, 107, 58, 145, 17, 65, 79, 103, 220, 234, 151, 242, 207, - 206, 240, 180, 230, 115, 150, 172, 116, 34, 231, 173, 53, 133, - 226, 249, 55, 232, 28, 117, 223, 110, 71, 241, 26, 113, 29, 41, - 197, 137, 111, 183, 98, 14, 170, 24, 190, 27, 252, 86, 62, 75, - 198, 210, 121, 32, 154, 219, 192, 254, 120, 205, 90, 244, 31, - 221, 168, 51, 136, 7, 199, 49, 177, 18, 16, 89, 39, 128, 236, - 95, 96, 81, 127, 169, 25, 181, 74, 13, 45, 229, 122, 159, 147, - 201, 156, 239, 160, 224, 59, 77, 174, 42, 245, 176, 200, 235, - 187, 60, 131, 83, 153, 97, 23, 43, 4, 126, 186, 119, 214, 38, - 225, 105, 20, 99, 85, 33, 12, 125, - ]); - this._mix = new Uint32Array([ - 0, 235474187, 470948374, 303765277, 941896748, 908933415, - 607530554, 708780849, 1883793496, 2118214995, 1817866830, - 1649639237, 1215061108, 1181045119, 1417561698, 1517767529, - 3767586992, 4003061179, 4236429990, 4069246893, 3635733660, - 3602770327, 3299278474, 3400528769, 2430122216, 2664543715, - 2362090238, 2193862645, 2835123396, 2801107407, 3035535058, - 3135740889, 3678124923, 3576870512, 3341394285, 3374361702, - 3810496343, 3977675356, 4279080257, 4043610186, 2876494627, - 2776292904, 3076639029, 3110650942, 2472011535, 2640243204, - 2403728665, 2169303058, 1001089995, 899835584, 666464733, - 699432150, 59727847, 226906860, 530400753, 294930682, - 1273168787, 1172967064, 1475418501, 1509430414, 1942435775, - 2110667444, 1876241833, 1641816226, 2910219766, 2743034109, - 2976151520, 3211623147, 2505202138, 2606453969, 2302690252, - 2269728455, 3711829422, 3543599269, 3240894392, 3475313331, - 3843699074, 3943906441, 4178062228, 4144047775, 1306967366, - 1139781709, 1374988112, 1610459739, 1975683434, 2076935265, - 1775276924, 1742315127, 1034867998, 866637845, 566021896, - 800440835, 92987698, 193195065, 429456164, 395441711, - 1984812685, 2017778566, 1784663195, 1683407248, 1315562145, - 1080094634, 1383856311, 1551037884, 101039829, 135050206, - 437757123, 337553864, 1042385657, 807962610, 573804783, - 742039012, 2531067453, 2564033334, 2328828971, 2227573024, - 2935566865, 2700099354, 3001755655, 3168937228, 3868552805, - 3902563182, 4203181171, 4102977912, 3736164937, 3501741890, - 3265478751, 3433712980, 1106041591, 1340463100, 1576976609, - 1408749034, 2043211483, 2009195472, 1708848333, 1809054150, - 832877231, 1068351396, 766945465, 599762354, 159417987, - 126454664, 361929877, 463180190, 2709260871, 2943682380, - 3178106961, 3009879386, 2572697195, 2538681184, 2236228733, - 2336434550, 3509871135, 3745345300, 3441850377, 3274667266, - 3910161971, 3877198648, 4110568485, 4211818798, 2597806476, - 2497604743, 2261089178, 2295101073, 2733856160, 2902087851, - 3202437046, 2968011453, 3936291284, 3835036895, 4136440770, - 4169408201, 3535486456, 3702665459, 3467192302, 3231722213, - 2051518780, 1951317047, 1716890410, 1750902305, 1113818384, - 1282050075, 1584504582, 1350078989, 168810852, 67556463, - 371049330, 404016761, 841739592, 1008918595, 775550814, - 540080725, 3969562369, 3801332234, 4035489047, 4269907996, - 3569255213, 3669462566, 3366754619, 3332740144, 2631065433, - 2463879762, 2160117071, 2395588676, 2767645557, 2868897406, - 3102011747, 3069049960, 202008497, 33778362, 270040487, - 504459436, 875451293, 975658646, 675039627, 641025152, - 2084704233, 1917518562, 1615861247, 1851332852, 1147550661, - 1248802510, 1484005843, 1451044056, 933301370, 967311729, - 733156972, 632953703, 260388950, 25965917, 328671808, 496906059, - 1206477858, 1239443753, 1543208500, 1441952575, 2144161806, - 1908694277, 1675577880, 1842759443, 3610369226, 3644379585, - 3408119516, 3307916247, 4011190502, 3776767469, 4077384432, - 4245618683, 2809771154, 2842737049, 3144396420, 3043140495, - 2673705150, 2438237621, 2203032232, 2370213795, - ]); - this._mixCol = new Uint8Array(256); - for (let e = 0; e < 256; e++) - this._mixCol[e] = e < 128 ? e << 1 : (e << 1) ^ 27; - this.buffer = new Uint8Array(16); - this.bufferPosition = 0; - } - _expandKey(e) { - (0, r.unreachable)("Cannot call `_expandKey` on the base class"); - } - _decrypt(e, t) { - let a, r, n; - const i = new Uint8Array(16); - i.set(e); - for (let e = 0, a = this._keySize; e < 16; ++e, ++a) i[e] ^= t[a]; - for (let e = this._cyclesOfRepetition - 1; e >= 1; --e) { - a = i[13]; - i[13] = i[9]; - i[9] = i[5]; - i[5] = i[1]; - i[1] = a; - a = i[14]; - r = i[10]; - i[14] = i[6]; - i[10] = i[2]; - i[6] = a; - i[2] = r; - a = i[15]; - r = i[11]; - n = i[7]; - i[15] = i[3]; - i[11] = a; - i[7] = r; - i[3] = n; - for (let e = 0; e < 16; ++e) i[e] = this._inv_s[i[e]]; - for (let a = 0, r = 16 * e; a < 16; ++a, ++r) i[a] ^= t[r]; - for (let e = 0; e < 16; e += 4) { - const t = this._mix[i[e]], - r = this._mix[i[e + 1]], - n = this._mix[i[e + 2]], - s = this._mix[i[e + 3]]; - a = - t ^ - (r >>> 8) ^ - (r << 24) ^ - (n >>> 16) ^ - (n << 16) ^ - (s >>> 24) ^ - (s << 8); - i[e] = (a >>> 24) & 255; - i[e + 1] = (a >> 16) & 255; - i[e + 2] = (a >> 8) & 255; - i[e + 3] = 255 & a; - } - } - a = i[13]; - i[13] = i[9]; - i[9] = i[5]; - i[5] = i[1]; - i[1] = a; - a = i[14]; - r = i[10]; - i[14] = i[6]; - i[10] = i[2]; - i[6] = a; - i[2] = r; - a = i[15]; - r = i[11]; - n = i[7]; - i[15] = i[3]; - i[11] = a; - i[7] = r; - i[3] = n; - for (let e = 0; e < 16; ++e) { - i[e] = this._inv_s[i[e]]; - i[e] ^= t[e]; - } - return i; - } - _encrypt(e, t) { - const a = this._s; - let r, n, i; - const s = new Uint8Array(16); - s.set(e); - for (let e = 0; e < 16; ++e) s[e] ^= t[e]; - for (let e = 1; e < this._cyclesOfRepetition; e++) { - for (let e = 0; e < 16; ++e) s[e] = a[s[e]]; - i = s[1]; - s[1] = s[5]; - s[5] = s[9]; - s[9] = s[13]; - s[13] = i; - i = s[2]; - n = s[6]; - s[2] = s[10]; - s[6] = s[14]; - s[10] = i; - s[14] = n; - i = s[3]; - n = s[7]; - r = s[11]; - s[3] = s[15]; - s[7] = i; - s[11] = n; - s[15] = r; - for (let e = 0; e < 16; e += 4) { - const t = s[e + 0], - a = s[e + 1], - n = s[e + 2], - i = s[e + 3]; - r = t ^ a ^ n ^ i; - s[e + 0] ^= r ^ this._mixCol[t ^ a]; - s[e + 1] ^= r ^ this._mixCol[a ^ n]; - s[e + 2] ^= r ^ this._mixCol[n ^ i]; - s[e + 3] ^= r ^ this._mixCol[i ^ t]; - } - for (let a = 0, r = 16 * e; a < 16; ++a, ++r) s[a] ^= t[r]; - } - for (let e = 0; e < 16; ++e) s[e] = a[s[e]]; - i = s[1]; - s[1] = s[5]; - s[5] = s[9]; - s[9] = s[13]; - s[13] = i; - i = s[2]; - n = s[6]; - s[2] = s[10]; - s[6] = s[14]; - s[10] = i; - s[14] = n; - i = s[3]; - n = s[7]; - r = s[11]; - s[3] = s[15]; - s[7] = i; - s[11] = n; - s[15] = r; - for (let e = 0, a = this._keySize; e < 16; ++e, ++a) s[e] ^= t[a]; - return s; - } - _decryptBlock2(e, t) { - const a = e.length; - let r = this.buffer, - n = this.bufferPosition; - const i = []; - let s = this.iv; - for (let t = 0; t < a; ++t) { - r[n] = e[t]; - ++n; - if (n < 16) continue; - const a = this._decrypt(r, this._key); - for (let e = 0; e < 16; ++e) a[e] ^= s[e]; - s = r; - i.push(a); - r = new Uint8Array(16); - n = 0; - } - this.buffer = r; - this.bufferLength = n; - this.iv = s; - if (0 === i.length) return new Uint8Array(0); - let o = 16 * i.length; - if (t) { - const e = i.at(-1); - let t = e[15]; - if (t <= 16) { - for (let a = 15, r = 16 - t; a >= r; --a) - if (e[a] !== t) { - t = 0; - break; - } - o -= t; - i[i.length - 1] = e.subarray(0, 16 - t); - } - } - const c = new Uint8Array(o); - for (let e = 0, t = 0, a = i.length; e < a; ++e, t += 16) - c.set(i[e], t); - return c; - } - decryptBlock(e, t, a = null) { - const r = e.length, - n = this.buffer; - let i = this.bufferPosition; - if (a) this.iv = a; - else { - for (let t = 0; i < 16 && t < r; ++t, ++i) n[i] = e[t]; - if (i < 16) { - this.bufferLength = i; - return new Uint8Array(0); - } - this.iv = n; - e = e.subarray(16); - } - this.buffer = new Uint8Array(16); - this.bufferLength = 0; - this.decryptBlock = this._decryptBlock2; - return this.decryptBlock(e, t); - } - encrypt(e, t) { - const a = e.length; - let r = this.buffer, - n = this.bufferPosition; - const i = []; - t || (t = new Uint8Array(16)); - for (let s = 0; s < a; ++s) { - r[n] = e[s]; - ++n; - if (n < 16) continue; - for (let e = 0; e < 16; ++e) r[e] ^= t[e]; - const a = this._encrypt(r, this._key); - t = a; - i.push(a); - r = new Uint8Array(16); - n = 0; - } - this.buffer = r; - this.bufferLength = n; - this.iv = t; - if (0 === i.length) return new Uint8Array(0); - const s = 16 * i.length, - o = new Uint8Array(s); - for (let e = 0, t = 0, a = i.length; e < a; ++e, t += 16) - o.set(i[e], t); - return o; - } - } - class AES128Cipher extends AESBaseCipher { - constructor(e) { - super(); - this._cyclesOfRepetition = 10; - this._keySize = 160; - this._rcon = new Uint8Array([ - 141, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, 216, 171, 77, - 154, 47, 94, 188, 99, 198, 151, 53, 106, 212, 179, 125, 250, - 239, 197, 145, 57, 114, 228, 211, 189, 97, 194, 159, 37, 74, - 148, 51, 102, 204, 131, 29, 58, 116, 232, 203, 141, 1, 2, 4, 8, - 16, 32, 64, 128, 27, 54, 108, 216, 171, 77, 154, 47, 94, 188, - 99, 198, 151, 53, 106, 212, 179, 125, 250, 239, 197, 145, 57, - 114, 228, 211, 189, 97, 194, 159, 37, 74, 148, 51, 102, 204, - 131, 29, 58, 116, 232, 203, 141, 1, 2, 4, 8, 16, 32, 64, 128, - 27, 54, 108, 216, 171, 77, 154, 47, 94, 188, 99, 198, 151, 53, - 106, 212, 179, 125, 250, 239, 197, 145, 57, 114, 228, 211, 189, - 97, 194, 159, 37, 74, 148, 51, 102, 204, 131, 29, 58, 116, 232, - 203, 141, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, 216, 171, - 77, 154, 47, 94, 188, 99, 198, 151, 53, 106, 212, 179, 125, 250, - 239, 197, 145, 57, 114, 228, 211, 189, 97, 194, 159, 37, 74, - 148, 51, 102, 204, 131, 29, 58, 116, 232, 203, 141, 1, 2, 4, 8, - 16, 32, 64, 128, 27, 54, 108, 216, 171, 77, 154, 47, 94, 188, - 99, 198, 151, 53, 106, 212, 179, 125, 250, 239, 197, 145, 57, - 114, 228, 211, 189, 97, 194, 159, 37, 74, 148, 51, 102, 204, - 131, 29, 58, 116, 232, 203, 141, - ]); - this._key = this._expandKey(e); - } - _expandKey(e) { - const t = this._s, - a = this._rcon, - r = new Uint8Array(176); - r.set(e); - for (let e = 16, n = 1; e < 176; ++n) { - let i = r[e - 3], - s = r[e - 2], - o = r[e - 1], - c = r[e - 4]; - i = t[i]; - s = t[s]; - o = t[o]; - c = t[c]; - i ^= a[n]; - for (let t = 0; t < 4; ++t) { - r[e] = i ^= r[e - 16]; - e++; - r[e] = s ^= r[e - 16]; - e++; - r[e] = o ^= r[e - 16]; - e++; - r[e] = c ^= r[e - 16]; - e++; - } - } - return r; - } - } - t.AES128Cipher = AES128Cipher; - class AES256Cipher extends AESBaseCipher { - constructor(e) { - super(); - this._cyclesOfRepetition = 14; - this._keySize = 224; - this._key = this._expandKey(e); - } - _expandKey(e) { - const t = this._s, - a = new Uint8Array(240); - a.set(e); - let r, - n, - i, - s, - o = 1; - for (let e = 32, c = 1; e < 240; ++c) { - if (e % 32 == 16) { - r = t[r]; - n = t[n]; - i = t[i]; - s = t[s]; - } else if (e % 32 == 0) { - r = a[e - 3]; - n = a[e - 2]; - i = a[e - 1]; - s = a[e - 4]; - r = t[r]; - n = t[n]; - i = t[i]; - s = t[s]; - r ^= o; - (o <<= 1) >= 256 && (o = 255 & (27 ^ o)); - } - for (let t = 0; t < 4; ++t) { - a[e] = r ^= a[e - 32]; - e++; - a[e] = n ^= a[e - 32]; - e++; - a[e] = i ^= a[e - 32]; - e++; - a[e] = s ^= a[e - 32]; - e++; - } - } - return a; - } - } - t.AES256Cipher = AES256Cipher; - class PDF17 { - checkOwnerPassword(e, t, a, n) { - const i = new Uint8Array(e.length + 56); - i.set(e, 0); - i.set(t, e.length); - i.set(a, e.length + t.length); - const s = o(i, 0, i.length); - return (0, r.isArrayEqual)(s, n); - } - checkUserPassword(e, t, a) { - const n = new Uint8Array(e.length + 8); - n.set(e, 0); - n.set(t, e.length); - const i = o(n, 0, n.length); - return (0, r.isArrayEqual)(i, a); - } - getOwnerKey(e, t, a, r) { - const n = new Uint8Array(e.length + 56); - n.set(e, 0); - n.set(t, e.length); - n.set(a, e.length + t.length); - const i = o(n, 0, n.length); - return new AES256Cipher(i).decryptBlock( - r, - !1, - new Uint8Array(16), - ); - } - getUserKey(e, t, a) { - const r = new Uint8Array(e.length + 8); - r.set(e, 0); - r.set(t, e.length); - const n = o(r, 0, r.length); - return new AES256Cipher(n).decryptBlock( - a, - !1, - new Uint8Array(16), - ); - } - } - t.PDF17 = PDF17; - class PDF20 { - _hash(e, t, a) { - let r = o(t, 0, t.length).subarray(0, 32), - n = [0], - i = 0; - for (; i < 64 || n.at(-1) > i - 32; ) { - const t = e.length + r.length + a.length, - s = new Uint8Array(t); - let l = 0; - s.set(e, l); - l += e.length; - s.set(r, l); - l += r.length; - s.set(a, l); - const h = new Uint8Array(64 * t); - for (let e = 0, a = 0; e < 64; e++, a += t) h.set(s, a); - n = new AES128Cipher(r.subarray(0, 16)).encrypt( - h, - r.subarray(16, 32), - ); - const u = n.slice(0, 16).reduce((e, t) => e + t, 0) % 3; - 0 === u - ? (r = o(n, 0, n.length)) - : 1 === u - ? (r = calculateSHA384(n, 0, n.length)) - : 2 === u && (r = c(n, 0, n.length)); - i++; - } - return r.subarray(0, 32); - } - checkOwnerPassword(e, t, a, n) { - const i = new Uint8Array(e.length + 56); - i.set(e, 0); - i.set(t, e.length); - i.set(a, e.length + t.length); - const s = this._hash(e, i, a); - return (0, r.isArrayEqual)(s, n); - } - checkUserPassword(e, t, a) { - const n = new Uint8Array(e.length + 8); - n.set(e, 0); - n.set(t, e.length); - const i = this._hash(e, n, []); - return (0, r.isArrayEqual)(i, a); - } - getOwnerKey(e, t, a, r) { - const n = new Uint8Array(e.length + 56); - n.set(e, 0); - n.set(t, e.length); - n.set(a, e.length + t.length); - const i = this._hash(e, n, a); - return new AES256Cipher(i).decryptBlock( - r, - !1, - new Uint8Array(16), - ); - } - getUserKey(e, t, a) { - const r = new Uint8Array(e.length + 8); - r.set(e, 0); - r.set(t, e.length); - const n = this._hash(e, r, []); - return new AES256Cipher(n).decryptBlock( - a, - !1, - new Uint8Array(16), - ); - } - } - t.PDF20 = PDF20; - class CipherTransform { - constructor(e, t) { - this.StringCipherConstructor = e; - this.StreamCipherConstructor = t; - } - createStream(e, t) { - const a = new this.StreamCipherConstructor(); - return new i.DecryptStream( - e, - t, - function cipherTransformDecryptStream(e, t) { - return a.decryptBlock(e, t); - }, - ); - } - decryptString(e) { - const t = new this.StringCipherConstructor(); - let a = (0, r.stringToBytes)(e); - a = t.decryptBlock(a, !0); - return (0, r.bytesToString)(a); - } - encryptString(e) { - const t = new this.StringCipherConstructor(); - if (t instanceof AESBaseCipher) { - const a = 16 - (e.length % 16); - e += String.fromCharCode(a).repeat(a); - const n = new Uint8Array(16); - if ("undefined" != typeof crypto) crypto.getRandomValues(n); - else - for (let e = 0; e < 16; e++) - n[e] = Math.floor(256 * Math.random()); - let i = (0, r.stringToBytes)(e); - i = t.encrypt(i, n); - const s = new Uint8Array(16 + i.length); - s.set(n); - s.set(i, 16); - return (0, r.bytesToString)(s); - } - let a = (0, r.stringToBytes)(e); - a = t.encrypt(a); - return (0, r.bytesToString)(a); - } - } - class CipherTransformFactory { - static #O = new Uint8Array([ - 40, 191, 78, 94, 78, 117, 138, 65, 100, 0, 78, 86, 255, 250, 1, 8, - 46, 46, 0, 182, 208, 104, 62, 128, 47, 12, 169, 254, 100, 83, 105, - 122, - ]); - #I(e, t, a, r, n, i, s, o, c, l, h, u) { - if (t) { - const e = Math.min(127, t.length); - t = t.subarray(0, e); - } else t = []; - const d = 6 === e ? new PDF20() : new PDF17(); - return d.checkUserPassword(t, o, s) - ? d.getUserKey(t, c, h) - : t.length && d.checkOwnerPassword(t, r, i, a) - ? d.getOwnerKey(t, n, i, l) - : null; - } - #T(e, t, a, r, n, i, o, c) { - const l = 40 + a.length + e.length, - h = new Uint8Array(l); - let u, - d, - f = 0; - if (t) { - d = Math.min(32, t.length); - for (; f < d; ++f) h[f] = t[f]; - } - u = 0; - for (; f < 32; ) h[f++] = CipherTransformFactory.#O[u++]; - for (u = 0, d = a.length; u < d; ++u) h[f++] = a[u]; - h[f++] = 255 & n; - h[f++] = (n >> 8) & 255; - h[f++] = (n >> 16) & 255; - h[f++] = (n >>> 24) & 255; - for (u = 0, d = e.length; u < d; ++u) h[f++] = e[u]; - if (i >= 4 && !c) { - h[f++] = 255; - h[f++] = 255; - h[f++] = 255; - h[f++] = 255; - } - let g = s(h, 0, f); - const p = o >> 3; - if (i >= 3) for (u = 0; u < 50; ++u) g = s(g, 0, p); - const m = g.subarray(0, p); - let b, y; - if (i >= 3) { - for (f = 0; f < 32; ++f) h[f] = CipherTransformFactory.#O[f]; - for (u = 0, d = e.length; u < d; ++u) h[f++] = e[u]; - b = new ARCFourCipher(m); - y = b.encryptBlock(s(h, 0, f)); - d = m.length; - const t = new Uint8Array(d); - for (u = 1; u <= 19; ++u) { - for (let e = 0; e < d; ++e) t[e] = m[e] ^ u; - b = new ARCFourCipher(t); - y = b.encryptBlock(y); - } - for (u = 0, d = y.length; u < d; ++u) - if (r[u] !== y[u]) return null; - } else { - b = new ARCFourCipher(m); - y = b.encryptBlock(CipherTransformFactory.#O); - for (u = 0, d = y.length; u < d; ++u) - if (r[u] !== y[u]) return null; - } - return m; - } - #M(e, t, a, r) { - const n = new Uint8Array(32); - let i = 0; - const o = Math.min(32, e.length); - for (; i < o; ++i) n[i] = e[i]; - let c = 0; - for (; i < 32; ) n[i++] = CipherTransformFactory.#O[c++]; - let l = s(n, 0, i); - const h = r >> 3; - if (a >= 3) for (c = 0; c < 50; ++c) l = s(l, 0, l.length); - let u, d; - if (a >= 3) { - d = t; - const e = new Uint8Array(h); - for (c = 19; c >= 0; c--) { - for (let t = 0; t < h; ++t) e[t] = l[t] ^ c; - u = new ARCFourCipher(e); - d = u.encryptBlock(d); - } - } else { - u = new ARCFourCipher(l.subarray(0, h)); - d = u.encryptBlock(t); - } - return d; - } - #P(e, t, a, r = !1) { - const n = new Uint8Array(a.length + 9), - i = a.length; - let o; - for (o = 0; o < i; ++o) n[o] = a[o]; - n[o++] = 255 & e; - n[o++] = (e >> 8) & 255; - n[o++] = (e >> 16) & 255; - n[o++] = 255 & t; - n[o++] = (t >> 8) & 255; - if (r) { - n[o++] = 115; - n[o++] = 65; - n[o++] = 108; - n[o++] = 84; - } - return s(n, 0, o).subarray(0, Math.min(a.length + 5, 16)); - } - #D(e, t, a, i, s) { - if (!(t instanceof n.Name)) - throw new r.FormatError("Invalid crypt filter name."); - const o = this, - c = e.get(t.name), - l = c?.get("CFM"); - if (!l || "None" === l.name) - return function () { - return new NullCipher(); - }; - if ("V2" === l.name) - return function () { - return new ARCFourCipher(o.#P(a, i, s, !1)); - }; - if ("AESV2" === l.name) - return function () { - return new AES128Cipher(o.#P(a, i, s, !0)); - }; - if ("AESV3" === l.name) - return function () { - return new AES256Cipher(s); - }; - throw new r.FormatError("Unknown crypto method"); - } - constructor(e, t, a) { - const i = e.get("Filter"); - if (!(0, n.isName)(i, "Standard")) - throw new r.FormatError("unknown encryption method"); - this.filterName = i.name; - this.dict = e; - const s = e.get("V"); - if ( - !Number.isInteger(s) || - (1 !== s && 2 !== s && 4 !== s && 5 !== s) - ) - throw new r.FormatError("unsupported encryption algorithm"); - this.algorithm = s; - let o = e.get("Length"); - if (!o) - if (s <= 3) o = 40; - else { - const t = e.get("CF"), - a = e.get("StmF"); - if (t instanceof n.Dict && a instanceof n.Name) { - t.suppressEncryption = !0; - const e = t.get(a.name); - o = e?.get("Length") || 128; - o < 40 && (o <<= 3); - } - } - if (!Number.isInteger(o) || o < 40 || o % 8 != 0) - throw new r.FormatError("invalid key length"); - const c = (0, r.stringToBytes)(e.get("O")), - l = (0, r.stringToBytes)(e.get("U")), - h = c.subarray(0, 32), - u = l.subarray(0, 32), - d = e.get("P"), - f = e.get("R"), - g = (4 === s || 5 === s) && !1 !== e.get("EncryptMetadata"); - this.encryptMetadata = g; - const p = (0, r.stringToBytes)(t); - let m, b; - if (a) { - if (6 === f) - try { - a = (0, r.utf8StringToString)(a); - } catch { - (0, r.warn)( - "CipherTransformFactory: Unable to convert UTF8 encoded password.", - ); - } - m = (0, r.stringToBytes)(a); - } - if (5 !== s) b = this.#T(p, m, h, u, d, f, o, g); - else { - const t = c.subarray(32, 40), - a = c.subarray(40, 48), - n = l.subarray(0, 48), - i = l.subarray(32, 40), - s = l.subarray(40, 48), - o = (0, r.stringToBytes)(e.get("OE")), - d = (0, r.stringToBytes)(e.get("UE")), - g = (0, r.stringToBytes)(e.get("Perms")); - b = this.#I(f, m, h, t, a, n, u, i, s, o, d, g); - } - if (!b && !a) - throw new r.PasswordException( - "No password given", - r.PasswordResponses.NEED_PASSWORD, - ); - if (!b && a) { - const e = this.#M(m, h, f, o); - b = this.#T(p, e, h, u, d, f, o, g); - } - if (!b) - throw new r.PasswordException( - "Incorrect Password", - r.PasswordResponses.INCORRECT_PASSWORD, - ); - this.encryptionKey = b; - if (s >= 4) { - const t = e.get("CF"); - t instanceof n.Dict && (t.suppressEncryption = !0); - this.cf = t; - this.stmf = e.get("StmF") || n.Name.get("Identity"); - this.strf = e.get("StrF") || n.Name.get("Identity"); - this.eff = e.get("EFF") || this.stmf; - } - } - createCipherTransform(e, t) { - if (4 === this.algorithm || 5 === this.algorithm) - return new CipherTransform( - this.#D(this.cf, this.strf, e, t, this.encryptionKey), - this.#D(this.cf, this.stmf, e, t, this.encryptionKey), - ); - const a = this.#P(e, t, this.encryptionKey, !1), - cipherConstructor = function () { - return new ARCFourCipher(a); - }; - return new CipherTransform(cipherConstructor, cipherConstructor); - } - } - t.CipherTransformFactory = CipherTransformFactory; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.DecryptStream = void 0; - var r = a(18); - class DecryptStream extends r.DecodeStream { - constructor(e, t, a) { - super(t); - this.str = e; - this.dict = e.dict; - this.decrypt = a; - this.nextChunk = null; - this.initialized = !1; - } - readBlock() { - let e; - if (this.initialized) e = this.nextChunk; - else { - e = this.str.getBytes(512); - this.initialized = !0; - } - if (!e || 0 === e.length) { - this.eof = !0; - return; - } - this.nextChunk = this.str.getBytes(512); - const t = this.nextChunk?.length > 0; - e = (0, this.decrypt)(e, !t); - const a = this.bufferLength, - r = a + e.length; - this.ensureBuffer(r).set(e, a); - this.bufferLength = r; - } - } - t.DecryptStream = DecryptStream; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.ObjectLoader = void 0; - var r = a(4), - n = a(5), - i = a(3), - s = a(2); - function addChildren(e, t) { - if (e instanceof r.Dict) e = e.getRawValues(); - else if (e instanceof n.BaseStream) e = e.dict.getRawValues(); - else if (!Array.isArray(e)) return; - for (const i of e) - ((a = i) instanceof r.Ref || - a instanceof r.Dict || - a instanceof n.BaseStream || - Array.isArray(a)) && - t.push(i); - var a; - } - t.ObjectLoader = class ObjectLoader { - constructor(e, t, a) { - this.dict = e; - this.keys = t; - this.xref = a; - this.refSet = null; - } - async load() { - if (this.xref.stream.isDataLoaded) return; - const { keys: e, dict: t } = this; - this.refSet = new r.RefSet(); - const a = []; - for (const r of e) { - const e = t.getRaw(r); - void 0 !== e && a.push(e); - } - return this._walk(a); - } - async _walk(e) { - const t = [], - a = []; - for (; e.length; ) { - let o = e.pop(); - if (o instanceof r.Ref) { - if (this.refSet.has(o)) continue; - try { - this.refSet.put(o); - o = this.xref.fetch(o); - } catch (e) { - if (!(e instanceof i.MissingDataException)) { - (0, s.warn)( - `ObjectLoader._walk - requesting all data: "${e}".`, - ); - this.refSet = null; - const { manager: t } = this.xref.stream; - return t.requestAllChunks(); - } - t.push(o); - a.push({ begin: e.begin, end: e.end }); - } - } - if (o instanceof n.BaseStream) { - const e = o.getBaseStreams(); - if (e) { - let r = !1; - for (const t of e) - if (!t.isDataLoaded) { - r = !0; - a.push({ begin: t.start, end: t.end }); - } - r && t.push(o); - } - } - addChildren(o, e); - } - if (a.length) { - await this.xref.stream.manager.requestRanges(a); - for (const e of t) e instanceof r.Ref && this.refSet.remove(e); - return this._walk(t); - } - this.refSet = null; - } - }; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.XFAFactory = void 0; - var r = a(78), - n = a(79), - i = a(89), - s = a(85), - o = a(84), - c = a(2), - l = a(90), - h = a(100); - class XFAFactory { - constructor(e) { - try { - this.root = new l.XFAParser().parse( - XFAFactory._createDocument(e), - ); - const t = new n.Binder(this.root); - this.form = t.bind(); - this.dataHandler = new i.DataHandler(this.root, t.getData()); - this.form[r.$globalData].template = this.form; - } catch (e) { - (0, c.warn)( - `XFA - an error occurred during parsing and binding: ${e}`, - ); - } - } - isValid() { - return this.root && this.form; - } - _createPagesHelper() { - const e = this.form[r.$toPages](); - return new Promise((t, a) => { - const nextIteration = () => { - try { - const a = e.next(); - a.done ? t(a.value) : setTimeout(nextIteration, 0); - } catch (e) { - a(e); - } - }; - setTimeout(nextIteration, 0); - }); - } - async _createPages() { - try { - this.pages = await this._createPagesHelper(); - this.dims = this.pages.children.map((e) => { - const { width: t, height: a } = e.attributes.style; - return [0, 0, parseInt(t), parseInt(a)]; - }); - } catch (e) { - (0, c.warn)(`XFA - an error occurred during layout: ${e}`); - } - } - getBoundingBox(e) { - return this.dims[e]; - } - async getNumPages() { - this.pages || (await this._createPages()); - return this.dims.length; - } - setImages(e) { - this.form[r.$globalData].images = e; - } - setFonts(e) { - this.form[r.$globalData].fontFinder = new s.FontFinder(e); - const t = []; - for (let e of this.form[r.$globalData].usedTypefaces) { - e = (0, o.stripQuotes)(e); - this.form[r.$globalData].fontFinder.find(e) || t.push(e); - } - return t.length > 0 ? t : null; - } - appendFonts(e, t) { - this.form[r.$globalData].fontFinder.add(e, t); - } - async getPages() { - this.pages || (await this._createPages()); - const e = this.pages; - this.pages = null; - return e; - } - serializeData(e) { - return this.dataHandler.serialize(e); - } - static _createDocument(e) { - return e["/xdp:xdp"] ? Object.values(e).join("") : e["xdp:xdp"]; - } - static getRichTextAsHtml(e) { - if (!e || "string" != typeof e) return null; - try { - let t = new l.XFAParser(h.XhtmlNamespace, !0).parse(e); - if (!["body", "xhtml"].includes(t[r.$nodeName])) { - const e = h.XhtmlNamespace.body({}); - e[r.$appendChild](t); - t = e; - } - const a = t[r.$toHTML](); - if (!a.success) return null; - const { html: n } = a, - { attributes: i } = n; - if (i) { - i.class && - (i.class = i.class.filter((e) => !e.startsWith("xfa"))); - i.dir = "auto"; - } - return { html: n, str: t[r.$text]() }; - } catch (e) { - (0, c.warn)( - `XFA - an error occurred during parsing of rich text: ${e}`, - ); - } - return null; - } - } - t.XFAFactory = XFAFactory; - }, - (e, t) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.$uid = - t.$toStyle = - t.$toString = - t.$toPages = - t.$toHTML = - t.$text = - t.$tabIndex = - t.$setValue = - t.$setSetAttributes = - t.$setId = - t.$searchNode = - t.$root = - t.$resolvePrototypes = - t.$removeChild = - t.$pushPara = - t.$pushGlyphs = - t.$popPara = - t.$onText = - t.$onChildCheck = - t.$onChild = - t.$nsAttributes = - t.$nodeName = - t.$namespaceId = - t.$lastAttribute = - t.$isUsable = - t.$isTransparent = - t.$isThereMoreWidth = - t.$isSplittable = - t.$isNsAgnostic = - t.$isDescendent = - t.$isDataValue = - t.$isCDATAXml = - t.$isBindable = - t.$insertAt = - t.$indexOf = - t.$ids = - t.$hasSettableValue = - t.$globalData = - t.$getTemplateRoot = - t.$getSubformParent = - t.$getRealChildrenByNameIt = - t.$getParent = - t.$getNextPage = - t.$getExtra = - t.$getDataValue = - t.$getContainedChildren = - t.$getChildrenByNameIt = - t.$getChildrenByName = - t.$getChildrenByClass = - t.$getChildren = - t.$getAvailableSpace = - t.$getAttributes = - t.$getAttributeIt = - t.$flushHTML = - t.$finalize = - t.$extra = - t.$dump = - t.$data = - t.$content = - t.$consumed = - t.$clone = - t.$cleanup = - t.$cleanPage = - t.$clean = - t.$childrenToHTML = - t.$appendChild = - t.$addHTML = - t.$acceptWhitespace = - void 0; - const a = Symbol(); - t.$acceptWhitespace = a; - const r = Symbol(); - t.$addHTML = r; - const n = Symbol(); - t.$appendChild = n; - const i = Symbol(); - t.$childrenToHTML = i; - const s = Symbol(); - t.$clean = s; - const o = Symbol(); - t.$cleanPage = o; - const c = Symbol(); - t.$cleanup = c; - const l = Symbol(); - t.$clone = l; - const h = Symbol(); - t.$consumed = h; - const u = Symbol("content"); - t.$content = u; - const d = Symbol("data"); - t.$data = d; - const f = Symbol(); - t.$dump = f; - const g = Symbol("extra"); - t.$extra = g; - const p = Symbol(); - t.$finalize = p; - const m = Symbol(); - t.$flushHTML = m; - const b = Symbol(); - t.$getAttributeIt = b; - const y = Symbol(); - t.$getAttributes = y; - const w = Symbol(); - t.$getAvailableSpace = w; - const S = Symbol(); - t.$getChildrenByClass = S; - const x = Symbol(); - t.$getChildrenByName = x; - const C = Symbol(); - t.$getChildrenByNameIt = C; - const k = Symbol(); - t.$getDataValue = k; - const v = Symbol(); - t.$getExtra = v; - const F = Symbol(); - t.$getRealChildrenByNameIt = F; - const O = Symbol(); - t.$getChildren = O; - const T = Symbol(); - t.$getContainedChildren = T; - const M = Symbol(); - t.$getNextPage = M; - const D = Symbol(); - t.$getSubformParent = D; - const E = Symbol(); - t.$getParent = E; - const N = Symbol(); - t.$getTemplateRoot = N; - const R = Symbol(); - t.$globalData = R; - const L = Symbol(); - t.$hasSettableValue = L; - const $ = Symbol(); - t.$ids = $; - const _ = Symbol(); - t.$indexOf = _; - const j = Symbol(); - t.$insertAt = j; - const U = Symbol(); - t.$isCDATAXml = U; - const X = Symbol(); - t.$isBindable = X; - const H = Symbol(); - t.$isDataValue = H; - const q = Symbol(); - t.$isDescendent = q; - const z = Symbol(); - t.$isNsAgnostic = z; - const W = Symbol(); - t.$isSplittable = W; - const G = Symbol(); - t.$isThereMoreWidth = G; - const V = Symbol(); - t.$isTransparent = V; - const K = Symbol(); - t.$isUsable = K; - const J = Symbol(); - t.$lastAttribute = J; - const Y = Symbol("namespaceId"); - t.$namespaceId = Y; - const Z = Symbol("nodeName"); - t.$nodeName = Z; - const Q = Symbol(); - t.$nsAttributes = Q; - const ee = Symbol(); - t.$onChild = ee; - const te = Symbol(); - t.$onChildCheck = te; - const ae = Symbol(); - t.$onText = ae; - const re = Symbol(); - t.$pushGlyphs = re; - const ne = Symbol(); - t.$popPara = ne; - const ie = Symbol(); - t.$pushPara = ie; - const se = Symbol(); - t.$removeChild = se; - const oe = Symbol("root"); - t.$root = oe; - const ce = Symbol(); - t.$resolvePrototypes = ce; - const le = Symbol(); - t.$searchNode = le; - const he = Symbol(); - t.$setId = he; - const ue = Symbol(); - t.$setSetAttributes = ue; - const de = Symbol(); - t.$setValue = de; - const fe = Symbol(); - t.$tabIndex = fe; - const ge = Symbol(); - t.$text = ge; - const pe = Symbol(); - t.$toPages = pe; - const me = Symbol(); - t.$toHTML = me; - const be = Symbol(); - t.$toString = be; - const ye = Symbol(); - t.$toStyle = ye; - const we = Symbol("uid"); - t.$uid = we; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.Binder = void 0; - var r = a(78), - n = a(80), - i = a(88), - s = a(87), - o = a(81), - c = a(2); - const l = o.NamespaceIds.datasets.id; - function createText(e) { - const t = new n.Text({}); - t[r.$content] = e; - return t; - } - t.Binder = class Binder { - constructor(e) { - this.root = e; - this.datasets = e.datasets; - this.data = - e.datasets?.data || - new s.XmlObject(o.NamespaceIds.datasets.id, "data"); - this.emptyMerge = 0 === this.data[r.$getChildren]().length; - this.root.form = this.form = e.template[r.$clone](); - } - _isConsumeData() { - return !this.emptyMerge && this._mergeMode; - } - _isMatchTemplate() { - return !this._isConsumeData(); - } - bind() { - this._bindElement(this.form, this.data); - return this.form; - } - getData() { - return this.data; - } - _bindValue(e, t, a) { - e[r.$data] = t; - if (e[r.$hasSettableValue]()) - if (t[r.$isDataValue]()) { - const a = t[r.$getDataValue](); - e[r.$setValue](createText(a)); - } else if ( - e instanceof n.Field && - "multiSelect" === e.ui?.choiceList?.open - ) { - const a = t[r.$getChildren]() - .map((e) => e[r.$content].trim()) - .join("\n"); - e[r.$setValue](createText(a)); - } else - this._isConsumeData() && - (0, c.warn)("XFA - Nodes haven't the same type."); - else - !t[r.$isDataValue]() || this._isMatchTemplate() - ? this._bindElement(e, t) - : (0, c.warn)("XFA - Nodes haven't the same type."); - } - _findDataByNameToConsume(e, t, a, n) { - if (!e) return null; - let i, s; - for (let n = 0; n < 3; n++) { - i = a[r.$getRealChildrenByNameIt](e, !1, !0); - for (;;) { - s = i.next().value; - if (!s) break; - if (t === s[r.$isDataValue]()) return s; - } - if ( - a[r.$namespaceId] === o.NamespaceIds.datasets.id && - "data" === a[r.$nodeName] - ) - break; - a = a[r.$getParent](); - } - if (!n) return null; - i = this.data[r.$getRealChildrenByNameIt](e, !0, !1); - s = i.next().value; - if (s) return s; - i = this.data[r.$getAttributeIt](e, !0); - s = i.next().value; - return s?.[r.$isDataValue]() ? s : null; - } - _setProperties(e, t) { - if (e.hasOwnProperty("setProperty")) - for (const { ref: a, target: o, connection: l } of e.setProperty - .children) { - if (l) continue; - if (!a) continue; - const h = (0, i.searchNode)(this.root, t, a, !1, !1); - if (!h) { - (0, c.warn)(`XFA - Invalid reference: ${a}.`); - continue; - } - const [u] = h; - if (!u[r.$isDescendent](this.data)) { - (0, c.warn)("XFA - Invalid node: must be a data node."); - continue; - } - const d = (0, i.searchNode)(this.root, e, o, !1, !1); - if (!d) { - (0, c.warn)(`XFA - Invalid target: ${o}.`); - continue; - } - const [f] = d; - if (!f[r.$isDescendent](e)) { - (0, c.warn)( - "XFA - Invalid target: must be a property or subproperty.", - ); - continue; - } - const g = f[r.$getParent](); - if ( - f instanceof n.SetProperty || - g instanceof n.SetProperty - ) { - (0, c.warn)( - "XFA - Invalid target: cannot be a setProperty or one of its properties.", - ); - continue; - } - if (f instanceof n.BindItems || g instanceof n.BindItems) { - (0, c.warn)( - "XFA - Invalid target: cannot be a bindItems or one of its properties.", - ); - continue; - } - const p = u[r.$text](), - m = f[r.$nodeName]; - if (f instanceof s.XFAAttribute) { - const e = Object.create(null); - e[m] = p; - const t = Reflect.construct( - Object.getPrototypeOf(g).constructor, - [e], - ); - g[m] = t[m]; - } else if (f.hasOwnProperty(r.$content)) { - f[r.$data] = u; - f[r.$content] = p; - f[r.$finalize](); - } else - (0, c.warn)("XFA - Invalid node to use in setProperty"); - } - } - _bindItems(e, t) { - if ( - !e.hasOwnProperty("items") || - !e.hasOwnProperty("bindItems") || - e.bindItems.isEmpty() - ) - return; - for (const t of e.items.children) e[r.$removeChild](t); - e.items.clear(); - const a = new n.Items({}), - s = new n.Items({}); - e[r.$appendChild](a); - e.items.push(a); - e[r.$appendChild](s); - e.items.push(s); - for (const { - ref: n, - labelRef: o, - valueRef: l, - connection: h, - } of e.bindItems.children) { - if (h) continue; - if (!n) continue; - const e = (0, i.searchNode)(this.root, t, n, !1, !1); - if (e) - for (const t of e) { - if (!t[r.$isDescendent](this.datasets)) { - (0, c.warn)( - `XFA - Invalid ref (${n}): must be a datasets child.`, - ); - continue; - } - const e = (0, i.searchNode)(this.root, t, o, !0, !1); - if (!e) { - (0, c.warn)(`XFA - Invalid label: ${o}.`); - continue; - } - const [h] = e; - if (!h[r.$isDescendent](this.datasets)) { - (0, c.warn)( - "XFA - Invalid label: must be a datasets child.", - ); - continue; - } - const u = (0, i.searchNode)(this.root, t, l, !0, !1); - if (!u) { - (0, c.warn)(`XFA - Invalid value: ${l}.`); - continue; - } - const [d] = u; - if (!d[r.$isDescendent](this.datasets)) { - (0, c.warn)( - "XFA - Invalid value: must be a datasets child.", - ); - continue; - } - const f = createText(h[r.$text]()), - g = createText(d[r.$text]()); - a[r.$appendChild](f); - a.text.push(f); - s[r.$appendChild](g); - s.text.push(g); - } - else (0, c.warn)(`XFA - Invalid reference: ${n}.`); - } - } - _bindOccurrences(e, t, a) { - let n; - if (t.length > 1) { - n = e[r.$clone](); - n[r.$removeChild](n.occur); - n.occur = null; - } - this._bindValue(e, t[0], a); - this._setProperties(e, t[0]); - this._bindItems(e, t[0]); - if (1 === t.length) return; - const i = e[r.$getParent](), - s = e[r.$nodeName], - o = i[r.$indexOf](e); - for (let e = 1, c = t.length; e < c; e++) { - const c = t[e], - l = n[r.$clone](); - i[s].push(l); - i[r.$insertAt](o + e, l); - this._bindValue(l, c, a); - this._setProperties(l, c); - this._bindItems(l, c); - } - } - _createOccurrences(e) { - if (!this.emptyMerge) return; - const { occur: t } = e; - if (!t || t.initial <= 1) return; - const a = e[r.$getParent](), - n = e[r.$nodeName]; - if (!(a[n] instanceof s.XFAObjectArray)) return; - let i; - i = e.name - ? a[n].children.filter((t) => t.name === e.name).length - : a[n].children.length; - const o = a[r.$indexOf](e) + 1, - c = t.initial - i; - if (c) { - const t = e[r.$clone](); - t[r.$removeChild](t.occur); - t.occur = null; - a[n].push(t); - a[r.$insertAt](o, t); - for (let e = 1; e < c; e++) { - const i = t[r.$clone](); - a[n].push(i); - a[r.$insertAt](o + e, i); - } - } - } - _getOccurInfo(e) { - const { name: t, occur: a } = e; - if (!a || !t) return [1, 1]; - const r = -1 === a.max ? 1 / 0 : a.max; - return [a.min, r]; - } - _setAndBind(e, t) { - this._setProperties(e, t); - this._bindItems(e, t); - this._bindElement(e, t); - } - _bindElement(e, t) { - const a = []; - this._createOccurrences(e); - for (const n of e[r.$getChildren]()) { - if (n[r.$data]) continue; - if ( - void 0 === this._mergeMode && - "subform" === n[r.$nodeName] - ) { - this._mergeMode = "consumeData" === n.mergeMode; - const e = t[r.$getChildren](); - if (e.length > 0) this._bindOccurrences(n, [e[0]], null); - else if (this.emptyMerge) { - const e = t[r.$namespaceId] === l ? -1 : t[r.$namespaceId], - a = (n[r.$data] = new s.XmlObject(e, n.name || "root")); - t[r.$appendChild](a); - this._bindElement(n, a); - } - continue; - } - if (!n[r.$isBindable]()) continue; - let e = !1, - o = null, - h = null, - u = null; - if (n.bind) { - switch (n.bind.match) { - case "none": - this._setAndBind(n, t); - continue; - case "global": - e = !0; - break; - case "dataRef": - if (!n.bind.ref) { - (0, c.warn)( - `XFA - ref is empty in node ${n[r.$nodeName]}.`, - ); - this._setAndBind(n, t); - continue; - } - h = n.bind.ref; - } - n.bind.picture && (o = n.bind.picture[r.$content]); - } - const [d, f] = this._getOccurInfo(n); - if (h) { - u = (0, i.searchNode)(this.root, t, h, !0, !1); - if (null === u) { - u = (0, i.createDataNode)(this.data, t, h); - if (!u) continue; - this._isConsumeData() && (u[r.$consumed] = !0); - this._setAndBind(n, u); - continue; - } - this._isConsumeData() && - (u = u.filter((e) => !e[r.$consumed])); - u.length > f - ? (u = u.slice(0, f)) - : 0 === u.length && (u = null); - u && - this._isConsumeData() && - u.forEach((e) => { - e[r.$consumed] = !0; - }); - } else { - if (!n.name) { - this._setAndBind(n, t); - continue; - } - if (this._isConsumeData()) { - const a = []; - for (; a.length < f; ) { - const i = this._findDataByNameToConsume( - n.name, - n[r.$hasSettableValue](), - t, - e, - ); - if (!i) break; - i[r.$consumed] = !0; - a.push(i); - } - u = a.length > 0 ? a : null; - } else { - u = t[r.$getRealChildrenByNameIt]( - n.name, - !1, - this.emptyMerge, - ).next().value; - if (!u) { - if (0 === d) { - a.push(n); - continue; - } - const e = - t[r.$namespaceId] === l ? -1 : t[r.$namespaceId]; - u = n[r.$data] = new s.XmlObject(e, n.name); - this.emptyMerge && (u[r.$consumed] = !0); - t[r.$appendChild](u); - this._setAndBind(n, u); - continue; - } - this.emptyMerge && (u[r.$consumed] = !0); - u = [u]; - } - } - u - ? this._bindOccurrences(n, u, o) - : d > 0 - ? this._setAndBind(n, t) - : a.push(n); - } - a.forEach((e) => e[r.$getParent]()[r.$removeChild](e)); - } - }; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.Value = - t.Text = - t.TemplateNamespace = - t.Template = - t.SetProperty = - t.Items = - t.Field = - t.BindItems = - void 0; - var r = a(78), - n = a(81), - i = a(82), - s = a(83), - o = a(87), - c = a(84), - l = a(2), - h = a(85), - u = a(3), - d = a(88); - const f = n.NamespaceIds.template.id, - g = "http://www.w3.org/2000/svg", - p = /^H(\d+)$/, - m = new Set([ - "image/gif", - "image/jpeg", - "image/jpg", - "image/pjpeg", - "image/png", - "image/apng", - "image/x-png", - "image/bmp", - "image/x-ms-bmp", - "image/tiff", - "image/tif", - "application/octet-stream", - ]), - b = [ - [[66, 77], "image/bmp"], - [[255, 216, 255], "image/jpeg"], - [[73, 73, 42, 0], "image/tiff"], - [[77, 77, 0, 42], "image/tiff"], - [[71, 73, 70, 56, 57, 97], "image/gif"], - [[137, 80, 78, 71, 13, 10, 26, 10], "image/png"], - ]; - function getBorderDims(e) { - if (!e || !e.border) return { w: 0, h: 0 }; - const t = e.border[r.$getExtra](); - return t - ? { - w: t.widths[0] + t.widths[2] + t.insets[0] + t.insets[2], - h: t.widths[1] + t.widths[3] + t.insets[1] + t.insets[3], - } - : { w: 0, h: 0 }; - } - function hasMargin(e) { - return ( - e.margin && - (e.margin.topInset || - e.margin.rightInset || - e.margin.bottomInset || - e.margin.leftInset) - ); - } - function _setValue(e, t) { - if (!e.value) { - const t = new Value({}); - e[r.$appendChild](t); - e.value = t; - } - e.value[r.$setValue](t); - } - function* getContainedChildren(e) { - for (const t of e[r.$getChildren]()) - t instanceof SubformSet - ? yield* t[r.$getContainedChildren]() - : yield t; - } - function isRequired(e) { - return "error" === e.validate?.nullTest; - } - function setTabIndex(e) { - for (; e; ) { - if (!e.traversal) { - e[r.$tabIndex] = e[r.$getParent]()[r.$tabIndex]; - return; - } - if (e[r.$tabIndex]) return; - let t = null; - for (const a of e.traversal[r.$getChildren]()) - if ("next" === a.operation) { - t = a; - break; - } - if (!t || !t.ref) { - e[r.$tabIndex] = e[r.$getParent]()[r.$tabIndex]; - return; - } - const a = e[r.$getTemplateRoot](); - e[r.$tabIndex] = ++a[r.$tabIndex]; - const n = a[r.$searchNode](t.ref, e); - if (!n) return; - e = n[0]; - } - } - function applyAssist(e, t) { - const a = e.assist; - if (a) { - const e = a[r.$toHTML](); - e && (t.title = e); - const n = a.role.match(p); - if (n) { - const e = "heading", - a = n[1]; - t.role = e; - t["aria-level"] = a; - } - } - if ("table" === e.layout) t.role = "table"; - else if ("row" === e.layout) t.role = "row"; - else { - const a = e[r.$getParent](); - "row" === a.layout && - (t.role = "TH" === a.assist?.role ? "columnheader" : "cell"); - } - } - function ariaLabel(e) { - if (!e.assist) return null; - const t = e.assist; - return t.speak && "" !== t.speak[r.$content] - ? t.speak[r.$content] - : t.toolTip - ? t.toolTip[r.$content] - : null; - } - function valueToHtml(e) { - return c.HTMLResult.success({ - name: "div", - attributes: { class: ["xfaRich"], style: Object.create(null) }, - children: [ - { - name: "span", - attributes: { style: Object.create(null) }, - value: e, - }, - ], - }); - } - function setFirstUnsplittable(e) { - const t = e[r.$getTemplateRoot](); - if (null === t[r.$extra].firstUnsplittable) { - t[r.$extra].firstUnsplittable = e; - t[r.$extra].noLayoutFailure = !0; - } - } - function unsetFirstUnsplittable(e) { - const t = e[r.$getTemplateRoot](); - t[r.$extra].firstUnsplittable === e && - (t[r.$extra].noLayoutFailure = !1); - } - function handleBreak(e) { - if (e[r.$extra]) return !1; - e[r.$extra] = Object.create(null); - if ("auto" === e.targetType) return !1; - const t = e[r.$getTemplateRoot](); - let a = null; - if (e.target) { - a = t[r.$searchNode](e.target, e[r.$getParent]()); - if (!a) return !1; - a = a[0]; - } - const { currentPageArea: n, currentContentArea: i } = t[r.$extra]; - if ("pageArea" === e.targetType) { - a instanceof PageArea || (a = null); - if (e.startNew) { - e[r.$extra].target = a || n; - return !0; - } - if (a && a !== n) { - e[r.$extra].target = a; - return !0; - } - return !1; - } - a instanceof ContentArea || (a = null); - const s = a && a[r.$getParent](); - let o, - c = s; - if (e.startNew) - if (a) { - const e = s.contentArea.children, - t = e.indexOf(i), - r = e.indexOf(a); - -1 !== t && t < r && (c = null); - o = r - 1; - } else o = n.contentArea.children.indexOf(i); - else { - if (!a || a === i) return !1; - o = s.contentArea.children.indexOf(a) - 1; - c = s === n ? null : s; - } - e[r.$extra].target = c; - e[r.$extra].index = o; - return !0; - } - function handleOverflow(e, t, a) { - const n = e[r.$getTemplateRoot](), - i = n[r.$extra].noLayoutFailure, - s = t[r.$getSubformParent]; - t[r.$getSubformParent] = () => e; - n[r.$extra].noLayoutFailure = !0; - const o = t[r.$toHTML](a); - e[r.$addHTML](o.html, o.bbox); - n[r.$extra].noLayoutFailure = i; - t[r.$getSubformParent] = s; - } - class AppearanceFilter extends o.StringObject { - constructor(e) { - super(f, "appearanceFilter"); - this.id = e.id || ""; - this.type = (0, c.getStringOption)(e.type, [ - "optional", - "required", - ]); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - } - class Arc extends o.XFAObject { - constructor(e) { - super(f, "arc", !0); - this.circular = (0, c.getInteger)({ - data: e.circular, - defaultValue: 0, - validate: (e) => 1 === e, - }); - this.hand = (0, c.getStringOption)(e.hand, [ - "even", - "left", - "right", - ]); - this.id = e.id || ""; - this.startAngle = (0, c.getFloat)({ - data: e.startAngle, - defaultValue: 0, - validate: (e) => !0, - }); - this.sweepAngle = (0, c.getFloat)({ - data: e.sweepAngle, - defaultValue: 360, - validate: (e) => !0, - }); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.edge = null; - this.fill = null; - } - [r.$toHTML]() { - const e = this.edge || new Edge({}), - t = e[r.$toStyle](), - a = Object.create(null); - "visible" === this.fill?.presence - ? Object.assign(a, this.fill[r.$toStyle]()) - : (a.fill = "transparent"); - a.strokeWidth = (0, s.measureToString)( - "visible" === e.presence ? e.thickness : 0, - ); - a.stroke = t.color; - let n; - const i = { - xmlns: g, - style: { width: "100%", height: "100%", overflow: "visible" }, - }; - if (360 === this.sweepAngle) - n = { - name: "ellipse", - attributes: { - xmlns: g, - cx: "50%", - cy: "50%", - rx: "50%", - ry: "50%", - style: a, - }, - }; - else { - const e = (this.startAngle * Math.PI) / 180, - t = (this.sweepAngle * Math.PI) / 180, - r = this.sweepAngle > 180 ? 1 : 0, - [s, o, c, l] = [ - 50 * (1 + Math.cos(e)), - 50 * (1 - Math.sin(e)), - 50 * (1 + Math.cos(e + t)), - 50 * (1 - Math.sin(e + t)), - ]; - n = { - name: "path", - attributes: { - xmlns: g, - d: `M ${s} ${o} A 50 50 0 ${r} 0 ${c} ${l}`, - vectorEffect: "non-scaling-stroke", - style: a, - }, - }; - Object.assign(i, { - viewBox: "0 0 100 100", - preserveAspectRatio: "none", - }); - } - const o = { name: "svg", children: [n], attributes: i }; - if (hasMargin(this[r.$getParent]()[r.$getParent]())) - return c.HTMLResult.success({ - name: "div", - attributes: { - style: { display: "inline", width: "100%", height: "100%" }, - }, - children: [o], - }); - o.attributes.style.position = "absolute"; - return c.HTMLResult.success(o); - } - } - class Area extends o.XFAObject { - constructor(e) { - super(f, "area", !0); - this.colSpan = (0, c.getInteger)({ - data: e.colSpan, - defaultValue: 1, - validate: (e) => e >= 1 || -1 === e, - }); - this.id = e.id || ""; - this.name = e.name || ""; - this.relevant = (0, c.getRelevant)(e.relevant); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.x = (0, c.getMeasurement)(e.x, "0pt"); - this.y = (0, c.getMeasurement)(e.y, "0pt"); - this.desc = null; - this.extras = null; - this.area = new o.XFAObjectArray(); - this.draw = new o.XFAObjectArray(); - this.exObject = new o.XFAObjectArray(); - this.exclGroup = new o.XFAObjectArray(); - this.field = new o.XFAObjectArray(); - this.subform = new o.XFAObjectArray(); - this.subformSet = new o.XFAObjectArray(); - } - *[r.$getContainedChildren]() { - yield* getContainedChildren(this); - } - [r.$isTransparent]() { - return !0; - } - [r.$isBindable]() { - return !0; - } - [r.$addHTML](e, t) { - const [a, n, i, s] = t; - this[r.$extra].width = Math.max(this[r.$extra].width, a + i); - this[r.$extra].height = Math.max(this[r.$extra].height, n + s); - this[r.$extra].children.push(e); - } - [r.$getAvailableSpace]() { - return this[r.$extra].availableSpace; - } - [r.$toHTML](e) { - const t = (0, s.toStyle)(this, "position"), - a = { style: t, id: this[r.$uid], class: ["xfaArea"] }; - (0, s.isPrintOnly)(this) && a.class.push("xfaPrintOnly"); - this.name && (a.xfaName = this.name); - const n = []; - this[r.$extra] = { - children: n, - width: 0, - height: 0, - availableSpace: e, - }; - const i = this[r.$childrenToHTML]({ - filter: new Set([ - "area", - "draw", - "field", - "exclGroup", - "subform", - "subformSet", - ]), - include: !0, - }); - if (!i.success) { - if (i.isBreak()) return i; - delete this[r.$extra]; - return c.HTMLResult.FAILURE; - } - t.width = (0, s.measureToString)(this[r.$extra].width); - t.height = (0, s.measureToString)(this[r.$extra].height); - const o = { name: "div", attributes: a, children: n }, - l = [ - this.x, - this.y, - this[r.$extra].width, - this[r.$extra].height, - ]; - delete this[r.$extra]; - return c.HTMLResult.success(o, l); - } - } - class Assist extends o.XFAObject { - constructor(e) { - super(f, "assist", !0); - this.id = e.id || ""; - this.role = e.role || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.speak = null; - this.toolTip = null; - } - [r.$toHTML]() { - return this.toolTip?.[r.$content] || null; - } - } - class Barcode extends o.XFAObject { - constructor(e) { - super(f, "barcode", !0); - this.charEncoding = (0, c.getKeyword)({ - data: e.charEncoding ? e.charEncoding.toLowerCase() : "", - defaultValue: "", - validate: (e) => - [ - "utf-8", - "big-five", - "fontspecific", - "gbk", - "gb-18030", - "gb-2312", - "ksc-5601", - "none", - "shift-jis", - "ucs-2", - "utf-16", - ].includes(e) || e.match(/iso-8859-\d{2}/), - }); - this.checksum = (0, c.getStringOption)(e.checksum, [ - "none", - "1mod10", - "1mod10_1mod11", - "2mod10", - "auto", - ]); - this.dataColumnCount = (0, c.getInteger)({ - data: e.dataColumnCount, - defaultValue: -1, - validate: (e) => e >= 0, - }); - this.dataLength = (0, c.getInteger)({ - data: e.dataLength, - defaultValue: -1, - validate: (e) => e >= 0, - }); - this.dataPrep = (0, c.getStringOption)(e.dataPrep, [ - "none", - "flateCompress", - ]); - this.dataRowCount = (0, c.getInteger)({ - data: e.dataRowCount, - defaultValue: -1, - validate: (e) => e >= 0, - }); - this.endChar = e.endChar || ""; - this.errorCorrectionLevel = (0, c.getInteger)({ - data: e.errorCorrectionLevel, - defaultValue: -1, - validate: (e) => e >= 0 && e <= 8, - }); - this.id = e.id || ""; - this.moduleHeight = (0, c.getMeasurement)(e.moduleHeight, "5mm"); - this.moduleWidth = (0, c.getMeasurement)(e.moduleWidth, "0.25mm"); - this.printCheckDigit = (0, c.getInteger)({ - data: e.printCheckDigit, - defaultValue: 0, - validate: (e) => 1 === e, - }); - this.rowColumnRatio = (0, c.getRatio)(e.rowColumnRatio); - this.startChar = e.startChar || ""; - this.textLocation = (0, c.getStringOption)(e.textLocation, [ - "below", - "above", - "aboveEmbedded", - "belowEmbedded", - "none", - ]); - this.truncate = (0, c.getInteger)({ - data: e.truncate, - defaultValue: 0, - validate: (e) => 1 === e, - }); - this.type = (0, c.getStringOption)( - e.type ? e.type.toLowerCase() : "", - [ - "aztec", - "codabar", - "code2of5industrial", - "code2of5interleaved", - "code2of5matrix", - "code2of5standard", - "code3of9", - "code3of9extended", - "code11", - "code49", - "code93", - "code128", - "code128a", - "code128b", - "code128c", - "code128sscc", - "datamatrix", - "ean8", - "ean8add2", - "ean8add5", - "ean13", - "ean13add2", - "ean13add5", - "ean13pwcd", - "fim", - "logmars", - "maxicode", - "msi", - "pdf417", - "pdf417macro", - "plessey", - "postauscust2", - "postauscust3", - "postausreplypaid", - "postausstandard", - "postukrm4scc", - "postusdpbc", - "postusimb", - "postusstandard", - "postus5zip", - "qrcode", - "rfid", - "rss14", - "rss14expanded", - "rss14limited", - "rss14stacked", - "rss14stackedomni", - "rss14truncated", - "telepen", - "ucc128", - "ucc128random", - "ucc128sscc", - "upca", - "upcaadd2", - "upcaadd5", - "upcapwcd", - "upce", - "upceadd2", - "upceadd5", - "upcean2", - "upcean5", - "upsmaxicode", - ], - ); - this.upsMode = (0, c.getStringOption)(e.upsMode, [ - "usCarrier", - "internationalCarrier", - "secureSymbol", - "standardSymbol", - ]); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.wideNarrowRatio = (0, c.getRatio)(e.wideNarrowRatio); - this.encrypt = null; - this.extras = null; - } - } - class Bind extends o.XFAObject { - constructor(e) { - super(f, "bind", !0); - this.match = (0, c.getStringOption)(e.match, [ - "once", - "dataRef", - "global", - "none", - ]); - this.ref = e.ref || ""; - this.picture = null; - } - } - class BindItems extends o.XFAObject { - constructor(e) { - super(f, "bindItems"); - this.connection = e.connection || ""; - this.labelRef = e.labelRef || ""; - this.ref = e.ref || ""; - this.valueRef = e.valueRef || ""; - } - } - t.BindItems = BindItems; - class Bookend extends o.XFAObject { - constructor(e) { - super(f, "bookend"); - this.id = e.id || ""; - this.leader = e.leader || ""; - this.trailer = e.trailer || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - } - class BooleanElement extends o.Option01 { - constructor(e) { - super(f, "boolean"); - this.id = e.id || ""; - this.name = e.name || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - [r.$toHTML](e) { - return valueToHtml(1 === this[r.$content] ? "1" : "0"); - } - } - class Border extends o.XFAObject { - constructor(e) { - super(f, "border", !0); - this.break = (0, c.getStringOption)(e.break, ["close", "open"]); - this.hand = (0, c.getStringOption)(e.hand, [ - "even", - "left", - "right", - ]); - this.id = e.id || ""; - this.presence = (0, c.getStringOption)(e.presence, [ - "visible", - "hidden", - "inactive", - "invisible", - ]); - this.relevant = (0, c.getRelevant)(e.relevant); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.corner = new o.XFAObjectArray(4); - this.edge = new o.XFAObjectArray(4); - this.extras = null; - this.fill = null; - this.margin = null; - } - [r.$getExtra]() { - if (!this[r.$extra]) { - const e = this.edge.children.slice(); - if (e.length < 4) { - const t = e.at(-1) || new Edge({}); - for (let a = e.length; a < 4; a++) e.push(t); - } - const t = e.map((e) => e.thickness), - a = [0, 0, 0, 0]; - if (this.margin) { - a[0] = this.margin.topInset; - a[1] = this.margin.rightInset; - a[2] = this.margin.bottomInset; - a[3] = this.margin.leftInset; - } - this[r.$extra] = { widths: t, insets: a, edges: e }; - } - return this[r.$extra]; - } - [r.$toStyle]() { - const { edges: e } = this[r.$getExtra](), - t = e.map((e) => { - const t = e[r.$toStyle](); - t.color ||= "#000000"; - return t; - }), - a = Object.create(null); - this.margin && Object.assign(a, this.margin[r.$toStyle]()); - "visible" === this.fill?.presence && - Object.assign(a, this.fill[r.$toStyle]()); - if (this.corner.children.some((e) => 0 !== e.radius)) { - const e = this.corner.children.map((e) => e[r.$toStyle]()); - if (2 === e.length || 3 === e.length) { - const t = e.at(-1); - for (let a = e.length; a < 4; a++) e.push(t); - } - a.borderRadius = e.map((e) => e.radius).join(" "); - } - switch (this.presence) { - case "invisible": - case "hidden": - a.borderStyle = ""; - break; - case "inactive": - a.borderStyle = "none"; - break; - default: - a.borderStyle = t.map((e) => e.style).join(" "); - } - a.borderWidth = t.map((e) => e.width).join(" "); - a.borderColor = t.map((e) => e.color).join(" "); - return a; - } - } - class Break extends o.XFAObject { - constructor(e) { - super(f, "break", !0); - this.after = (0, c.getStringOption)(e.after, [ - "auto", - "contentArea", - "pageArea", - "pageEven", - "pageOdd", - ]); - this.afterTarget = e.afterTarget || ""; - this.before = (0, c.getStringOption)(e.before, [ - "auto", - "contentArea", - "pageArea", - "pageEven", - "pageOdd", - ]); - this.beforeTarget = e.beforeTarget || ""; - this.bookendLeader = e.bookendLeader || ""; - this.bookendTrailer = e.bookendTrailer || ""; - this.id = e.id || ""; - this.overflowLeader = e.overflowLeader || ""; - this.overflowTarget = e.overflowTarget || ""; - this.overflowTrailer = e.overflowTrailer || ""; - this.startNew = (0, c.getInteger)({ - data: e.startNew, - defaultValue: 0, - validate: (e) => 1 === e, - }); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.extras = null; - } - } - class BreakAfter extends o.XFAObject { - constructor(e) { - super(f, "breakAfter", !0); - this.id = e.id || ""; - this.leader = e.leader || ""; - this.startNew = (0, c.getInteger)({ - data: e.startNew, - defaultValue: 0, - validate: (e) => 1 === e, - }); - this.target = e.target || ""; - this.targetType = (0, c.getStringOption)(e.targetType, [ - "auto", - "contentArea", - "pageArea", - ]); - this.trailer = e.trailer || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.script = null; - } - } - class BreakBefore extends o.XFAObject { - constructor(e) { - super(f, "breakBefore", !0); - this.id = e.id || ""; - this.leader = e.leader || ""; - this.startNew = (0, c.getInteger)({ - data: e.startNew, - defaultValue: 0, - validate: (e) => 1 === e, - }); - this.target = e.target || ""; - this.targetType = (0, c.getStringOption)(e.targetType, [ - "auto", - "contentArea", - "pageArea", - ]); - this.trailer = e.trailer || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.script = null; - } - [r.$toHTML](e) { - this[r.$extra] = {}; - return c.HTMLResult.FAILURE; - } - } - class Button extends o.XFAObject { - constructor(e) { - super(f, "button", !0); - this.highlight = (0, c.getStringOption)(e.highlight, [ - "inverted", - "none", - "outline", - "push", - ]); - this.id = e.id || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.extras = null; - } - [r.$toHTML](e) { - const t = this[r.$getParent]()[r.$getParent](), - a = { - name: "button", - attributes: { - id: this[r.$uid], - class: ["xfaButton"], - style: {}, - }, - children: [], - }; - for (const e of t.event.children) { - if ("click" !== e.activity || !e.script) continue; - const t = (0, u.recoverJsURL)(e.script[r.$content]); - if (!t) continue; - const n = (0, s.fixURL)(t.url); - n && - a.children.push({ - name: "a", - attributes: { - id: "link" + this[r.$uid], - href: n, - newWindow: t.newWindow, - class: ["xfaLink"], - style: {}, - }, - children: [], - }); - } - return c.HTMLResult.success(a); - } - } - class Calculate extends o.XFAObject { - constructor(e) { - super(f, "calculate", !0); - this.id = e.id || ""; - this.override = (0, c.getStringOption)(e.override, [ - "disabled", - "error", - "ignore", - "warning", - ]); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.extras = null; - this.message = null; - this.script = null; - } - } - class Caption extends o.XFAObject { - constructor(e) { - super(f, "caption", !0); - this.id = e.id || ""; - this.placement = (0, c.getStringOption)(e.placement, [ - "left", - "bottom", - "inline", - "right", - "top", - ]); - this.presence = (0, c.getStringOption)(e.presence, [ - "visible", - "hidden", - "inactive", - "invisible", - ]); - this.reserve = Math.ceil((0, c.getMeasurement)(e.reserve)); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.extras = null; - this.font = null; - this.margin = null; - this.para = null; - this.value = null; - } - [r.$setValue](e) { - _setValue(this, e); - } - [r.$getExtra](e) { - if (!this[r.$extra]) { - let { width: t, height: a } = e; - switch (this.placement) { - case "left": - case "right": - case "inline": - t = this.reserve <= 0 ? t : this.reserve; - break; - case "top": - case "bottom": - a = this.reserve <= 0 ? a : this.reserve; - } - this[r.$extra] = (0, s.layoutNode)(this, { - width: t, - height: a, - }); - } - return this[r.$extra]; - } - [r.$toHTML](e) { - if (!this.value) return c.HTMLResult.EMPTY; - this[r.$pushPara](); - const t = this.value[r.$toHTML](e).html; - if (!t) { - this[r.$popPara](); - return c.HTMLResult.EMPTY; - } - const a = this.reserve; - if (this.reserve <= 0) { - const { w: t, h: a } = this[r.$getExtra](e); - switch (this.placement) { - case "left": - case "right": - case "inline": - this.reserve = t; - break; - case "top": - case "bottom": - this.reserve = a; - } - } - const n = []; - "string" == typeof t - ? n.push({ name: "#text", value: t }) - : n.push(t); - const i = (0, s.toStyle)(this, "font", "margin", "visibility"); - switch (this.placement) { - case "left": - case "right": - this.reserve > 0 && - (i.width = (0, s.measureToString)(this.reserve)); - break; - case "top": - case "bottom": - this.reserve > 0 && - (i.height = (0, s.measureToString)(this.reserve)); - } - (0, s.setPara)(this, null, t); - this[r.$popPara](); - this.reserve = a; - return c.HTMLResult.success({ - name: "div", - attributes: { style: i, class: ["xfaCaption"] }, - children: n, - }); - } - } - class Certificate extends o.StringObject { - constructor(e) { - super(f, "certificate"); - this.id = e.id || ""; - this.name = e.name || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - } - class Certificates extends o.XFAObject { - constructor(e) { - super(f, "certificates", !0); - this.credentialServerPolicy = (0, c.getStringOption)( - e.credentialServerPolicy, - ["optional", "required"], - ); - this.id = e.id || ""; - this.url = e.url || ""; - this.urlPolicy = e.urlPolicy || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.encryption = null; - this.issuers = null; - this.keyUsage = null; - this.oids = null; - this.signing = null; - this.subjectDNs = null; - } - } - class CheckButton extends o.XFAObject { - constructor(e) { - super(f, "checkButton", !0); - this.id = e.id || ""; - this.mark = (0, c.getStringOption)(e.mark, [ - "default", - "check", - "circle", - "cross", - "diamond", - "square", - "star", - ]); - this.shape = (0, c.getStringOption)(e.shape, ["square", "round"]); - this.size = (0, c.getMeasurement)(e.size, "10pt"); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.border = null; - this.extras = null; - this.margin = null; - } - [r.$toHTML](e) { - const t = (0, s.toStyle)("margin"), - a = (0, s.measureToString)(this.size); - t.width = t.height = a; - let n, i, o; - const l = this[r.$getParent]()[r.$getParent](), - h = - (l.items.children.length && - l.items.children[0][r.$toHTML]().html) || - [], - u = { - on: (void 0 !== h[0] ? h[0] : "on").toString(), - off: (void 0 !== h[1] ? h[1] : "off").toString(), - }, - d = (l.value?.[r.$text]() || "off") === u.on || void 0, - f = l[r.$getSubformParent](), - g = l[r.$uid]; - let p; - if (f instanceof ExclGroup) { - o = f[r.$uid]; - n = "radio"; - i = "xfaRadio"; - p = f[r.$data]?.[r.$uid] || f[r.$uid]; - } else { - n = "checkbox"; - i = "xfaCheckbox"; - p = l[r.$data]?.[r.$uid] || l[r.$uid]; - } - const m = { - name: "input", - attributes: { - class: [i], - style: t, - fieldId: g, - dataId: p, - type: n, - checked: d, - xfaOn: u.on, - xfaOff: u.off, - "aria-label": ariaLabel(l), - "aria-required": !1, - }, - }; - o && (m.attributes.name = o); - if (isRequired(l)) { - m.attributes["aria-required"] = !0; - m.attributes.required = !0; - } - return c.HTMLResult.success({ - name: "label", - attributes: { class: ["xfaLabel"] }, - children: [m], - }); - } - } - class ChoiceList extends o.XFAObject { - constructor(e) { - super(f, "choiceList", !0); - this.commitOn = (0, c.getStringOption)(e.commitOn, [ - "select", - "exit", - ]); - this.id = e.id || ""; - this.open = (0, c.getStringOption)(e.open, [ - "userControl", - "always", - "multiSelect", - "onEntry", - ]); - this.textEntry = (0, c.getInteger)({ - data: e.textEntry, - defaultValue: 0, - validate: (e) => 1 === e, - }); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.border = null; - this.extras = null; - this.margin = null; - } - [r.$toHTML](e) { - const t = (0, s.toStyle)(this, "border", "margin"), - a = this[r.$getParent]()[r.$getParent](), - n = { - fontSize: `calc(${a.font?.size || 10}px * var(--scale-factor))`, - }, - i = []; - if (a.items.children.length > 0) { - const e = a.items; - let t = 0, - s = 0; - if (2 === e.children.length) { - t = e.children[0].save; - s = 1 - t; - } - const o = e.children[t][r.$toHTML]().html, - c = e.children[s][r.$toHTML]().html; - let l = !1; - const h = a.value?.[r.$text]() || ""; - for (let e = 0, t = o.length; e < t; e++) { - const t = { - name: "option", - attributes: { value: c[e] || o[e], style: n }, - value: o[e], - }; - c[e] === h && (t.attributes.selected = l = !0); - i.push(t); - } - l || - i.splice(0, 0, { - name: "option", - attributes: { hidden: !0, selected: !0 }, - value: " ", - }); - } - const o = { - class: ["xfaSelect"], - fieldId: a[r.$uid], - dataId: a[r.$data]?.[r.$uid] || a[r.$uid], - style: t, - "aria-label": ariaLabel(a), - "aria-required": !1, - }; - if (isRequired(a)) { - o["aria-required"] = !0; - o.required = !0; - } - "multiSelect" === this.open && (o.multiple = !0); - return c.HTMLResult.success({ - name: "label", - attributes: { class: ["xfaLabel"] }, - children: [{ name: "select", children: i, attributes: o }], - }); - } - } - class Color extends o.XFAObject { - constructor(e) { - super(f, "color", !0); - this.cSpace = (0, c.getStringOption)(e.cSpace, ["SRGB"]); - this.id = e.id || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.value = e.value ? (0, c.getColor)(e.value) : ""; - this.extras = null; - } - [r.$hasSettableValue]() { - return !1; - } - [r.$toStyle]() { - return this.value - ? l.Util.makeHexColor(this.value.r, this.value.g, this.value.b) - : null; - } - } - class Comb extends o.XFAObject { - constructor(e) { - super(f, "comb"); - this.id = e.id || ""; - this.numberOfCells = (0, c.getInteger)({ - data: e.numberOfCells, - defaultValue: 0, - validate: (e) => e >= 0, - }); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - } - class Connect extends o.XFAObject { - constructor(e) { - super(f, "connect", !0); - this.connection = e.connection || ""; - this.id = e.id || ""; - this.ref = e.ref || ""; - this.usage = (0, c.getStringOption)(e.usage, [ - "exportAndImport", - "exportOnly", - "importOnly", - ]); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.picture = null; - } - } - class ContentArea extends o.XFAObject { - constructor(e) { - super(f, "contentArea", !0); - this.h = (0, c.getMeasurement)(e.h); - this.id = e.id || ""; - this.name = e.name || ""; - this.relevant = (0, c.getRelevant)(e.relevant); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.w = (0, c.getMeasurement)(e.w); - this.x = (0, c.getMeasurement)(e.x, "0pt"); - this.y = (0, c.getMeasurement)(e.y, "0pt"); - this.desc = null; - this.extras = null; - } - [r.$toHTML](e) { - const t = { - left: (0, s.measureToString)(this.x), - top: (0, s.measureToString)(this.y), - width: (0, s.measureToString)(this.w), - height: (0, s.measureToString)(this.h), - }, - a = ["xfaContentarea"]; - (0, s.isPrintOnly)(this) && a.push("xfaPrintOnly"); - return c.HTMLResult.success({ - name: "div", - children: [], - attributes: { style: t, class: a, id: this[r.$uid] }, - }); - } - } - class Corner extends o.XFAObject { - constructor(e) { - super(f, "corner", !0); - this.id = e.id || ""; - this.inverted = (0, c.getInteger)({ - data: e.inverted, - defaultValue: 0, - validate: (e) => 1 === e, - }); - this.join = (0, c.getStringOption)(e.join, ["square", "round"]); - this.presence = (0, c.getStringOption)(e.presence, [ - "visible", - "hidden", - "inactive", - "invisible", - ]); - this.radius = (0, c.getMeasurement)(e.radius); - this.stroke = (0, c.getStringOption)(e.stroke, [ - "solid", - "dashDot", - "dashDotDot", - "dashed", - "dotted", - "embossed", - "etched", - "lowered", - "raised", - ]); - this.thickness = (0, c.getMeasurement)(e.thickness, "0.5pt"); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.color = null; - this.extras = null; - } - [r.$toStyle]() { - const e = (0, s.toStyle)(this, "visibility"); - e.radius = (0, s.measureToString)( - "square" === this.join ? 0 : this.radius, - ); - return e; - } - } - class DateElement extends o.ContentObject { - constructor(e) { - super(f, "date"); - this.id = e.id || ""; - this.name = e.name || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - [r.$finalize]() { - const e = this[r.$content].trim(); - this[r.$content] = e ? new Date(e) : null; - } - [r.$toHTML](e) { - return valueToHtml( - this[r.$content] ? this[r.$content].toString() : "", - ); - } - } - class DateTime extends o.ContentObject { - constructor(e) { - super(f, "dateTime"); - this.id = e.id || ""; - this.name = e.name || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - [r.$finalize]() { - const e = this[r.$content].trim(); - this[r.$content] = e ? new Date(e) : null; - } - [r.$toHTML](e) { - return valueToHtml( - this[r.$content] ? this[r.$content].toString() : "", - ); - } - } - class DateTimeEdit extends o.XFAObject { - constructor(e) { - super(f, "dateTimeEdit", !0); - this.hScrollPolicy = (0, c.getStringOption)(e.hScrollPolicy, [ - "auto", - "off", - "on", - ]); - this.id = e.id || ""; - this.picker = (0, c.getStringOption)(e.picker, ["host", "none"]); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.border = null; - this.comb = null; - this.extras = null; - this.margin = null; - } - [r.$toHTML](e) { - const t = (0, s.toStyle)(this, "border", "font", "margin"), - a = this[r.$getParent]()[r.$getParent](), - n = { - name: "input", - attributes: { - type: "text", - fieldId: a[r.$uid], - dataId: a[r.$data]?.[r.$uid] || a[r.$uid], - class: ["xfaTextfield"], - style: t, - "aria-label": ariaLabel(a), - "aria-required": !1, - }, - }; - if (isRequired(a)) { - n.attributes["aria-required"] = !0; - n.attributes.required = !0; - } - return c.HTMLResult.success({ - name: "label", - attributes: { class: ["xfaLabel"] }, - children: [n], - }); - } - } - class Decimal extends o.ContentObject { - constructor(e) { - super(f, "decimal"); - this.fracDigits = (0, c.getInteger)({ - data: e.fracDigits, - defaultValue: 2, - validate: (e) => !0, - }); - this.id = e.id || ""; - this.leadDigits = (0, c.getInteger)({ - data: e.leadDigits, - defaultValue: -1, - validate: (e) => !0, - }); - this.name = e.name || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - [r.$finalize]() { - const e = parseFloat(this[r.$content].trim()); - this[r.$content] = isNaN(e) ? null : e; - } - [r.$toHTML](e) { - return valueToHtml( - null !== this[r.$content] ? this[r.$content].toString() : "", - ); - } - } - class DefaultUi extends o.XFAObject { - constructor(e) { - super(f, "defaultUi", !0); - this.id = e.id || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.extras = null; - } - } - class Desc extends o.XFAObject { - constructor(e) { - super(f, "desc", !0); - this.id = e.id || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.boolean = new o.XFAObjectArray(); - this.date = new o.XFAObjectArray(); - this.dateTime = new o.XFAObjectArray(); - this.decimal = new o.XFAObjectArray(); - this.exData = new o.XFAObjectArray(); - this.float = new o.XFAObjectArray(); - this.image = new o.XFAObjectArray(); - this.integer = new o.XFAObjectArray(); - this.text = new o.XFAObjectArray(); - this.time = new o.XFAObjectArray(); - } - } - class DigestMethod extends o.OptionObject { - constructor(e) { - super(f, "digestMethod", [ - "", - "SHA1", - "SHA256", - "SHA512", - "RIPEMD160", - ]); - this.id = e.id || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - } - class DigestMethods extends o.XFAObject { - constructor(e) { - super(f, "digestMethods", !0); - this.id = e.id || ""; - this.type = (0, c.getStringOption)(e.type, [ - "optional", - "required", - ]); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.digestMethod = new o.XFAObjectArray(); - } - } - class Draw extends o.XFAObject { - constructor(e) { - super(f, "draw", !0); - this.anchorType = (0, c.getStringOption)(e.anchorType, [ - "topLeft", - "bottomCenter", - "bottomLeft", - "bottomRight", - "middleCenter", - "middleLeft", - "middleRight", - "topCenter", - "topRight", - ]); - this.colSpan = (0, c.getInteger)({ - data: e.colSpan, - defaultValue: 1, - validate: (e) => e >= 1 || -1 === e, - }); - this.h = e.h ? (0, c.getMeasurement)(e.h) : ""; - this.hAlign = (0, c.getStringOption)(e.hAlign, [ - "left", - "center", - "justify", - "justifyAll", - "radix", - "right", - ]); - this.id = e.id || ""; - this.locale = e.locale || ""; - this.maxH = (0, c.getMeasurement)(e.maxH, "0pt"); - this.maxW = (0, c.getMeasurement)(e.maxW, "0pt"); - this.minH = (0, c.getMeasurement)(e.minH, "0pt"); - this.minW = (0, c.getMeasurement)(e.minW, "0pt"); - this.name = e.name || ""; - this.presence = (0, c.getStringOption)(e.presence, [ - "visible", - "hidden", - "inactive", - "invisible", - ]); - this.relevant = (0, c.getRelevant)(e.relevant); - this.rotate = (0, c.getInteger)({ - data: e.rotate, - defaultValue: 0, - validate: (e) => e % 90 == 0, - }); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.w = e.w ? (0, c.getMeasurement)(e.w) : ""; - this.x = (0, c.getMeasurement)(e.x, "0pt"); - this.y = (0, c.getMeasurement)(e.y, "0pt"); - this.assist = null; - this.border = null; - this.caption = null; - this.desc = null; - this.extras = null; - this.font = null; - this.keep = null; - this.margin = null; - this.para = null; - this.traversal = null; - this.ui = null; - this.value = null; - this.setProperty = new o.XFAObjectArray(); - } - [r.$setValue](e) { - _setValue(this, e); - } - [r.$toHTML](e) { - setTabIndex(this); - if ("hidden" === this.presence || "inactive" === this.presence) - return c.HTMLResult.EMPTY; - (0, s.fixDimensions)(this); - this[r.$pushPara](); - const t = this.w, - a = this.h, - { w: n, h: o, isBroken: l } = (0, s.layoutNode)(this, e); - if (n && "" === this.w) { - if (l && this[r.$getSubformParent]()[r.$isThereMoreWidth]()) { - this[r.$popPara](); - return c.HTMLResult.FAILURE; - } - this.w = n; - } - o && "" === this.h && (this.h = o); - setFirstUnsplittable(this); - if (!(0, i.checkDimensions)(this, e)) { - this.w = t; - this.h = a; - this[r.$popPara](); - return c.HTMLResult.FAILURE; - } - unsetFirstUnsplittable(this); - const h = (0, s.toStyle)( - this, - "font", - "hAlign", - "dimensions", - "position", - "presence", - "rotate", - "anchorType", - "border", - "margin", - ); - (0, s.setMinMaxDimensions)(this, h); - if (h.margin) { - h.padding = h.margin; - delete h.margin; - } - const u = ["xfaDraw"]; - this.font && u.push("xfaFont"); - (0, s.isPrintOnly)(this) && u.push("xfaPrintOnly"); - const d = { style: h, id: this[r.$uid], class: u }; - this.name && (d.xfaName = this.name); - const f = { name: "div", attributes: d, children: [] }; - applyAssist(this, d); - const g = (0, s.computeBbox)(this, f, e), - p = this.value ? this.value[r.$toHTML](e).html : null; - if (null === p) { - this.w = t; - this.h = a; - this[r.$popPara](); - return c.HTMLResult.success((0, s.createWrapper)(this, f), g); - } - f.children.push(p); - (0, s.setPara)(this, h, p); - this.w = t; - this.h = a; - this[r.$popPara](); - return c.HTMLResult.success((0, s.createWrapper)(this, f), g); - } - } - class Edge extends o.XFAObject { - constructor(e) { - super(f, "edge", !0); - this.cap = (0, c.getStringOption)(e.cap, [ - "square", - "butt", - "round", - ]); - this.id = e.id || ""; - this.presence = (0, c.getStringOption)(e.presence, [ - "visible", - "hidden", - "inactive", - "invisible", - ]); - this.stroke = (0, c.getStringOption)(e.stroke, [ - "solid", - "dashDot", - "dashDotDot", - "dashed", - "dotted", - "embossed", - "etched", - "lowered", - "raised", - ]); - this.thickness = (0, c.getMeasurement)(e.thickness, "0.5pt"); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.color = null; - this.extras = null; - } - [r.$toStyle]() { - const e = (0, s.toStyle)(this, "visibility"); - Object.assign(e, { - linecap: this.cap, - width: (0, s.measureToString)(this.thickness), - color: this.color ? this.color[r.$toStyle]() : "#000000", - style: "", - }); - if ("visible" !== this.presence) e.style = "none"; - else - switch (this.stroke) { - case "solid": - e.style = "solid"; - break; - case "dashDot": - case "dashDotDot": - case "dashed": - e.style = "dashed"; - break; - case "dotted": - e.style = "dotted"; - break; - case "embossed": - e.style = "ridge"; - break; - case "etched": - e.style = "groove"; - break; - case "lowered": - e.style = "inset"; - break; - case "raised": - e.style = "outset"; - } - return e; - } - } - class Encoding extends o.OptionObject { - constructor(e) { - super(f, "encoding", [ - "adbe.x509.rsa_sha1", - "adbe.pkcs7.detached", - "adbe.pkcs7.sha1", - ]); - this.id = e.id || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - } - class Encodings extends o.XFAObject { - constructor(e) { - super(f, "encodings", !0); - this.id = e.id || ""; - this.type = (0, c.getStringOption)(e.type, [ - "optional", - "required", - ]); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.encoding = new o.XFAObjectArray(); - } - } - class Encrypt extends o.XFAObject { - constructor(e) { - super(f, "encrypt", !0); - this.id = e.id || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.certificate = null; - } - } - class EncryptData extends o.XFAObject { - constructor(e) { - super(f, "encryptData", !0); - this.id = e.id || ""; - this.operation = (0, c.getStringOption)(e.operation, [ - "encrypt", - "decrypt", - ]); - this.target = e.target || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.filter = null; - this.manifest = null; - } - } - class Encryption extends o.XFAObject { - constructor(e) { - super(f, "encryption", !0); - this.id = e.id || ""; - this.type = (0, c.getStringOption)(e.type, [ - "optional", - "required", - ]); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.certificate = new o.XFAObjectArray(); - } - } - class EncryptionMethod extends o.OptionObject { - constructor(e) { - super(f, "encryptionMethod", [ - "", - "AES256-CBC", - "TRIPLEDES-CBC", - "AES128-CBC", - "AES192-CBC", - ]); - this.id = e.id || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - } - class EncryptionMethods extends o.XFAObject { - constructor(e) { - super(f, "encryptionMethods", !0); - this.id = e.id || ""; - this.type = (0, c.getStringOption)(e.type, [ - "optional", - "required", - ]); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.encryptionMethod = new o.XFAObjectArray(); - } - } - class Event extends o.XFAObject { - constructor(e) { - super(f, "event", !0); - this.activity = (0, c.getStringOption)(e.activity, [ - "click", - "change", - "docClose", - "docReady", - "enter", - "exit", - "full", - "indexChange", - "initialize", - "mouseDown", - "mouseEnter", - "mouseExit", - "mouseUp", - "postExecute", - "postOpen", - "postPrint", - "postSave", - "postSign", - "postSubmit", - "preExecute", - "preOpen", - "prePrint", - "preSave", - "preSign", - "preSubmit", - "ready", - "validationState", - ]); - this.id = e.id || ""; - this.listen = (0, c.getStringOption)(e.listen, [ - "refOnly", - "refAndDescendents", - ]); - this.name = e.name || ""; - this.ref = e.ref || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.extras = null; - this.encryptData = null; - this.execute = null; - this.script = null; - this.signData = null; - this.submit = null; - } - } - class ExData extends o.ContentObject { - constructor(e) { - super(f, "exData"); - this.contentType = e.contentType || ""; - this.href = e.href || ""; - this.id = e.id || ""; - this.maxLength = (0, c.getInteger)({ - data: e.maxLength, - defaultValue: -1, - validate: (e) => e >= -1, - }); - this.name = e.name || ""; - this.rid = e.rid || ""; - this.transferEncoding = (0, c.getStringOption)( - e.transferEncoding, - ["none", "base64", "package"], - ); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - [r.$isCDATAXml]() { - return "text/html" === this.contentType; - } - [r.$onChild](e) { - if ( - "text/html" === this.contentType && - e[r.$namespaceId] === n.NamespaceIds.xhtml.id - ) { - this[r.$content] = e; - return !0; - } - if ("text/xml" === this.contentType) { - this[r.$content] = e; - return !0; - } - return !1; - } - [r.$toHTML](e) { - return "text/html" === this.contentType && this[r.$content] - ? this[r.$content][r.$toHTML](e) - : c.HTMLResult.EMPTY; - } - } - class ExObject extends o.XFAObject { - constructor(e) { - super(f, "exObject", !0); - this.archive = e.archive || ""; - this.classId = e.classId || ""; - this.codeBase = e.codeBase || ""; - this.codeType = e.codeType || ""; - this.id = e.id || ""; - this.name = e.name || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.extras = null; - this.boolean = new o.XFAObjectArray(); - this.date = new o.XFAObjectArray(); - this.dateTime = new o.XFAObjectArray(); - this.decimal = new o.XFAObjectArray(); - this.exData = new o.XFAObjectArray(); - this.exObject = new o.XFAObjectArray(); - this.float = new o.XFAObjectArray(); - this.image = new o.XFAObjectArray(); - this.integer = new o.XFAObjectArray(); - this.text = new o.XFAObjectArray(); - this.time = new o.XFAObjectArray(); - } - } - class ExclGroup extends o.XFAObject { - constructor(e) { - super(f, "exclGroup", !0); - this.access = (0, c.getStringOption)(e.access, [ - "open", - "nonInteractive", - "protected", - "readOnly", - ]); - this.accessKey = e.accessKey || ""; - this.anchorType = (0, c.getStringOption)(e.anchorType, [ - "topLeft", - "bottomCenter", - "bottomLeft", - "bottomRight", - "middleCenter", - "middleLeft", - "middleRight", - "topCenter", - "topRight", - ]); - this.colSpan = (0, c.getInteger)({ - data: e.colSpan, - defaultValue: 1, - validate: (e) => e >= 1 || -1 === e, - }); - this.h = e.h ? (0, c.getMeasurement)(e.h) : ""; - this.hAlign = (0, c.getStringOption)(e.hAlign, [ - "left", - "center", - "justify", - "justifyAll", - "radix", - "right", - ]); - this.id = e.id || ""; - this.layout = (0, c.getStringOption)(e.layout, [ - "position", - "lr-tb", - "rl-row", - "rl-tb", - "row", - "table", - "tb", - ]); - this.maxH = (0, c.getMeasurement)(e.maxH, "0pt"); - this.maxW = (0, c.getMeasurement)(e.maxW, "0pt"); - this.minH = (0, c.getMeasurement)(e.minH, "0pt"); - this.minW = (0, c.getMeasurement)(e.minW, "0pt"); - this.name = e.name || ""; - this.presence = (0, c.getStringOption)(e.presence, [ - "visible", - "hidden", - "inactive", - "invisible", - ]); - this.relevant = (0, c.getRelevant)(e.relevant); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.w = e.w ? (0, c.getMeasurement)(e.w) : ""; - this.x = (0, c.getMeasurement)(e.x, "0pt"); - this.y = (0, c.getMeasurement)(e.y, "0pt"); - this.assist = null; - this.bind = null; - this.border = null; - this.calculate = null; - this.caption = null; - this.desc = null; - this.extras = null; - this.margin = null; - this.para = null; - this.traversal = null; - this.validate = null; - this.connect = new o.XFAObjectArray(); - this.event = new o.XFAObjectArray(); - this.field = new o.XFAObjectArray(); - this.setProperty = new o.XFAObjectArray(); - } - [r.$isBindable]() { - return !0; - } - [r.$hasSettableValue]() { - return !0; - } - [r.$setValue](e) { - for (const t of this.field.children) { - if (!t.value) { - const e = new Value({}); - t[r.$appendChild](e); - t.value = e; - } - t.value[r.$setValue](e); - } - } - [r.$isThereMoreWidth]() { - return ( - (this.layout.endsWith("-tb") && - 0 === this[r.$extra].attempt && - this[r.$extra].numberInLine > 0) || - this[r.$getParent]()[r.$isThereMoreWidth]() - ); - } - [r.$isSplittable]() { - const e = this[r.$getSubformParent](); - if (!e[r.$isSplittable]()) return !1; - if (void 0 !== this[r.$extra]._isSplittable) - return this[r.$extra]._isSplittable; - if ("position" === this.layout || this.layout.includes("row")) { - this[r.$extra]._isSplittable = !1; - return !1; - } - if (e.layout?.endsWith("-tb") && 0 !== e[r.$extra].numberInLine) - return !1; - this[r.$extra]._isSplittable = !0; - return !0; - } - [r.$flushHTML]() { - return (0, i.flushHTML)(this); - } - [r.$addHTML](e, t) { - (0, i.addHTML)(this, e, t); - } - [r.$getAvailableSpace]() { - return (0, i.getAvailableSpace)(this); - } - [r.$toHTML](e) { - setTabIndex(this); - if ( - "hidden" === this.presence || - "inactive" === this.presence || - 0 === this.h || - 0 === this.w - ) - return c.HTMLResult.EMPTY; - (0, s.fixDimensions)(this); - const t = [], - a = { id: this[r.$uid], class: [] }; - (0, s.setAccess)(this, a.class); - this[r.$extra] || (this[r.$extra] = Object.create(null)); - Object.assign(this[r.$extra], { - children: t, - attributes: a, - attempt: 0, - line: null, - numberInLine: 0, - availableSpace: { - width: Math.min(this.w || 1 / 0, e.width), - height: Math.min(this.h || 1 / 0, e.height), - }, - width: 0, - height: 0, - prevHeight: 0, - currentWidth: 0, - }); - const n = this[r.$isSplittable](); - n || setFirstUnsplittable(this); - if (!(0, i.checkDimensions)(this, e)) return c.HTMLResult.FAILURE; - const o = new Set(["field"]); - if (this.layout.includes("row")) { - const e = this[r.$getSubformParent]().columnWidths; - if (Array.isArray(e) && e.length > 0) { - this[r.$extra].columnWidths = e; - this[r.$extra].currentColumn = 0; - } - } - const l = (0, s.toStyle)( - this, - "anchorType", - "dimensions", - "position", - "presence", - "border", - "margin", - "hAlign", - ), - h = ["xfaExclgroup"], - u = (0, s.layoutClass)(this); - u && h.push(u); - (0, s.isPrintOnly)(this) && h.push("xfaPrintOnly"); - a.style = l; - a.class = h; - this.name && (a.xfaName = this.name); - this[r.$pushPara](); - const d = "lr-tb" === this.layout || "rl-tb" === this.layout, - f = d ? 2 : 1; - for (; this[r.$extra].attempt < f; this[r.$extra].attempt++) { - d && - 1 === this[r.$extra].attempt && - (this[r.$extra].numberInLine = 0); - const e = this[r.$childrenToHTML]({ filter: o, include: !0 }); - if (e.success) break; - if (e.isBreak()) { - this[r.$popPara](); - return e; - } - if ( - d && - 0 === this[r.$extra].attempt && - 0 === this[r.$extra].numberInLine && - !this[r.$getTemplateRoot]()[r.$extra].noLayoutFailure - ) { - this[r.$extra].attempt = f; - break; - } - } - this[r.$popPara](); - n || unsetFirstUnsplittable(this); - if (this[r.$extra].attempt === f) { - n || delete this[r.$extra]; - return c.HTMLResult.FAILURE; - } - let g = 0, - p = 0; - if (this.margin) { - g = this.margin.leftInset + this.margin.rightInset; - p = this.margin.topInset + this.margin.bottomInset; - } - const m = Math.max(this[r.$extra].width + g, this.w || 0), - b = Math.max(this[r.$extra].height + p, this.h || 0), - y = [this.x, this.y, m, b]; - "" === this.w && (l.width = (0, s.measureToString)(m)); - "" === this.h && (l.height = (0, s.measureToString)(b)); - const w = { name: "div", attributes: a, children: t }; - applyAssist(this, a); - delete this[r.$extra]; - return c.HTMLResult.success((0, s.createWrapper)(this, w), y); - } - } - class Execute extends o.XFAObject { - constructor(e) { - super(f, "execute"); - this.connection = e.connection || ""; - this.executeType = (0, c.getStringOption)(e.executeType, [ - "import", - "remerge", - ]); - this.id = e.id || ""; - this.runAt = (0, c.getStringOption)(e.runAt, [ - "client", - "both", - "server", - ]); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - } - class Extras extends o.XFAObject { - constructor(e) { - super(f, "extras", !0); - this.id = e.id || ""; - this.name = e.name || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.boolean = new o.XFAObjectArray(); - this.date = new o.XFAObjectArray(); - this.dateTime = new o.XFAObjectArray(); - this.decimal = new o.XFAObjectArray(); - this.exData = new o.XFAObjectArray(); - this.extras = new o.XFAObjectArray(); - this.float = new o.XFAObjectArray(); - this.image = new o.XFAObjectArray(); - this.integer = new o.XFAObjectArray(); - this.text = new o.XFAObjectArray(); - this.time = new o.XFAObjectArray(); - } - } - class Field extends o.XFAObject { - constructor(e) { - super(f, "field", !0); - this.access = (0, c.getStringOption)(e.access, [ - "open", - "nonInteractive", - "protected", - "readOnly", - ]); - this.accessKey = e.accessKey || ""; - this.anchorType = (0, c.getStringOption)(e.anchorType, [ - "topLeft", - "bottomCenter", - "bottomLeft", - "bottomRight", - "middleCenter", - "middleLeft", - "middleRight", - "topCenter", - "topRight", - ]); - this.colSpan = (0, c.getInteger)({ - data: e.colSpan, - defaultValue: 1, - validate: (e) => e >= 1 || -1 === e, - }); - this.h = e.h ? (0, c.getMeasurement)(e.h) : ""; - this.hAlign = (0, c.getStringOption)(e.hAlign, [ - "left", - "center", - "justify", - "justifyAll", - "radix", - "right", - ]); - this.id = e.id || ""; - this.locale = e.locale || ""; - this.maxH = (0, c.getMeasurement)(e.maxH, "0pt"); - this.maxW = (0, c.getMeasurement)(e.maxW, "0pt"); - this.minH = (0, c.getMeasurement)(e.minH, "0pt"); - this.minW = (0, c.getMeasurement)(e.minW, "0pt"); - this.name = e.name || ""; - this.presence = (0, c.getStringOption)(e.presence, [ - "visible", - "hidden", - "inactive", - "invisible", - ]); - this.relevant = (0, c.getRelevant)(e.relevant); - this.rotate = (0, c.getInteger)({ - data: e.rotate, - defaultValue: 0, - validate: (e) => e % 90 == 0, - }); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.w = e.w ? (0, c.getMeasurement)(e.w) : ""; - this.x = (0, c.getMeasurement)(e.x, "0pt"); - this.y = (0, c.getMeasurement)(e.y, "0pt"); - this.assist = null; - this.bind = null; - this.border = null; - this.calculate = null; - this.caption = null; - this.desc = null; - this.extras = null; - this.font = null; - this.format = null; - this.items = new o.XFAObjectArray(2); - this.keep = null; - this.margin = null; - this.para = null; - this.traversal = null; - this.ui = null; - this.validate = null; - this.value = null; - this.bindItems = new o.XFAObjectArray(); - this.connect = new o.XFAObjectArray(); - this.event = new o.XFAObjectArray(); - this.setProperty = new o.XFAObjectArray(); - } - [r.$isBindable]() { - return !0; - } - [r.$setValue](e) { - _setValue(this, e); - } - [r.$toHTML](e) { - setTabIndex(this); - if (!this.ui) { - this.ui = new Ui({}); - this.ui[r.$globalData] = this[r.$globalData]; - this[r.$appendChild](this.ui); - let e; - switch (this.items.children.length) { - case 0: - e = new TextEdit({}); - this.ui.textEdit = e; - break; - case 1: - e = new CheckButton({}); - this.ui.checkButton = e; - break; - case 2: - e = new ChoiceList({}); - this.ui.choiceList = e; - } - this.ui[r.$appendChild](e); - } - if ( - !this.ui || - "hidden" === this.presence || - "inactive" === this.presence || - 0 === this.h || - 0 === this.w - ) - return c.HTMLResult.EMPTY; - this.caption && delete this.caption[r.$extra]; - this[r.$pushPara](); - const t = this.caption ? this.caption[r.$toHTML](e).html : null, - a = this.w, - n = this.h; - let o = 0, - l = 0; - if (this.margin) { - o = this.margin.leftInset + this.margin.rightInset; - l = this.margin.topInset + this.margin.bottomInset; - } - let u = null; - if ("" === this.w || "" === this.h) { - let t = null, - a = null, - n = 0, - i = 0; - if (this.ui.checkButton) n = i = this.ui.checkButton.size; - else { - const { w: t, h: a } = (0, s.layoutNode)(this, e); - if (null !== t) { - n = t; - i = a; - } else i = (0, h.getMetrics)(this.font, !0).lineNoGap; - } - u = getBorderDims(this.ui[r.$getExtra]()); - n += u.w; - i += u.h; - if (this.caption) { - const { - w: s, - h: o, - isBroken: l, - } = this.caption[r.$getExtra](e); - if (l && this[r.$getSubformParent]()[r.$isThereMoreWidth]()) { - this[r.$popPara](); - return c.HTMLResult.FAILURE; - } - t = s; - a = o; - switch (this.caption.placement) { - case "left": - case "right": - case "inline": - t += n; - break; - case "top": - case "bottom": - a += i; - } - } else { - t = n; - a = i; - } - if (t && "" === this.w) { - t += o; - this.w = Math.min( - this.maxW <= 0 ? 1 / 0 : this.maxW, - this.minW + 1 < t ? t : this.minW, - ); - } - if (a && "" === this.h) { - a += l; - this.h = Math.min( - this.maxH <= 0 ? 1 / 0 : this.maxH, - this.minH + 1 < a ? a : this.minH, - ); - } - } - this[r.$popPara](); - (0, s.fixDimensions)(this); - setFirstUnsplittable(this); - if (!(0, i.checkDimensions)(this, e)) { - this.w = a; - this.h = n; - this[r.$popPara](); - return c.HTMLResult.FAILURE; - } - unsetFirstUnsplittable(this); - const d = (0, s.toStyle)( - this, - "font", - "dimensions", - "position", - "rotate", - "anchorType", - "presence", - "margin", - "hAlign", - ); - (0, s.setMinMaxDimensions)(this, d); - const f = ["xfaField"]; - this.font && f.push("xfaFont"); - (0, s.isPrintOnly)(this) && f.push("xfaPrintOnly"); - const g = { style: d, id: this[r.$uid], class: f }; - if (d.margin) { - d.padding = d.margin; - delete d.margin; - } - (0, s.setAccess)(this, f); - this.name && (g.xfaName = this.name); - const p = [], - m = { name: "div", attributes: g, children: p }; - applyAssist(this, g); - const b = this.border ? this.border[r.$toStyle]() : null, - y = (0, s.computeBbox)(this, m, e), - w = this.ui[r.$toHTML]().html; - if (!w) { - Object.assign(d, b); - return c.HTMLResult.success((0, s.createWrapper)(this, m), y); - } - this[r.$tabIndex] && - (w.children?.[0] - ? (w.children[0].attributes.tabindex = this[r.$tabIndex]) - : (w.attributes.tabindex = this[r.$tabIndex])); - w.attributes.style || (w.attributes.style = Object.create(null)); - let S = null; - if (this.ui.button) { - 1 === w.children.length && ([S] = w.children.splice(0, 1)); - Object.assign(w.attributes.style, b); - } else Object.assign(d, b); - p.push(w); - if (this.value) - if (this.ui.imageEdit) - w.children.push(this.value[r.$toHTML]().html); - else if (!this.ui.button) { - let e = ""; - if (this.value.exData) e = this.value.exData[r.$text](); - else if (this.value.text) e = this.value.text[r.$getExtra](); - else { - const t = this.value[r.$toHTML]().html; - null !== t && (e = t.children[0].value); - } - this.ui.textEdit && - this.value.text?.maxChars && - (w.children[0].attributes.maxLength = - this.value.text.maxChars); - if (e) { - if (this.ui.numericEdit) { - e = parseFloat(e); - e = isNaN(e) ? "" : e.toString(); - } - "textarea" === w.children[0].name - ? (w.children[0].attributes.textContent = e) - : (w.children[0].attributes.value = e); - } - } - if (!this.ui.imageEdit && w.children?.[0] && this.h) { - u = u || getBorderDims(this.ui[r.$getExtra]()); - let t = 0; - if ( - this.caption && - ["top", "bottom"].includes(this.caption.placement) - ) { - t = this.caption.reserve; - t <= 0 && (t = this.caption[r.$getExtra](e).h); - const a = this.h - t - l - u.h; - w.children[0].attributes.style.height = (0, - s.measureToString)(a); - } else w.children[0].attributes.style.height = "100%"; - } - S && w.children.push(S); - if (!t) { - w.attributes.class && w.attributes.class.push("xfaLeft"); - this.w = a; - this.h = n; - return c.HTMLResult.success((0, s.createWrapper)(this, m), y); - } - if (this.ui.button) { - d.padding && delete d.padding; - "div" === t.name && (t.name = "span"); - w.children.push(t); - return c.HTMLResult.success(m, y); - } - this.ui.checkButton && - (t.attributes.class[0] = "xfaCaptionForCheckButton"); - w.attributes.class || (w.attributes.class = []); - w.children.splice(0, 0, t); - switch (this.caption.placement) { - case "left": - case "inline": - w.attributes.class.push("xfaLeft"); - break; - case "right": - w.attributes.class.push("xfaRight"); - break; - case "top": - w.attributes.class.push("xfaTop"); - break; - case "bottom": - w.attributes.class.push("xfaBottom"); - } - this.w = a; - this.h = n; - return c.HTMLResult.success((0, s.createWrapper)(this, m), y); - } - } - t.Field = Field; - class Fill extends o.XFAObject { - constructor(e) { - super(f, "fill", !0); - this.id = e.id || ""; - this.presence = (0, c.getStringOption)(e.presence, [ - "visible", - "hidden", - "inactive", - "invisible", - ]); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.color = null; - this.extras = null; - this.linear = null; - this.pattern = null; - this.radial = null; - this.solid = null; - this.stipple = null; - } - [r.$toStyle]() { - const e = this[r.$getParent](), - t = e[r.$getParent]()[r.$getParent](), - a = Object.create(null); - let n = "color", - i = n; - if (e instanceof Border) { - n = "background-color"; - i = "background"; - t instanceof Ui && (a.backgroundColor = "white"); - } - if (e instanceof Rectangle || e instanceof Arc) { - n = i = "fill"; - a.fill = "white"; - } - for (const e of Object.getOwnPropertyNames(this)) { - if ("extras" === e || "color" === e) continue; - const t = this[e]; - if (!(t instanceof o.XFAObject)) continue; - const s = t[r.$toStyle](this.color); - s && (a[s.startsWith("#") ? n : i] = s); - return a; - } - if (this.color?.value) { - const e = this.color[r.$toStyle](); - a[e.startsWith("#") ? n : i] = e; - } - return a; - } - } - class Filter extends o.XFAObject { - constructor(e) { - super(f, "filter", !0); - this.addRevocationInfo = (0, c.getStringOption)( - e.addRevocationInfo, - ["", "required", "optional", "none"], - ); - this.id = e.id || ""; - this.name = e.name || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.version = (0, c.getInteger)({ - data: this.version, - defaultValue: 5, - validate: (e) => e >= 1 && e <= 5, - }); - this.appearanceFilter = null; - this.certificates = null; - this.digestMethods = null; - this.encodings = null; - this.encryptionMethods = null; - this.handler = null; - this.lockDocument = null; - this.mdp = null; - this.reasons = null; - this.timeStamp = null; - } - } - class Float extends o.ContentObject { - constructor(e) { - super(f, "float"); - this.id = e.id || ""; - this.name = e.name || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - [r.$finalize]() { - const e = parseFloat(this[r.$content].trim()); - this[r.$content] = isNaN(e) ? null : e; - } - [r.$toHTML](e) { - return valueToHtml( - null !== this[r.$content] ? this[r.$content].toString() : "", - ); - } - } - class Font extends o.XFAObject { - constructor(e) { - super(f, "font", !0); - this.baselineShift = (0, c.getMeasurement)(e.baselineShift); - this.fontHorizontalScale = (0, c.getFloat)({ - data: e.fontHorizontalScale, - defaultValue: 100, - validate: (e) => e >= 0, - }); - this.fontVerticalScale = (0, c.getFloat)({ - data: e.fontVerticalScale, - defaultValue: 100, - validate: (e) => e >= 0, - }); - this.id = e.id || ""; - this.kerningMode = (0, c.getStringOption)(e.kerningMode, [ - "none", - "pair", - ]); - this.letterSpacing = (0, c.getMeasurement)(e.letterSpacing, "0"); - this.lineThrough = (0, c.getInteger)({ - data: e.lineThrough, - defaultValue: 0, - validate: (e) => 1 === e || 2 === e, - }); - this.lineThroughPeriod = (0, c.getStringOption)( - e.lineThroughPeriod, - ["all", "word"], - ); - this.overline = (0, c.getInteger)({ - data: e.overline, - defaultValue: 0, - validate: (e) => 1 === e || 2 === e, - }); - this.overlinePeriod = (0, c.getStringOption)(e.overlinePeriod, [ - "all", - "word", - ]); - this.posture = (0, c.getStringOption)(e.posture, [ - "normal", - "italic", - ]); - this.size = (0, c.getMeasurement)(e.size, "10pt"); - this.typeface = e.typeface || "Courier"; - this.underline = (0, c.getInteger)({ - data: e.underline, - defaultValue: 0, - validate: (e) => 1 === e || 2 === e, - }); - this.underlinePeriod = (0, c.getStringOption)(e.underlinePeriod, [ - "all", - "word", - ]); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.weight = (0, c.getStringOption)(e.weight, [ - "normal", - "bold", - ]); - this.extras = null; - this.fill = null; - } - [r.$clean](e) { - super[r.$clean](e); - this[r.$globalData].usedTypefaces.add(this.typeface); - } - [r.$toStyle]() { - const e = (0, s.toStyle)(this, "fill"), - t = e.color; - if (t) - if ("#000000" === t) delete e.color; - else if (!t.startsWith("#")) { - e.background = t; - e.backgroundClip = "text"; - e.color = "transparent"; - } - this.baselineShift && - (e.verticalAlign = (0, s.measureToString)(this.baselineShift)); - e.fontKerning = "none" === this.kerningMode ? "none" : "normal"; - e.letterSpacing = (0, s.measureToString)(this.letterSpacing); - if (0 !== this.lineThrough) { - e.textDecoration = "line-through"; - 2 === this.lineThrough && (e.textDecorationStyle = "double"); - } - if (0 !== this.overline) { - e.textDecoration = "overline"; - 2 === this.overline && (e.textDecorationStyle = "double"); - } - e.fontStyle = this.posture; - e.fontSize = (0, s.measureToString)(0.99 * this.size); - (0, s.setFontFamily)( - this, - this, - this[r.$globalData].fontFinder, - e, - ); - if (0 !== this.underline) { - e.textDecoration = "underline"; - 2 === this.underline && (e.textDecorationStyle = "double"); - } - e.fontWeight = this.weight; - return e; - } - } - class Format extends o.XFAObject { - constructor(e) { - super(f, "format", !0); - this.id = e.id || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.extras = null; - this.picture = null; - } - } - class Handler extends o.StringObject { - constructor(e) { - super(f, "handler"); - this.id = e.id || ""; - this.type = (0, c.getStringOption)(e.type, [ - "optional", - "required", - ]); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - } - class Hyphenation extends o.XFAObject { - constructor(e) { - super(f, "hyphenation"); - this.excludeAllCaps = (0, c.getInteger)({ - data: e.excludeAllCaps, - defaultValue: 0, - validate: (e) => 1 === e, - }); - this.excludeInitialCap = (0, c.getInteger)({ - data: e.excludeInitialCap, - defaultValue: 0, - validate: (e) => 1 === e, - }); - this.hyphenate = (0, c.getInteger)({ - data: e.hyphenate, - defaultValue: 0, - validate: (e) => 1 === e, - }); - this.id = e.id || ""; - this.pushCharacterCount = (0, c.getInteger)({ - data: e.pushCharacterCount, - defaultValue: 3, - validate: (e) => e >= 0, - }); - this.remainCharacterCount = (0, c.getInteger)({ - data: e.remainCharacterCount, - defaultValue: 3, - validate: (e) => e >= 0, - }); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.wordCharacterCount = (0, c.getInteger)({ - data: e.wordCharacterCount, - defaultValue: 7, - validate: (e) => e >= 0, - }); - } - } - class Image extends o.StringObject { - constructor(e) { - super(f, "image"); - this.aspect = (0, c.getStringOption)(e.aspect, [ - "fit", - "actual", - "height", - "none", - "width", - ]); - this.contentType = e.contentType || ""; - this.href = e.href || ""; - this.id = e.id || ""; - this.name = e.name || ""; - this.transferEncoding = (0, c.getStringOption)( - e.transferEncoding, - ["base64", "none", "package"], - ); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - [r.$toHTML]() { - if (this.contentType && !m.has(this.contentType.toLowerCase())) - return c.HTMLResult.EMPTY; - let e = - this[r.$globalData].images && - this[r.$globalData].images.get(this.href); - if (!e && (this.href || !this[r.$content])) - return c.HTMLResult.EMPTY; - e || - "base64" !== this.transferEncoding || - (e = (0, l.stringToBytes)(atob(this[r.$content]))); - if (!e) return c.HTMLResult.EMPTY; - if (!this.contentType) { - for (const [t, a] of b) - if (e.length > t.length && t.every((t, a) => t === e[a])) { - this.contentType = a; - break; - } - if (!this.contentType) return c.HTMLResult.EMPTY; - } - const t = new Blob([e], { type: this.contentType }); - let a; - switch (this.aspect) { - case "fit": - case "actual": - break; - case "height": - a = { height: "100%", objectFit: "fill" }; - break; - case "none": - a = { width: "100%", height: "100%", objectFit: "fill" }; - break; - case "width": - a = { width: "100%", objectFit: "fill" }; - } - const n = this[r.$getParent](); - return c.HTMLResult.success({ - name: "img", - attributes: { - class: ["xfaImage"], - style: a, - src: URL.createObjectURL(t), - alt: n ? ariaLabel(n[r.$getParent]()) : null, - }, - }); - } - } - class ImageEdit extends o.XFAObject { - constructor(e) { - super(f, "imageEdit", !0); - this.data = (0, c.getStringOption)(e.data, ["link", "embed"]); - this.id = e.id || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.border = null; - this.extras = null; - this.margin = null; - } - [r.$toHTML](e) { - return "embed" === this.data - ? c.HTMLResult.success({ - name: "div", - children: [], - attributes: {}, - }) - : c.HTMLResult.EMPTY; - } - } - class Integer extends o.ContentObject { - constructor(e) { - super(f, "integer"); - this.id = e.id || ""; - this.name = e.name || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - [r.$finalize]() { - const e = parseInt(this[r.$content].trim(), 10); - this[r.$content] = isNaN(e) ? null : e; - } - [r.$toHTML](e) { - return valueToHtml( - null !== this[r.$content] ? this[r.$content].toString() : "", - ); - } - } - class Issuers extends o.XFAObject { - constructor(e) { - super(f, "issuers", !0); - this.id = e.id || ""; - this.type = (0, c.getStringOption)(e.type, [ - "optional", - "required", - ]); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.certificate = new o.XFAObjectArray(); - } - } - class Items extends o.XFAObject { - constructor(e) { - super(f, "items", !0); - this.id = e.id || ""; - this.name = e.name || ""; - this.presence = (0, c.getStringOption)(e.presence, [ - "visible", - "hidden", - "inactive", - "invisible", - ]); - this.ref = e.ref || ""; - this.save = (0, c.getInteger)({ - data: e.save, - defaultValue: 0, - validate: (e) => 1 === e, - }); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.boolean = new o.XFAObjectArray(); - this.date = new o.XFAObjectArray(); - this.dateTime = new o.XFAObjectArray(); - this.decimal = new o.XFAObjectArray(); - this.exData = new o.XFAObjectArray(); - this.float = new o.XFAObjectArray(); - this.image = new o.XFAObjectArray(); - this.integer = new o.XFAObjectArray(); - this.text = new o.XFAObjectArray(); - this.time = new o.XFAObjectArray(); - } - [r.$toHTML]() { - const e = []; - for (const t of this[r.$getChildren]()) e.push(t[r.$text]()); - return c.HTMLResult.success(e); - } - } - t.Items = Items; - class Keep extends o.XFAObject { - constructor(e) { - super(f, "keep", !0); - this.id = e.id || ""; - const t = ["none", "contentArea", "pageArea"]; - this.intact = (0, c.getStringOption)(e.intact, t); - this.next = (0, c.getStringOption)(e.next, t); - this.previous = (0, c.getStringOption)(e.previous, t); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.extras = null; - } - } - class KeyUsage extends o.XFAObject { - constructor(e) { - super(f, "keyUsage"); - const t = ["", "yes", "no"]; - this.crlSign = (0, c.getStringOption)(e.crlSign, t); - this.dataEncipherment = (0, c.getStringOption)( - e.dataEncipherment, - t, - ); - this.decipherOnly = (0, c.getStringOption)(e.decipherOnly, t); - this.digitalSignature = (0, c.getStringOption)( - e.digitalSignature, - t, - ); - this.encipherOnly = (0, c.getStringOption)(e.encipherOnly, t); - this.id = e.id || ""; - this.keyAgreement = (0, c.getStringOption)(e.keyAgreement, t); - this.keyCertSign = (0, c.getStringOption)(e.keyCertSign, t); - this.keyEncipherment = (0, c.getStringOption)( - e.keyEncipherment, - t, - ); - this.nonRepudiation = (0, c.getStringOption)(e.nonRepudiation, t); - this.type = (0, c.getStringOption)(e.type, [ - "optional", - "required", - ]); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - } - class Line extends o.XFAObject { - constructor(e) { - super(f, "line", !0); - this.hand = (0, c.getStringOption)(e.hand, [ - "even", - "left", - "right", - ]); - this.id = e.id || ""; - this.slope = (0, c.getStringOption)(e.slope, ["\\", "/"]); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.edge = null; - } - [r.$toHTML]() { - const e = this[r.$getParent]()[r.$getParent](), - t = this.edge || new Edge({}), - a = t[r.$toStyle](), - n = Object.create(null), - i = "visible" === t.presence ? t.thickness : 0; - n.strokeWidth = (0, s.measureToString)(i); - n.stroke = a.color; - let o, - l, - h, - u, - d = "100%", - f = "100%"; - if (e.w <= i) { - [o, l, h, u] = ["50%", 0, "50%", "100%"]; - d = n.strokeWidth; - } else if (e.h <= i) { - [o, l, h, u] = [0, "50%", "100%", "50%"]; - f = n.strokeWidth; - } else - "\\" === this.slope - ? ([o, l, h, u] = [0, 0, "100%", "100%"]) - : ([o, l, h, u] = [0, "100%", "100%", 0]); - const p = { - name: "svg", - children: [ - { - name: "line", - attributes: { - xmlns: g, - x1: o, - y1: l, - x2: h, - y2: u, - style: n, - }, - }, - ], - attributes: { - xmlns: g, - width: d, - height: f, - style: { overflow: "visible" }, - }, - }; - if (hasMargin(e)) - return c.HTMLResult.success({ - name: "div", - attributes: { - style: { display: "inline", width: "100%", height: "100%" }, - }, - children: [p], - }); - p.attributes.style.position = "absolute"; - return c.HTMLResult.success(p); - } - } - class Linear extends o.XFAObject { - constructor(e) { - super(f, "linear", !0); - this.id = e.id || ""; - this.type = (0, c.getStringOption)(e.type, [ - "toRight", - "toBottom", - "toLeft", - "toTop", - ]); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.color = null; - this.extras = null; - } - [r.$toStyle](e) { - e = e ? e[r.$toStyle]() : "#FFFFFF"; - return `linear-gradient(${this.type.replace(/([RBLT])/, " $1").toLowerCase()}, ${e}, ${this.color ? this.color[r.$toStyle]() : "#000000"})`; - } - } - class LockDocument extends o.ContentObject { - constructor(e) { - super(f, "lockDocument"); - this.id = e.id || ""; - this.type = (0, c.getStringOption)(e.type, [ - "optional", - "required", - ]); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - [r.$finalize]() { - this[r.$content] = (0, c.getStringOption)(this[r.$content], [ - "auto", - "0", - "1", - ]); - } - } - class Manifest extends o.XFAObject { - constructor(e) { - super(f, "manifest", !0); - this.action = (0, c.getStringOption)(e.action, [ - "include", - "all", - "exclude", - ]); - this.id = e.id || ""; - this.name = e.name || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.extras = null; - this.ref = new o.XFAObjectArray(); - } - } - class Margin extends o.XFAObject { - constructor(e) { - super(f, "margin", !0); - this.bottomInset = (0, c.getMeasurement)(e.bottomInset, "0"); - this.id = e.id || ""; - this.leftInset = (0, c.getMeasurement)(e.leftInset, "0"); - this.rightInset = (0, c.getMeasurement)(e.rightInset, "0"); - this.topInset = (0, c.getMeasurement)(e.topInset, "0"); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.extras = null; - } - [r.$toStyle]() { - return { - margin: - (0, s.measureToString)(this.topInset) + - " " + - (0, s.measureToString)(this.rightInset) + - " " + - (0, s.measureToString)(this.bottomInset) + - " " + - (0, s.measureToString)(this.leftInset), - }; - } - } - class Mdp extends o.XFAObject { - constructor(e) { - super(f, "mdp"); - this.id = e.id || ""; - this.permissions = (0, c.getInteger)({ - data: e.permissions, - defaultValue: 2, - validate: (e) => 1 === e || 3 === e, - }); - this.signatureType = (0, c.getStringOption)(e.signatureType, [ - "filler", - "author", - ]); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - } - class Medium extends o.XFAObject { - constructor(e) { - super(f, "medium"); - this.id = e.id || ""; - this.imagingBBox = (0, c.getBBox)(e.imagingBBox); - this.long = (0, c.getMeasurement)(e.long); - this.orientation = (0, c.getStringOption)(e.orientation, [ - "portrait", - "landscape", - ]); - this.short = (0, c.getMeasurement)(e.short); - this.stock = e.stock || ""; - this.trayIn = (0, c.getStringOption)(e.trayIn, [ - "auto", - "delegate", - "pageFront", - ]); - this.trayOut = (0, c.getStringOption)(e.trayOut, [ - "auto", - "delegate", - ]); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - } - class Message extends o.XFAObject { - constructor(e) { - super(f, "message", !0); - this.id = e.id || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.text = new o.XFAObjectArray(); - } - } - class NumericEdit extends o.XFAObject { - constructor(e) { - super(f, "numericEdit", !0); - this.hScrollPolicy = (0, c.getStringOption)(e.hScrollPolicy, [ - "auto", - "off", - "on", - ]); - this.id = e.id || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.border = null; - this.comb = null; - this.extras = null; - this.margin = null; - } - [r.$toHTML](e) { - const t = (0, s.toStyle)(this, "border", "font", "margin"), - a = this[r.$getParent]()[r.$getParent](), - n = { - name: "input", - attributes: { - type: "text", - fieldId: a[r.$uid], - dataId: a[r.$data]?.[r.$uid] || a[r.$uid], - class: ["xfaTextfield"], - style: t, - "aria-label": ariaLabel(a), - "aria-required": !1, - }, - }; - if (isRequired(a)) { - n.attributes["aria-required"] = !0; - n.attributes.required = !0; - } - return c.HTMLResult.success({ - name: "label", - attributes: { class: ["xfaLabel"] }, - children: [n], - }); - } - } - class Occur extends o.XFAObject { - constructor(e) { - super(f, "occur", !0); - this.id = e.id || ""; - this.initial = - "" !== e.initial - ? (0, c.getInteger)({ - data: e.initial, - defaultValue: "", - validate: (e) => !0, - }) - : ""; - this.max = - "" !== e.max - ? (0, c.getInteger)({ - data: e.max, - defaultValue: 1, - validate: (e) => !0, - }) - : ""; - this.min = - "" !== e.min - ? (0, c.getInteger)({ - data: e.min, - defaultValue: 1, - validate: (e) => !0, - }) - : ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.extras = null; - } - [r.$clean]() { - const e = this[r.$getParent](), - t = this.min; - "" === this.min && - (this.min = - e instanceof PageArea || e instanceof PageSet ? 0 : 1); - "" === this.max && - (this.max = - "" === t - ? e instanceof PageArea || e instanceof PageSet - ? -1 - : 1 - : this.min); - -1 !== this.max && this.max < this.min && (this.max = this.min); - "" === this.initial && - (this.initial = e instanceof Template ? 1 : this.min); - } - } - class Oid extends o.StringObject { - constructor(e) { - super(f, "oid"); - this.id = e.id || ""; - this.name = e.name || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - } - class Oids extends o.XFAObject { - constructor(e) { - super(f, "oids", !0); - this.id = e.id || ""; - this.type = (0, c.getStringOption)(e.type, [ - "optional", - "required", - ]); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.oid = new o.XFAObjectArray(); - } - } - class Overflow extends o.XFAObject { - constructor(e) { - super(f, "overflow"); - this.id = e.id || ""; - this.leader = e.leader || ""; - this.target = e.target || ""; - this.trailer = e.trailer || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - [r.$getExtra]() { - if (!this[r.$extra]) { - const e = this[r.$getParent](), - t = this[r.$getTemplateRoot](), - a = t[r.$searchNode](this.target, e), - n = t[r.$searchNode](this.leader, e), - i = t[r.$searchNode](this.trailer, e); - this[r.$extra] = { - target: a?.[0] || null, - leader: n?.[0] || null, - trailer: i?.[0] || null, - addLeader: !1, - addTrailer: !1, - }; - } - return this[r.$extra]; - } - } - class PageArea extends o.XFAObject { - constructor(e) { - super(f, "pageArea", !0); - this.blankOrNotBlank = (0, c.getStringOption)(e.blankOrNotBlank, [ - "any", - "blank", - "notBlank", - ]); - this.id = e.id || ""; - this.initialNumber = (0, c.getInteger)({ - data: e.initialNumber, - defaultValue: 1, - validate: (e) => !0, - }); - this.name = e.name || ""; - this.numbered = (0, c.getInteger)({ - data: e.numbered, - defaultValue: 1, - validate: (e) => !0, - }); - this.oddOrEven = (0, c.getStringOption)(e.oddOrEven, [ - "any", - "even", - "odd", - ]); - this.pagePosition = (0, c.getStringOption)(e.pagePosition, [ - "any", - "first", - "last", - "only", - "rest", - ]); - this.relevant = (0, c.getRelevant)(e.relevant); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.desc = null; - this.extras = null; - this.medium = null; - this.occur = null; - this.area = new o.XFAObjectArray(); - this.contentArea = new o.XFAObjectArray(); - this.draw = new o.XFAObjectArray(); - this.exclGroup = new o.XFAObjectArray(); - this.field = new o.XFAObjectArray(); - this.subform = new o.XFAObjectArray(); - } - [r.$isUsable]() { - if (!this[r.$extra]) { - this[r.$extra] = { numberOfUse: 0 }; - return !0; - } - return ( - !this.occur || - -1 === this.occur.max || - this[r.$extra].numberOfUse < this.occur.max - ); - } - [r.$cleanPage]() { - delete this[r.$extra]; - } - [r.$getNextPage]() { - this[r.$extra] || (this[r.$extra] = { numberOfUse: 0 }); - const e = this[r.$getParent](); - if ("orderedOccurrence" === e.relation && this[r.$isUsable]()) { - this[r.$extra].numberOfUse += 1; - return this; - } - return e[r.$getNextPage](); - } - [r.$getAvailableSpace]() { - return this[r.$extra].space || { width: 0, height: 0 }; - } - [r.$toHTML]() { - this[r.$extra] || (this[r.$extra] = { numberOfUse: 1 }); - const e = []; - this[r.$extra].children = e; - const t = Object.create(null); - if (this.medium && this.medium.short && this.medium.long) { - t.width = (0, s.measureToString)(this.medium.short); - t.height = (0, s.measureToString)(this.medium.long); - this[r.$extra].space = { - width: this.medium.short, - height: this.medium.long, - }; - if ("landscape" === this.medium.orientation) { - const e = t.width; - t.width = t.height; - t.height = e; - this[r.$extra].space = { - width: this.medium.long, - height: this.medium.short, - }; - } - } else - (0, l.warn)( - "XFA - No medium specified in pageArea: please file a bug.", - ); - this[r.$childrenToHTML]({ - filter: new Set(["area", "draw", "field", "subform"]), - include: !0, - }); - this[r.$childrenToHTML]({ - filter: new Set(["contentArea"]), - include: !0, - }); - return c.HTMLResult.success({ - name: "div", - children: e, - attributes: { - class: ["xfaPage"], - id: this[r.$uid], - style: t, - xfaName: this.name, - }, - }); - } - } - class PageSet extends o.XFAObject { - constructor(e) { - super(f, "pageSet", !0); - this.duplexImposition = (0, c.getStringOption)( - e.duplexImposition, - ["longEdge", "shortEdge"], - ); - this.id = e.id || ""; - this.name = e.name || ""; - this.relation = (0, c.getStringOption)(e.relation, [ - "orderedOccurrence", - "duplexPaginated", - "simplexPaginated", - ]); - this.relevant = (0, c.getRelevant)(e.relevant); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.extras = null; - this.occur = null; - this.pageArea = new o.XFAObjectArray(); - this.pageSet = new o.XFAObjectArray(); - } - [r.$cleanPage]() { - for (const e of this.pageArea.children) e[r.$cleanPage](); - for (const e of this.pageSet.children) e[r.$cleanPage](); - } - [r.$isUsable]() { - return ( - !this.occur || - -1 === this.occur.max || - this[r.$extra].numberOfUse < this.occur.max - ); - } - [r.$getNextPage]() { - this[r.$extra] || - (this[r.$extra] = { - numberOfUse: 1, - pageIndex: -1, - pageSetIndex: -1, - }); - if ("orderedOccurrence" === this.relation) { - if ( - this[r.$extra].pageIndex + 1 < - this.pageArea.children.length - ) { - this[r.$extra].pageIndex += 1; - return this.pageArea.children[this[r.$extra].pageIndex][ - r.$getNextPage - ](); - } - if ( - this[r.$extra].pageSetIndex + 1 < - this.pageSet.children.length - ) { - this[r.$extra].pageSetIndex += 1; - return this.pageSet.children[this[r.$extra].pageSetIndex][ - r.$getNextPage - ](); - } - if (this[r.$isUsable]()) { - this[r.$extra].numberOfUse += 1; - this[r.$extra].pageIndex = -1; - this[r.$extra].pageSetIndex = -1; - return this[r.$getNextPage](); - } - const e = this[r.$getParent](); - if (e instanceof PageSet) return e[r.$getNextPage](); - this[r.$cleanPage](); - return this[r.$getNextPage](); - } - const e = this[r.$getTemplateRoot]()[r.$extra].pageNumber, - t = e % 2 == 0 ? "even" : "odd", - a = 0 === e ? "first" : "rest"; - let n = this.pageArea.children.find( - (e) => e.oddOrEven === t && e.pagePosition === a, - ); - if (n) return n; - n = this.pageArea.children.find( - (e) => "any" === e.oddOrEven && e.pagePosition === a, - ); - if (n) return n; - n = this.pageArea.children.find( - (e) => "any" === e.oddOrEven && "any" === e.pagePosition, - ); - return n || this.pageArea.children[0]; - } - } - class Para extends o.XFAObject { - constructor(e) { - super(f, "para", !0); - this.hAlign = (0, c.getStringOption)(e.hAlign, [ - "left", - "center", - "justify", - "justifyAll", - "radix", - "right", - ]); - this.id = e.id || ""; - this.lineHeight = e.lineHeight - ? (0, c.getMeasurement)(e.lineHeight, "0pt") - : ""; - this.marginLeft = e.marginLeft - ? (0, c.getMeasurement)(e.marginLeft, "0pt") - : ""; - this.marginRight = e.marginRight - ? (0, c.getMeasurement)(e.marginRight, "0pt") - : ""; - this.orphans = (0, c.getInteger)({ - data: e.orphans, - defaultValue: 0, - validate: (e) => e >= 0, - }); - this.preserve = e.preserve || ""; - this.radixOffset = e.radixOffset - ? (0, c.getMeasurement)(e.radixOffset, "0pt") - : ""; - this.spaceAbove = e.spaceAbove - ? (0, c.getMeasurement)(e.spaceAbove, "0pt") - : ""; - this.spaceBelow = e.spaceBelow - ? (0, c.getMeasurement)(e.spaceBelow, "0pt") - : ""; - this.tabDefault = e.tabDefault - ? (0, c.getMeasurement)(this.tabDefault) - : ""; - this.tabStops = (e.tabStops || "") - .trim() - .split(/\s+/) - .map((e, t) => (t % 2 == 1 ? (0, c.getMeasurement)(e) : e)); - this.textIndent = e.textIndent - ? (0, c.getMeasurement)(e.textIndent, "0pt") - : ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.vAlign = (0, c.getStringOption)(e.vAlign, [ - "top", - "bottom", - "middle", - ]); - this.widows = (0, c.getInteger)({ - data: e.widows, - defaultValue: 0, - validate: (e) => e >= 0, - }); - this.hyphenation = null; - } - [r.$toStyle]() { - const e = (0, s.toStyle)(this, "hAlign"); - "" !== this.marginLeft && - (e.paddingLeft = (0, s.measureToString)(this.marginLeft)); - "" !== this.marginRight && - (e.paddingight = (0, s.measureToString)(this.marginRight)); - "" !== this.spaceAbove && - (e.paddingTop = (0, s.measureToString)(this.spaceAbove)); - "" !== this.spaceBelow && - (e.paddingBottom = (0, s.measureToString)(this.spaceBelow)); - if ("" !== this.textIndent) { - e.textIndent = (0, s.measureToString)(this.textIndent); - (0, s.fixTextIndent)(e); - } - this.lineHeight > 0 && - (e.lineHeight = (0, s.measureToString)(this.lineHeight)); - "" !== this.tabDefault && - (e.tabSize = (0, s.measureToString)(this.tabDefault)); - this.tabStops.length; - this.hyphenatation && - Object.assign(e, this.hyphenatation[r.$toStyle]()); - return e; - } - } - class PasswordEdit extends o.XFAObject { - constructor(e) { - super(f, "passwordEdit", !0); - this.hScrollPolicy = (0, c.getStringOption)(e.hScrollPolicy, [ - "auto", - "off", - "on", - ]); - this.id = e.id || ""; - this.passwordChar = e.passwordChar || "*"; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.border = null; - this.extras = null; - this.margin = null; - } - } - class Pattern extends o.XFAObject { - constructor(e) { - super(f, "pattern", !0); - this.id = e.id || ""; - this.type = (0, c.getStringOption)(e.type, [ - "crossHatch", - "crossDiagonal", - "diagonalLeft", - "diagonalRight", - "horizontal", - "vertical", - ]); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.color = null; - this.extras = null; - } - [r.$toStyle](e) { - e = e ? e[r.$toStyle]() : "#FFFFFF"; - const t = this.color ? this.color[r.$toStyle]() : "#000000", - a = "repeating-linear-gradient", - n = `${e},${e} 5px,${t} 5px,${t} 10px`; - switch (this.type) { - case "crossHatch": - return `${a}(to top,${n}) ${a}(to right,${n})`; - case "crossDiagonal": - return `${a}(45deg,${n}) ${a}(-45deg,${n})`; - case "diagonalLeft": - return `${a}(45deg,${n})`; - case "diagonalRight": - return `${a}(-45deg,${n})`; - case "horizontal": - return `${a}(to top,${n})`; - case "vertical": - return `${a}(to right,${n})`; - } - return ""; - } - } - class Picture extends o.StringObject { - constructor(e) { - super(f, "picture"); - this.id = e.id || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - } - class Proto extends o.XFAObject { - constructor(e) { - super(f, "proto", !0); - this.appearanceFilter = new o.XFAObjectArray(); - this.arc = new o.XFAObjectArray(); - this.area = new o.XFAObjectArray(); - this.assist = new o.XFAObjectArray(); - this.barcode = new o.XFAObjectArray(); - this.bindItems = new o.XFAObjectArray(); - this.bookend = new o.XFAObjectArray(); - this.boolean = new o.XFAObjectArray(); - this.border = new o.XFAObjectArray(); - this.break = new o.XFAObjectArray(); - this.breakAfter = new o.XFAObjectArray(); - this.breakBefore = new o.XFAObjectArray(); - this.button = new o.XFAObjectArray(); - this.calculate = new o.XFAObjectArray(); - this.caption = new o.XFAObjectArray(); - this.certificate = new o.XFAObjectArray(); - this.certificates = new o.XFAObjectArray(); - this.checkButton = new o.XFAObjectArray(); - this.choiceList = new o.XFAObjectArray(); - this.color = new o.XFAObjectArray(); - this.comb = new o.XFAObjectArray(); - this.connect = new o.XFAObjectArray(); - this.contentArea = new o.XFAObjectArray(); - this.corner = new o.XFAObjectArray(); - this.date = new o.XFAObjectArray(); - this.dateTime = new o.XFAObjectArray(); - this.dateTimeEdit = new o.XFAObjectArray(); - this.decimal = new o.XFAObjectArray(); - this.defaultUi = new o.XFAObjectArray(); - this.desc = new o.XFAObjectArray(); - this.digestMethod = new o.XFAObjectArray(); - this.digestMethods = new o.XFAObjectArray(); - this.draw = new o.XFAObjectArray(); - this.edge = new o.XFAObjectArray(); - this.encoding = new o.XFAObjectArray(); - this.encodings = new o.XFAObjectArray(); - this.encrypt = new o.XFAObjectArray(); - this.encryptData = new o.XFAObjectArray(); - this.encryption = new o.XFAObjectArray(); - this.encryptionMethod = new o.XFAObjectArray(); - this.encryptionMethods = new o.XFAObjectArray(); - this.event = new o.XFAObjectArray(); - this.exData = new o.XFAObjectArray(); - this.exObject = new o.XFAObjectArray(); - this.exclGroup = new o.XFAObjectArray(); - this.execute = new o.XFAObjectArray(); - this.extras = new o.XFAObjectArray(); - this.field = new o.XFAObjectArray(); - this.fill = new o.XFAObjectArray(); - this.filter = new o.XFAObjectArray(); - this.float = new o.XFAObjectArray(); - this.font = new o.XFAObjectArray(); - this.format = new o.XFAObjectArray(); - this.handler = new o.XFAObjectArray(); - this.hyphenation = new o.XFAObjectArray(); - this.image = new o.XFAObjectArray(); - this.imageEdit = new o.XFAObjectArray(); - this.integer = new o.XFAObjectArray(); - this.issuers = new o.XFAObjectArray(); - this.items = new o.XFAObjectArray(); - this.keep = new o.XFAObjectArray(); - this.keyUsage = new o.XFAObjectArray(); - this.line = new o.XFAObjectArray(); - this.linear = new o.XFAObjectArray(); - this.lockDocument = new o.XFAObjectArray(); - this.manifest = new o.XFAObjectArray(); - this.margin = new o.XFAObjectArray(); - this.mdp = new o.XFAObjectArray(); - this.medium = new o.XFAObjectArray(); - this.message = new o.XFAObjectArray(); - this.numericEdit = new o.XFAObjectArray(); - this.occur = new o.XFAObjectArray(); - this.oid = new o.XFAObjectArray(); - this.oids = new o.XFAObjectArray(); - this.overflow = new o.XFAObjectArray(); - this.pageArea = new o.XFAObjectArray(); - this.pageSet = new o.XFAObjectArray(); - this.para = new o.XFAObjectArray(); - this.passwordEdit = new o.XFAObjectArray(); - this.pattern = new o.XFAObjectArray(); - this.picture = new o.XFAObjectArray(); - this.radial = new o.XFAObjectArray(); - this.reason = new o.XFAObjectArray(); - this.reasons = new o.XFAObjectArray(); - this.rectangle = new o.XFAObjectArray(); - this.ref = new o.XFAObjectArray(); - this.script = new o.XFAObjectArray(); - this.setProperty = new o.XFAObjectArray(); - this.signData = new o.XFAObjectArray(); - this.signature = new o.XFAObjectArray(); - this.signing = new o.XFAObjectArray(); - this.solid = new o.XFAObjectArray(); - this.speak = new o.XFAObjectArray(); - this.stipple = new o.XFAObjectArray(); - this.subform = new o.XFAObjectArray(); - this.subformSet = new o.XFAObjectArray(); - this.subjectDN = new o.XFAObjectArray(); - this.subjectDNs = new o.XFAObjectArray(); - this.submit = new o.XFAObjectArray(); - this.text = new o.XFAObjectArray(); - this.textEdit = new o.XFAObjectArray(); - this.time = new o.XFAObjectArray(); - this.timeStamp = new o.XFAObjectArray(); - this.toolTip = new o.XFAObjectArray(); - this.traversal = new o.XFAObjectArray(); - this.traverse = new o.XFAObjectArray(); - this.ui = new o.XFAObjectArray(); - this.validate = new o.XFAObjectArray(); - this.value = new o.XFAObjectArray(); - this.variables = new o.XFAObjectArray(); - } - } - class Radial extends o.XFAObject { - constructor(e) { - super(f, "radial", !0); - this.id = e.id || ""; - this.type = (0, c.getStringOption)(e.type, [ - "toEdge", - "toCenter", - ]); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.color = null; - this.extras = null; - } - [r.$toStyle](e) { - e = e ? e[r.$toStyle]() : "#FFFFFF"; - const t = this.color ? this.color[r.$toStyle]() : "#000000"; - return `radial-gradient(circle at center, ${"toEdge" === this.type ? `${e},${t}` : `${t},${e}`})`; - } - } - class Reason extends o.StringObject { - constructor(e) { - super(f, "reason"); - this.id = e.id || ""; - this.name = e.name || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - } - class Reasons extends o.XFAObject { - constructor(e) { - super(f, "reasons", !0); - this.id = e.id || ""; - this.type = (0, c.getStringOption)(e.type, [ - "optional", - "required", - ]); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.reason = new o.XFAObjectArray(); - } - } - class Rectangle extends o.XFAObject { - constructor(e) { - super(f, "rectangle", !0); - this.hand = (0, c.getStringOption)(e.hand, [ - "even", - "left", - "right", - ]); - this.id = e.id || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.corner = new o.XFAObjectArray(4); - this.edge = new o.XFAObjectArray(4); - this.fill = null; - } - [r.$toHTML]() { - const e = this.edge.children.length - ? this.edge.children[0] - : new Edge({}), - t = e[r.$toStyle](), - a = Object.create(null); - "visible" === this.fill?.presence - ? Object.assign(a, this.fill[r.$toStyle]()) - : (a.fill = "transparent"); - a.strokeWidth = (0, s.measureToString)( - "visible" === e.presence ? e.thickness : 0, - ); - a.stroke = t.color; - const n = ( - this.corner.children.length - ? this.corner.children[0] - : new Corner({}) - )[r.$toStyle](), - i = { - name: "svg", - children: [ - { - name: "rect", - attributes: { - xmlns: g, - width: "100%", - height: "100%", - x: 0, - y: 0, - rx: n.radius, - ry: n.radius, - style: a, - }, - }, - ], - attributes: { - xmlns: g, - style: { overflow: "visible" }, - width: "100%", - height: "100%", - }, - }; - if (hasMargin(this[r.$getParent]()[r.$getParent]())) - return c.HTMLResult.success({ - name: "div", - attributes: { - style: { display: "inline", width: "100%", height: "100%" }, - }, - children: [i], - }); - i.attributes.style.position = "absolute"; - return c.HTMLResult.success(i); - } - } - class RefElement extends o.StringObject { - constructor(e) { - super(f, "ref"); - this.id = e.id || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - } - class Script extends o.StringObject { - constructor(e) { - super(f, "script"); - this.binding = e.binding || ""; - this.contentType = e.contentType || ""; - this.id = e.id || ""; - this.name = e.name || ""; - this.runAt = (0, c.getStringOption)(e.runAt, [ - "client", - "both", - "server", - ]); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - } - class SetProperty extends o.XFAObject { - constructor(e) { - super(f, "setProperty"); - this.connection = e.connection || ""; - this.ref = e.ref || ""; - this.target = e.target || ""; - } - } - t.SetProperty = SetProperty; - class SignData extends o.XFAObject { - constructor(e) { - super(f, "signData", !0); - this.id = e.id || ""; - this.operation = (0, c.getStringOption)(e.operation, [ - "sign", - "clear", - "verify", - ]); - this.ref = e.ref || ""; - this.target = e.target || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.filter = null; - this.manifest = null; - } - } - class Signature extends o.XFAObject { - constructor(e) { - super(f, "signature", !0); - this.id = e.id || ""; - this.type = (0, c.getStringOption)(e.type, ["PDF1.3", "PDF1.6"]); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.border = null; - this.extras = null; - this.filter = null; - this.manifest = null; - this.margin = null; - } - } - class Signing extends o.XFAObject { - constructor(e) { - super(f, "signing", !0); - this.id = e.id || ""; - this.type = (0, c.getStringOption)(e.type, [ - "optional", - "required", - ]); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.certificate = new o.XFAObjectArray(); - } - } - class Solid extends o.XFAObject { - constructor(e) { - super(f, "solid", !0); - this.id = e.id || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.extras = null; - } - [r.$toStyle](e) { - return e ? e[r.$toStyle]() : "#FFFFFF"; - } - } - class Speak extends o.StringObject { - constructor(e) { - super(f, "speak"); - this.disable = (0, c.getInteger)({ - data: e.disable, - defaultValue: 0, - validate: (e) => 1 === e, - }); - this.id = e.id || ""; - this.priority = (0, c.getStringOption)(e.priority, [ - "custom", - "caption", - "name", - "toolTip", - ]); - this.rid = e.rid || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - } - class Stipple extends o.XFAObject { - constructor(e) { - super(f, "stipple", !0); - this.id = e.id || ""; - this.rate = (0, c.getInteger)({ - data: e.rate, - defaultValue: 50, - validate: (e) => e >= 0 && e <= 100, - }); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.color = null; - this.extras = null; - } - [r.$toStyle](e) { - const t = this.rate / 100; - return l.Util.makeHexColor( - Math.round(e.value.r * (1 - t) + this.value.r * t), - Math.round(e.value.g * (1 - t) + this.value.g * t), - Math.round(e.value.b * (1 - t) + this.value.b * t), - ); - } - } - class Subform extends o.XFAObject { - constructor(e) { - super(f, "subform", !0); - this.access = (0, c.getStringOption)(e.access, [ - "open", - "nonInteractive", - "protected", - "readOnly", - ]); - this.allowMacro = (0, c.getInteger)({ - data: e.allowMacro, - defaultValue: 0, - validate: (e) => 1 === e, - }); - this.anchorType = (0, c.getStringOption)(e.anchorType, [ - "topLeft", - "bottomCenter", - "bottomLeft", - "bottomRight", - "middleCenter", - "middleLeft", - "middleRight", - "topCenter", - "topRight", - ]); - this.colSpan = (0, c.getInteger)({ - data: e.colSpan, - defaultValue: 1, - validate: (e) => e >= 1 || -1 === e, - }); - this.columnWidths = (e.columnWidths || "") - .trim() - .split(/\s+/) - .map((e) => ("-1" === e ? -1 : (0, c.getMeasurement)(e))); - this.h = e.h ? (0, c.getMeasurement)(e.h) : ""; - this.hAlign = (0, c.getStringOption)(e.hAlign, [ - "left", - "center", - "justify", - "justifyAll", - "radix", - "right", - ]); - this.id = e.id || ""; - this.layout = (0, c.getStringOption)(e.layout, [ - "position", - "lr-tb", - "rl-row", - "rl-tb", - "row", - "table", - "tb", - ]); - this.locale = e.locale || ""; - this.maxH = (0, c.getMeasurement)(e.maxH, "0pt"); - this.maxW = (0, c.getMeasurement)(e.maxW, "0pt"); - this.mergeMode = (0, c.getStringOption)(e.mergeMode, [ - "consumeData", - "matchTemplate", - ]); - this.minH = (0, c.getMeasurement)(e.minH, "0pt"); - this.minW = (0, c.getMeasurement)(e.minW, "0pt"); - this.name = e.name || ""; - this.presence = (0, c.getStringOption)(e.presence, [ - "visible", - "hidden", - "inactive", - "invisible", - ]); - this.relevant = (0, c.getRelevant)(e.relevant); - this.restoreState = (0, c.getStringOption)(e.restoreState, [ - "manual", - "auto", - ]); - this.scope = (0, c.getStringOption)(e.scope, ["name", "none"]); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.w = e.w ? (0, c.getMeasurement)(e.w) : ""; - this.x = (0, c.getMeasurement)(e.x, "0pt"); - this.y = (0, c.getMeasurement)(e.y, "0pt"); - this.assist = null; - this.bind = null; - this.bookend = null; - this.border = null; - this.break = null; - this.calculate = null; - this.desc = null; - this.extras = null; - this.keep = null; - this.margin = null; - this.occur = null; - this.overflow = null; - this.pageSet = null; - this.para = null; - this.traversal = null; - this.validate = null; - this.variables = null; - this.area = new o.XFAObjectArray(); - this.breakAfter = new o.XFAObjectArray(); - this.breakBefore = new o.XFAObjectArray(); - this.connect = new o.XFAObjectArray(); - this.draw = new o.XFAObjectArray(); - this.event = new o.XFAObjectArray(); - this.exObject = new o.XFAObjectArray(); - this.exclGroup = new o.XFAObjectArray(); - this.field = new o.XFAObjectArray(); - this.proto = new o.XFAObjectArray(); - this.setProperty = new o.XFAObjectArray(); - this.subform = new o.XFAObjectArray(); - this.subformSet = new o.XFAObjectArray(); - } - [r.$getSubformParent]() { - const e = this[r.$getParent](); - return e instanceof SubformSet ? e[r.$getSubformParent]() : e; - } - [r.$isBindable]() { - return !0; - } - [r.$isThereMoreWidth]() { - return ( - (this.layout.endsWith("-tb") && - 0 === this[r.$extra].attempt && - this[r.$extra].numberInLine > 0) || - this[r.$getParent]()[r.$isThereMoreWidth]() - ); - } - *[r.$getContainedChildren]() { - yield* getContainedChildren(this); - } - [r.$flushHTML]() { - return (0, i.flushHTML)(this); - } - [r.$addHTML](e, t) { - (0, i.addHTML)(this, e, t); - } - [r.$getAvailableSpace]() { - return (0, i.getAvailableSpace)(this); - } - [r.$isSplittable]() { - const e = this[r.$getSubformParent](); - if (!e[r.$isSplittable]()) return !1; - if (void 0 !== this[r.$extra]._isSplittable) - return this[r.$extra]._isSplittable; - if ("position" === this.layout || this.layout.includes("row")) { - this[r.$extra]._isSplittable = !1; - return !1; - } - if (this.keep && "none" !== this.keep.intact) { - this[r.$extra]._isSplittable = !1; - return !1; - } - if (e.layout?.endsWith("-tb") && 0 !== e[r.$extra].numberInLine) - return !1; - this[r.$extra]._isSplittable = !0; - return !0; - } - [r.$toHTML](e) { - setTabIndex(this); - if (this.break) { - if ( - "auto" !== this.break.after || - "" !== this.break.afterTarget - ) { - const e = new BreakAfter({ - targetType: this.break.after, - target: this.break.afterTarget, - startNew: this.break.startNew.toString(), - }); - e[r.$globalData] = this[r.$globalData]; - this[r.$appendChild](e); - this.breakAfter.push(e); - } - if ( - "auto" !== this.break.before || - "" !== this.break.beforeTarget - ) { - const e = new BreakBefore({ - targetType: this.break.before, - target: this.break.beforeTarget, - startNew: this.break.startNew.toString(), - }); - e[r.$globalData] = this[r.$globalData]; - this[r.$appendChild](e); - this.breakBefore.push(e); - } - if ("" !== this.break.overflowTarget) { - const e = new Overflow({ - target: this.break.overflowTarget, - leader: this.break.overflowLeader, - trailer: this.break.overflowTrailer, - }); - e[r.$globalData] = this[r.$globalData]; - this[r.$appendChild](e); - this.overflow.push(e); - } - this[r.$removeChild](this.break); - this.break = null; - } - if ("hidden" === this.presence || "inactive" === this.presence) - return c.HTMLResult.EMPTY; - (this.breakBefore.children.length > 1 || - this.breakAfter.children.length > 1) && - (0, l.warn)( - "XFA - Several breakBefore or breakAfter in subforms: please file a bug.", - ); - if (this.breakBefore.children.length >= 1) { - const e = this.breakBefore.children[0]; - if (handleBreak(e)) return c.HTMLResult.breakNode(e); - } - if (this[r.$extra]?.afterBreakAfter) return c.HTMLResult.EMPTY; - (0, s.fixDimensions)(this); - const t = [], - a = { id: this[r.$uid], class: [] }; - (0, s.setAccess)(this, a.class); - this[r.$extra] || (this[r.$extra] = Object.create(null)); - Object.assign(this[r.$extra], { - children: t, - line: null, - attributes: a, - attempt: 0, - numberInLine: 0, - availableSpace: { - width: Math.min(this.w || 1 / 0, e.width), - height: Math.min(this.h || 1 / 0, e.height), - }, - width: 0, - height: 0, - prevHeight: 0, - currentWidth: 0, - }); - const n = this[r.$getTemplateRoot](), - o = n[r.$extra].noLayoutFailure, - h = this[r.$isSplittable](); - h || setFirstUnsplittable(this); - if (!(0, i.checkDimensions)(this, e)) return c.HTMLResult.FAILURE; - const u = new Set([ - "area", - "draw", - "exclGroup", - "field", - "subform", - "subformSet", - ]); - if (this.layout.includes("row")) { - const e = this[r.$getSubformParent]().columnWidths; - if (Array.isArray(e) && e.length > 0) { - this[r.$extra].columnWidths = e; - this[r.$extra].currentColumn = 0; - } - } - const d = (0, s.toStyle)( - this, - "anchorType", - "dimensions", - "position", - "presence", - "border", - "margin", - "hAlign", - ), - f = ["xfaSubform"], - g = (0, s.layoutClass)(this); - g && f.push(g); - a.style = d; - a.class = f; - this.name && (a.xfaName = this.name); - if (this.overflow) { - const t = this.overflow[r.$getExtra](); - if (t.addLeader) { - t.addLeader = !1; - handleOverflow(this, t.leader, e); - } - } - this[r.$pushPara](); - const p = "lr-tb" === this.layout || "rl-tb" === this.layout, - m = p ? 2 : 1; - for (; this[r.$extra].attempt < m; this[r.$extra].attempt++) { - p && - 1 === this[r.$extra].attempt && - (this[r.$extra].numberInLine = 0); - const e = this[r.$childrenToHTML]({ filter: u, include: !0 }); - if (e.success) break; - if (e.isBreak()) { - this[r.$popPara](); - return e; - } - if ( - p && - 0 === this[r.$extra].attempt && - 0 === this[r.$extra].numberInLine && - !n[r.$extra].noLayoutFailure - ) { - this[r.$extra].attempt = m; - break; - } - } - this[r.$popPara](); - h || unsetFirstUnsplittable(this); - n[r.$extra].noLayoutFailure = o; - if (this[r.$extra].attempt === m) { - this.overflow && - (this[r.$getTemplateRoot]()[r.$extra].overflowNode = - this.overflow); - h || delete this[r.$extra]; - return c.HTMLResult.FAILURE; - } - if (this.overflow) { - const t = this.overflow[r.$getExtra](); - if (t.addTrailer) { - t.addTrailer = !1; - handleOverflow(this, t.trailer, e); - } - } - let b = 0, - y = 0; - if (this.margin) { - b = this.margin.leftInset + this.margin.rightInset; - y = this.margin.topInset + this.margin.bottomInset; - } - const w = Math.max(this[r.$extra].width + b, this.w || 0), - S = Math.max(this[r.$extra].height + y, this.h || 0), - x = [this.x, this.y, w, S]; - "" === this.w && (d.width = (0, s.measureToString)(w)); - "" === this.h && (d.height = (0, s.measureToString)(S)); - if (("0px" === d.width || "0px" === d.height) && 0 === t.length) - return c.HTMLResult.EMPTY; - const C = { name: "div", attributes: a, children: t }; - applyAssist(this, a); - const k = c.HTMLResult.success((0, s.createWrapper)(this, C), x); - if (this.breakAfter.children.length >= 1) { - const e = this.breakAfter.children[0]; - if (handleBreak(e)) { - this[r.$extra].afterBreakAfter = k; - return c.HTMLResult.breakNode(e); - } - } - delete this[r.$extra]; - return k; - } - } - class SubformSet extends o.XFAObject { - constructor(e) { - super(f, "subformSet", !0); - this.id = e.id || ""; - this.name = e.name || ""; - this.relation = (0, c.getStringOption)(e.relation, [ - "ordered", - "choice", - "unordered", - ]); - this.relevant = (0, c.getRelevant)(e.relevant); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.bookend = null; - this.break = null; - this.desc = null; - this.extras = null; - this.occur = null; - this.overflow = null; - this.breakAfter = new o.XFAObjectArray(); - this.breakBefore = new o.XFAObjectArray(); - this.subform = new o.XFAObjectArray(); - this.subformSet = new o.XFAObjectArray(); - } - *[r.$getContainedChildren]() { - yield* getContainedChildren(this); - } - [r.$getSubformParent]() { - let e = this[r.$getParent](); - for (; !(e instanceof Subform); ) e = e[r.$getParent](); - return e; - } - [r.$isBindable]() { - return !0; - } - } - class SubjectDN extends o.ContentObject { - constructor(e) { - super(f, "subjectDN"); - this.delimiter = e.delimiter || ","; - this.id = e.id || ""; - this.name = e.name || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - [r.$finalize]() { - this[r.$content] = new Map( - this[r.$content].split(this.delimiter).map((e) => { - (e = e.split("=", 2))[0] = e[0].trim(); - return e; - }), - ); - } - } - class SubjectDNs extends o.XFAObject { - constructor(e) { - super(f, "subjectDNs", !0); - this.id = e.id || ""; - this.type = (0, c.getStringOption)(e.type, [ - "optional", - "required", - ]); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.subjectDN = new o.XFAObjectArray(); - } - } - class Submit extends o.XFAObject { - constructor(e) { - super(f, "submit", !0); - this.embedPDF = (0, c.getInteger)({ - data: e.embedPDF, - defaultValue: 0, - validate: (e) => 1 === e, - }); - this.format = (0, c.getStringOption)(e.format, [ - "xdp", - "formdata", - "pdf", - "urlencoded", - "xfd", - "xml", - ]); - this.id = e.id || ""; - this.target = e.target || ""; - this.textEncoding = (0, c.getKeyword)({ - data: e.textEncoding ? e.textEncoding.toLowerCase() : "", - defaultValue: "", - validate: (e) => - [ - "utf-8", - "big-five", - "fontspecific", - "gbk", - "gb-18030", - "gb-2312", - "ksc-5601", - "none", - "shift-jis", - "ucs-2", - "utf-16", - ].includes(e) || e.match(/iso-8859-\d{2}/), - }); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.xdpContent = e.xdpContent || ""; - this.encrypt = null; - this.encryptData = new o.XFAObjectArray(); - this.signData = new o.XFAObjectArray(); - } - } - class Template extends o.XFAObject { - constructor(e) { - super(f, "template", !0); - this.baseProfile = (0, c.getStringOption)(e.baseProfile, [ - "full", - "interactiveForms", - ]); - this.extras = null; - this.subform = new o.XFAObjectArray(); - } - [r.$finalize]() { - 0 === this.subform.children.length && - (0, l.warn)("XFA - No subforms in template node."); - this.subform.children.length >= 2 && - (0, l.warn)( - "XFA - Several subforms in template node: please file a bug.", - ); - this[r.$tabIndex] = 5e3; - } - [r.$isSplittable]() { - return !0; - } - [r.$searchNode](e, t) { - return e.startsWith("#") - ? [this[r.$ids].get(e.slice(1))] - : (0, d.searchNode)(this, t, e, !0, !0); - } - *[r.$toPages]() { - if (!this.subform.children.length) - return c.HTMLResult.success({ name: "div", children: [] }); - this[r.$extra] = { - overflowNode: null, - firstUnsplittable: null, - currentContentArea: null, - currentPageArea: null, - noLayoutFailure: !1, - pageNumber: 1, - pagePosition: "first", - oddOrEven: "odd", - blankOrNotBlank: "nonBlank", - paraStack: [], - }; - const e = this.subform.children[0]; - e.pageSet[r.$cleanPage](); - const t = e.pageSet.pageArea.children, - a = { name: "div", children: [] }; - let n = null, - i = null, - s = null; - if (e.breakBefore.children.length >= 1) { - i = e.breakBefore.children[0]; - s = i.target; - } else if ( - e.subform.children.length >= 1 && - e.subform.children[0].breakBefore.children.length >= 1 - ) { - i = e.subform.children[0].breakBefore.children[0]; - s = i.target; - } else if (e.break?.beforeTarget) { - i = e.break; - s = i.beforeTarget; - } else if ( - e.subform.children.length >= 1 && - e.subform.children[0].break?.beforeTarget - ) { - i = e.subform.children[0].break; - s = i.beforeTarget; - } - if (i) { - const e = this[r.$searchNode](s, i[r.$getParent]()); - if (e instanceof PageArea) { - n = e; - i[r.$extra] = {}; - } - } - n || (n = t[0]); - n[r.$extra] = { numberOfUse: 1 }; - const o = n[r.$getParent](); - o[r.$extra] = { - numberOfUse: 1, - pageIndex: o.pageArea.children.indexOf(n), - pageSetIndex: 0, - }; - let h, - u = null, - d = null, - f = !0, - g = 0, - p = 0; - for (;;) { - if (f) g = 0; - else { - a.children.pop(); - if (3 == ++g) { - (0, l.warn)( - "XFA - Something goes wrong: please file a bug.", - ); - return a; - } - } - h = null; - this[r.$extra].currentPageArea = n; - const t = n[r.$toHTML]().html; - a.children.push(t); - if (u) { - this[r.$extra].noLayoutFailure = !0; - t.children.push(u[r.$toHTML](n[r.$extra].space).html); - u = null; - } - if (d) { - this[r.$extra].noLayoutFailure = !0; - t.children.push(d[r.$toHTML](n[r.$extra].space).html); - d = null; - } - const i = n.contentArea.children, - s = t.children.filter((e) => - e.attributes.class.includes("xfaContentarea"), - ); - f = !1; - this[r.$extra].firstUnsplittable = null; - this[r.$extra].noLayoutFailure = !1; - const flush = (t) => { - const a = e[r.$flushHTML](); - if (a) { - f ||= a.children?.length > 0; - s[t].children.push(a); - } - }; - for (let t = p, n = i.length; t < n; t++) { - const n = (this[r.$extra].currentContentArea = i[t]), - o = { width: n.w, height: n.h }; - p = 0; - if (u) { - s[t].children.push(u[r.$toHTML](o).html); - u = null; - } - if (d) { - s[t].children.push(d[r.$toHTML](o).html); - d = null; - } - const c = e[r.$toHTML](o); - if (c.success) { - if (c.html) { - f ||= c.html.children?.length > 0; - s[t].children.push(c.html); - } else !f && a.children.length > 1 && a.children.pop(); - return a; - } - if (c.isBreak()) { - const e = c.breakNode; - flush(t); - if ("auto" === e.targetType) continue; - if (e.leader) { - u = this[r.$searchNode](e.leader, e[r.$getParent]()); - u = u ? u[0] : null; - } - if (e.trailer) { - d = this[r.$searchNode](e.trailer, e[r.$getParent]()); - d = d ? d[0] : null; - } - if ("pageArea" === e.targetType) { - h = e[r.$extra].target; - t = 1 / 0; - } else if (e[r.$extra].target) { - h = e[r.$extra].target; - p = e[r.$extra].index + 1; - t = 1 / 0; - } else t = e[r.$extra].index; - } else if (this[r.$extra].overflowNode) { - const e = this[r.$extra].overflowNode; - this[r.$extra].overflowNode = null; - const a = e[r.$getExtra](), - n = a.target; - a.addLeader = null !== a.leader; - a.addTrailer = null !== a.trailer; - flush(t); - const s = t; - t = 1 / 0; - if (n instanceof PageArea) h = n; - else if (n instanceof ContentArea) { - const e = i.indexOf(n); - if (-1 !== e) e > s ? (t = e - 1) : (p = e); - else { - h = n[r.$getParent](); - p = h.contentArea.children.indexOf(n); - } - } - } else flush(t); - } - this[r.$extra].pageNumber += 1; - h && - (h[r.$isUsable]() - ? (h[r.$extra].numberOfUse += 1) - : (h = null)); - n = h || n[r.$getNextPage](); - yield null; - } - } - } - t.Template = Template; - class Text extends o.ContentObject { - constructor(e) { - super(f, "text"); - this.id = e.id || ""; - this.maxChars = (0, c.getInteger)({ - data: e.maxChars, - defaultValue: 0, - validate: (e) => e >= 0, - }); - this.name = e.name || ""; - this.rid = e.rid || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - [r.$acceptWhitespace]() { - return !0; - } - [r.$onChild](e) { - if (e[r.$namespaceId] === n.NamespaceIds.xhtml.id) { - this[r.$content] = e; - return !0; - } - (0, l.warn)(`XFA - Invalid content in Text: ${e[r.$nodeName]}.`); - return !1; - } - [r.$onText](e) { - this[r.$content] instanceof o.XFAObject || super[r.$onText](e); - } - [r.$finalize]() { - "string" == typeof this[r.$content] && - (this[r.$content] = this[r.$content].replaceAll("\r\n", "\n")); - } - [r.$getExtra]() { - return "string" == typeof this[r.$content] - ? this[r.$content] - .split(/[\u2029\u2028\n]/) - .reduce((e, t) => { - t && e.push(t); - return e; - }, []) - .join("\n") - : this[r.$content][r.$text](); - } - [r.$toHTML](e) { - if ("string" == typeof this[r.$content]) { - const e = valueToHtml(this[r.$content]).html; - if (this[r.$content].includes("\u2029")) { - e.name = "div"; - e.children = []; - this[r.$content] - .split("\u2029") - .map((e) => - e.split(/[\u2028\n]/).reduce((e, t) => { - e.push({ name: "span", value: t }, { name: "br" }); - return e; - }, []), - ) - .forEach((t) => { - e.children.push({ name: "p", children: t }); - }); - } else if (/[\u2028\n]/.test(this[r.$content])) { - e.name = "div"; - e.children = []; - this[r.$content].split(/[\u2028\n]/).forEach((t) => { - e.children.push({ name: "span", value: t }, { name: "br" }); - }); - } - return c.HTMLResult.success(e); - } - return this[r.$content][r.$toHTML](e); - } - } - t.Text = Text; - class TextEdit extends o.XFAObject { - constructor(e) { - super(f, "textEdit", !0); - this.allowRichText = (0, c.getInteger)({ - data: e.allowRichText, - defaultValue: 0, - validate: (e) => 1 === e, - }); - this.hScrollPolicy = (0, c.getStringOption)(e.hScrollPolicy, [ - "auto", - "off", - "on", - ]); - this.id = e.id || ""; - this.multiLine = (0, c.getInteger)({ - data: e.multiLine, - defaultValue: "", - validate: (e) => 0 === e || 1 === e, - }); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.vScrollPolicy = (0, c.getStringOption)(e.vScrollPolicy, [ - "auto", - "off", - "on", - ]); - this.border = null; - this.comb = null; - this.extras = null; - this.margin = null; - } - [r.$toHTML](e) { - const t = (0, s.toStyle)(this, "border", "font", "margin"); - let a; - const n = this[r.$getParent]()[r.$getParent](); - "" === this.multiLine && - (this.multiLine = n instanceof Draw ? 1 : 0); - a = - 1 === this.multiLine - ? { - name: "textarea", - attributes: { - dataId: n[r.$data]?.[r.$uid] || n[r.$uid], - fieldId: n[r.$uid], - class: ["xfaTextfield"], - style: t, - "aria-label": ariaLabel(n), - "aria-required": !1, - }, - } - : { - name: "input", - attributes: { - type: "text", - dataId: n[r.$data]?.[r.$uid] || n[r.$uid], - fieldId: n[r.$uid], - class: ["xfaTextfield"], - style: t, - "aria-label": ariaLabel(n), - "aria-required": !1, - }, - }; - if (isRequired(n)) { - a.attributes["aria-required"] = !0; - a.attributes.required = !0; - } - return c.HTMLResult.success({ - name: "label", - attributes: { class: ["xfaLabel"] }, - children: [a], - }); - } - } - class Time extends o.StringObject { - constructor(e) { - super(f, "time"); - this.id = e.id || ""; - this.name = e.name || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - [r.$finalize]() { - const e = this[r.$content].trim(); - this[r.$content] = e ? new Date(e) : null; - } - [r.$toHTML](e) { - return valueToHtml( - this[r.$content] ? this[r.$content].toString() : "", - ); - } - } - class TimeStamp extends o.XFAObject { - constructor(e) { - super(f, "timeStamp"); - this.id = e.id || ""; - this.server = e.server || ""; - this.type = (0, c.getStringOption)(e.type, [ - "optional", - "required", - ]); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - } - class ToolTip extends o.StringObject { - constructor(e) { - super(f, "toolTip"); - this.id = e.id || ""; - this.rid = e.rid || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - } - class Traversal extends o.XFAObject { - constructor(e) { - super(f, "traversal", !0); - this.id = e.id || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.extras = null; - this.traverse = new o.XFAObjectArray(); - } - } - class Traverse extends o.XFAObject { - constructor(e) { - super(f, "traverse", !0); - this.id = e.id || ""; - this.operation = (0, c.getStringOption)(e.operation, [ - "next", - "back", - "down", - "first", - "left", - "right", - "up", - ]); - this.ref = e.ref || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.extras = null; - this.script = null; - } - get name() { - return this.operation; - } - [r.$isTransparent]() { - return !1; - } - } - class Ui extends o.XFAObject { - constructor(e) { - super(f, "ui", !0); - this.id = e.id || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.extras = null; - this.picture = null; - this.barcode = null; - this.button = null; - this.checkButton = null; - this.choiceList = null; - this.dateTimeEdit = null; - this.defaultUi = null; - this.imageEdit = null; - this.numericEdit = null; - this.passwordEdit = null; - this.signature = null; - this.textEdit = null; - } - [r.$getExtra]() { - if (void 0 === this[r.$extra]) { - for (const e of Object.getOwnPropertyNames(this)) { - if ("extras" === e || "picture" === e) continue; - const t = this[e]; - if (t instanceof o.XFAObject) { - this[r.$extra] = t; - return t; - } - } - this[r.$extra] = null; - } - return this[r.$extra]; - } - [r.$toHTML](e) { - const t = this[r.$getExtra](); - return t ? t[r.$toHTML](e) : c.HTMLResult.EMPTY; - } - } - class Validate extends o.XFAObject { - constructor(e) { - super(f, "validate", !0); - this.formatTest = (0, c.getStringOption)(e.formatTest, [ - "warning", - "disabled", - "error", - ]); - this.id = e.id || ""; - this.nullTest = (0, c.getStringOption)(e.nullTest, [ - "disabled", - "error", - "warning", - ]); - this.scriptTest = (0, c.getStringOption)(e.scriptTest, [ - "error", - "disabled", - "warning", - ]); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.extras = null; - this.message = null; - this.picture = null; - this.script = null; - } - } - class Value extends o.XFAObject { - constructor(e) { - super(f, "value", !0); - this.id = e.id || ""; - this.override = (0, c.getInteger)({ - data: e.override, - defaultValue: 0, - validate: (e) => 1 === e, - }); - this.relevant = (0, c.getRelevant)(e.relevant); - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.arc = null; - this.boolean = null; - this.date = null; - this.dateTime = null; - this.decimal = null; - this.exData = null; - this.float = null; - this.image = null; - this.integer = null; - this.line = null; - this.rectangle = null; - this.text = null; - this.time = null; - } - [r.$setValue](e) { - const t = this[r.$getParent](); - if (t instanceof Field && t.ui?.imageEdit) { - if (!this.image) { - this.image = new Image({}); - this[r.$appendChild](this.image); - } - this.image[r.$content] = e[r.$content]; - return; - } - const a = e[r.$nodeName]; - if (null === this[a]) { - for (const e of Object.getOwnPropertyNames(this)) { - const t = this[e]; - if (t instanceof o.XFAObject) { - this[e] = null; - this[r.$removeChild](t); - } - } - this[e[r.$nodeName]] = e; - this[r.$appendChild](e); - } else this[a][r.$content] = e[r.$content]; - } - [r.$text]() { - if (this.exData) - return "string" == typeof this.exData[r.$content] - ? this.exData[r.$content].trim() - : this.exData[r.$content][r.$text]().trim(); - for (const e of Object.getOwnPropertyNames(this)) { - if ("image" === e) continue; - const t = this[e]; - if (t instanceof o.XFAObject) - return (t[r.$content] || "").toString().trim(); - } - return null; - } - [r.$toHTML](e) { - for (const t of Object.getOwnPropertyNames(this)) { - const a = this[t]; - if (a instanceof o.XFAObject) return a[r.$toHTML](e); - } - return c.HTMLResult.EMPTY; - } - } - t.Value = Value; - class Variables extends o.XFAObject { - constructor(e) { - super(f, "variables", !0); - this.id = e.id || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - this.boolean = new o.XFAObjectArray(); - this.date = new o.XFAObjectArray(); - this.dateTime = new o.XFAObjectArray(); - this.decimal = new o.XFAObjectArray(); - this.exData = new o.XFAObjectArray(); - this.float = new o.XFAObjectArray(); - this.image = new o.XFAObjectArray(); - this.integer = new o.XFAObjectArray(); - this.manifest = new o.XFAObjectArray(); - this.script = new o.XFAObjectArray(); - this.text = new o.XFAObjectArray(); - this.time = new o.XFAObjectArray(); - } - [r.$isTransparent]() { - return !0; - } - } - class TemplateNamespace { - static [n.$buildXFAObject](e, t) { - if (TemplateNamespace.hasOwnProperty(e)) { - const a = TemplateNamespace[e](t); - a[r.$setSetAttributes](t); - return a; - } - } - static appearanceFilter(e) { - return new AppearanceFilter(e); - } - static arc(e) { - return new Arc(e); - } - static area(e) { - return new Area(e); - } - static assist(e) { - return new Assist(e); - } - static barcode(e) { - return new Barcode(e); - } - static bind(e) { - return new Bind(e); - } - static bindItems(e) { - return new BindItems(e); - } - static bookend(e) { - return new Bookend(e); - } - static boolean(e) { - return new BooleanElement(e); - } - static border(e) { - return new Border(e); - } - static break(e) { - return new Break(e); - } - static breakAfter(e) { - return new BreakAfter(e); - } - static breakBefore(e) { - return new BreakBefore(e); - } - static button(e) { - return new Button(e); - } - static calculate(e) { - return new Calculate(e); - } - static caption(e) { - return new Caption(e); - } - static certificate(e) { - return new Certificate(e); - } - static certificates(e) { - return new Certificates(e); - } - static checkButton(e) { - return new CheckButton(e); - } - static choiceList(e) { - return new ChoiceList(e); - } - static color(e) { - return new Color(e); - } - static comb(e) { - return new Comb(e); - } - static connect(e) { - return new Connect(e); - } - static contentArea(e) { - return new ContentArea(e); - } - static corner(e) { - return new Corner(e); - } - static date(e) { - return new DateElement(e); - } - static dateTime(e) { - return new DateTime(e); - } - static dateTimeEdit(e) { - return new DateTimeEdit(e); - } - static decimal(e) { - return new Decimal(e); - } - static defaultUi(e) { - return new DefaultUi(e); - } - static desc(e) { - return new Desc(e); - } - static digestMethod(e) { - return new DigestMethod(e); - } - static digestMethods(e) { - return new DigestMethods(e); - } - static draw(e) { - return new Draw(e); - } - static edge(e) { - return new Edge(e); - } - static encoding(e) { - return new Encoding(e); - } - static encodings(e) { - return new Encodings(e); - } - static encrypt(e) { - return new Encrypt(e); - } - static encryptData(e) { - return new EncryptData(e); - } - static encryption(e) { - return new Encryption(e); - } - static encryptionMethod(e) { - return new EncryptionMethod(e); - } - static encryptionMethods(e) { - return new EncryptionMethods(e); - } - static event(e) { - return new Event(e); - } - static exData(e) { - return new ExData(e); - } - static exObject(e) { - return new ExObject(e); - } - static exclGroup(e) { - return new ExclGroup(e); - } - static execute(e) { - return new Execute(e); - } - static extras(e) { - return new Extras(e); - } - static field(e) { - return new Field(e); - } - static fill(e) { - return new Fill(e); - } - static filter(e) { - return new Filter(e); - } - static float(e) { - return new Float(e); - } - static font(e) { - return new Font(e); - } - static format(e) { - return new Format(e); - } - static handler(e) { - return new Handler(e); - } - static hyphenation(e) { - return new Hyphenation(e); - } - static image(e) { - return new Image(e); - } - static imageEdit(e) { - return new ImageEdit(e); - } - static integer(e) { - return new Integer(e); - } - static issuers(e) { - return new Issuers(e); - } - static items(e) { - return new Items(e); - } - static keep(e) { - return new Keep(e); - } - static keyUsage(e) { - return new KeyUsage(e); - } - static line(e) { - return new Line(e); - } - static linear(e) { - return new Linear(e); - } - static lockDocument(e) { - return new LockDocument(e); - } - static manifest(e) { - return new Manifest(e); - } - static margin(e) { - return new Margin(e); - } - static mdp(e) { - return new Mdp(e); - } - static medium(e) { - return new Medium(e); - } - static message(e) { - return new Message(e); - } - static numericEdit(e) { - return new NumericEdit(e); - } - static occur(e) { - return new Occur(e); - } - static oid(e) { - return new Oid(e); - } - static oids(e) { - return new Oids(e); - } - static overflow(e) { - return new Overflow(e); - } - static pageArea(e) { - return new PageArea(e); - } - static pageSet(e) { - return new PageSet(e); - } - static para(e) { - return new Para(e); - } - static passwordEdit(e) { - return new PasswordEdit(e); - } - static pattern(e) { - return new Pattern(e); - } - static picture(e) { - return new Picture(e); - } - static proto(e) { - return new Proto(e); - } - static radial(e) { - return new Radial(e); - } - static reason(e) { - return new Reason(e); - } - static reasons(e) { - return new Reasons(e); - } - static rectangle(e) { - return new Rectangle(e); - } - static ref(e) { - return new RefElement(e); - } - static script(e) { - return new Script(e); - } - static setProperty(e) { - return new SetProperty(e); - } - static signData(e) { - return new SignData(e); - } - static signature(e) { - return new Signature(e); - } - static signing(e) { - return new Signing(e); - } - static solid(e) { - return new Solid(e); - } - static speak(e) { - return new Speak(e); - } - static stipple(e) { - return new Stipple(e); - } - static subform(e) { - return new Subform(e); - } - static subformSet(e) { - return new SubformSet(e); - } - static subjectDN(e) { - return new SubjectDN(e); - } - static subjectDNs(e) { - return new SubjectDNs(e); - } - static submit(e) { - return new Submit(e); - } - static template(e) { - return new Template(e); - } - static text(e) { - return new Text(e); - } - static textEdit(e) { - return new TextEdit(e); - } - static time(e) { - return new Time(e); - } - static timeStamp(e) { - return new TimeStamp(e); - } - static toolTip(e) { - return new ToolTip(e); - } - static traversal(e) { - return new Traversal(e); - } - static traverse(e) { - return new Traverse(e); - } - static ui(e) { - return new Ui(e); - } - static validate(e) { - return new Validate(e); - } - static value(e) { - return new Value(e); - } - static variables(e) { - return new Variables(e); - } - } - t.TemplateNamespace = TemplateNamespace; - }, - (e, t) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.NamespaceIds = t.$buildXFAObject = void 0; - const a = Symbol(); - t.$buildXFAObject = a; - t.NamespaceIds = { - config: { - id: 0, - check: (e) => e.startsWith("http://www.xfa.org/schema/xci/"), - }, - connectionSet: { - id: 1, - check: (e) => - e.startsWith("http://www.xfa.org/schema/xfa-connection-set/"), - }, - datasets: { - id: 2, - check: (e) => e.startsWith("http://www.xfa.org/schema/xfa-data/"), - }, - form: { - id: 3, - check: (e) => e.startsWith("http://www.xfa.org/schema/xfa-form/"), - }, - localeSet: { - id: 4, - check: (e) => - e.startsWith("http://www.xfa.org/schema/xfa-locale-set/"), - }, - pdf: { id: 5, check: (e) => "http://ns.adobe.com/xdp/pdf/" === e }, - signature: { - id: 6, - check: (e) => "http://www.w3.org/2000/09/xmldsig#" === e, - }, - sourceSet: { - id: 7, - check: (e) => - e.startsWith("http://www.xfa.org/schema/xfa-source-set/"), - }, - stylesheet: { - id: 8, - check: (e) => "http://www.w3.org/1999/XSL/Transform" === e, - }, - template: { - id: 9, - check: (e) => - e.startsWith("http://www.xfa.org/schema/xfa-template/"), - }, - xdc: { - id: 10, - check: (e) => e.startsWith("http://www.xfa.org/schema/xdc/"), - }, - xdp: { id: 11, check: (e) => "http://ns.adobe.com/xdp/" === e }, - xfdf: { id: 12, check: (e) => "http://ns.adobe.com/xfdf/" === e }, - xhtml: { - id: 13, - check: (e) => "http://www.w3.org/1999/xhtml" === e, - }, - xmpmeta: { - id: 14, - check: (e) => "http://ns.adobe.com/xmpmeta/" === e, - }, - }; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.addHTML = function addHTML(e, t, a) { - const i = e[r.$extra], - s = i.availableSpace, - [o, c, l, h] = a; - switch (e.layout) { - case "position": - i.width = Math.max(i.width, o + l); - i.height = Math.max(i.height, c + h); - i.children.push(t); - break; - case "lr-tb": - case "rl-tb": - if (!i.line || 1 === i.attempt) { - i.line = createLine(e, []); - i.children.push(i.line); - i.numberInLine = 0; - } - i.numberInLine += 1; - i.line.children.push(t); - if (0 === i.attempt) { - i.currentWidth += l; - i.height = Math.max(i.height, i.prevHeight + h); - } else { - i.currentWidth = l; - i.prevHeight = i.height; - i.height += h; - i.attempt = 0; - } - i.width = Math.max(i.width, i.currentWidth); - break; - case "rl-row": - case "row": { - i.children.push(t); - i.width += l; - i.height = Math.max(i.height, h); - const e = (0, n.measureToString)(i.height); - for (const t of i.children) t.attributes.style.height = e; - break; - } - case "table": - case "tb": - i.width = Math.min(s.width, Math.max(i.width, l)); - i.height += h; - i.children.push(t); - } - }; - t.checkDimensions = function checkDimensions(e, t) { - if (null === e[r.$getTemplateRoot]()[r.$extra].firstUnsplittable) - return !0; - if (0 === e.w || 0 === e.h) return !0; - const a = e[r.$getSubformParent](), - n = a[r.$extra]?.attempt || 0, - [, i, s, o] = (function getTransformedBBox(e) { - let t, - a, - r = "" === e.w ? NaN : e.w, - n = "" === e.h ? NaN : e.h, - [i, s] = [0, 0]; - switch (e.anchorType || "") { - case "bottomCenter": - [i, s] = [r / 2, n]; - break; - case "bottomLeft": - [i, s] = [0, n]; - break; - case "bottomRight": - [i, s] = [r, n]; - break; - case "middleCenter": - [i, s] = [r / 2, n / 2]; - break; - case "middleLeft": - [i, s] = [0, n / 2]; - break; - case "middleRight": - [i, s] = [r, n / 2]; - break; - case "topCenter": - [i, s] = [r / 2, 0]; - break; - case "topRight": - [i, s] = [r, 0]; - } - switch (e.rotate || 0) { - case 0: - [t, a] = [-i, -s]; - break; - case 90: - [t, a] = [-s, i]; - [r, n] = [n, -r]; - break; - case 180: - [t, a] = [i, s]; - [r, n] = [-r, -n]; - break; - case 270: - [t, a] = [s, -i]; - [r, n] = [-n, r]; - } - return [ - e.x + t + Math.min(0, r), - e.y + a + Math.min(0, n), - Math.abs(r), - Math.abs(n), - ]; - })(e); - switch (a.layout) { - case "lr-tb": - case "rl-tb": - return 0 === n - ? e[r.$getTemplateRoot]()[r.$extra].noLayoutFailure - ? "" !== e.w - ? Math.round(s - t.width) <= 2 - : t.width > 2 - : !("" !== e.h && Math.round(o - t.height) > 2) && - ("" !== e.w - ? Math.round(s - t.width) <= 2 || - (0 === a[r.$extra].numberInLine && t.height > 2) - : t.width > 2) - : !!e[r.$getTemplateRoot]()[r.$extra].noLayoutFailure || - (!("" !== e.h && Math.round(o - t.height) > 2) && - ("" === e.w || - Math.round(s - t.width) <= 2 || - !a[r.$isThereMoreWidth]()) && - t.height > 2); - case "table": - case "tb": - return ( - !!e[r.$getTemplateRoot]()[r.$extra].noLayoutFailure || - ("" === e.h || e[r.$isSplittable]() - ? ("" === e.w || - Math.round(s - t.width) <= 2 || - !a[r.$isThereMoreWidth]()) && - t.height > 2 - : Math.round(o - t.height) <= 2) - ); - case "position": - if (e[r.$getTemplateRoot]()[r.$extra].noLayoutFailure) - return !0; - if ("" === e.h || Math.round(o + i - t.height) <= 2) return !0; - return ( - o + i > e[r.$getTemplateRoot]()[r.$extra].currentContentArea.h - ); - case "rl-row": - case "row": - return ( - !!e[r.$getTemplateRoot]()[r.$extra].noLayoutFailure || - "" === e.h || - Math.round(o - t.height) <= 2 - ); - default: - return !0; - } - }; - t.flushHTML = function flushHTML(e) { - if (!e[r.$extra]) return null; - const t = { - name: "div", - attributes: e[r.$extra].attributes, - children: e[r.$extra].children, - }; - if (e[r.$extra].failingNode) { - const a = e[r.$extra].failingNode[r.$flushHTML](); - a && - (e.layout.endsWith("-tb") - ? t.children.push(createLine(e, [a])) - : t.children.push(a)); - } - if (0 === t.children.length) return null; - return t; - }; - t.getAvailableSpace = function getAvailableSpace(e) { - const t = e[r.$extra].availableSpace, - a = e.margin ? e.margin.topInset + e.margin.bottomInset : 0, - n = e.margin ? e.margin.leftInset + e.margin.rightInset : 0; - switch (e.layout) { - case "lr-tb": - case "rl-tb": - return 0 === e[r.$extra].attempt - ? { - width: t.width - n - e[r.$extra].currentWidth, - height: t.height - a - e[r.$extra].prevHeight, - } - : { - width: t.width - n, - height: t.height - a - e[r.$extra].height, - }; - case "rl-row": - case "row": - return { - width: e[r.$extra].columnWidths - .slice(e[r.$extra].currentColumn) - .reduce((e, t) => e + t), - height: t.height - n, - }; - case "table": - case "tb": - return { - width: t.width - n, - height: t.height - a - e[r.$extra].height, - }; - default: - return t; - } - }; - var r = a(78), - n = a(83); - function createLine(e, t) { - return { - name: "div", - attributes: { class: ["lr-tb" === e.layout ? "xfaLr" : "xfaRl"] }, - children: t, - }; - } - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.computeBbox = function computeBbox(e, t, a) { - let n; - if ("" !== e.w && "" !== e.h) n = [e.x, e.y, e.w, e.h]; - else { - if (!a) return null; - let i = e.w; - if ("" === i) { - if (0 === e.maxW) { - const t = e[r.$getSubformParent](); - i = "position" === t.layout && "" !== t.w ? 0 : e.minW; - } else i = Math.min(e.maxW, a.width); - t.attributes.style.width = measureToString(i); - } - let s = e.h; - if ("" === s) { - if (0 === e.maxH) { - const t = e[r.$getSubformParent](); - s = "position" === t.layout && "" !== t.h ? 0 : e.minH; - } else s = Math.min(e.maxH, a.height); - t.attributes.style.height = measureToString(s); - } - n = [e.x, e.y, i, s]; - } - return n; - }; - t.createWrapper = function createWrapper(e, t) { - const { attributes: a } = t, - { style: n } = a, - i = { - name: "div", - attributes: { - class: ["xfaWrapper"], - style: Object.create(null), - }, - children: [], - }; - a.class.push("xfaWrapped"); - if (e.border) { - const { widths: a, insets: s } = e.border[r.$extra]; - let o, - c, - l = s[0], - h = s[3]; - const u = s[0] + s[2], - d = s[1] + s[3]; - switch (e.border.hand) { - case "even": - l -= a[0] / 2; - h -= a[3] / 2; - o = `calc(100% + ${(a[1] + a[3]) / 2 - d}px)`; - c = `calc(100% + ${(a[0] + a[2]) / 2 - u}px)`; - break; - case "left": - l -= a[0]; - h -= a[3]; - o = `calc(100% + ${a[1] + a[3] - d}px)`; - c = `calc(100% + ${a[0] + a[2] - u}px)`; - break; - case "right": - o = d ? `calc(100% - ${d}px)` : "100%"; - c = u ? `calc(100% - ${u}px)` : "100%"; - } - const f = ["xfaBorder"]; - isPrintOnly(e.border) && f.push("xfaPrintOnly"); - const g = { - name: "div", - attributes: { - class: f, - style: { top: `${l}px`, left: `${h}px`, width: o, height: c }, - }, - children: [], - }; - for (const e of [ - "border", - "borderWidth", - "borderColor", - "borderRadius", - "borderStyle", - ]) - if (void 0 !== n[e]) { - g.attributes.style[e] = n[e]; - delete n[e]; - } - i.children.push(g, t); - } else i.children.push(t); - for (const e of [ - "background", - "backgroundClip", - "top", - "left", - "width", - "height", - "minWidth", - "minHeight", - "maxWidth", - "maxHeight", - "transform", - "transformOrigin", - "visibility", - ]) - if (void 0 !== n[e]) { - i.attributes.style[e] = n[e]; - delete n[e]; - } - i.attributes.style.position = - "absolute" === n.position ? "absolute" : "relative"; - delete n.position; - if (n.alignSelf) { - i.attributes.style.alignSelf = n.alignSelf; - delete n.alignSelf; - } - return i; - }; - t.fixDimensions = function fixDimensions(e) { - const t = e[r.$getSubformParent](); - if (t.layout?.includes("row")) { - const a = t[r.$extra], - n = e.colSpan; - let i; - i = - -1 === n - ? a.columnWidths - .slice(a.currentColumn) - .reduce((e, t) => e + t, 0) - : a.columnWidths - .slice(a.currentColumn, a.currentColumn + n) - .reduce((e, t) => e + t, 0); - isNaN(i) || (e.w = i); - } - t.layout && "position" !== t.layout && (e.x = e.y = 0); - "table" === e.layout && - "" === e.w && - Array.isArray(e.columnWidths) && - (e.w = e.columnWidths.reduce((e, t) => e + t, 0)); - }; - t.fixTextIndent = function fixTextIndent(e) { - const t = (0, i.getMeasurement)(e.textIndent, "0px"); - if (t >= 0) return; - const a = - "padding" + - ("left" == ("right" === e.textAlign ? "right" : "left") - ? "Left" - : "Right"), - r = (0, i.getMeasurement)(e[a], "0px"); - e[a] = r - t + "px"; - }; - t.fixURL = function fixURL(e) { - const t = (0, n.createValidAbsoluteUrl)(e, null, { - addDefaultProtocol: !0, - tryConvertEncoding: !0, - }); - return t ? t.href : null; - }; - t.isPrintOnly = isPrintOnly; - t.layoutClass = function layoutClass(e) { - switch (e.layout) { - case "position": - default: - return "xfaPosition"; - case "lr-tb": - return "xfaLrTb"; - case "rl-row": - return "xfaRlRow"; - case "rl-tb": - return "xfaRlTb"; - case "row": - return "xfaRow"; - case "table": - return "xfaTable"; - case "tb": - return "xfaTb"; - } - }; - t.layoutNode = function layoutNode(e, t) { - let a = null, - n = null, - i = !1; - if ((!e.w || !e.h) && e.value) { - let s = 0, - o = 0; - if (e.margin) { - s = e.margin.leftInset + e.margin.rightInset; - o = e.margin.topInset + e.margin.bottomInset; - } - let c = null, - l = null; - if (e.para) { - l = Object.create(null); - c = "" === e.para.lineHeight ? null : e.para.lineHeight; - l.top = "" === e.para.spaceAbove ? 0 : e.para.spaceAbove; - l.bottom = "" === e.para.spaceBelow ? 0 : e.para.spaceBelow; - l.left = "" === e.para.marginLeft ? 0 : e.para.marginLeft; - l.right = "" === e.para.marginRight ? 0 : e.para.marginRight; - } - let h = e.font; - if (!h) { - const t = e[r.$getTemplateRoot](); - let a = e[r.$getParent](); - for (; a && a !== t; ) { - if (a.font) { - h = a.font; - break; - } - a = a[r.$getParent](); - } - } - const u = (e.w || t.width) - s, - d = e[r.$globalData].fontFinder; - if ( - e.value.exData && - e.value.exData[r.$content] && - "text/html" === e.value.exData.contentType - ) { - const t = layoutText(e.value.exData[r.$content], h, l, c, d, u); - n = t.width; - a = t.height; - i = t.isBroken; - } else { - const t = e.value[r.$text](); - if (t) { - const e = layoutText(t, h, l, c, d, u); - n = e.width; - a = e.height; - i = e.isBroken; - } - } - null === n || e.w || (n += s); - null === a || e.h || (a += o); - } - return { w: n, h: a, isBroken: i }; - }; - t.measureToString = measureToString; - t.setAccess = function setAccess(e, t) { - switch (e.access) { - case "nonInteractive": - t.push("xfaNonInteractive"); - break; - case "readOnly": - t.push("xfaReadOnly"); - break; - case "protected": - t.push("xfaDisabled"); - } - }; - t.setFontFamily = function setFontFamily(e, t, a, r) { - if (!a) { - delete r.fontFamily; - return; - } - const n = (0, i.stripQuotes)(e.typeface); - r.fontFamily = `"${n}"`; - const o = a.find(n); - if (o) { - const { fontFamily: a } = o.regular.cssFontInfo; - a !== n && (r.fontFamily = `"${a}"`); - const i = getCurrentPara(t); - if (i && "" !== i.lineHeight) return; - if (r.lineHeight) return; - const c = (0, s.selectFont)(e, o); - c && (r.lineHeight = Math.max(1.2, c.lineHeight)); - } - }; - t.setMinMaxDimensions = function setMinMaxDimensions(e, t) { - if ("position" === e[r.$getSubformParent]().layout) { - e.minW > 0 && (t.minWidth = measureToString(e.minW)); - e.maxW > 0 && (t.maxWidth = measureToString(e.maxW)); - e.minH > 0 && (t.minHeight = measureToString(e.minH)); - e.maxH > 0 && (t.maxHeight = measureToString(e.maxH)); - } - }; - t.setPara = function setPara(e, t, a) { - if (a.attributes.class?.includes("xfaRich")) { - if (t) { - "" === e.h && (t.height = "auto"); - "" === e.w && (t.width = "auto"); - } - const n = getCurrentPara(e); - if (n) { - const e = a.attributes.style; - e.display = "flex"; - e.flexDirection = "column"; - switch (n.vAlign) { - case "top": - e.justifyContent = "start"; - break; - case "bottom": - e.justifyContent = "end"; - break; - case "middle": - e.justifyContent = "center"; - } - const t = n[r.$toStyle](); - for (const [a, r] of Object.entries(t)) a in e || (e[a] = r); - } - } - }; - t.toStyle = function toStyle(e, ...t) { - const a = Object.create(null); - for (const i of t) { - const t = e[i]; - if (null !== t) - if (l.hasOwnProperty(i)) l[i](e, a); - else if (t instanceof c.XFAObject) { - const e = t[r.$toStyle](); - e - ? Object.assign(a, e) - : (0, n.warn)( - `(DEBUG) - XFA - style for ${i} not implemented yet`, - ); - } - } - return a; - }; - var r = a(78), - n = a(2), - i = a(84), - s = a(85), - o = a(86), - c = a(87); - function measureToString(e) { - return "string" == typeof e - ? "0px" - : Number.isInteger(e) - ? `${e}px` - : `${e.toFixed(2)}px`; - } - const l = { - anchorType(e, t) { - const a = e[r.$getSubformParent](); - if (a && (!a.layout || "position" === a.layout)) { - "transform" in t || (t.transform = ""); - switch (e.anchorType) { - case "bottomCenter": - t.transform += "translate(-50%, -100%)"; - break; - case "bottomLeft": - t.transform += "translate(0,-100%)"; - break; - case "bottomRight": - t.transform += "translate(-100%,-100%)"; - break; - case "middleCenter": - t.transform += "translate(-50%,-50%)"; - break; - case "middleLeft": - t.transform += "translate(0,-50%)"; - break; - case "middleRight": - t.transform += "translate(-100%,-50%)"; - break; - case "topCenter": - t.transform += "translate(-50%,0)"; - break; - case "topRight": - t.transform += "translate(-100%,0)"; - } - } - }, - dimensions(e, t) { - const a = e[r.$getSubformParent](); - let n = e.w; - const i = e.h; - if (a.layout?.includes("row")) { - const t = a[r.$extra], - i = e.colSpan; - let s; - if (-1 === i) { - s = t.columnWidths - .slice(t.currentColumn) - .reduce((e, t) => e + t, 0); - t.currentColumn = 0; - } else { - s = t.columnWidths - .slice(t.currentColumn, t.currentColumn + i) - .reduce((e, t) => e + t, 0); - t.currentColumn = - (t.currentColumn + e.colSpan) % t.columnWidths.length; - } - isNaN(s) || (n = e.w = s); - } - t.width = "" !== n ? measureToString(n) : "auto"; - t.height = "" !== i ? measureToString(i) : "auto"; - }, - position(e, t) { - const a = e[r.$getSubformParent](); - if (!a?.layout || "position" === a.layout) { - t.position = "absolute"; - t.left = measureToString(e.x); - t.top = measureToString(e.y); - } - }, - rotate(e, t) { - if (e.rotate) { - "transform" in t || (t.transform = ""); - t.transform += `rotate(-${e.rotate}deg)`; - t.transformOrigin = "top left"; - } - }, - presence(e, t) { - switch (e.presence) { - case "invisible": - t.visibility = "hidden"; - break; - case "hidden": - case "inactive": - t.display = "none"; - } - }, - hAlign(e, t) { - if ("para" === e[r.$nodeName]) - switch (e.hAlign) { - case "justifyAll": - t.textAlign = "justify-all"; - break; - case "radix": - t.textAlign = "left"; - break; - default: - t.textAlign = e.hAlign; - } - else - switch (e.hAlign) { - case "left": - t.alignSelf = "start"; - break; - case "center": - t.alignSelf = "center"; - break; - case "right": - t.alignSelf = "end"; - } - }, - margin(e, t) { - e.margin && (t.margin = e.margin[r.$toStyle]().margin); - }, - }; - function layoutText(e, t, a, n, i, s) { - const c = new o.TextMeasure(t, a, n, i); - "string" == typeof e ? c.addString(e) : e[r.$pushGlyphs](c); - return c.compute(s); - } - function isPrintOnly(e) { - return ( - e.relevant.length > 0 && - !e.relevant[0].excluded && - "print" === e.relevant[0].viewname - ); - } - function getCurrentPara(e) { - const t = e[r.$getTemplateRoot]()[r.$extra].paraStack; - return t.length ? t.at(-1) : null; - } - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.HTMLResult = void 0; - t.getBBox = function getBBox(e) { - const t = -1; - if (!e) return { x: t, y: t, width: t, height: t }; - const a = e - .trim() - .split(/\s*,\s*/) - .map((e) => getMeasurement(e, "-1")); - if (a.length < 4 || a[2] < 0 || a[3] < 0) - return { x: t, y: t, width: t, height: t }; - const [r, n, i, s] = a; - return { x: r, y: n, width: i, height: s }; - }; - t.getColor = function getColor(e, t = [0, 0, 0]) { - let [a, r, n] = t; - if (!e) return { r: a, g: r, b: n }; - const i = e - .trim() - .split(/\s*,\s*/) - .map((e) => Math.min(Math.max(0, parseInt(e.trim(), 10)), 255)) - .map((e) => (isNaN(e) ? 0 : e)); - if (i.length < 3) return { r: a, g: r, b: n }; - [a, r, n] = i; - return { r: a, g: r, b: n }; - }; - t.getFloat = function getFloat({ - data: e, - defaultValue: t, - validate: a, - }) { - if (!e) return t; - e = e.trim(); - const r = parseFloat(e); - if (!isNaN(r) && a(r)) return r; - return t; - }; - t.getInteger = function getInteger({ - data: e, - defaultValue: t, - validate: a, - }) { - if (!e) return t; - e = e.trim(); - const r = parseInt(e, 10); - if (!isNaN(r) && a(r)) return r; - return t; - }; - t.getKeyword = getKeyword; - t.getMeasurement = getMeasurement; - t.getRatio = function getRatio(e) { - if (!e) return { num: 1, den: 1 }; - const t = e - .trim() - .split(/\s*:\s*/) - .map((e) => parseFloat(e)) - .filter((e) => !isNaN(e)); - 1 === t.length && t.push(1); - if (0 === t.length) return { num: 1, den: 1 }; - const [a, r] = t; - return { num: a, den: r }; - }; - t.getRelevant = function getRelevant(e) { - if (!e) return []; - return e - .trim() - .split(/\s+/) - .map((e) => ({ - excluded: "-" === e[0], - viewname: e.substring(1), - })); - }; - t.getStringOption = function getStringOption(e, t) { - return getKeyword({ - data: e, - defaultValue: t[0], - validate: (e) => t.includes(e), - }); - }; - t.stripQuotes = function stripQuotes(e) { - if (e.startsWith("'") || e.startsWith('"')) return e.slice(1, -1); - return e; - }; - var r = a(2); - const n = { - pt: (e) => e, - cm: (e) => (e / 2.54) * 72, - mm: (e) => (e / 25.4) * 72, - in: (e) => 72 * e, - px: (e) => e, - }, - i = /([+-]?\d+\.?\d*)(.*)/; - function getKeyword({ data: e, defaultValue: t, validate: a }) { - return e && a((e = e.trim())) ? e : t; - } - function getMeasurement(e, t = "0") { - t ||= "0"; - if (!e) return getMeasurement(t); - const a = e.trim().match(i); - if (!a) return getMeasurement(t); - const [, r, s] = a, - o = parseFloat(r); - if (isNaN(o)) return getMeasurement(t); - if (0 === o) return 0; - const c = n[s]; - return c ? c(o) : o; - } - class HTMLResult { - static get FAILURE() { - return (0, r.shadow)( - this, - "FAILURE", - new HTMLResult(!1, null, null, null), - ); - } - static get EMPTY() { - return (0, r.shadow)( - this, - "EMPTY", - new HTMLResult(!0, null, null, null), - ); - } - constructor(e, t, a, r) { - this.success = e; - this.html = t; - this.bbox = a; - this.breakNode = r; - } - isBreak() { - return !!this.breakNode; - } - static breakNode(e) { - return new HTMLResult(!1, null, null, e); - } - static success(e, t = null) { - return new HTMLResult(!0, e, t, null); - } - } - t.HTMLResult = HTMLResult; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.FontFinder = void 0; - t.getMetrics = function getMetrics(e, t = !1) { - let a = null; - if (e) { - const t = (0, n.stripQuotes)(e.typeface), - i = e[r.$globalData].fontFinder.find(t); - a = selectFont(e, i); - } - if (!a) return { lineHeight: 12, lineGap: 2, lineNoGap: 10 }; - const i = e.size || 10, - s = a.lineHeight ? Math.max(t ? 0 : 1.2, a.lineHeight) : 1.2, - o = void 0 === a.lineGap ? 0.2 : a.lineGap; - return { - lineHeight: s * i, - lineGap: o * i, - lineNoGap: Math.max(1, s - o) * i, - }; - }; - t.selectFont = selectFont; - var r = a(78), - n = a(84), - i = a(2); - t.FontFinder = class FontFinder { - constructor(e) { - this.fonts = new Map(); - this.cache = new Map(); - this.warned = new Set(); - this.defaultFont = null; - this.add(e); - } - add(e, t = null) { - for (const t of e) this.addPdfFont(t); - for (const e of this.fonts.values()) - e.regular || (e.regular = e.italic || e.bold || e.bolditalic); - if (!t || 0 === t.size) return; - const a = this.fonts.get("PdfJS-Fallback-PdfJS-XFA"); - for (const e of t) this.fonts.set(e, a); - } - addPdfFont(e) { - const t = e.cssFontInfo, - a = t.fontFamily; - let r = this.fonts.get(a); - if (!r) { - r = Object.create(null); - this.fonts.set(a, r); - this.defaultFont || (this.defaultFont = r); - } - let n = ""; - const i = parseFloat(t.fontWeight); - 0 !== parseFloat(t.italicAngle) - ? (n = i >= 700 ? "bolditalic" : "italic") - : i >= 700 && (n = "bold"); - if (!n) { - (e.name.includes("Bold") || e.psName?.includes("Bold")) && - (n = "bold"); - (e.name.includes("Italic") || - e.name.endsWith("It") || - e.psName?.includes("Italic") || - e.psName?.endsWith("It")) && - (n += "italic"); - } - n || (n = "regular"); - r[n] = e; - } - getDefault() { - return this.defaultFont; - } - find(e, t = !0) { - let a = this.fonts.get(e) || this.cache.get(e); - if (a) return a; - const r = /,|-|_| |bolditalic|bold|italic|regular|it/gi; - let n = e.replaceAll(r, ""); - a = this.fonts.get(n); - if (a) { - this.cache.set(e, a); - return a; - } - n = n.toLowerCase(); - const s = []; - for (const [e, t] of this.fonts.entries()) - e.replaceAll(r, "").toLowerCase().startsWith(n) && s.push(t); - if (0 === s.length) - for (const [, e] of this.fonts.entries()) - e.regular.name - ?.replaceAll(r, "") - .toLowerCase() - .startsWith(n) && s.push(e); - if (0 === s.length) { - n = n.replaceAll(/psmt|mt/gi, ""); - for (const [e, t] of this.fonts.entries()) - e.replaceAll(r, "").toLowerCase().startsWith(n) && s.push(t); - } - if (0 === s.length) - for (const e of this.fonts.values()) - e.regular.name - ?.replaceAll(r, "") - .toLowerCase() - .startsWith(n) && s.push(e); - if (s.length >= 1) { - 1 !== s.length && - t && - (0, i.warn)( - `XFA - Too many choices to guess the correct font: ${e}`, - ); - this.cache.set(e, s[0]); - return s[0]; - } - if (t && !this.warned.has(e)) { - this.warned.add(e); - (0, i.warn)(`XFA - Cannot find the font: ${e}`); - } - return null; - } - }; - function selectFont(e, t) { - return "italic" === e.posture - ? "bold" === e.weight - ? t.bolditalic - : t.italic - : "bold" === e.weight - ? t.bold - : t.regular; - } - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.TextMeasure = void 0; - var r = a(85); - class FontInfo { - constructor(e, t, a, n) { - this.lineHeight = a; - this.paraMargin = t || { top: 0, bottom: 0, left: 0, right: 0 }; - if (!e) { - [this.pdfFont, this.xfaFont] = this.defaultFont(n); - return; - } - this.xfaFont = { - typeface: e.typeface, - posture: e.posture, - weight: e.weight, - size: e.size, - letterSpacing: e.letterSpacing, - }; - const i = n.find(e.typeface); - if (i) { - this.pdfFont = (0, r.selectFont)(e, i); - this.pdfFont || - ([this.pdfFont, this.xfaFont] = this.defaultFont(n)); - } else [this.pdfFont, this.xfaFont] = this.defaultFont(n); - } - defaultFont(e) { - const t = - e.find("Helvetica", !1) || - e.find("Myriad Pro", !1) || - e.find("Arial", !1) || - e.getDefault(); - if (t?.regular) { - const e = t.regular; - return [ - e, - { - typeface: e.cssFontInfo.fontFamily, - posture: "normal", - weight: "normal", - size: 10, - letterSpacing: 0, - }, - ]; - } - return [ - null, - { - typeface: "Courier", - posture: "normal", - weight: "normal", - size: 10, - letterSpacing: 0, - }, - ]; - } - } - class FontSelector { - constructor(e, t, a, r) { - this.fontFinder = r; - this.stack = [new FontInfo(e, t, a, r)]; - } - pushData(e, t, a) { - const r = this.stack.at(-1); - for (const t of [ - "typeface", - "posture", - "weight", - "size", - "letterSpacing", - ]) - e[t] || (e[t] = r.xfaFont[t]); - for (const e of ["top", "bottom", "left", "right"]) - isNaN(t[e]) && (t[e] = r.paraMargin[e]); - const n = new FontInfo(e, t, a || r.lineHeight, this.fontFinder); - n.pdfFont || (n.pdfFont = r.pdfFont); - this.stack.push(n); - } - popFont() { - this.stack.pop(); - } - topFont() { - return this.stack.at(-1); - } - } - t.TextMeasure = class TextMeasure { - constructor(e, t, a, r) { - this.glyphs = []; - this.fontSelector = new FontSelector(e, t, a, r); - this.extraHeight = 0; - } - pushData(e, t, a) { - this.fontSelector.pushData(e, t, a); - } - popFont(e) { - return this.fontSelector.popFont(); - } - addPara() { - const e = this.fontSelector.topFont(); - this.extraHeight += e.paraMargin.top + e.paraMargin.bottom; - } - addString(e) { - if (!e) return; - const t = this.fontSelector.topFont(), - a = t.xfaFont.size; - if (t.pdfFont) { - const r = t.xfaFont.letterSpacing, - n = t.pdfFont, - i = n.lineHeight || 1.2, - s = t.lineHeight || Math.max(1.2, i) * a, - o = i - (void 0 === n.lineGap ? 0.2 : n.lineGap), - c = Math.max(1, o) * a, - l = a / 1e3, - h = n.defaultWidth || n.charsToGlyphs(" ")[0].width; - for (const t of e.split(/[\u2029\n]/)) { - const e = n.encodeString(t).join(""), - a = n.charsToGlyphs(e); - for (const e of a) { - const t = e.width || h; - this.glyphs.push([t * l + r, s, c, e.unicode, !1]); - } - this.glyphs.push([0, 0, 0, "\n", !0]); - } - this.glyphs.pop(); - } else { - for (const t of e.split(/[\u2029\n]/)) { - for (const e of t.split("")) - this.glyphs.push([a, 1.2 * a, a, e, !1]); - this.glyphs.push([0, 0, 0, "\n", !0]); - } - this.glyphs.pop(); - } - } - compute(e) { - let t = -1, - a = 0, - r = 0, - n = 0, - i = 0, - s = 0, - o = !1, - c = !0; - for (let l = 0, h = this.glyphs.length; l < h; l++) { - const [h, u, d, f, g] = this.glyphs[l], - p = " " === f, - m = c ? d : u; - if (g) { - r = Math.max(r, i); - i = 0; - n += s; - s = m; - t = -1; - a = 0; - c = !1; - } else if (p) - if (i + h > e) { - r = Math.max(r, i); - i = 0; - n += s; - s = m; - t = -1; - a = 0; - o = !0; - c = !1; - } else { - s = Math.max(m, s); - a = i; - i += h; - t = l; - } - else if (i + h > e) { - n += s; - s = m; - if (-1 !== t) { - l = t; - r = Math.max(r, a); - i = 0; - t = -1; - a = 0; - } else { - r = Math.max(r, i); - i = h; - } - o = !0; - c = !1; - } else { - i += h; - s = Math.max(m, s); - } - } - r = Math.max(r, i); - n += s + this.extraHeight; - return { width: 1.02 * r, height: n, isBroken: o }; - } - }; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.XmlObject = - t.XFAObjectArray = - t.XFAObject = - t.XFAAttribute = - t.StringObject = - t.OptionObject = - t.Option10 = - t.Option01 = - t.IntegerObject = - t.ContentObject = - void 0; - var r = a(78), - n = a(84), - i = a(2), - s = a(3), - o = a(81), - c = a(88); - const l = Symbol(), - h = Symbol(), - u = Symbol(), - d = Symbol("_children"), - f = Symbol(), - g = Symbol(), - p = Symbol(), - m = Symbol(), - b = Symbol(), - y = Symbol(), - w = Symbol(), - S = Symbol(), - x = Symbol(), - C = Symbol("parent"), - k = Symbol(), - v = Symbol(), - F = Symbol(); - let O = 0; - const T = o.NamespaceIds.datasets.id; - class XFAObject { - constructor(e, t, a = !1) { - this[r.$namespaceId] = e; - this[r.$nodeName] = t; - this[w] = a; - this[C] = null; - this[d] = []; - this[r.$uid] = `${t}${O++}`; - this[r.$globalData] = null; - } - get isXFAObject() { - return !0; - } - get isXFAObjectArray() { - return !1; - } - createNodes(e) { - let t = this, - a = null; - for (const { name: n, index: i } of e) { - for (let e = 0, s = isFinite(i) ? i : 0; e <= s; e++) { - const e = t[r.$namespaceId] === T ? -1 : t[r.$namespaceId]; - a = new XmlObject(e, n); - t[r.$appendChild](a); - } - t = a; - } - return a; - } - [r.$onChild](e) { - if (!this[w] || !this[r.$onChildCheck](e)) return !1; - const t = e[r.$nodeName], - a = this[t]; - if (!(a instanceof XFAObjectArray)) { - null !== a && this[r.$removeChild](a); - this[t] = e; - this[r.$appendChild](e); - return !0; - } - if (a.push(e)) { - this[r.$appendChild](e); - return !0; - } - let n = ""; - this.id - ? (n = ` (id: ${this.id})`) - : this.name && (n = ` (name: ${this.name} ${this.h.value})`); - (0, i.warn)( - `XFA - node "${this[r.$nodeName]}"${n} has already enough "${t}"!`, - ); - return !1; - } - [r.$onChildCheck](e) { - return ( - this.hasOwnProperty(e[r.$nodeName]) && - e[r.$namespaceId] === this[r.$namespaceId] - ); - } - [r.$isNsAgnostic]() { - return !1; - } - [r.$acceptWhitespace]() { - return !1; - } - [r.$isCDATAXml]() { - return !1; - } - [r.$isBindable]() { - return !1; - } - [r.$popPara]() { - this.para && this[r.$getTemplateRoot]()[r.$extra].paraStack.pop(); - } - [r.$pushPara]() { - this[r.$getTemplateRoot]()[r.$extra].paraStack.push(this.para); - } - [r.$setId](e) { - this.id && - this[r.$namespaceId] === o.NamespaceIds.template.id && - e.set(this.id, this); - } - [r.$getTemplateRoot]() { - return this[r.$globalData].template; - } - [r.$isSplittable]() { - return !1; - } - [r.$isThereMoreWidth]() { - return !1; - } - [r.$appendChild](e) { - e[C] = this; - this[d].push(e); - !e[r.$globalData] && - this[r.$globalData] && - (e[r.$globalData] = this[r.$globalData]); - } - [r.$removeChild](e) { - const t = this[d].indexOf(e); - this[d].splice(t, 1); - } - [r.$hasSettableValue]() { - return this.hasOwnProperty("value"); - } - [r.$setValue](e) {} - [r.$onText](e) {} - [r.$finalize]() {} - [r.$clean](e) { - delete this[w]; - if (this[r.$cleanup]) { - e.clean(this[r.$cleanup]); - delete this[r.$cleanup]; - } - } - [r.$indexOf](e) { - return this[d].indexOf(e); - } - [r.$insertAt](e, t) { - t[C] = this; - this[d].splice(e, 0, t); - !t[r.$globalData] && - this[r.$globalData] && - (t[r.$globalData] = this[r.$globalData]); - } - [r.$isTransparent]() { - return !this.name; - } - [r.$lastAttribute]() { - return ""; - } - [r.$text]() { - return 0 === this[d].length - ? this[r.$content] - : this[d].map((e) => e[r.$text]()).join(""); - } - get [u]() { - const e = Object.getPrototypeOf(this); - if (!e._attributes) { - const t = (e._attributes = new Set()); - for (const e of Object.getOwnPropertyNames(this)) { - if ( - null === this[e] || - this[e] instanceof XFAObject || - this[e] instanceof XFAObjectArray - ) - break; - t.add(e); - } - } - return (0, i.shadow)(this, u, e._attributes); - } - [r.$isDescendent](e) { - let t = this; - for (; t; ) { - if (t === e) return !0; - t = t[r.$getParent](); - } - return !1; - } - [r.$getParent]() { - return this[C]; - } - [r.$getSubformParent]() { - return this[r.$getParent](); - } - [r.$getChildren](e = null) { - return e ? this[e] : this[d]; - } - [r.$dump]() { - const e = Object.create(null); - this[r.$content] && (e.$content = this[r.$content]); - for (const t of Object.getOwnPropertyNames(this)) { - const a = this[t]; - null !== a && - (a instanceof XFAObject - ? (e[t] = a[r.$dump]()) - : a instanceof XFAObjectArray - ? a.isEmpty() || (e[t] = a.dump()) - : (e[t] = a)); - } - return e; - } - [r.$toStyle]() { - return null; - } - [r.$toHTML]() { - return n.HTMLResult.EMPTY; - } - *[r.$getContainedChildren]() { - for (const e of this[r.$getChildren]()) yield e; - } - *[m](e, t) { - for (const a of this[r.$getContainedChildren]()) - if (!e || t === e.has(a[r.$nodeName])) { - const e = this[r.$getAvailableSpace](), - t = a[r.$toHTML](e); - t.success || (this[r.$extra].failingNode = a); - yield t; - } - } - [r.$flushHTML]() { - return null; - } - [r.$addHTML](e, t) { - this[r.$extra].children.push(e); - } - [r.$getAvailableSpace]() {} - [r.$childrenToHTML]({ filter: e = null, include: t = !0 }) { - if (this[r.$extra].generator) { - const e = this[r.$getAvailableSpace](), - t = this[r.$extra].failingNode[r.$toHTML](e); - if (!t.success) return t; - t.html && this[r.$addHTML](t.html, t.bbox); - delete this[r.$extra].failingNode; - } else this[r.$extra].generator = this[m](e, t); - for (;;) { - const e = this[r.$extra].generator.next(); - if (e.done) break; - const t = e.value; - if (!t.success) return t; - t.html && this[r.$addHTML](t.html, t.bbox); - } - this[r.$extra].generator = null; - return n.HTMLResult.EMPTY; - } - [r.$setSetAttributes](e) { - this[v] = new Set(Object.keys(e)); - } - [y](e) { - const t = this[u], - a = this[v]; - return [...e].filter((e) => t.has(e) && !a.has(e)); - } - [r.$resolvePrototypes](e, t = new Set()) { - for (const a of this[d]) a[k](e, t); - } - [k](e, t) { - const a = this[b](e, t); - a ? this[l](a, e, t) : this[r.$resolvePrototypes](e, t); - } - [b](e, t) { - const { use: a, usehref: n } = this; - if (!a && !n) return null; - let s = null, - o = null, - h = null, - u = a; - if (n) { - u = n; - n.startsWith("#som(") && n.endsWith(")") - ? (o = n.slice(5, -1)) - : n.startsWith(".#som(") && n.endsWith(")") - ? (o = n.slice(6, -1)) - : n.startsWith("#") - ? (h = n.slice(1)) - : n.startsWith(".#") && (h = n.slice(2)); - } else a.startsWith("#") ? (h = a.slice(1)) : (o = a); - this.use = this.usehref = ""; - if (h) s = e.get(h); - else { - s = (0, c.searchNode)(e.get(r.$root), this, o, !0, !1); - s && (s = s[0]); - } - if (!s) { - (0, i.warn)(`XFA - Invalid prototype reference: ${u}.`); - return null; - } - if (s[r.$nodeName] !== this[r.$nodeName]) { - (0, i.warn)( - `XFA - Incompatible prototype: ${s[r.$nodeName]} !== ${this[r.$nodeName]}.`, - ); - return null; - } - if (t.has(s)) { - (0, i.warn)("XFA - Cycle detected in prototypes use."); - return null; - } - t.add(s); - const d = s[b](e, t); - d && s[l](d, e, t); - s[r.$resolvePrototypes](e, t); - t.delete(s); - return s; - } - [l](e, t, a) { - if (a.has(e)) { - (0, i.warn)("XFA - Cycle detected in prototypes use."); - return; - } - !this[r.$content] && - e[r.$content] && - (this[r.$content] = e[r.$content]); - new Set(a).add(e); - for (const t of this[y](e[v])) { - this[t] = e[t]; - this[v] && this[v].add(t); - } - for (const n of Object.getOwnPropertyNames(this)) { - if (this[u].has(n)) continue; - const i = this[n], - s = e[n]; - if (i instanceof XFAObjectArray) { - for (const e of i[d]) e[k](t, a); - for (let n = i[d].length, o = s[d].length; n < o; n++) { - const s = e[d][n][r.$clone](); - if (!i.push(s)) break; - s[C] = this; - this[d].push(s); - s[k](t, a); - } - } else if (null === i) { - if (null !== s) { - const e = s[r.$clone](); - e[C] = this; - this[n] = e; - this[d].push(e); - e[k](t, a); - } - } else { - i[r.$resolvePrototypes](t, a); - s && i[l](s, t, a); - } - } - } - static [f](e) { - return Array.isArray(e) - ? e.map((e) => XFAObject[f](e)) - : "object" == typeof e && null !== e - ? Object.assign({}, e) - : e; - } - [r.$clone]() { - const e = Object.create(Object.getPrototypeOf(this)); - for (const t of Object.getOwnPropertySymbols(this)) - try { - e[t] = this[t]; - } catch { - (0, i.shadow)(e, t, this[t]); - } - e[r.$uid] = `${e[r.$nodeName]}${O++}`; - e[d] = []; - for (const t of Object.getOwnPropertyNames(this)) { - if (this[u].has(t)) { - e[t] = XFAObject[f](this[t]); - continue; - } - const a = this[t]; - e[t] = - a instanceof XFAObjectArray ? new XFAObjectArray(a[S]) : null; - } - for (const t of this[d]) { - const a = t[r.$nodeName], - n = t[r.$clone](); - e[d].push(n); - n[C] = e; - null === e[a] ? (e[a] = n) : e[a][d].push(n); - } - return e; - } - [r.$getChildren](e = null) { - return e ? this[d].filter((t) => t[r.$nodeName] === e) : this[d]; - } - [r.$getChildrenByClass](e) { - return this[e]; - } - [r.$getChildrenByName](e, t, a = !0) { - return Array.from(this[r.$getChildrenByNameIt](e, t, a)); - } - *[r.$getChildrenByNameIt](e, t, a = !0) { - if ("parent" !== e) { - for (const a of this[d]) { - a[r.$nodeName] === e && (yield a); - a.name === e && (yield a); - (t || a[r.$isTransparent]()) && - (yield* a[r.$getChildrenByNameIt](e, t, !1)); - } - a && - this[u].has(e) && - (yield new XFAAttribute(this, e, this[e])); - } else yield this[C]; - } - } - t.XFAObject = XFAObject; - class XFAObjectArray { - constructor(e = 1 / 0) { - this[S] = e; - this[d] = []; - } - get isXFAObject() { - return !1; - } - get isXFAObjectArray() { - return !0; - } - push(e) { - if (this[d].length <= this[S]) { - this[d].push(e); - return !0; - } - (0, i.warn)( - `XFA - node "${e[r.$nodeName]}" accepts no more than ${this[S]} children`, - ); - return !1; - } - isEmpty() { - return 0 === this[d].length; - } - dump() { - return 1 === this[d].length - ? this[d][0][r.$dump]() - : this[d].map((e) => e[r.$dump]()); - } - [r.$clone]() { - const e = new XFAObjectArray(this[S]); - e[d] = this[d].map((e) => e[r.$clone]()); - return e; - } - get children() { - return this[d]; - } - clear() { - this[d].length = 0; - } - } - t.XFAObjectArray = XFAObjectArray; - class XFAAttribute { - constructor(e, t, a) { - this[C] = e; - this[r.$nodeName] = t; - this[r.$content] = a; - this[r.$consumed] = !1; - this[r.$uid] = "attribute" + O++; - } - [r.$getParent]() { - return this[C]; - } - [r.$isDataValue]() { - return !0; - } - [r.$getDataValue]() { - return this[r.$content].trim(); - } - [r.$setValue](e) { - e = e.value || ""; - this[r.$content] = e.toString(); - } - [r.$text]() { - return this[r.$content]; - } - [r.$isDescendent](e) { - return this[C] === e || this[C][r.$isDescendent](e); - } - } - t.XFAAttribute = XFAAttribute; - class XmlObject extends XFAObject { - constructor(e, t, a = {}) { - super(e, t); - this[r.$content] = ""; - this[g] = null; - if ("#text" !== t) { - const e = new Map(); - this[h] = e; - for (const [t, r] of Object.entries(a)) - e.set(t, new XFAAttribute(this, t, r)); - if (a.hasOwnProperty(r.$nsAttributes)) { - const e = a[r.$nsAttributes].xfa.dataNode; - void 0 !== e && - ("dataGroup" === e - ? (this[g] = !1) - : "dataValue" === e && (this[g] = !0)); - } - } - this[r.$consumed] = !1; - } - [r.$toString](e) { - const t = this[r.$nodeName]; - if ("#text" === t) { - e.push((0, s.encodeToXmlString)(this[r.$content])); - return; - } - const a = (0, i.utf8StringToString)(t), - n = this[r.$namespaceId] === T ? "xfa:" : ""; - e.push(`<${n}${a}`); - for (const [t, a] of this[h].entries()) { - const n = (0, i.utf8StringToString)(t); - e.push(` ${n}="${(0, s.encodeToXmlString)(a[r.$content])}"`); - } - null !== this[g] && - (this[g] - ? e.push(' xfa:dataNode="dataValue"') - : e.push(' xfa:dataNode="dataGroup"')); - if (this[r.$content] || 0 !== this[d].length) { - e.push(">"); - if (this[r.$content]) - "string" == typeof this[r.$content] - ? e.push((0, s.encodeToXmlString)(this[r.$content])) - : this[r.$content][r.$toString](e); - else for (const t of this[d]) t[r.$toString](e); - e.push(``); - } else e.push("/>"); - } - [r.$onChild](e) { - if (this[r.$content]) { - const e = new XmlObject(this[r.$namespaceId], "#text"); - this[r.$appendChild](e); - e[r.$content] = this[r.$content]; - this[r.$content] = ""; - } - this[r.$appendChild](e); - return !0; - } - [r.$onText](e) { - this[r.$content] += e; - } - [r.$finalize]() { - if (this[r.$content] && this[d].length > 0) { - const e = new XmlObject(this[r.$namespaceId], "#text"); - this[r.$appendChild](e); - e[r.$content] = this[r.$content]; - delete this[r.$content]; - } - } - [r.$toHTML]() { - return "#text" === this[r.$nodeName] - ? n.HTMLResult.success({ - name: "#text", - value: this[r.$content], - }) - : n.HTMLResult.EMPTY; - } - [r.$getChildren](e = null) { - return e ? this[d].filter((t) => t[r.$nodeName] === e) : this[d]; - } - [r.$getAttributes]() { - return this[h]; - } - [r.$getChildrenByClass](e) { - const t = this[h].get(e); - return void 0 !== t ? t : this[r.$getChildren](e); - } - *[r.$getChildrenByNameIt](e, t) { - const a = this[h].get(e); - a && (yield a); - for (const a of this[d]) { - a[r.$nodeName] === e && (yield a); - t && (yield* a[r.$getChildrenByNameIt](e, t)); - } - } - *[r.$getAttributeIt](e, t) { - const a = this[h].get(e); - !a || (t && a[r.$consumed]) || (yield a); - for (const a of this[d]) yield* a[r.$getAttributeIt](e, t); - } - *[r.$getRealChildrenByNameIt](e, t, a) { - for (const n of this[d]) { - n[r.$nodeName] !== e || (a && n[r.$consumed]) || (yield n); - t && (yield* n[r.$getRealChildrenByNameIt](e, t, a)); - } - } - [r.$isDataValue]() { - return null === this[g] - ? 0 === this[d].length || - this[d][0][r.$namespaceId] === o.NamespaceIds.xhtml.id - : this[g]; - } - [r.$getDataValue]() { - return null === this[g] - ? 0 === this[d].length - ? this[r.$content].trim() - : this[d][0][r.$namespaceId] === o.NamespaceIds.xhtml.id - ? this[d][0][r.$text]().trim() - : null - : this[r.$content].trim(); - } - [r.$setValue](e) { - e = e.value || ""; - this[r.$content] = e.toString(); - } - [r.$dump](e = !1) { - const t = Object.create(null); - e && (t.$ns = this[r.$namespaceId]); - this[r.$content] && (t.$content = this[r.$content]); - t.$name = this[r.$nodeName]; - t.children = []; - for (const a of this[d]) t.children.push(a[r.$dump](e)); - t.attributes = Object.create(null); - for (const [e, a] of this[h]) t.attributes[e] = a[r.$content]; - return t; - } - } - t.XmlObject = XmlObject; - class ContentObject extends XFAObject { - constructor(e, t) { - super(e, t); - this[r.$content] = ""; - } - [r.$onText](e) { - this[r.$content] += e; - } - [r.$finalize]() {} - } - t.ContentObject = ContentObject; - class OptionObject extends ContentObject { - constructor(e, t, a) { - super(e, t); - this[x] = a; - } - [r.$finalize]() { - this[r.$content] = (0, n.getKeyword)({ - data: this[r.$content], - defaultValue: this[x][0], - validate: (e) => this[x].includes(e), - }); - } - [r.$clean](e) { - super[r.$clean](e); - delete this[x]; - } - } - t.OptionObject = OptionObject; - class StringObject extends ContentObject { - [r.$finalize]() { - this[r.$content] = this[r.$content].trim(); - } - } - t.StringObject = StringObject; - class IntegerObject extends ContentObject { - constructor(e, t, a, r) { - super(e, t); - this[p] = a; - this[F] = r; - } - [r.$finalize]() { - this[r.$content] = (0, n.getInteger)({ - data: this[r.$content], - defaultValue: this[p], - validate: this[F], - }); - } - [r.$clean](e) { - super[r.$clean](e); - delete this[p]; - delete this[F]; - } - } - t.IntegerObject = IntegerObject; - t.Option01 = class Option01 extends IntegerObject { - constructor(e, t) { - super(e, t, 0, (e) => 1 === e); - } - }; - t.Option10 = class Option10 extends IntegerObject { - constructor(e, t) { - super(e, t, 1, (e) => 0 === e); - } - }; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.createDataNode = function createDataNode(e, t, a) { - const i = parseExpression(a); - if (!i) return null; - if (i.some((e) => e.operator === o.dotDot)) return null; - const s = c.get(i[0].name); - let l = 0; - if (s) { - e = s(e, t); - l = 1; - } else e = t || e; - for (let t = i.length; l < t; l++) { - const { name: t, operator: a, index: s } = i[l]; - if (!isFinite(s)) { - i[l].index = 0; - return e.createNodes(i.slice(l)); - } - let c; - switch (a) { - case o.dot: - c = e[r.$getChildrenByName](t, !1); - break; - case o.dotDot: - c = e[r.$getChildrenByName](t, !0); - break; - case o.dotHash: - c = e[r.$getChildrenByClass](t); - c = c.isXFAObjectArray ? c.children : [c]; - } - if (0 === c.length) return e.createNodes(i.slice(l)); - if (!(s < c.length)) { - i[l].index = s - c.length; - return e.createNodes(i.slice(l)); - } - { - const t = c[s]; - if (!t.isXFAObject) { - (0, n.warn)("XFA - Cannot create a node."); - return null; - } - e = t; - } - } - return null; - }; - t.searchNode = function searchNode(e, t, a, n = !0, i = !0) { - const s = parseExpression(a, n); - if (!s) return null; - const h = c.get(s[0].name); - let u, - d = 0; - if (h) { - u = !0; - e = [h(e, t)]; - d = 1; - } else { - u = null === t; - e = [t || e]; - } - for (let a = s.length; d < a; d++) { - const { name: a, cacheName: n, operator: c, index: h } = s[d], - f = []; - for (const t of e) { - if (!t.isXFAObject) continue; - let e, s; - if (i) { - s = l.get(t); - if (!s) { - s = new Map(); - l.set(t, s); - } - e = s.get(n); - } - if (!e) { - switch (c) { - case o.dot: - e = t[r.$getChildrenByName](a, !1); - break; - case o.dotDot: - e = t[r.$getChildrenByName](a, !0); - break; - case o.dotHash: - e = t[r.$getChildrenByClass](a); - e = e.isXFAObjectArray ? e.children : [e]; - } - i && s.set(n, e); - } - e.length > 0 && f.push(e); - } - if (0 !== f.length || u || 0 !== d) - e = isFinite(h) - ? f.filter((e) => h < e.length).map((e) => e[h]) - : f.flat(); - else { - const a = t[r.$getParent](); - if (!(t = a)) return null; - d = -1; - e = [t]; - } - } - if (0 === e.length) return null; - return e; - }; - var r = a(78), - n = a(2); - const i = /^[^.[]+/, - s = /^[^\]]+/, - o = { dot: 0, dotDot: 1, dotHash: 2, dotBracket: 3, dotParen: 4 }, - c = new Map([ - ["$data", (e, t) => (e.datasets ? e.datasets.data : e)], - [ - "$record", - (e, t) => - (e.datasets ? e.datasets.data : e)[r.$getChildren]()[0], - ], - ["$template", (e, t) => e.template], - ["$connectionSet", (e, t) => e.connectionSet], - ["$form", (e, t) => e.form], - ["$layout", (e, t) => e.layout], - ["$host", (e, t) => e.host], - ["$dataWindow", (e, t) => e.dataWindow], - ["$event", (e, t) => e.event], - ["!", (e, t) => e.datasets], - ["$xfa", (e, t) => e], - ["xfa", (e, t) => e], - ["$", (e, t) => t], - ]), - l = new WeakMap(); - function parseExpression(e, t, a = !0) { - let r = e.match(i); - if (!r) return null; - let [c] = r; - const l = [ - { - name: c, - cacheName: "." + c, - index: 0, - js: null, - formCalc: null, - operator: o.dot, - }, - ]; - let h = c.length; - for (; h < e.length; ) { - const d = h; - if ("[" === e.charAt(h++)) { - r = e.slice(h).match(s); - if (!r) { - (0, n.warn)("XFA - Invalid index in SOM expression"); - return null; - } - l.at(-1).index = - "*" === (u = (u = r[0]).trim()) - ? 1 / 0 - : parseInt(u, 10) || 0; - h += r[0].length + 1; - continue; - } - let f; - switch (e.charAt(h)) { - case ".": - if (!t) return null; - h++; - f = o.dotDot; - break; - case "#": - h++; - f = o.dotHash; - break; - case "[": - if (a) { - (0, n.warn)( - "XFA - SOM expression contains a FormCalc subexpression which is not supported for now.", - ); - return null; - } - f = o.dotBracket; - break; - case "(": - if (a) { - (0, n.warn)( - "XFA - SOM expression contains a JavaScript subexpression which is not supported for now.", - ); - return null; - } - f = o.dotParen; - break; - default: - f = o.dot; - } - r = e.slice(h).match(i); - if (!r) break; - [c] = r; - h += c.length; - l.push({ - name: c, - cacheName: e.slice(d, h), - operator: f, - index: 0, - js: null, - formCalc: null, - }); - } - var u; - return l; - } - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.DataHandler = void 0; - var r = a(78); - t.DataHandler = class DataHandler { - constructor(e, t) { - this.data = t; - this.dataset = e.datasets || null; - } - serialize(e) { - const t = [[-1, this.data[r.$getChildren]()]]; - for (; t.length > 0; ) { - const a = t.at(-1), - [n, i] = a; - if (n + 1 === i.length) { - t.pop(); - continue; - } - const s = i[++a[0]], - o = e.get(s[r.$uid]); - if (o) s[r.$setValue](o); - else { - const t = s[r.$getAttributes](); - for (const a of t.values()) { - const t = e.get(a[r.$uid]); - if (t) { - a[r.$setValue](t); - break; - } - } - } - const c = s[r.$getChildren](); - c.length > 0 && t.push([-1, c]); - } - const a = [ - '', - ]; - if (this.dataset) - for (const e of this.dataset[r.$getChildren]()) - "data" !== e[r.$nodeName] && e[r.$toString](a); - this.data[r.$toString](a); - a.push(""); - return a.join(""); - } - }; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.XFAParser = void 0; - var r = a(78), - n = a(71), - i = a(91), - s = a(2); - class XFAParser extends n.XMLParserBase { - constructor(e = null, t = !1) { - super(); - this._builder = new i.Builder(e); - this._stack = []; - this._globalData = { usedTypefaces: new Set() }; - this._ids = new Map(); - this._current = this._builder.buildRoot(this._ids); - this._errorCode = n.XMLParserErrorCode.NoError; - this._whiteRegex = /^\s+$/; - this._nbsps = /\xa0+/g; - this._richText = t; - } - parse(e) { - this.parseXml(e); - if (this._errorCode === n.XMLParserErrorCode.NoError) { - this._current[r.$finalize](); - return this._current.element; - } - } - onText(e) { - e = e.replace(this._nbsps, (e) => e.slice(1) + " "); - this._richText || this._current[r.$acceptWhitespace]() - ? this._current[r.$onText](e, this._richText) - : this._whiteRegex.test(e) || - this._current[r.$onText](e.trim()); - } - onCdata(e) { - this._current[r.$onText](e); - } - _mkAttributes(e, t) { - let a = null, - n = null; - const i = Object.create({}); - for (const { name: o, value: c } of e) - if ("xmlns" === o) - a - ? (0, s.warn)( - `XFA - multiple namespace definition in <${t}>`, - ) - : (a = c); - else if (o.startsWith("xmlns:")) { - const e = o.substring(6); - n || (n = []); - n.push({ prefix: e, value: c }); - } else { - const e = o.indexOf(":"); - if (-1 === e) i[o] = c; - else { - let t = i[r.$nsAttributes]; - t || (t = i[r.$nsAttributes] = Object.create(null)); - const [a, n] = [o.slice(0, e), o.slice(e + 1)]; - (t[a] ||= Object.create(null))[n] = c; - } - } - return [a, n, i]; - } - _getNameAndPrefix(e, t) { - const a = e.indexOf(":"); - return -1 === a - ? [e, null] - : [e.substring(a + 1), t ? "" : e.substring(0, a)]; - } - onBeginElement(e, t, a) { - const [n, i, s] = this._mkAttributes(t, e), - [o, c] = this._getNameAndPrefix( - e, - this._builder.isNsAgnostic(), - ), - l = this._builder.build({ - nsPrefix: c, - name: o, - attributes: s, - namespace: n, - prefixes: i, - }); - l[r.$globalData] = this._globalData; - if (a) { - l[r.$finalize](); - this._current[r.$onChild](l) && l[r.$setId](this._ids); - l[r.$clean](this._builder); - } else { - this._stack.push(this._current); - this._current = l; - } - } - onEndElement(e) { - const t = this._current; - if (t[r.$isCDATAXml]() && "string" == typeof t[r.$content]) { - const e = new XFAParser(); - e._globalData = this._globalData; - const a = e.parse(t[r.$content]); - t[r.$content] = null; - t[r.$onChild](a); - } - t[r.$finalize](); - this._current = this._stack.pop(); - this._current[r.$onChild](t) && t[r.$setId](this._ids); - t[r.$clean](this._builder); - } - onError(e) { - this._errorCode = e; - } - } - t.XFAParser = XFAParser; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.Builder = void 0; - var r = a(81), - n = a(78), - i = a(92), - s = a(80), - o = a(101), - c = a(2), - l = a(87); - class Root extends l.XFAObject { - constructor(e) { - super(-1, "root", Object.create(null)); - this.element = null; - this[n.$ids] = e; - } - [n.$onChild](e) { - this.element = e; - return !0; - } - [n.$finalize]() { - super[n.$finalize](); - if (this.element.template instanceof s.Template) { - this[n.$ids].set(n.$root, this.element); - this.element.template[n.$resolvePrototypes](this[n.$ids]); - this.element.template[n.$ids] = this[n.$ids]; - } - } - } - class Empty extends l.XFAObject { - constructor() { - super(-1, "", Object.create(null)); - } - [n.$onChild](e) { - return !1; - } - } - t.Builder = class Builder { - constructor(e = null) { - this._namespaceStack = []; - this._nsAgnosticLevel = 0; - this._namespacePrefixes = new Map(); - this._namespaces = new Map(); - this._nextNsId = Math.max( - ...Object.values(r.NamespaceIds).map(({ id: e }) => e), - ); - this._currentNamespace = - e || new o.UnknownNamespace(++this._nextNsId); - } - buildRoot(e) { - return new Root(e); - } - build({ - nsPrefix: e, - name: t, - attributes: a, - namespace: s, - prefixes: o, - }) { - const c = null !== s; - if (c) { - this._namespaceStack.push(this._currentNamespace); - this._currentNamespace = this._searchNamespace(s); - } - o && this._addNamespacePrefix(o); - if (a.hasOwnProperty(n.$nsAttributes)) { - const e = i.NamespaceSetUp.datasets, - t = a[n.$nsAttributes]; - let r = null; - for (const [a, n] of Object.entries(t)) { - if (this._getNamespaceToUse(a) === e) { - r = { xfa: n }; - break; - } - } - r ? (a[n.$nsAttributes] = r) : delete a[n.$nsAttributes]; - } - const l = this._getNamespaceToUse(e), - h = l?.[r.$buildXFAObject](t, a) || new Empty(); - h[n.$isNsAgnostic]() && this._nsAgnosticLevel++; - (c || o || h[n.$isNsAgnostic]()) && - (h[n.$cleanup] = { - hasNamespace: c, - prefixes: o, - nsAgnostic: h[n.$isNsAgnostic](), - }); - return h; - } - isNsAgnostic() { - return this._nsAgnosticLevel > 0; - } - _searchNamespace(e) { - let t = this._namespaces.get(e); - if (t) return t; - for (const [a, { check: n }] of Object.entries(r.NamespaceIds)) - if (n(e)) { - t = i.NamespaceSetUp[a]; - if (t) { - this._namespaces.set(e, t); - return t; - } - break; - } - t = new o.UnknownNamespace(++this._nextNsId); - this._namespaces.set(e, t); - return t; - } - _addNamespacePrefix(e) { - for (const { prefix: t, value: a } of e) { - const e = this._searchNamespace(a); - let r = this._namespacePrefixes.get(t); - if (!r) { - r = []; - this._namespacePrefixes.set(t, r); - } - r.push(e); - } - } - _getNamespaceToUse(e) { - if (!e) return this._currentNamespace; - const t = this._namespacePrefixes.get(e); - if (t?.length > 0) return t.at(-1); - (0, c.warn)(`Unknown namespace prefix: ${e}.`); - return null; - } - clean(e) { - const { hasNamespace: t, prefixes: a, nsAgnostic: r } = e; - t && (this._currentNamespace = this._namespaceStack.pop()); - a && - a.forEach(({ prefix: e }) => { - this._namespacePrefixes.get(e).pop(); - }); - r && this._nsAgnosticLevel--; - } - }; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.NamespaceSetUp = void 0; - var r = a(93), - n = a(94), - i = a(95), - s = a(96), - o = a(97), - c = a(98), - l = a(80), - h = a(99), - u = a(100); - const d = { - config: r.ConfigNamespace, - connection: n.ConnectionSetNamespace, - datasets: i.DatasetsNamespace, - localeSet: s.LocaleSetNamespace, - signature: o.SignatureNamespace, - stylesheet: c.StylesheetNamespace, - template: l.TemplateNamespace, - xdp: h.XdpNamespace, - xhtml: u.XhtmlNamespace, - }; - t.NamespaceSetUp = d; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.ConfigNamespace = void 0; - var r = a(81), - n = a(78), - i = a(87), - s = a(84), - o = a(2); - const c = r.NamespaceIds.config.id; - class Acrobat extends i.XFAObject { - constructor(e) { - super(c, "acrobat", !0); - this.acrobat7 = null; - this.autoSave = null; - this.common = null; - this.validate = null; - this.validateApprovalSignatures = null; - this.submitUrl = new i.XFAObjectArray(); - } - } - class Acrobat7 extends i.XFAObject { - constructor(e) { - super(c, "acrobat7", !0); - this.dynamicRender = null; - } - } - class ADBE_JSConsole extends i.OptionObject { - constructor(e) { - super(c, "ADBE_JSConsole", ["delegate", "Enable", "Disable"]); - } - } - class ADBE_JSDebugger extends i.OptionObject { - constructor(e) { - super(c, "ADBE_JSDebugger", ["delegate", "Enable", "Disable"]); - } - } - class AddSilentPrint extends i.Option01 { - constructor(e) { - super(c, "addSilentPrint"); - } - } - class AddViewerPreferences extends i.Option01 { - constructor(e) { - super(c, "addViewerPreferences"); - } - } - class AdjustData extends i.Option10 { - constructor(e) { - super(c, "adjustData"); - } - } - class AdobeExtensionLevel extends i.IntegerObject { - constructor(e) { - super(c, "adobeExtensionLevel", 0, (e) => e >= 1 && e <= 8); - } - } - class Agent extends i.XFAObject { - constructor(e) { - super(c, "agent", !0); - this.name = e.name ? e.name.trim() : ""; - this.common = new i.XFAObjectArray(); - } - } - class AlwaysEmbed extends i.ContentObject { - constructor(e) { - super(c, "alwaysEmbed"); - } - } - class Amd extends i.StringObject { - constructor(e) { - super(c, "amd"); - } - } - class Area extends i.XFAObject { - constructor(e) { - super(c, "area"); - this.level = (0, s.getInteger)({ - data: e.level, - defaultValue: 0, - validate: (e) => e >= 1 && e <= 3, - }); - this.name = (0, s.getStringOption)(e.name, [ - "", - "barcode", - "coreinit", - "deviceDriver", - "font", - "general", - "layout", - "merge", - "script", - "signature", - "sourceSet", - "templateCache", - ]); - } - } - class Attributes extends i.OptionObject { - constructor(e) { - super(c, "attributes", ["preserve", "delegate", "ignore"]); - } - } - class AutoSave extends i.OptionObject { - constructor(e) { - super(c, "autoSave", ["disabled", "enabled"]); - } - } - class Base extends i.StringObject { - constructor(e) { - super(c, "base"); - } - } - class BatchOutput extends i.XFAObject { - constructor(e) { - super(c, "batchOutput"); - this.format = (0, s.getStringOption)(e.format, [ - "none", - "concat", - "zip", - "zipCompress", - ]); - } - } - class BehaviorOverride extends i.ContentObject { - constructor(e) { - super(c, "behaviorOverride"); - } - [n.$finalize]() { - this[n.$content] = new Map( - this[n.$content] - .trim() - .split(/\s+/) - .filter((e) => e.includes(":")) - .map((e) => e.split(":", 2)), - ); - } - } - class Cache extends i.XFAObject { - constructor(e) { - super(c, "cache", !0); - this.templateCache = null; - } - } - class Change extends i.Option01 { - constructor(e) { - super(c, "change"); - } - } - class Common extends i.XFAObject { - constructor(e) { - super(c, "common", !0); - this.data = null; - this.locale = null; - this.localeSet = null; - this.messaging = null; - this.suppressBanner = null; - this.template = null; - this.validationMessaging = null; - this.versionControl = null; - this.log = new i.XFAObjectArray(); - } - } - class Compress extends i.XFAObject { - constructor(e) { - super(c, "compress"); - this.scope = (0, s.getStringOption)(e.scope, [ - "imageOnly", - "document", - ]); - } - } - class CompressLogicalStructure extends i.Option01 { - constructor(e) { - super(c, "compressLogicalStructure"); - } - } - class CompressObjectStream extends i.Option10 { - constructor(e) { - super(c, "compressObjectStream"); - } - } - class Compression extends i.XFAObject { - constructor(e) { - super(c, "compression", !0); - this.compressLogicalStructure = null; - this.compressObjectStream = null; - this.level = null; - this.type = null; - } - } - class Config extends i.XFAObject { - constructor(e) { - super(c, "config", !0); - this.acrobat = null; - this.present = null; - this.trace = null; - this.agent = new i.XFAObjectArray(); - } - } - class Conformance extends i.OptionObject { - constructor(e) { - super(c, "conformance", ["A", "B"]); - } - } - class ContentCopy extends i.Option01 { - constructor(e) { - super(c, "contentCopy"); - } - } - class Copies extends i.IntegerObject { - constructor(e) { - super(c, "copies", 1, (e) => e >= 1); - } - } - class Creator extends i.StringObject { - constructor(e) { - super(c, "creator"); - } - } - class CurrentPage extends i.IntegerObject { - constructor(e) { - super(c, "currentPage", 0, (e) => e >= 0); - } - } - class Data extends i.XFAObject { - constructor(e) { - super(c, "data", !0); - this.adjustData = null; - this.attributes = null; - this.incrementalLoad = null; - this.outputXSL = null; - this.range = null; - this.record = null; - this.startNode = null; - this.uri = null; - this.window = null; - this.xsl = null; - this.excludeNS = new i.XFAObjectArray(); - this.transform = new i.XFAObjectArray(); - } - } - class Debug extends i.XFAObject { - constructor(e) { - super(c, "debug", !0); - this.uri = null; - } - } - class DefaultTypeface extends i.ContentObject { - constructor(e) { - super(c, "defaultTypeface"); - this.writingScript = (0, s.getStringOption)(e.writingScript, [ - "*", - "Arabic", - "Cyrillic", - "EastEuropeanRoman", - "Greek", - "Hebrew", - "Japanese", - "Korean", - "Roman", - "SimplifiedChinese", - "Thai", - "TraditionalChinese", - "Vietnamese", - ]); - } - } - class Destination extends i.OptionObject { - constructor(e) { - super(c, "destination", ["pdf", "pcl", "ps", "webClient", "zpl"]); - } - } - class DocumentAssembly extends i.Option01 { - constructor(e) { - super(c, "documentAssembly"); - } - } - class Driver extends i.XFAObject { - constructor(e) { - super(c, "driver", !0); - this.name = e.name ? e.name.trim() : ""; - this.fontInfo = null; - this.xdc = null; - } - } - class DuplexOption extends i.OptionObject { - constructor(e) { - super(c, "duplexOption", [ - "simplex", - "duplexFlipLongEdge", - "duplexFlipShortEdge", - ]); - } - } - class DynamicRender extends i.OptionObject { - constructor(e) { - super(c, "dynamicRender", ["forbidden", "required"]); - } - } - class Embed extends i.Option01 { - constructor(e) { - super(c, "embed"); - } - } - class Encrypt extends i.Option01 { - constructor(e) { - super(c, "encrypt"); - } - } - class Encryption extends i.XFAObject { - constructor(e) { - super(c, "encryption", !0); - this.encrypt = null; - this.encryptionLevel = null; - this.permissions = null; - } - } - class EncryptionLevel extends i.OptionObject { - constructor(e) { - super(c, "encryptionLevel", ["40bit", "128bit"]); - } - } - class Enforce extends i.StringObject { - constructor(e) { - super(c, "enforce"); - } - } - class Equate extends i.XFAObject { - constructor(e) { - super(c, "equate"); - this.force = (0, s.getInteger)({ - data: e.force, - defaultValue: 1, - validate: (e) => 0 === e, - }); - this.from = e.from || ""; - this.to = e.to || ""; - } - } - class EquateRange extends i.XFAObject { - constructor(e) { - super(c, "equateRange"); - this.from = e.from || ""; - this.to = e.to || ""; - this._unicodeRange = e.unicodeRange || ""; - } - get unicodeRange() { - const e = [], - t = /U\+([0-9a-fA-F]+)/, - a = this._unicodeRange; - for (let r of a - .split(",") - .map((e) => e.trim()) - .filter((e) => !!e)) { - r = r.split("-", 2).map((e) => { - const a = e.match(t); - return a ? parseInt(a[1], 16) : 0; - }); - 1 === r.length && r.push(r[0]); - e.push(r); - } - return (0, o.shadow)(this, "unicodeRange", e); - } - } - class Exclude extends i.ContentObject { - constructor(e) { - super(c, "exclude"); - } - [n.$finalize]() { - this[n.$content] = this[n.$content] - .trim() - .split(/\s+/) - .filter( - (e) => - e && - [ - "calculate", - "close", - "enter", - "exit", - "initialize", - "ready", - "validate", - ].includes(e), - ); - } - } - class ExcludeNS extends i.StringObject { - constructor(e) { - super(c, "excludeNS"); - } - } - class FlipLabel extends i.OptionObject { - constructor(e) { - super(c, "flipLabel", ["usePrinterSetting", "on", "off"]); - } - } - class FontInfo extends i.XFAObject { - constructor(e) { - super(c, "fontInfo", !0); - this.embed = null; - this.map = null; - this.subsetBelow = null; - this.alwaysEmbed = new i.XFAObjectArray(); - this.defaultTypeface = new i.XFAObjectArray(); - this.neverEmbed = new i.XFAObjectArray(); - } - } - class FormFieldFilling extends i.Option01 { - constructor(e) { - super(c, "formFieldFilling"); - } - } - class GroupParent extends i.StringObject { - constructor(e) { - super(c, "groupParent"); - } - } - class IfEmpty extends i.OptionObject { - constructor(e) { - super(c, "ifEmpty", [ - "dataValue", - "dataGroup", - "ignore", - "remove", - ]); - } - } - class IncludeXDPContent extends i.StringObject { - constructor(e) { - super(c, "includeXDPContent"); - } - } - class IncrementalLoad extends i.OptionObject { - constructor(e) { - super(c, "incrementalLoad", ["none", "forwardOnly"]); - } - } - class IncrementalMerge extends i.Option01 { - constructor(e) { - super(c, "incrementalMerge"); - } - } - class Interactive extends i.Option01 { - constructor(e) { - super(c, "interactive"); - } - } - class Jog extends i.OptionObject { - constructor(e) { - super(c, "jog", ["usePrinterSetting", "none", "pageSet"]); - } - } - class LabelPrinter extends i.XFAObject { - constructor(e) { - super(c, "labelPrinter", !0); - this.name = (0, s.getStringOption)(e.name, [ - "zpl", - "dpl", - "ipl", - "tcpl", - ]); - this.batchOutput = null; - this.flipLabel = null; - this.fontInfo = null; - this.xdc = null; - } - } - class Layout extends i.OptionObject { - constructor(e) { - super(c, "layout", ["paginate", "panel"]); - } - } - class Level extends i.IntegerObject { - constructor(e) { - super(c, "level", 0, (e) => e > 0); - } - } - class Linearized extends i.Option01 { - constructor(e) { - super(c, "linearized"); - } - } - class Locale extends i.StringObject { - constructor(e) { - super(c, "locale"); - } - } - class LocaleSet extends i.StringObject { - constructor(e) { - super(c, "localeSet"); - } - } - class Log extends i.XFAObject { - constructor(e) { - super(c, "log", !0); - this.mode = null; - this.threshold = null; - this.to = null; - this.uri = null; - } - } - class MapElement extends i.XFAObject { - constructor(e) { - super(c, "map", !0); - this.equate = new i.XFAObjectArray(); - this.equateRange = new i.XFAObjectArray(); - } - } - class MediumInfo extends i.XFAObject { - constructor(e) { - super(c, "mediumInfo", !0); - this.map = null; - } - } - class Message extends i.XFAObject { - constructor(e) { - super(c, "message", !0); - this.msgId = null; - this.severity = null; - } - } - class Messaging extends i.XFAObject { - constructor(e) { - super(c, "messaging", !0); - this.message = new i.XFAObjectArray(); - } - } - class Mode extends i.OptionObject { - constructor(e) { - super(c, "mode", ["append", "overwrite"]); - } - } - class ModifyAnnots extends i.Option01 { - constructor(e) { - super(c, "modifyAnnots"); - } - } - class MsgId extends i.IntegerObject { - constructor(e) { - super(c, "msgId", 1, (e) => e >= 1); - } - } - class NameAttr extends i.StringObject { - constructor(e) { - super(c, "nameAttr"); - } - } - class NeverEmbed extends i.ContentObject { - constructor(e) { - super(c, "neverEmbed"); - } - } - class NumberOfCopies extends i.IntegerObject { - constructor(e) { - super(c, "numberOfCopies", null, (e) => e >= 2 && e <= 5); - } - } - class OpenAction extends i.XFAObject { - constructor(e) { - super(c, "openAction", !0); - this.destination = null; - } - } - class Output extends i.XFAObject { - constructor(e) { - super(c, "output", !0); - this.to = null; - this.type = null; - this.uri = null; - } - } - class OutputBin extends i.StringObject { - constructor(e) { - super(c, "outputBin"); - } - } - class OutputXSL extends i.XFAObject { - constructor(e) { - super(c, "outputXSL", !0); - this.uri = null; - } - } - class Overprint extends i.OptionObject { - constructor(e) { - super(c, "overprint", ["none", "both", "draw", "field"]); - } - } - class Packets extends i.StringObject { - constructor(e) { - super(c, "packets"); - } - [n.$finalize]() { - "*" !== this[n.$content] && - (this[n.$content] = this[n.$content] - .trim() - .split(/\s+/) - .filter((e) => - ["config", "datasets", "template", "xfdf", "xslt"].includes( - e, - ), - )); - } - } - class PageOffset extends i.XFAObject { - constructor(e) { - super(c, "pageOffset"); - this.x = (0, s.getInteger)({ - data: e.x, - defaultValue: "useXDCSetting", - validate: (e) => !0, - }); - this.y = (0, s.getInteger)({ - data: e.y, - defaultValue: "useXDCSetting", - validate: (e) => !0, - }); - } - } - class PageRange extends i.StringObject { - constructor(e) { - super(c, "pageRange"); - } - [n.$finalize]() { - const e = this[n.$content] - .trim() - .split(/\s+/) - .map((e) => parseInt(e, 10)), - t = []; - for (let a = 0, r = e.length; a < r; a += 2) - t.push(e.slice(a, a + 2)); - this[n.$content] = t; - } - } - class Pagination extends i.OptionObject { - constructor(e) { - super(c, "pagination", [ - "simplex", - "duplexShortEdge", - "duplexLongEdge", - ]); - } - } - class PaginationOverride extends i.OptionObject { - constructor(e) { - super(c, "paginationOverride", [ - "none", - "forceDuplex", - "forceDuplexLongEdge", - "forceDuplexShortEdge", - "forceSimplex", - ]); - } - } - class Part extends i.IntegerObject { - constructor(e) { - super(c, "part", 1, (e) => !1); - } - } - class Pcl extends i.XFAObject { - constructor(e) { - super(c, "pcl", !0); - this.name = e.name || ""; - this.batchOutput = null; - this.fontInfo = null; - this.jog = null; - this.mediumInfo = null; - this.outputBin = null; - this.pageOffset = null; - this.staple = null; - this.xdc = null; - } - } - class Pdf extends i.XFAObject { - constructor(e) { - super(c, "pdf", !0); - this.name = e.name || ""; - this.adobeExtensionLevel = null; - this.batchOutput = null; - this.compression = null; - this.creator = null; - this.encryption = null; - this.fontInfo = null; - this.interactive = null; - this.linearized = null; - this.openAction = null; - this.pdfa = null; - this.producer = null; - this.renderPolicy = null; - this.scriptModel = null; - this.silentPrint = null; - this.submitFormat = null; - this.tagged = null; - this.version = null; - this.viewerPreferences = null; - this.xdc = null; - } - } - class Pdfa extends i.XFAObject { - constructor(e) { - super(c, "pdfa", !0); - this.amd = null; - this.conformance = null; - this.includeXDPContent = null; - this.part = null; - } - } - class Permissions extends i.XFAObject { - constructor(e) { - super(c, "permissions", !0); - this.accessibleContent = null; - this.change = null; - this.contentCopy = null; - this.documentAssembly = null; - this.formFieldFilling = null; - this.modifyAnnots = null; - this.plaintextMetadata = null; - this.print = null; - this.printHighQuality = null; - } - } - class PickTrayByPDFSize extends i.Option01 { - constructor(e) { - super(c, "pickTrayByPDFSize"); - } - } - class Picture extends i.StringObject { - constructor(e) { - super(c, "picture"); - } - } - class PlaintextMetadata extends i.Option01 { - constructor(e) { - super(c, "plaintextMetadata"); - } - } - class Presence extends i.OptionObject { - constructor(e) { - super(c, "presence", [ - "preserve", - "dissolve", - "dissolveStructure", - "ignore", - "remove", - ]); - } - } - class Present extends i.XFAObject { - constructor(e) { - super(c, "present", !0); - this.behaviorOverride = null; - this.cache = null; - this.common = null; - this.copies = null; - this.destination = null; - this.incrementalMerge = null; - this.layout = null; - this.output = null; - this.overprint = null; - this.pagination = null; - this.paginationOverride = null; - this.script = null; - this.validate = null; - this.xdp = null; - this.driver = new i.XFAObjectArray(); - this.labelPrinter = new i.XFAObjectArray(); - this.pcl = new i.XFAObjectArray(); - this.pdf = new i.XFAObjectArray(); - this.ps = new i.XFAObjectArray(); - this.submitUrl = new i.XFAObjectArray(); - this.webClient = new i.XFAObjectArray(); - this.zpl = new i.XFAObjectArray(); - } - } - class Print extends i.Option01 { - constructor(e) { - super(c, "print"); - } - } - class PrintHighQuality extends i.Option01 { - constructor(e) { - super(c, "printHighQuality"); - } - } - class PrintScaling extends i.OptionObject { - constructor(e) { - super(c, "printScaling", ["appdefault", "noScaling"]); - } - } - class PrinterName extends i.StringObject { - constructor(e) { - super(c, "printerName"); - } - } - class Producer extends i.StringObject { - constructor(e) { - super(c, "producer"); - } - } - class Ps extends i.XFAObject { - constructor(e) { - super(c, "ps", !0); - this.name = e.name || ""; - this.batchOutput = null; - this.fontInfo = null; - this.jog = null; - this.mediumInfo = null; - this.outputBin = null; - this.staple = null; - this.xdc = null; - } - } - class Range extends i.ContentObject { - constructor(e) { - super(c, "range"); - } - [n.$finalize]() { - this[n.$content] = this[n.$content] - .trim() - .split(/\s*,\s*/, 2) - .map((e) => e.split("-").map((e) => parseInt(e.trim(), 10))) - .filter((e) => e.every((e) => !isNaN(e))) - .map((e) => { - 1 === e.length && e.push(e[0]); - return e; - }); - } - } - class Record extends i.ContentObject { - constructor(e) { - super(c, "record"); - } - [n.$finalize]() { - this[n.$content] = this[n.$content].trim(); - const e = parseInt(this[n.$content], 10); - !isNaN(e) && e >= 0 && (this[n.$content] = e); - } - } - class Relevant extends i.ContentObject { - constructor(e) { - super(c, "relevant"); - } - [n.$finalize]() { - this[n.$content] = this[n.$content].trim().split(/\s+/); - } - } - class Rename extends i.ContentObject { - constructor(e) { - super(c, "rename"); - } - [n.$finalize]() { - this[n.$content] = this[n.$content].trim(); - (this[n.$content].toLowerCase().startsWith("xml") || - new RegExp("[\\p{L}_][\\p{L}\\d._\\p{M}-]*", "u").test( - this[n.$content], - )) && - (0, o.warn)("XFA - Rename: invalid XFA name"); - } - } - class RenderPolicy extends i.OptionObject { - constructor(e) { - super(c, "renderPolicy", ["server", "client"]); - } - } - class RunScripts extends i.OptionObject { - constructor(e) { - super(c, "runScripts", ["both", "client", "none", "server"]); - } - } - class Script extends i.XFAObject { - constructor(e) { - super(c, "script", !0); - this.currentPage = null; - this.exclude = null; - this.runScripts = null; - } - } - class ScriptModel extends i.OptionObject { - constructor(e) { - super(c, "scriptModel", ["XFA", "none"]); - } - } - class Severity extends i.OptionObject { - constructor(e) { - super(c, "severity", [ - "ignore", - "error", - "information", - "trace", - "warning", - ]); - } - } - class SilentPrint extends i.XFAObject { - constructor(e) { - super(c, "silentPrint", !0); - this.addSilentPrint = null; - this.printerName = null; - } - } - class Staple extends i.XFAObject { - constructor(e) { - super(c, "staple"); - this.mode = (0, s.getStringOption)(e.mode, [ - "usePrinterSetting", - "on", - "off", - ]); - } - } - class StartNode extends i.StringObject { - constructor(e) { - super(c, "startNode"); - } - } - class StartPage extends i.IntegerObject { - constructor(e) { - super(c, "startPage", 0, (e) => !0); - } - } - class SubmitFormat extends i.OptionObject { - constructor(e) { - super(c, "submitFormat", [ - "html", - "delegate", - "fdf", - "xml", - "pdf", - ]); - } - } - class SubmitUrl extends i.StringObject { - constructor(e) { - super(c, "submitUrl"); - } - } - class SubsetBelow extends i.IntegerObject { - constructor(e) { - super(c, "subsetBelow", 100, (e) => e >= 0 && e <= 100); - } - } - class SuppressBanner extends i.Option01 { - constructor(e) { - super(c, "suppressBanner"); - } - } - class Tagged extends i.Option01 { - constructor(e) { - super(c, "tagged"); - } - } - class Template extends i.XFAObject { - constructor(e) { - super(c, "template", !0); - this.base = null; - this.relevant = null; - this.startPage = null; - this.uri = null; - this.xsl = null; - } - } - class Threshold extends i.OptionObject { - constructor(e) { - super(c, "threshold", [ - "trace", - "error", - "information", - "warning", - ]); - } - } - class To extends i.OptionObject { - constructor(e) { - super(c, "to", [ - "null", - "memory", - "stderr", - "stdout", - "system", - "uri", - ]); - } - } - class TemplateCache extends i.XFAObject { - constructor(e) { - super(c, "templateCache"); - this.maxEntries = (0, s.getInteger)({ - data: e.maxEntries, - defaultValue: 5, - validate: (e) => e >= 0, - }); - } - } - class Trace extends i.XFAObject { - constructor(e) { - super(c, "trace", !0); - this.area = new i.XFAObjectArray(); - } - } - class Transform extends i.XFAObject { - constructor(e) { - super(c, "transform", !0); - this.groupParent = null; - this.ifEmpty = null; - this.nameAttr = null; - this.picture = null; - this.presence = null; - this.rename = null; - this.whitespace = null; - } - } - class Type extends i.OptionObject { - constructor(e) { - super(c, "type", [ - "none", - "ascii85", - "asciiHex", - "ccittfax", - "flate", - "lzw", - "runLength", - "native", - "xdp", - "mergedXDP", - ]); - } - } - class Uri extends i.StringObject { - constructor(e) { - super(c, "uri"); - } - } - class Validate extends i.OptionObject { - constructor(e) { - super(c, "validate", [ - "preSubmit", - "prePrint", - "preExecute", - "preSave", - ]); - } - } - class ValidateApprovalSignatures extends i.ContentObject { - constructor(e) { - super(c, "validateApprovalSignatures"); - } - [n.$finalize]() { - this[n.$content] = this[n.$content] - .trim() - .split(/\s+/) - .filter((e) => ["docReady", "postSign"].includes(e)); - } - } - class ValidationMessaging extends i.OptionObject { - constructor(e) { - super(c, "validationMessaging", [ - "allMessagesIndividually", - "allMessagesTogether", - "firstMessageOnly", - "noMessages", - ]); - } - } - class Version extends i.OptionObject { - constructor(e) { - super(c, "version", ["1.7", "1.6", "1.5", "1.4", "1.3", "1.2"]); - } - } - class VersionControl extends i.XFAObject { - constructor(e) { - super(c, "VersionControl"); - this.outputBelow = (0, s.getStringOption)(e.outputBelow, [ - "warn", - "error", - "update", - ]); - this.sourceAbove = (0, s.getStringOption)(e.sourceAbove, [ - "warn", - "error", - ]); - this.sourceBelow = (0, s.getStringOption)(e.sourceBelow, [ - "update", - "maintain", - ]); - } - } - class ViewerPreferences extends i.XFAObject { - constructor(e) { - super(c, "viewerPreferences", !0); - this.ADBE_JSConsole = null; - this.ADBE_JSDebugger = null; - this.addViewerPreferences = null; - this.duplexOption = null; - this.enforce = null; - this.numberOfCopies = null; - this.pageRange = null; - this.pickTrayByPDFSize = null; - this.printScaling = null; - } - } - class WebClient extends i.XFAObject { - constructor(e) { - super(c, "webClient", !0); - this.name = e.name ? e.name.trim() : ""; - this.fontInfo = null; - this.xdc = null; - } - } - class Whitespace extends i.OptionObject { - constructor(e) { - super(c, "whitespace", [ - "preserve", - "ltrim", - "normalize", - "rtrim", - "trim", - ]); - } - } - class Window extends i.ContentObject { - constructor(e) { - super(c, "window"); - } - [n.$finalize]() { - const e = this[n.$content] - .trim() - .split(/\s*,\s*/, 2) - .map((e) => parseInt(e, 10)); - if (e.some((e) => isNaN(e))) this[n.$content] = [0, 0]; - else { - 1 === e.length && e.push(e[0]); - this[n.$content] = e; - } - } - } - class Xdc extends i.XFAObject { - constructor(e) { - super(c, "xdc", !0); - this.uri = new i.XFAObjectArray(); - this.xsl = new i.XFAObjectArray(); - } - } - class Xdp extends i.XFAObject { - constructor(e) { - super(c, "xdp", !0); - this.packets = null; - } - } - class Xsl extends i.XFAObject { - constructor(e) { - super(c, "xsl", !0); - this.debug = null; - this.uri = null; - } - } - class Zpl extends i.XFAObject { - constructor(e) { - super(c, "zpl", !0); - this.name = e.name ? e.name.trim() : ""; - this.batchOutput = null; - this.flipLabel = null; - this.fontInfo = null; - this.xdc = null; - } - } - class ConfigNamespace { - static [r.$buildXFAObject](e, t) { - if (ConfigNamespace.hasOwnProperty(e)) - return ConfigNamespace[e](t); - } - static acrobat(e) { - return new Acrobat(e); - } - static acrobat7(e) { - return new Acrobat7(e); - } - static ADBE_JSConsole(e) { - return new ADBE_JSConsole(e); - } - static ADBE_JSDebugger(e) { - return new ADBE_JSDebugger(e); - } - static addSilentPrint(e) { - return new AddSilentPrint(e); - } - static addViewerPreferences(e) { - return new AddViewerPreferences(e); - } - static adjustData(e) { - return new AdjustData(e); - } - static adobeExtensionLevel(e) { - return new AdobeExtensionLevel(e); - } - static agent(e) { - return new Agent(e); - } - static alwaysEmbed(e) { - return new AlwaysEmbed(e); - } - static amd(e) { - return new Amd(e); - } - static area(e) { - return new Area(e); - } - static attributes(e) { - return new Attributes(e); - } - static autoSave(e) { - return new AutoSave(e); - } - static base(e) { - return new Base(e); - } - static batchOutput(e) { - return new BatchOutput(e); - } - static behaviorOverride(e) { - return new BehaviorOverride(e); - } - static cache(e) { - return new Cache(e); - } - static change(e) { - return new Change(e); - } - static common(e) { - return new Common(e); - } - static compress(e) { - return new Compress(e); - } - static compressLogicalStructure(e) { - return new CompressLogicalStructure(e); - } - static compressObjectStream(e) { - return new CompressObjectStream(e); - } - static compression(e) { - return new Compression(e); - } - static config(e) { - return new Config(e); - } - static conformance(e) { - return new Conformance(e); - } - static contentCopy(e) { - return new ContentCopy(e); - } - static copies(e) { - return new Copies(e); - } - static creator(e) { - return new Creator(e); - } - static currentPage(e) { - return new CurrentPage(e); - } - static data(e) { - return new Data(e); - } - static debug(e) { - return new Debug(e); - } - static defaultTypeface(e) { - return new DefaultTypeface(e); - } - static destination(e) { - return new Destination(e); - } - static documentAssembly(e) { - return new DocumentAssembly(e); - } - static driver(e) { - return new Driver(e); - } - static duplexOption(e) { - return new DuplexOption(e); - } - static dynamicRender(e) { - return new DynamicRender(e); - } - static embed(e) { - return new Embed(e); - } - static encrypt(e) { - return new Encrypt(e); - } - static encryption(e) { - return new Encryption(e); - } - static encryptionLevel(e) { - return new EncryptionLevel(e); - } - static enforce(e) { - return new Enforce(e); - } - static equate(e) { - return new Equate(e); - } - static equateRange(e) { - return new EquateRange(e); - } - static exclude(e) { - return new Exclude(e); - } - static excludeNS(e) { - return new ExcludeNS(e); - } - static flipLabel(e) { - return new FlipLabel(e); - } - static fontInfo(e) { - return new FontInfo(e); - } - static formFieldFilling(e) { - return new FormFieldFilling(e); - } - static groupParent(e) { - return new GroupParent(e); - } - static ifEmpty(e) { - return new IfEmpty(e); - } - static includeXDPContent(e) { - return new IncludeXDPContent(e); - } - static incrementalLoad(e) { - return new IncrementalLoad(e); - } - static incrementalMerge(e) { - return new IncrementalMerge(e); - } - static interactive(e) { - return new Interactive(e); - } - static jog(e) { - return new Jog(e); - } - static labelPrinter(e) { - return new LabelPrinter(e); - } - static layout(e) { - return new Layout(e); - } - static level(e) { - return new Level(e); - } - static linearized(e) { - return new Linearized(e); - } - static locale(e) { - return new Locale(e); - } - static localeSet(e) { - return new LocaleSet(e); - } - static log(e) { - return new Log(e); - } - static map(e) { - return new MapElement(e); - } - static mediumInfo(e) { - return new MediumInfo(e); - } - static message(e) { - return new Message(e); - } - static messaging(e) { - return new Messaging(e); - } - static mode(e) { - return new Mode(e); - } - static modifyAnnots(e) { - return new ModifyAnnots(e); - } - static msgId(e) { - return new MsgId(e); - } - static nameAttr(e) { - return new NameAttr(e); - } - static neverEmbed(e) { - return new NeverEmbed(e); - } - static numberOfCopies(e) { - return new NumberOfCopies(e); - } - static openAction(e) { - return new OpenAction(e); - } - static output(e) { - return new Output(e); - } - static outputBin(e) { - return new OutputBin(e); - } - static outputXSL(e) { - return new OutputXSL(e); - } - static overprint(e) { - return new Overprint(e); - } - static packets(e) { - return new Packets(e); - } - static pageOffset(e) { - return new PageOffset(e); - } - static pageRange(e) { - return new PageRange(e); - } - static pagination(e) { - return new Pagination(e); - } - static paginationOverride(e) { - return new PaginationOverride(e); - } - static part(e) { - return new Part(e); - } - static pcl(e) { - return new Pcl(e); - } - static pdf(e) { - return new Pdf(e); - } - static pdfa(e) { - return new Pdfa(e); - } - static permissions(e) { - return new Permissions(e); - } - static pickTrayByPDFSize(e) { - return new PickTrayByPDFSize(e); - } - static picture(e) { - return new Picture(e); - } - static plaintextMetadata(e) { - return new PlaintextMetadata(e); - } - static presence(e) { - return new Presence(e); - } - static present(e) { - return new Present(e); - } - static print(e) { - return new Print(e); - } - static printHighQuality(e) { - return new PrintHighQuality(e); - } - static printScaling(e) { - return new PrintScaling(e); - } - static printerName(e) { - return new PrinterName(e); - } - static producer(e) { - return new Producer(e); - } - static ps(e) { - return new Ps(e); - } - static range(e) { - return new Range(e); - } - static record(e) { - return new Record(e); - } - static relevant(e) { - return new Relevant(e); - } - static rename(e) { - return new Rename(e); - } - static renderPolicy(e) { - return new RenderPolicy(e); - } - static runScripts(e) { - return new RunScripts(e); - } - static script(e) { - return new Script(e); - } - static scriptModel(e) { - return new ScriptModel(e); - } - static severity(e) { - return new Severity(e); - } - static silentPrint(e) { - return new SilentPrint(e); - } - static staple(e) { - return new Staple(e); - } - static startNode(e) { - return new StartNode(e); - } - static startPage(e) { - return new StartPage(e); - } - static submitFormat(e) { - return new SubmitFormat(e); - } - static submitUrl(e) { - return new SubmitUrl(e); - } - static subsetBelow(e) { - return new SubsetBelow(e); - } - static suppressBanner(e) { - return new SuppressBanner(e); - } - static tagged(e) { - return new Tagged(e); - } - static template(e) { - return new Template(e); - } - static templateCache(e) { - return new TemplateCache(e); - } - static threshold(e) { - return new Threshold(e); - } - static to(e) { - return new To(e); - } - static trace(e) { - return new Trace(e); - } - static transform(e) { - return new Transform(e); - } - static type(e) { - return new Type(e); - } - static uri(e) { - return new Uri(e); - } - static validate(e) { - return new Validate(e); - } - static validateApprovalSignatures(e) { - return new ValidateApprovalSignatures(e); - } - static validationMessaging(e) { - return new ValidationMessaging(e); - } - static version(e) { - return new Version(e); - } - static versionControl(e) { - return new VersionControl(e); - } - static viewerPreferences(e) { - return new ViewerPreferences(e); - } - static webClient(e) { - return new WebClient(e); - } - static whitespace(e) { - return new Whitespace(e); - } - static window(e) { - return new Window(e); - } - static xdc(e) { - return new Xdc(e); - } - static xdp(e) { - return new Xdp(e); - } - static xsl(e) { - return new Xsl(e); - } - static zpl(e) { - return new Zpl(e); - } - } - t.ConfigNamespace = ConfigNamespace; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.ConnectionSetNamespace = void 0; - var r = a(81), - n = a(87); - const i = r.NamespaceIds.connectionSet.id; - class ConnectionSet extends n.XFAObject { - constructor(e) { - super(i, "connectionSet", !0); - this.wsdlConnection = new n.XFAObjectArray(); - this.xmlConnection = new n.XFAObjectArray(); - this.xsdConnection = new n.XFAObjectArray(); - } - } - class EffectiveInputPolicy extends n.XFAObject { - constructor(e) { - super(i, "effectiveInputPolicy"); - this.id = e.id || ""; - this.name = e.name || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - } - class EffectiveOutputPolicy extends n.XFAObject { - constructor(e) { - super(i, "effectiveOutputPolicy"); - this.id = e.id || ""; - this.name = e.name || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - } - class Operation extends n.StringObject { - constructor(e) { - super(i, "operation"); - this.id = e.id || ""; - this.input = e.input || ""; - this.name = e.name || ""; - this.output = e.output || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - } - class RootElement extends n.StringObject { - constructor(e) { - super(i, "rootElement"); - this.id = e.id || ""; - this.name = e.name || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - } - class SoapAction extends n.StringObject { - constructor(e) { - super(i, "soapAction"); - this.id = e.id || ""; - this.name = e.name || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - } - class SoapAddress extends n.StringObject { - constructor(e) { - super(i, "soapAddress"); - this.id = e.id || ""; - this.name = e.name || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - } - class Uri extends n.StringObject { - constructor(e) { - super(i, "uri"); - this.id = e.id || ""; - this.name = e.name || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - } - class WsdlAddress extends n.StringObject { - constructor(e) { - super(i, "wsdlAddress"); - this.id = e.id || ""; - this.name = e.name || ""; - this.use = e.use || ""; - this.usehref = e.usehref || ""; - } - } - class WsdlConnection extends n.XFAObject { - constructor(e) { - super(i, "wsdlConnection", !0); - this.dataDescription = e.dataDescription || ""; - this.name = e.name || ""; - this.effectiveInputPolicy = null; - this.effectiveOutputPolicy = null; - this.operation = null; - this.soapAction = null; - this.soapAddress = null; - this.wsdlAddress = null; - } - } - class XmlConnection extends n.XFAObject { - constructor(e) { - super(i, "xmlConnection", !0); - this.dataDescription = e.dataDescription || ""; - this.name = e.name || ""; - this.uri = null; - } - } - class XsdConnection extends n.XFAObject { - constructor(e) { - super(i, "xsdConnection", !0); - this.dataDescription = e.dataDescription || ""; - this.name = e.name || ""; - this.rootElement = null; - this.uri = null; - } - } - class ConnectionSetNamespace { - static [r.$buildXFAObject](e, t) { - if (ConnectionSetNamespace.hasOwnProperty(e)) - return ConnectionSetNamespace[e](t); - } - static connectionSet(e) { - return new ConnectionSet(e); - } - static effectiveInputPolicy(e) { - return new EffectiveInputPolicy(e); - } - static effectiveOutputPolicy(e) { - return new EffectiveOutputPolicy(e); - } - static operation(e) { - return new Operation(e); - } - static rootElement(e) { - return new RootElement(e); - } - static soapAction(e) { - return new SoapAction(e); - } - static soapAddress(e) { - return new SoapAddress(e); - } - static uri(e) { - return new Uri(e); - } - static wsdlAddress(e) { - return new WsdlAddress(e); - } - static wsdlConnection(e) { - return new WsdlConnection(e); - } - static xmlConnection(e) { - return new XmlConnection(e); - } - static xsdConnection(e) { - return new XsdConnection(e); - } - } - t.ConnectionSetNamespace = ConnectionSetNamespace; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.DatasetsNamespace = void 0; - var r = a(78), - n = a(81), - i = a(87); - const s = n.NamespaceIds.datasets.id; - class Data extends i.XmlObject { - constructor(e) { - super(s, "data", e); - } - [r.$isNsAgnostic]() { - return !0; - } - } - class Datasets extends i.XFAObject { - constructor(e) { - super(s, "datasets", !0); - this.data = null; - this.Signature = null; - } - [r.$onChild](e) { - const t = e[r.$nodeName]; - (("data" === t && e[r.$namespaceId] === s) || - ("Signature" === t && - e[r.$namespaceId] === n.NamespaceIds.signature.id)) && - (this[t] = e); - this[r.$appendChild](e); - } - } - class DatasetsNamespace { - static [n.$buildXFAObject](e, t) { - if (DatasetsNamespace.hasOwnProperty(e)) - return DatasetsNamespace[e](t); - } - static datasets(e) { - return new Datasets(e); - } - static data(e) { - return new Data(e); - } - } - t.DatasetsNamespace = DatasetsNamespace; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.LocaleSetNamespace = void 0; - var r = a(81), - n = a(87), - i = a(84); - const s = r.NamespaceIds.localeSet.id; - class CalendarSymbols extends n.XFAObject { - constructor(e) { - super(s, "calendarSymbols", !0); - this.name = "gregorian"; - this.dayNames = new n.XFAObjectArray(2); - this.eraNames = null; - this.meridiemNames = null; - this.monthNames = new n.XFAObjectArray(2); - } - } - class CurrencySymbol extends n.StringObject { - constructor(e) { - super(s, "currencySymbol"); - this.name = (0, i.getStringOption)(e.name, [ - "symbol", - "isoname", - "decimal", - ]); - } - } - class CurrencySymbols extends n.XFAObject { - constructor(e) { - super(s, "currencySymbols", !0); - this.currencySymbol = new n.XFAObjectArray(3); - } - } - class DatePattern extends n.StringObject { - constructor(e) { - super(s, "datePattern"); - this.name = (0, i.getStringOption)(e.name, [ - "full", - "long", - "med", - "short", - ]); - } - } - class DatePatterns extends n.XFAObject { - constructor(e) { - super(s, "datePatterns", !0); - this.datePattern = new n.XFAObjectArray(4); - } - } - class DateTimeSymbols extends n.ContentObject { - constructor(e) { - super(s, "dateTimeSymbols"); - } - } - class Day extends n.StringObject { - constructor(e) { - super(s, "day"); - } - } - class DayNames extends n.XFAObject { - constructor(e) { - super(s, "dayNames", !0); - this.abbr = (0, i.getInteger)({ - data: e.abbr, - defaultValue: 0, - validate: (e) => 1 === e, - }); - this.day = new n.XFAObjectArray(7); - } - } - class Era extends n.StringObject { - constructor(e) { - super(s, "era"); - } - } - class EraNames extends n.XFAObject { - constructor(e) { - super(s, "eraNames", !0); - this.era = new n.XFAObjectArray(2); - } - } - class Locale extends n.XFAObject { - constructor(e) { - super(s, "locale", !0); - this.desc = e.desc || ""; - this.name = "isoname"; - this.calendarSymbols = null; - this.currencySymbols = null; - this.datePatterns = null; - this.dateTimeSymbols = null; - this.numberPatterns = null; - this.numberSymbols = null; - this.timePatterns = null; - this.typeFaces = null; - } - } - class LocaleSet extends n.XFAObject { - constructor(e) { - super(s, "localeSet", !0); - this.locale = new n.XFAObjectArray(); - } - } - class Meridiem extends n.StringObject { - constructor(e) { - super(s, "meridiem"); - } - } - class MeridiemNames extends n.XFAObject { - constructor(e) { - super(s, "meridiemNames", !0); - this.meridiem = new n.XFAObjectArray(2); - } - } - class Month extends n.StringObject { - constructor(e) { - super(s, "month"); - } - } - class MonthNames extends n.XFAObject { - constructor(e) { - super(s, "monthNames", !0); - this.abbr = (0, i.getInteger)({ - data: e.abbr, - defaultValue: 0, - validate: (e) => 1 === e, - }); - this.month = new n.XFAObjectArray(12); - } - } - class NumberPattern extends n.StringObject { - constructor(e) { - super(s, "numberPattern"); - this.name = (0, i.getStringOption)(e.name, [ - "full", - "long", - "med", - "short", - ]); - } - } - class NumberPatterns extends n.XFAObject { - constructor(e) { - super(s, "numberPatterns", !0); - this.numberPattern = new n.XFAObjectArray(4); - } - } - class NumberSymbol extends n.StringObject { - constructor(e) { - super(s, "numberSymbol"); - this.name = (0, i.getStringOption)(e.name, [ - "decimal", - "grouping", - "percent", - "minus", - "zero", - ]); - } - } - class NumberSymbols extends n.XFAObject { - constructor(e) { - super(s, "numberSymbols", !0); - this.numberSymbol = new n.XFAObjectArray(5); - } - } - class TimePattern extends n.StringObject { - constructor(e) { - super(s, "timePattern"); - this.name = (0, i.getStringOption)(e.name, [ - "full", - "long", - "med", - "short", - ]); - } - } - class TimePatterns extends n.XFAObject { - constructor(e) { - super(s, "timePatterns", !0); - this.timePattern = new n.XFAObjectArray(4); - } - } - class TypeFace extends n.XFAObject { - constructor(e) { - super(s, "typeFace", !0); - this.name = "" | e.name; - } - } - class TypeFaces extends n.XFAObject { - constructor(e) { - super(s, "typeFaces", !0); - this.typeFace = new n.XFAObjectArray(); - } - } - class LocaleSetNamespace { - static [r.$buildXFAObject](e, t) { - if (LocaleSetNamespace.hasOwnProperty(e)) - return LocaleSetNamespace[e](t); - } - static calendarSymbols(e) { - return new CalendarSymbols(e); - } - static currencySymbol(e) { - return new CurrencySymbol(e); - } - static currencySymbols(e) { - return new CurrencySymbols(e); - } - static datePattern(e) { - return new DatePattern(e); - } - static datePatterns(e) { - return new DatePatterns(e); - } - static dateTimeSymbols(e) { - return new DateTimeSymbols(e); - } - static day(e) { - return new Day(e); - } - static dayNames(e) { - return new DayNames(e); - } - static era(e) { - return new Era(e); - } - static eraNames(e) { - return new EraNames(e); - } - static locale(e) { - return new Locale(e); - } - static localeSet(e) { - return new LocaleSet(e); - } - static meridiem(e) { - return new Meridiem(e); - } - static meridiemNames(e) { - return new MeridiemNames(e); - } - static month(e) { - return new Month(e); - } - static monthNames(e) { - return new MonthNames(e); - } - static numberPattern(e) { - return new NumberPattern(e); - } - static numberPatterns(e) { - return new NumberPatterns(e); - } - static numberSymbol(e) { - return new NumberSymbol(e); - } - static numberSymbols(e) { - return new NumberSymbols(e); - } - static timePattern(e) { - return new TimePattern(e); - } - static timePatterns(e) { - return new TimePatterns(e); - } - static typeFace(e) { - return new TypeFace(e); - } - static typeFaces(e) { - return new TypeFaces(e); - } - } - t.LocaleSetNamespace = LocaleSetNamespace; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.SignatureNamespace = void 0; - var r = a(81), - n = a(87); - const i = r.NamespaceIds.signature.id; - class Signature extends n.XFAObject { - constructor(e) { - super(i, "signature", !0); - } - } - class SignatureNamespace { - static [r.$buildXFAObject](e, t) { - if (SignatureNamespace.hasOwnProperty(e)) - return SignatureNamespace[e](t); - } - static signature(e) { - return new Signature(e); - } - } - t.SignatureNamespace = SignatureNamespace; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.StylesheetNamespace = void 0; - var r = a(81), - n = a(87); - const i = r.NamespaceIds.stylesheet.id; - class Stylesheet extends n.XFAObject { - constructor(e) { - super(i, "stylesheet", !0); - } - } - class StylesheetNamespace { - static [r.$buildXFAObject](e, t) { - if (StylesheetNamespace.hasOwnProperty(e)) - return StylesheetNamespace[e](t); - } - static stylesheet(e) { - return new Stylesheet(e); - } - } - t.StylesheetNamespace = StylesheetNamespace; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.XdpNamespace = void 0; - var r = a(81), - n = a(78), - i = a(87); - const s = r.NamespaceIds.xdp.id; - class Xdp extends i.XFAObject { - constructor(e) { - super(s, "xdp", !0); - this.uuid = e.uuid || ""; - this.timeStamp = e.timeStamp || ""; - this.config = null; - this.connectionSet = null; - this.datasets = null; - this.localeSet = null; - this.stylesheet = new i.XFAObjectArray(); - this.template = null; - } - [n.$onChildCheck](e) { - const t = r.NamespaceIds[e[n.$nodeName]]; - return t && e[n.$namespaceId] === t.id; - } - } - class XdpNamespace { - static [r.$buildXFAObject](e, t) { - if (XdpNamespace.hasOwnProperty(e)) return XdpNamespace[e](t); - } - static xdp(e) { - return new Xdp(e); - } - } - t.XdpNamespace = XdpNamespace; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.XhtmlNamespace = void 0; - var r = a(78), - n = a(81), - i = a(83), - s = a(84), - o = a(87); - const c = n.NamespaceIds.xhtml.id, - l = Symbol(), - h = new Set([ - "color", - "font", - "font-family", - "font-size", - "font-stretch", - "font-style", - "font-weight", - "margin", - "margin-bottom", - "margin-left", - "margin-right", - "margin-top", - "letter-spacing", - "line-height", - "orphans", - "page-break-after", - "page-break-before", - "page-break-inside", - "tab-interval", - "tab-stop", - "text-align", - "text-decoration", - "text-indent", - "vertical-align", - "widows", - "kerning-mode", - "xfa-font-horizontal-scale", - "xfa-font-vertical-scale", - "xfa-spacerun", - "xfa-tab-stops", - ]), - u = new Map([ - ["page-break-after", "breakAfter"], - ["page-break-before", "breakBefore"], - ["page-break-inside", "breakInside"], - ["kerning-mode", (e) => ("none" === e ? "none" : "normal")], - [ - "xfa-font-horizontal-scale", - (e) => - `scaleX(${Math.max(0, Math.min(parseInt(e) / 100)).toFixed(2)})`, - ], - [ - "xfa-font-vertical-scale", - (e) => - `scaleY(${Math.max(0, Math.min(parseInt(e) / 100)).toFixed(2)})`, - ], - ["xfa-spacerun", ""], - ["xfa-tab-stops", ""], - [ - "font-size", - (e, t) => { - e = t.fontSize = (0, s.getMeasurement)(e); - return (0, i.measureToString)(0.99 * e); - }, - ], - [ - "letter-spacing", - (e) => (0, i.measureToString)((0, s.getMeasurement)(e)), - ], - [ - "line-height", - (e) => (0, i.measureToString)((0, s.getMeasurement)(e)), - ], - [ - "margin", - (e) => (0, i.measureToString)((0, s.getMeasurement)(e)), - ], - [ - "margin-bottom", - (e) => (0, i.measureToString)((0, s.getMeasurement)(e)), - ], - [ - "margin-left", - (e) => (0, i.measureToString)((0, s.getMeasurement)(e)), - ], - [ - "margin-right", - (e) => (0, i.measureToString)((0, s.getMeasurement)(e)), - ], - [ - "margin-top", - (e) => (0, i.measureToString)((0, s.getMeasurement)(e)), - ], - [ - "text-indent", - (e) => (0, i.measureToString)((0, s.getMeasurement)(e)), - ], - ["font-family", (e) => e], - [ - "vertical-align", - (e) => (0, i.measureToString)((0, s.getMeasurement)(e)), - ], - ]), - d = /\s+/g, - f = /[\r\n]+/g, - g = /\r\n?/g; - function mapStyle(e, t, a) { - const n = Object.create(null); - if (!e) return n; - const o = Object.create(null); - for (const [t, a] of e.split(";").map((e) => e.split(":", 2))) { - const e = u.get(t); - if ("" === e) continue; - let r = a; - e && (r = "string" == typeof e ? e : e(a, o)); - t.endsWith("scale") - ? (n.transform = n.transform ? `${n[t]} ${r}` : r) - : (n[t.replaceAll(/-([a-zA-Z])/g, (e, t) => t.toUpperCase())] = - r); - } - n.fontFamily && - (0, i.setFontFamily)( - { - typeface: n.fontFamily, - weight: n.fontWeight || "normal", - posture: n.fontStyle || "normal", - size: o.fontSize || 0, - }, - t, - t[r.$globalData].fontFinder, - n, - ); - if ( - a && - n.verticalAlign && - "0px" !== n.verticalAlign && - n.fontSize - ) { - const e = 0.583, - t = 0.333, - a = (0, s.getMeasurement)(n.fontSize); - n.fontSize = (0, i.measureToString)(a * e); - n.verticalAlign = (0, i.measureToString)( - Math.sign((0, s.getMeasurement)(n.verticalAlign)) * a * t, - ); - } - a && - n.fontSize && - (n.fontSize = `calc(${n.fontSize} * var(--scale-factor))`); - (0, i.fixTextIndent)(n); - return n; - } - const p = new Set(["body", "html"]); - class XhtmlObject extends o.XmlObject { - constructor(e, t) { - super(c, t); - this[l] = !1; - this.style = e.style || ""; - } - [r.$clean](e) { - super[r.$clean](e); - this.style = (function checkStyle(e) { - return e.style - ? e.style - .trim() - .split(/\s*;\s*/) - .filter((e) => !!e) - .map((e) => e.split(/\s*:\s*/, 2)) - .filter(([t, a]) => { - "font-family" === t && - e[r.$globalData].usedTypefaces.add(a); - return h.has(t); - }) - .map((e) => e.join(":")) - .join(";") - : ""; - })(this); - } - [r.$acceptWhitespace]() { - return !p.has(this[r.$nodeName]); - } - [r.$onText](e, t = !1) { - if (t) this[l] = !0; - else { - e = e.replaceAll(f, ""); - this.style.includes("xfa-spacerun:yes") || - (e = e.replaceAll(d, " ")); - } - e && (this[r.$content] += e); - } - [r.$pushGlyphs](e, t = !0) { - const a = Object.create(null), - n = { top: NaN, bottom: NaN, left: NaN, right: NaN }; - let i = null; - for (const [e, t] of this.style - .split(";") - .map((e) => e.split(":", 2))) - switch (e) { - case "font-family": - a.typeface = (0, s.stripQuotes)(t); - break; - case "font-size": - a.size = (0, s.getMeasurement)(t); - break; - case "font-weight": - a.weight = t; - break; - case "font-style": - a.posture = t; - break; - case "letter-spacing": - a.letterSpacing = (0, s.getMeasurement)(t); - break; - case "margin": - const e = t - .split(/ \t/) - .map((e) => (0, s.getMeasurement)(e)); - switch (e.length) { - case 1: - n.top = n.bottom = n.left = n.right = e[0]; - break; - case 2: - n.top = n.bottom = e[0]; - n.left = n.right = e[1]; - break; - case 3: - n.top = e[0]; - n.bottom = e[2]; - n.left = n.right = e[1]; - break; - case 4: - n.top = e[0]; - n.left = e[1]; - n.bottom = e[2]; - n.right = e[3]; - } - break; - case "margin-top": - n.top = (0, s.getMeasurement)(t); - break; - case "margin-bottom": - n.bottom = (0, s.getMeasurement)(t); - break; - case "margin-left": - n.left = (0, s.getMeasurement)(t); - break; - case "margin-right": - n.right = (0, s.getMeasurement)(t); - break; - case "line-height": - i = (0, s.getMeasurement)(t); - } - e.pushData(a, n, i); - if (this[r.$content]) e.addString(this[r.$content]); - else - for (const t of this[r.$getChildren]()) - "#text" !== t[r.$nodeName] - ? t[r.$pushGlyphs](e) - : e.addString(t[r.$content]); - t && e.popFont(); - } - [r.$toHTML](e) { - const t = []; - this[r.$extra] = { children: t }; - this[r.$childrenToHTML]({}); - if (0 === t.length && !this[r.$content]) - return s.HTMLResult.EMPTY; - let a; - a = this[l] - ? this[r.$content] - ? this[r.$content].replaceAll(g, "\n") - : void 0 - : this[r.$content] || void 0; - return s.HTMLResult.success({ - name: this[r.$nodeName], - attributes: { - href: this.href, - style: mapStyle(this.style, this, this[l]), - }, - children: t, - value: a, - }); - } - } - class A extends XhtmlObject { - constructor(e) { - super(e, "a"); - this.href = (0, i.fixURL)(e.href) || ""; - } - } - class B extends XhtmlObject { - constructor(e) { - super(e, "b"); - } - [r.$pushGlyphs](e) { - e.pushFont({ weight: "bold" }); - super[r.$pushGlyphs](e); - e.popFont(); - } - } - class Body extends XhtmlObject { - constructor(e) { - super(e, "body"); - } - [r.$toHTML](e) { - const t = super[r.$toHTML](e), - { html: a } = t; - if (!a) return s.HTMLResult.EMPTY; - a.name = "div"; - a.attributes.class = ["xfaRich"]; - return t; - } - } - class Br extends XhtmlObject { - constructor(e) { - super(e, "br"); - } - [r.$text]() { - return "\n"; - } - [r.$pushGlyphs](e) { - e.addString("\n"); - } - [r.$toHTML](e) { - return s.HTMLResult.success({ name: "br" }); - } - } - class Html extends XhtmlObject { - constructor(e) { - super(e, "html"); - } - [r.$toHTML](e) { - const t = []; - this[r.$extra] = { children: t }; - this[r.$childrenToHTML]({}); - if (0 === t.length) - return s.HTMLResult.success({ - name: "div", - attributes: { class: ["xfaRich"], style: {} }, - value: this[r.$content] || "", - }); - if (1 === t.length) { - const e = t[0]; - if (e.attributes?.class.includes("xfaRich")) - return s.HTMLResult.success(e); - } - return s.HTMLResult.success({ - name: "div", - attributes: { class: ["xfaRich"], style: {} }, - children: t, - }); - } - } - class I extends XhtmlObject { - constructor(e) { - super(e, "i"); - } - [r.$pushGlyphs](e) { - e.pushFont({ posture: "italic" }); - super[r.$pushGlyphs](e); - e.popFont(); - } - } - class Li extends XhtmlObject { - constructor(e) { - super(e, "li"); - } - } - class Ol extends XhtmlObject { - constructor(e) { - super(e, "ol"); - } - } - class P extends XhtmlObject { - constructor(e) { - super(e, "p"); - } - [r.$pushGlyphs](e) { - super[r.$pushGlyphs](e, !1); - e.addString("\n"); - e.addPara(); - e.popFont(); - } - [r.$text]() { - return this[r.$getParent]()[r.$getChildren]().at(-1) === this - ? super[r.$text]() - : super[r.$text]() + "\n"; - } - } - class Span extends XhtmlObject { - constructor(e) { - super(e, "span"); - } - } - class Sub extends XhtmlObject { - constructor(e) { - super(e, "sub"); - } - } - class Sup extends XhtmlObject { - constructor(e) { - super(e, "sup"); - } - } - class Ul extends XhtmlObject { - constructor(e) { - super(e, "ul"); - } - } - class XhtmlNamespace { - static [n.$buildXFAObject](e, t) { - if (XhtmlNamespace.hasOwnProperty(e)) return XhtmlNamespace[e](t); - } - static a(e) { - return new A(e); - } - static b(e) { - return new B(e); - } - static body(e) { - return new Body(e); - } - static br(e) { - return new Br(e); - } - static html(e) { - return new Html(e); - } - static i(e) { - return new I(e); - } - static li(e) { - return new Li(e); - } - static ol(e) { - return new Ol(e); - } - static p(e) { - return new P(e); - } - static span(e) { - return new Span(e); - } - static sub(e) { - return new Sub(e); - } - static sup(e) { - return new Sup(e); - } - static ul(e) { - return new Ul(e); - } - } - t.XhtmlNamespace = XhtmlNamespace; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.UnknownNamespace = void 0; - var r = a(81), - n = a(87); - class UnknownNamespace { - constructor(e) { - this.namespaceId = e; - } - [r.$buildXFAObject](e, t) { - return new n.XmlObject(this.namespaceId, e, t); - } - } - t.UnknownNamespace = UnknownNamespace; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.DatasetReader = void 0; - var r = a(2), - n = a(3), - i = a(71); - function decodeString(e) { - try { - return (0, r.stringToUTF8String)(e); - } catch (t) { - (0, r.warn)(`UTF-8 decoding failed: "${t}".`); - return e; - } - } - class DatasetXMLParser extends i.SimpleXMLParser { - constructor(e) { - super(e); - this.node = null; - } - onEndElement(e) { - const t = super.onEndElement(e); - if (t && "xfa:datasets" === e) { - this.node = t; - throw new Error("Aborting DatasetXMLParser."); - } - } - } - t.DatasetReader = class DatasetReader { - constructor(e) { - if (e.datasets) - this.node = new i.SimpleXMLParser({ - hasAttributes: !0, - }).parseFromString(e.datasets).documentElement; - else { - const t = new DatasetXMLParser({ hasAttributes: !0 }); - try { - t.parseFromString(e["xdp:xdp"]); - } catch {} - this.node = t.node; - } - } - getValue(e) { - if (!this.node || !e) return ""; - const t = this.node.searchNode((0, n.parseXFAPath)(e), 0); - if (!t) return ""; - const a = t.firstChild; - return "value" === a?.nodeName - ? t.children.map((e) => decodeString(e.textContent)) - : decodeString(t.textContent); - } - }; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.XRef = void 0; - var r = a(2), - n = a(4), - i = a(16), - s = a(3), - o = a(5), - c = a(74); - t.XRef = class XRef { - #B = null; - constructor(e, t) { - this.stream = e; - this.pdfManager = t; - this.entries = []; - this._xrefStms = new Set(); - this._cacheMap = new Map(); - this._pendingRefs = new n.RefSet(); - this._newPersistentRefNum = null; - this._newTemporaryRefNum = null; - } - getNewPersistentRef(e) { - null === this._newPersistentRefNum && - (this._newPersistentRefNum = this.entries.length || 1); - const t = this._newPersistentRefNum++; - this._cacheMap.set(t, e); - return n.Ref.get(t, 0); - } - getNewTemporaryRef() { - null === this._newTemporaryRefNum && - (this._newTemporaryRefNum = this.entries.length || 1); - return n.Ref.get(this._newTemporaryRefNum++, 0); - } - resetNewTemporaryRef() { - this._newTemporaryRefNum = null; - } - setStartXRef(e) { - this.startXRefQueue = [e]; - } - parse(e = !1) { - let t, a, i; - if (e) { - (0, r.warn)("Indexing all PDF objects"); - t = this.indexObjects(); - } else t = this.readXRef(); - t.assignXref(this); - this.trailer = t; - try { - a = t.get("Encrypt"); - } catch (e) { - if (e instanceof s.MissingDataException) throw e; - (0, r.warn)( - `XRef.parse - Invalid "Encrypt" reference: "${e}".`, - ); - } - if (a instanceof n.Dict) { - const e = t.get("ID"), - r = e?.length ? e[0] : ""; - a.suppressEncryption = !0; - this.encrypt = new c.CipherTransformFactory( - a, - r, - this.pdfManager.password, - ); - } - try { - i = t.get("Root"); - } catch (e) { - if (e instanceof s.MissingDataException) throw e; - (0, r.warn)(`XRef.parse - Invalid "Root" reference: "${e}".`); - } - if (i instanceof n.Dict) - try { - if (i.get("Pages") instanceof n.Dict) { - this.root = i; - return; - } - } catch (e) { - if (e instanceof s.MissingDataException) throw e; - (0, r.warn)( - `XRef.parse - Invalid "Pages" reference: "${e}".`, - ); - } - if (!e) throw new s.XRefParseException(); - throw new r.InvalidPDFException("Invalid Root reference."); - } - processXRefTable(e) { - "tableState" in this || - (this.tableState = { - entryNum: 0, - streamPos: e.lexer.stream.pos, - parserBuf1: e.buf1, - parserBuf2: e.buf2, - }); - const t = this.readXRefTable(e); - if (!(0, n.isCmd)(t, "trailer")) - throw new r.FormatError( - "Invalid XRef table: could not find trailer dictionary", - ); - let a = e.getObj(); - a instanceof n.Dict || !a.dict || (a = a.dict); - if (!(a instanceof n.Dict)) - throw new r.FormatError( - "Invalid XRef table: could not parse trailer dictionary", - ); - delete this.tableState; - return a; - } - readXRefTable(e) { - const t = e.lexer.stream, - a = this.tableState; - t.pos = a.streamPos; - e.buf1 = a.parserBuf1; - e.buf2 = a.parserBuf2; - let i; - for (;;) { - if (!("firstEntryNum" in a) || !("entryCount" in a)) { - if ((0, n.isCmd)((i = e.getObj()), "trailer")) break; - a.firstEntryNum = i; - a.entryCount = e.getObj(); - } - let s = a.firstEntryNum; - const o = a.entryCount; - if (!Number.isInteger(s) || !Number.isInteger(o)) - throw new r.FormatError( - "Invalid XRef table: wrong types in subsection header", - ); - for (let i = a.entryNum; i < o; i++) { - a.streamPos = t.pos; - a.entryNum = i; - a.parserBuf1 = e.buf1; - a.parserBuf2 = e.buf2; - const c = {}; - c.offset = e.getObj(); - c.gen = e.getObj(); - const l = e.getObj(); - if (l instanceof n.Cmd) - switch (l.cmd) { - case "f": - c.free = !0; - break; - case "n": - c.uncompressed = !0; - } - if ( - !Number.isInteger(c.offset) || - !Number.isInteger(c.gen) || - (!c.free && !c.uncompressed) - ) - throw new r.FormatError( - `Invalid entry in XRef subsection: ${s}, ${o}`, - ); - 0 === i && c.free && 1 === s && (s = 0); - this.entries[i + s] || (this.entries[i + s] = c); - } - a.entryNum = 0; - a.streamPos = t.pos; - a.parserBuf1 = e.buf1; - a.parserBuf2 = e.buf2; - delete a.firstEntryNum; - delete a.entryCount; - } - if (this.entries[0] && !this.entries[0].free) - throw new r.FormatError( - "Invalid XRef table: unexpected first object", - ); - return i; - } - processXRefStream(e) { - if (!("streamState" in this)) { - const t = e.dict, - a = t.get("W"); - let r = t.get("Index"); - r || (r = [0, t.get("Size")]); - this.streamState = { - entryRanges: r, - byteWidths: a, - entryNum: 0, - streamPos: e.pos, - }; - } - this.readXRefStream(e); - delete this.streamState; - return e.dict; - } - readXRefStream(e) { - const t = this.streamState; - e.pos = t.streamPos; - const [a, n, i] = t.byteWidths, - s = t.entryRanges; - for (; s.length > 0; ) { - const [o, c] = s; - if (!Number.isInteger(o) || !Number.isInteger(c)) - throw new r.FormatError( - `Invalid XRef range fields: ${o}, ${c}`, - ); - if ( - !Number.isInteger(a) || - !Number.isInteger(n) || - !Number.isInteger(i) - ) - throw new r.FormatError( - `Invalid XRef entry fields length: ${o}, ${c}`, - ); - for (let s = t.entryNum; s < c; ++s) { - t.entryNum = s; - t.streamPos = e.pos; - let c = 0, - l = 0, - h = 0; - for (let t = 0; t < a; ++t) { - const t = e.getByte(); - if (-1 === t) - throw new r.FormatError( - "Invalid XRef byteWidths 'type'.", - ); - c = (c << 8) | t; - } - 0 === a && (c = 1); - for (let t = 0; t < n; ++t) { - const t = e.getByte(); - if (-1 === t) - throw new r.FormatError( - "Invalid XRef byteWidths 'offset'.", - ); - l = (l << 8) | t; - } - for (let t = 0; t < i; ++t) { - const t = e.getByte(); - if (-1 === t) - throw new r.FormatError( - "Invalid XRef byteWidths 'generation'.", - ); - h = (h << 8) | t; - } - const u = {}; - u.offset = l; - u.gen = h; - switch (c) { - case 0: - u.free = !0; - break; - case 1: - u.uncompressed = !0; - break; - case 2: - break; - default: - throw new r.FormatError(`Invalid XRef entry type: ${c}`); - } - this.entries[o + s] || (this.entries[o + s] = u); - } - t.entryNum = 0; - t.streamPos = e.pos; - s.splice(0, 2); - } - } - indexObjects() { - function readToken(e, t) { - let a = "", - r = e[t]; - for ( - ; - 10 !== r && 13 !== r && 60 !== r && !(++t >= e.length); - - ) { - a += String.fromCharCode(r); - r = e[t]; - } - return a; - } - function skipUntil(e, t, a) { - const r = a.length, - n = e.length; - let i = 0; - for (; t < n; ) { - let n = 0; - for (; n < r && e[t + n] === a[n]; ) ++n; - if (n >= r) break; - t++; - i++; - } - return i; - } - const e = /\b(endobj|\d+\s+\d+\s+obj|xref|trailer\s*<<)\b/g, - t = /\b(startxref|\d+\s+\d+\s+obj)\b/g, - a = /^(\d+)\s+(\d+)\s+obj\b/, - o = new Uint8Array([116, 114, 97, 105, 108, 101, 114]), - c = new Uint8Array([ - 115, 116, 97, 114, 116, 120, 114, 101, 102, - ]), - l = new Uint8Array([47, 88, 82, 101, 102]); - this.entries.length = 0; - this._cacheMap.clear(); - const h = this.stream; - h.pos = 0; - const u = h.getBytes(), - d = (0, r.bytesToString)(u), - f = u.length; - let g = h.start; - const p = [], - m = []; - for (; g < f; ) { - let n = u[g]; - if (9 === n || 10 === n || 13 === n || 32 === n) { - ++g; - continue; - } - if (37 === n) { - do { - ++g; - if (g >= f) break; - n = u[g]; - } while (10 !== n && 13 !== n); - continue; - } - const b = readToken(u, g); - let y; - if ( - b.startsWith("xref") && - (4 === b.length || /\s/.test(b[4])) - ) { - g += skipUntil(u, g, o); - p.push(g); - g += skipUntil(u, g, c); - } else if ((y = a.exec(b))) { - const t = 0 | y[1], - a = 0 | y[2], - n = g + b.length; - let o, - c = !1; - if (this.entries[t]) { - if (this.entries[t].gen === a) - try { - new i.Parser({ - lexer: new i.Lexer(h.makeSubStream(n)), - }).getObj(); - c = !0; - } catch (e) { - e instanceof s.ParserEOFException - ? (0, r.warn)( - `indexObjects -- checking object (${b}): "${e}".`, - ) - : (c = !0); - } - } else c = !0; - c && - (this.entries[t] = { - offset: g - h.start, - gen: a, - uncompressed: !0, - }); - e.lastIndex = n; - const p = e.exec(d); - if (p) { - o = e.lastIndex + 1 - g; - if ("endobj" !== p[1]) { - (0, r.warn)( - `indexObjects: Found "${p[1]}" inside of another "obj", caused by missing "endobj" -- trying to recover.`, - ); - o -= p[1].length + 1; - } - } else o = f - g; - const w = u.subarray(g, g + o), - S = skipUntil(w, 0, l); - if (S < o && w[S + 5] < 64) { - m.push(g - h.start); - this._xrefStms.add(g - h.start); - } - g += o; - } else if ( - b.startsWith("trailer") && - (7 === b.length || /\s/.test(b[7])) - ) { - p.push(g); - const e = g + b.length; - let a; - t.lastIndex = e; - const n = t.exec(d); - if (n) { - a = t.lastIndex + 1 - g; - if ("startxref" !== n[1]) { - (0, r.warn)( - `indexObjects: Found "${n[1]}" after "trailer", caused by missing "startxref" -- trying to recover.`, - ); - a -= n[1].length + 1; - } - } else a = f - g; - g += a; - } else g += b.length + 1; - } - for (const e of m) { - this.startXRefQueue.push(e); - this.readXRef(!0); - } - const b = []; - let y, - w, - S = !1; - for (const e of p) { - h.pos = e; - const t = new i.Parser({ - lexer: new i.Lexer(h), - xref: this, - allowStreams: !0, - recoveryMode: !0, - }), - a = t.getObj(); - if (!(0, n.isCmd)(a, "trailer")) continue; - const r = t.getObj(); - if (r instanceof n.Dict) { - b.push(r); - r.has("Encrypt") && (S = !0); - } - } - for (const e of [...b, "genFallback", ...b]) { - if ("genFallback" === e) { - if (!w) break; - this._generationFallback = !0; - continue; - } - let t = !1; - try { - const a = e.get("Root"); - if (!(a instanceof n.Dict)) continue; - const r = a.get("Pages"); - if (!(r instanceof n.Dict)) continue; - const i = r.get("Count"); - Number.isInteger(i) && (t = !0); - } catch (e) { - w = e; - continue; - } - if (t && (!S || e.has("Encrypt")) && e.has("ID")) return e; - y = e; - } - if (y) return y; - if (this.topDict) return this.topDict; - throw new r.InvalidPDFException("Invalid PDF structure."); - } - readXRef(e = !1) { - const t = this.stream, - a = new Set(); - for (; this.startXRefQueue.length; ) { - try { - const e = this.startXRefQueue[0]; - if (a.has(e)) { - (0, r.warn)( - "readXRef - skipping XRef table since it was already parsed.", - ); - this.startXRefQueue.shift(); - continue; - } - a.add(e); - t.pos = e + t.start; - const s = new i.Parser({ - lexer: new i.Lexer(t), - xref: this, - allowStreams: !0, - }); - let c, - l = s.getObj(); - if ((0, n.isCmd)(l, "xref")) { - c = this.processXRefTable(s); - this.topDict || (this.topDict = c); - l = c.get("XRefStm"); - if (Number.isInteger(l) && !this._xrefStms.has(l)) { - this._xrefStms.add(l); - this.startXRefQueue.push(l); - this.#B ??= l; - } - } else { - if (!Number.isInteger(l)) - throw new r.FormatError("Invalid XRef stream header"); - if ( - !( - Number.isInteger(s.getObj()) && - (0, n.isCmd)(s.getObj(), "obj") && - (l = s.getObj()) instanceof o.BaseStream - ) - ) - throw new r.FormatError("Invalid XRef stream"); - c = this.processXRefStream(l); - this.topDict || (this.topDict = c); - if (!c) - throw new r.FormatError("Failed to read XRef stream"); - } - l = c.get("Prev"); - Number.isInteger(l) - ? this.startXRefQueue.push(l) - : l instanceof n.Ref && this.startXRefQueue.push(l.num); - } catch (e) { - if (e instanceof s.MissingDataException) throw e; - (0, r.info)("(while reading XRef): " + e); - } - this.startXRefQueue.shift(); - } - if (this.topDict) return this.topDict; - if (!e) throw new s.XRefParseException(); - } - get lastXRefStreamPos() { - return ( - this.#B ?? - (this._xrefStms.size > 0 ? Math.max(...this._xrefStms) : null) - ); - } - getEntry(e) { - const t = this.entries[e]; - return t && !t.free && t.offset ? t : null; - } - fetchIfRef(e, t = !1) { - return e instanceof n.Ref ? this.fetch(e, t) : e; - } - fetch(e, t = !1) { - if (!(e instanceof n.Ref)) - throw new Error("ref object is not a reference"); - const a = e.num, - i = this._cacheMap.get(a); - if (void 0 !== i) { - i instanceof n.Dict && !i.objId && (i.objId = e.toString()); - return i; - } - let s = this.getEntry(a); - if (null === s) { - this._cacheMap.set(a, s); - return s; - } - if (this._pendingRefs.has(e)) { - this._pendingRefs.remove(e); - (0, r.warn)(`Ignoring circular reference: ${e}.`); - return n.CIRCULAR_REF; - } - this._pendingRefs.put(e); - try { - s = s.uncompressed - ? this.fetchUncompressed(e, s, t) - : this.fetchCompressed(e, s, t); - this._pendingRefs.remove(e); - } catch (t) { - this._pendingRefs.remove(e); - throw t; - } - s instanceof n.Dict - ? (s.objId = e.toString()) - : s instanceof o.BaseStream && (s.dict.objId = e.toString()); - return s; - } - fetchUncompressed(e, t, a = !1) { - const c = e.gen; - let l = e.num; - if (t.gen !== c) { - const i = `Inconsistent generation in XRef: ${e}`; - if (this._generationFallback && t.gen < c) { - (0, r.warn)(i); - return this.fetchUncompressed(n.Ref.get(l, t.gen), t, a); - } - throw new s.XRefEntryException(i); - } - const h = this.stream.makeSubStream(t.offset + this.stream.start), - u = new i.Parser({ - lexer: new i.Lexer(h), - xref: this, - allowStreams: !0, - }), - d = u.getObj(), - f = u.getObj(), - g = u.getObj(); - if (d !== l || f !== c || !(g instanceof n.Cmd)) - throw new s.XRefEntryException( - `Bad (uncompressed) XRef entry: ${e}`, - ); - if ("obj" !== g.cmd) { - if (g.cmd.startsWith("obj")) { - l = parseInt(g.cmd.substring(3), 10); - if (!Number.isNaN(l)) return l; - } - throw new s.XRefEntryException( - `Bad (uncompressed) XRef entry: ${e}`, - ); - } - (t = - this.encrypt && !a - ? u.getObj(this.encrypt.createCipherTransform(l, c)) - : u.getObj()) instanceof o.BaseStream || - this._cacheMap.set(l, t); - return t; - } - fetchCompressed(e, t, a = !1) { - const c = t.offset, - l = this.fetch(n.Ref.get(c, 0)); - if (!(l instanceof o.BaseStream)) - throw new r.FormatError("bad ObjStm stream"); - const h = l.dict.get("First"), - u = l.dict.get("N"); - if (!Number.isInteger(h) || !Number.isInteger(u)) - throw new r.FormatError( - "invalid first and n parameters for ObjStm stream", - ); - let d = new i.Parser({ - lexer: new i.Lexer(l), - xref: this, - allowStreams: !0, - }); - const f = new Array(u), - g = new Array(u); - for (let e = 0; e < u; ++e) { - const t = d.getObj(); - if (!Number.isInteger(t)) - throw new r.FormatError( - `invalid object number in the ObjStm stream: ${t}`, - ); - const a = d.getObj(); - if (!Number.isInteger(a)) - throw new r.FormatError( - `invalid object offset in the ObjStm stream: ${a}`, - ); - f[e] = t; - g[e] = a; - } - const p = (l.start || 0) + h, - m = new Array(u); - for (let e = 0; e < u; ++e) { - const t = e < u - 1 ? g[e + 1] - g[e] : void 0; - if (t < 0) - throw new r.FormatError( - "Invalid offset in the ObjStm stream.", - ); - d = new i.Parser({ - lexer: new i.Lexer(l.makeSubStream(p + g[e], t, l.dict)), - xref: this, - allowStreams: !0, - }); - const a = d.getObj(); - m[e] = a; - if (a instanceof o.BaseStream) continue; - const n = f[e], - s = this.entries[n]; - s && s.offset === c && s.gen === e && this._cacheMap.set(n, a); - } - if (void 0 === (t = m[t.gen])) - throw new s.XRefEntryException( - `Bad (compressed) XRef entry: ${e}`, - ); - return t; - } - async fetchIfRefAsync(e, t) { - return e instanceof n.Ref ? this.fetchAsync(e, t) : e; - } - async fetchAsync(e, t) { - try { - return this.fetch(e, t); - } catch (a) { - if (!(a instanceof s.MissingDataException)) throw a; - await this.pdfManager.requestRange(a.begin, a.end); - return this.fetchAsync(e, t); - } - } - getCatalogObj() { - return this.root; - } - }; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.MessageHandler = void 0; - var r = a(2); - const n = 1, - i = 2, - s = 1, - o = 2, - c = 3, - l = 4, - h = 5, - u = 6, - d = 7, - f = 8; - function wrapReason(e) { - e instanceof Error || - ("object" == typeof e && null !== e) || - (0, r.unreachable)( - 'wrapReason: Expected "reason" to be a (possibly cloned) Error.', - ); - switch (e.name) { - case "AbortException": - return new r.AbortException(e.message); - case "MissingPDFException": - return new r.MissingPDFException(e.message); - case "PasswordException": - return new r.PasswordException(e.message, e.code); - case "UnexpectedResponseException": - return new r.UnexpectedResponseException(e.message, e.status); - case "UnknownErrorException": - return new r.UnknownErrorException(e.message, e.details); - default: - return new r.UnknownErrorException(e.message, e.toString()); - } - } - t.MessageHandler = class MessageHandler { - constructor(e, t, a) { - this.sourceName = e; - this.targetName = t; - this.comObj = a; - this.callbackId = 1; - this.streamId = 1; - this.streamSinks = Object.create(null); - this.streamControllers = Object.create(null); - this.callbackCapabilities = Object.create(null); - this.actionHandler = Object.create(null); - this._onComObjOnMessage = (e) => { - const t = e.data; - if (t.targetName !== this.sourceName) return; - if (t.stream) { - this.#E(t); - return; - } - if (t.callback) { - const e = t.callbackId, - a = this.callbackCapabilities[e]; - if (!a) throw new Error(`Cannot resolve callback ${e}`); - delete this.callbackCapabilities[e]; - if (t.callback === n) a.resolve(t.data); - else { - if (t.callback !== i) - throw new Error("Unexpected callback case"); - a.reject(wrapReason(t.reason)); - } - return; - } - const r = this.actionHandler[t.action]; - if (!r) - throw new Error(`Unknown action from worker: ${t.action}`); - if (t.callbackId) { - const e = this.sourceName, - s = t.sourceName; - new Promise(function (e) { - e(r(t.data)); - }).then( - function (r) { - a.postMessage({ - sourceName: e, - targetName: s, - callback: n, - callbackId: t.callbackId, - data: r, - }); - }, - function (r) { - a.postMessage({ - sourceName: e, - targetName: s, - callback: i, - callbackId: t.callbackId, - reason: wrapReason(r), - }); - }, - ); - } else t.streamId ? this.#N(t) : r(t.data); - }; - a.addEventListener("message", this._onComObjOnMessage); - } - on(e, t) { - const a = this.actionHandler; - if (a[e]) - throw new Error(`There is already an actionName called "${e}"`); - a[e] = t; - } - send(e, t, a) { - this.comObj.postMessage( - { - sourceName: this.sourceName, - targetName: this.targetName, - action: e, - data: t, - }, - a, - ); - } - sendWithPromise(e, t, a) { - const n = this.callbackId++, - i = new r.PromiseCapability(); - this.callbackCapabilities[n] = i; - try { - this.comObj.postMessage( - { - sourceName: this.sourceName, - targetName: this.targetName, - action: e, - callbackId: n, - data: t, - }, - a, - ); - } catch (e) { - i.reject(e); - } - return i.promise; - } - sendWithStream(e, t, a, n) { - const i = this.streamId++, - o = this.sourceName, - c = this.targetName, - l = this.comObj; - return new ReadableStream( - { - start: (a) => { - const s = new r.PromiseCapability(); - this.streamControllers[i] = { - controller: a, - startCall: s, - pullCall: null, - cancelCall: null, - isClosed: !1, - }; - l.postMessage( - { - sourceName: o, - targetName: c, - action: e, - streamId: i, - data: t, - desiredSize: a.desiredSize, - }, - n, - ); - return s.promise; - }, - pull: (e) => { - const t = new r.PromiseCapability(); - this.streamControllers[i].pullCall = t; - l.postMessage({ - sourceName: o, - targetName: c, - stream: u, - streamId: i, - desiredSize: e.desiredSize, - }); - return t.promise; - }, - cancel: (e) => { - (0, r.assert)( - e instanceof Error, - "cancel must have a valid reason", - ); - const t = new r.PromiseCapability(); - this.streamControllers[i].cancelCall = t; - this.streamControllers[i].isClosed = !0; - l.postMessage({ - sourceName: o, - targetName: c, - stream: s, - streamId: i, - reason: wrapReason(e), - }); - return t.promise; - }, - }, - a, - ); - } - #N(e) { - const t = e.streamId, - a = this.sourceName, - n = e.sourceName, - i = this.comObj, - s = this, - o = this.actionHandler[e.action], - u = { - enqueue(e, s = 1, o) { - if (this.isCancelled) return; - const c = this.desiredSize; - this.desiredSize -= s; - if (c > 0 && this.desiredSize <= 0) { - this.sinkCapability = new r.PromiseCapability(); - this.ready = this.sinkCapability.promise; - } - i.postMessage( - { - sourceName: a, - targetName: n, - stream: l, - streamId: t, - chunk: e, - }, - o, - ); - }, - close() { - if (!this.isCancelled) { - this.isCancelled = !0; - i.postMessage({ - sourceName: a, - targetName: n, - stream: c, - streamId: t, - }); - delete s.streamSinks[t]; - } - }, - error(e) { - (0, r.assert)( - e instanceof Error, - "error must have a valid reason", - ); - if (!this.isCancelled) { - this.isCancelled = !0; - i.postMessage({ - sourceName: a, - targetName: n, - stream: h, - streamId: t, - reason: wrapReason(e), - }); - } - }, - sinkCapability: new r.PromiseCapability(), - onPull: null, - onCancel: null, - isCancelled: !1, - desiredSize: e.desiredSize, - ready: null, - }; - u.sinkCapability.resolve(); - u.ready = u.sinkCapability.promise; - this.streamSinks[t] = u; - new Promise(function (t) { - t(o(e.data, u)); - }).then( - function () { - i.postMessage({ - sourceName: a, - targetName: n, - stream: f, - streamId: t, - success: !0, - }); - }, - function (e) { - i.postMessage({ - sourceName: a, - targetName: n, - stream: f, - streamId: t, - reason: wrapReason(e), - }); - }, - ); - } - #E(e) { - const t = e.streamId, - a = this.sourceName, - n = e.sourceName, - i = this.comObj, - g = this.streamControllers[t], - p = this.streamSinks[t]; - switch (e.stream) { - case f: - e.success - ? g.startCall.resolve() - : g.startCall.reject(wrapReason(e.reason)); - break; - case d: - e.success - ? g.pullCall.resolve() - : g.pullCall.reject(wrapReason(e.reason)); - break; - case u: - if (!p) { - i.postMessage({ - sourceName: a, - targetName: n, - stream: d, - streamId: t, - success: !0, - }); - break; - } - p.desiredSize <= 0 && - e.desiredSize > 0 && - p.sinkCapability.resolve(); - p.desiredSize = e.desiredSize; - new Promise(function (e) { - e(p.onPull?.()); - }).then( - function () { - i.postMessage({ - sourceName: a, - targetName: n, - stream: d, - streamId: t, - success: !0, - }); - }, - function (e) { - i.postMessage({ - sourceName: a, - targetName: n, - stream: d, - streamId: t, - reason: wrapReason(e), - }); - }, - ); - break; - case l: - (0, r.assert)(g, "enqueue should have stream controller"); - if (g.isClosed) break; - g.controller.enqueue(e.chunk); - break; - case c: - (0, r.assert)(g, "close should have stream controller"); - if (g.isClosed) break; - g.isClosed = !0; - g.controller.close(); - this.#R(g, t); - break; - case h: - (0, r.assert)(g, "error should have stream controller"); - g.controller.error(wrapReason(e.reason)); - this.#R(g, t); - break; - case o: - e.success - ? g.cancelCall.resolve() - : g.cancelCall.reject(wrapReason(e.reason)); - this.#R(g, t); - break; - case s: - if (!p) break; - new Promise(function (t) { - t(p.onCancel?.(wrapReason(e.reason))); - }).then( - function () { - i.postMessage({ - sourceName: a, - targetName: n, - stream: o, - streamId: t, - success: !0, - }); - }, - function (e) { - i.postMessage({ - sourceName: a, - targetName: n, - stream: o, - streamId: t, - reason: wrapReason(e), - }); - }, - ); - p.sinkCapability.reject(wrapReason(e.reason)); - p.isCancelled = !0; - delete this.streamSinks[t]; - break; - default: - throw new Error("Unexpected stream case"); - } - } - async #R(e, t) { - await Promise.allSettled([ - e.startCall?.promise, - e.pullCall?.promise, - e.cancelCall?.promise, - ]); - delete this.streamControllers[t]; - } - destroy() { - this.comObj.removeEventListener( - "message", - this._onComObjOnMessage, - ); - } - }; - }, - (e, t, a) => { - Object.defineProperty(t, "__esModule", { value: !0 }); - t.PDFWorkerStream = void 0; - var r = a(2); - t.PDFWorkerStream = class PDFWorkerStream { - constructor(e) { - this._msgHandler = e; - this._contentLength = null; - this._fullRequestReader = null; - this._rangeRequestReaders = []; - } - getFullReader() { - (0, r.assert)( - !this._fullRequestReader, - "PDFWorkerStream.getFullReader can only be called once.", - ); - this._fullRequestReader = new PDFWorkerStreamReader( - this._msgHandler, - ); - return this._fullRequestReader; - } - getRangeReader(e, t) { - const a = new PDFWorkerStreamRangeReader(e, t, this._msgHandler); - this._rangeRequestReaders.push(a); - return a; - } - cancelAllRequests(e) { - this._fullRequestReader?.cancel(e); - for (const t of this._rangeRequestReaders.slice(0)) t.cancel(e); - } - }; - class PDFWorkerStreamReader { - constructor(e) { - this._msgHandler = e; - this.onProgress = null; - this._contentLength = null; - this._isRangeSupported = !1; - this._isStreamingSupported = !1; - const t = this._msgHandler.sendWithStream("GetReader"); - this._reader = t.getReader(); - this._headersReady = this._msgHandler - .sendWithPromise("ReaderHeadersReady") - .then((e) => { - this._isStreamingSupported = e.isStreamingSupported; - this._isRangeSupported = e.isRangeSupported; - this._contentLength = e.contentLength; - }); - } - get headersReady() { - return this._headersReady; - } - get contentLength() { - return this._contentLength; - } - get isStreamingSupported() { - return this._isStreamingSupported; - } - get isRangeSupported() { - return this._isRangeSupported; - } - async read() { - const { value: e, done: t } = await this._reader.read(); - return t - ? { value: void 0, done: !0 } - : { value: e.buffer, done: !1 }; - } - cancel(e) { - this._reader.cancel(e); - } - } - class PDFWorkerStreamRangeReader { - constructor(e, t, a) { - this._msgHandler = a; - this.onProgress = null; - const r = this._msgHandler.sendWithStream("GetRangeReader", { - begin: e, - end: t, - }); - this._reader = r.getReader(); - } - get isStreamingSupported() { - return !1; - } - async read() { - const { value: e, done: t } = await this._reader.read(); - return t - ? { value: void 0, done: !0 } - : { value: e.buffer, done: !1 }; - } - cancel(e) { - this._reader.cancel(e); - } - } - }, - ], - t = {}; - function __w_pdfjs_require__(a) { - var r = t[a]; - if (void 0 !== r) return r.exports; - var n = (t[a] = { exports: {} }); - e[a](n, n.exports, __w_pdfjs_require__); - return n.exports; - } - var a = {}; - (() => { - var e = a; - Object.defineProperty(e, "__esModule", { value: !0 }); - Object.defineProperty(e, "WorkerMessageHandler", { - enumerable: !0, - get: function () { - return t.WorkerMessageHandler; - }, - }); - var t = __w_pdfjs_require__(1); - })(); - return a; - })(), -); diff --git a/web-app/public/scripts/pdf.worker.min.mjs b/web-app/public/scripts/pdf.worker.min.mjs new file mode 100644 index 000000000..6628787d3 --- /dev/null +++ b/web-app/public/scripts/pdf.worker.min.mjs @@ -0,0 +1,56810 @@ +/** + * @licstart The following is the entire license notice for the + * JavaScript code in this page + * + * Copyright 2023 Mozilla Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @licend The above is the entire license notice for the + * JavaScript code in this page + */ var e = { + d: (t, i) => { + for (var a in i) + e.o(i, a) && + !e.o(t, a) && + Object.defineProperty(t, a, { enumerable: !0, get: i[a] }); + }, + o: (e, t) => Object.prototype.hasOwnProperty.call(e, t), + }, + __webpack_exports__ = (globalThis.pdfjsWorker = {}); +e.d(__webpack_exports__, { WorkerMessageHandler: () => WorkerMessageHandler }); +const t = !( + "object" != typeof process || + process + "" != "[object process]" || + process.versions.nw || + (process.versions.electron && process.type && "browser" !== process.type) + ), + i = [1, 0, 0, 1, 0, 0], + a = [0.001, 0, 0, 0.001, 0, 0], + s = 1.35, + r = 0.35, + n = 0.25925925925925924, + o = 1, + g = 2, + c = 4, + h = 8, + l = 16, + C = 64, + Q = 256, + E = "pdfjs_internal_editor_", + u = 3, + d = 9, + f = 13, + p = 15, + m = { + PRINT: 4, + MODIFY_CONTENTS: 8, + COPY: 16, + MODIFY_ANNOTATIONS: 32, + FILL_INTERACTIVE_FORMS: 256, + COPY_FOR_ACCESSIBILITY: 512, + ASSEMBLE: 1024, + PRINT_HIGH_QUALITY: 2048, + }, + y = 0, + w = 4, + b = 1, + D = 2, + F = 3, + S = 1, + k = 2, + R = 3, + N = 4, + G = 5, + x = 6, + M = 7, + U = 8, + L = 9, + J = 10, + H = 11, + Y = 12, + v = 13, + K = 14, + T = 15, + q = 16, + O = 17, + W = 20, + X = "Group", + j = "R", + Z = 1, + V = 2, + z = 4, + _ = 16, + $ = 32, + AA = 128, + eA = 512, + tA = 1, + iA = 2, + aA = 4096, + sA = 8192, + rA = 32768, + nA = 65536, + oA = 131072, + gA = 1048576, + IA = 2097152, + cA = 8388608, + hA = 16777216, + lA = 1, + CA = 2, + BA = 3, + QA = 4, + EA = 5, + uA = { + E: "Mouse Enter", + X: "Mouse Exit", + D: "Mouse Down", + U: "Mouse Up", + Fo: "Focus", + Bl: "Blur", + PO: "PageOpen", + PC: "PageClose", + PV: "PageVisible", + PI: "PageInvisible", + K: "Keystroke", + F: "Format", + V: "Validate", + C: "Calculate", + }, + dA = { + WC: "WillClose", + WS: "WillSave", + DS: "DidSave", + WP: "WillPrint", + DP: "DidPrint", + }, + fA = { O: "PageOpen", C: "PageClose" }, + pA = { ERRORS: 0, WARNINGS: 1, INFOS: 5 }, + mA = { NONE: 0, BINARY: 1 }, + yA = 1, + wA = 2, + bA = 3, + DA = 4, + FA = 5, + SA = 6, + kA = 7, + RA = 8, + NA = 9, + GA = 10, + xA = 11, + MA = 12, + UA = 13, + LA = 14, + JA = 15, + HA = 16, + YA = 17, + vA = 18, + KA = 19, + TA = 20, + qA = 21, + OA = 22, + PA = 23, + WA = 24, + XA = 25, + jA = 26, + ZA = 27, + VA = 28, + zA = 29, + _A = 30, + $A = 31, + Ae = 32, + ee = 33, + te = 34, + ie = 35, + ae = 36, + se = 37, + re = 38, + ne = 39, + oe = 40, + ge = 41, + Ie = 42, + ce = 43, + he = 44, + le = 45, + Ce = 46, + Be = 47, + Qe = 48, + Ee = 49, + ue = 50, + de = 51, + fe = 52, + pe = 53, + me = 54, + ye = 55, + we = 56, + be = 57, + De = 58, + Fe = 59, + Se = 60, + ke = 61, + Re = 62, + Ne = 63, + Ge = 64, + xe = 65, + Me = 66, + Ue = 67, + Le = 68, + Je = 69, + He = 70, + Ye = 71, + ve = 72, + Ke = 73, + Te = 74, + qe = 75, + Oe = 76, + Pe = 77, + We = 80, + Xe = 81, + je = 83, + Ze = 84, + Ve = 85, + ze = 86, + _e = 87, + $e = 88, + At = 89, + et = 90, + tt = 91, + it = 1, + at = 2; +let st = pA.WARNINGS; +function getVerbosityLevel() { + return st; +} +function info(e) { + st >= pA.INFOS && console.log(`Info: ${e}`); +} +function warn(e) { + st >= pA.WARNINGS && console.log(`Warning: ${e}`); +} +function unreachable(e) { + throw new Error(e); +} +function assert(e, t) { + e || unreachable(t); +} +function createValidAbsoluteUrl(e, t = null, i = null) { + if (!e) return null; + try { + if (i && "string" == typeof e) { + if (i.addDefaultProtocol && e.startsWith("www.")) { + const t = e.match(/\./g); + t?.length >= 2 && (e = `http://${e}`); + } + if (i.tryConvertEncoding) + try { + e = stringToUTF8String(e); + } catch {} + } + const a = t ? new URL(e, t) : new URL(e); + if ( + (function _isValidProtocol(e) { + switch (e?.protocol) { + case "http:": + case "https:": + case "ftp:": + case "mailto:": + case "tel:": + return !0; + default: + return !1; + } + })(a) + ) + return a; + } catch {} + return null; +} +function shadow(e, t, i, a = !1) { + Object.defineProperty(e, t, { + value: i, + enumerable: !a, + configurable: !0, + writable: !1, + }); + return i; +} +const rt = (function BaseExceptionClosure() { + function BaseException(e, t) { + this.constructor === BaseException && + unreachable("Cannot initialize BaseException."); + this.message = e; + this.name = t; + } + BaseException.prototype = new Error(); + BaseException.constructor = BaseException; + return BaseException; +})(); +class PasswordException extends rt { + constructor(e, t) { + super(e, "PasswordException"); + this.code = t; + } +} +class UnknownErrorException extends rt { + constructor(e, t) { + super(e, "UnknownErrorException"); + this.details = t; + } +} +class InvalidPDFException extends rt { + constructor(e) { + super(e, "InvalidPDFException"); + } +} +class MissingPDFException extends rt { + constructor(e) { + super(e, "MissingPDFException"); + } +} +class UnexpectedResponseException extends rt { + constructor(e, t) { + super(e, "UnexpectedResponseException"); + this.status = t; + } +} +class FormatError extends rt { + constructor(e) { + super(e, "FormatError"); + } +} +class AbortException extends rt { + constructor(e) { + super(e, "AbortException"); + } +} +function bytesToString(e) { + ("object" == typeof e && void 0 !== e?.length) || + unreachable("Invalid argument for bytesToString"); + const t = e.length, + i = 8192; + if (t < i) return String.fromCharCode.apply(null, e); + const a = []; + for (let s = 0; s < t; s += i) { + const r = Math.min(s + i, t), + n = e.subarray(s, r); + a.push(String.fromCharCode.apply(null, n)); + } + return a.join(""); +} +function stringToBytes(e) { + "string" != typeof e && unreachable("Invalid argument for stringToBytes"); + const t = e.length, + i = new Uint8Array(t); + for (let a = 0; a < t; ++a) i[a] = 255 & e.charCodeAt(a); + return i; +} +function string32(e) { + return String.fromCharCode( + (e >> 24) & 255, + (e >> 16) & 255, + (e >> 8) & 255, + 255 & e, + ); +} +function objectSize(e) { + return Object.keys(e).length; +} +class FeatureTest { + static get isLittleEndian() { + return shadow( + this, + "isLittleEndian", + (function isLittleEndian() { + const e = new Uint8Array(4); + e[0] = 1; + return 1 === new Uint32Array(e.buffer, 0, 1)[0]; + })(), + ); + } + static get isEvalSupported() { + return shadow( + this, + "isEvalSupported", + (function isEvalSupported() { + try { + new Function(""); + return !0; + } catch { + return !1; + } + })(), + ); + } + static get isOffscreenCanvasSupported() { + return shadow( + this, + "isOffscreenCanvasSupported", + "undefined" != typeof OffscreenCanvas, + ); + } + static get platform() { + return "undefined" != typeof navigator && + "string" == typeof navigator?.platform + ? shadow(this, "platform", { isMac: navigator.platform.includes("Mac") }) + : shadow(this, "platform", { isMac: !1 }); + } + static get isCSSRoundSupported() { + return shadow( + this, + "isCSSRoundSupported", + globalThis.CSS?.supports?.("width: round(1.5px, 1px)"), + ); + } +} +const nt = Array.from(Array(256).keys(), (e) => + e.toString(16).padStart(2, "0"), +); +class Util { + static makeHexColor(e, t, i) { + return `#${nt[e]}${nt[t]}${nt[i]}`; + } + static scaleMinMax(e, t) { + let i; + if (e[0]) { + if (e[0] < 0) { + i = t[0]; + t[0] = t[2]; + t[2] = i; + } + t[0] *= e[0]; + t[2] *= e[0]; + if (e[3] < 0) { + i = t[1]; + t[1] = t[3]; + t[3] = i; + } + t[1] *= e[3]; + t[3] *= e[3]; + } else { + i = t[0]; + t[0] = t[1]; + t[1] = i; + i = t[2]; + t[2] = t[3]; + t[3] = i; + if (e[1] < 0) { + i = t[1]; + t[1] = t[3]; + t[3] = i; + } + t[1] *= e[1]; + t[3] *= e[1]; + if (e[2] < 0) { + i = t[0]; + t[0] = t[2]; + t[2] = i; + } + t[0] *= e[2]; + t[2] *= e[2]; + } + t[0] += e[4]; + t[1] += e[5]; + t[2] += e[4]; + t[3] += e[5]; + } + static transform(e, t) { + return [ + e[0] * t[0] + e[2] * t[1], + e[1] * t[0] + e[3] * t[1], + e[0] * t[2] + e[2] * t[3], + e[1] * t[2] + e[3] * t[3], + e[0] * t[4] + e[2] * t[5] + e[4], + e[1] * t[4] + e[3] * t[5] + e[5], + ]; + } + static applyTransform(e, t) { + return [e[0] * t[0] + e[1] * t[2] + t[4], e[0] * t[1] + e[1] * t[3] + t[5]]; + } + static applyInverseTransform(e, t) { + const i = t[0] * t[3] - t[1] * t[2]; + return [ + (e[0] * t[3] - e[1] * t[2] + t[2] * t[5] - t[4] * t[3]) / i, + (-e[0] * t[1] + e[1] * t[0] + t[4] * t[1] - t[5] * t[0]) / i, + ]; + } + static getAxialAlignedBoundingBox(e, t) { + const i = this.applyTransform(e, t), + a = this.applyTransform(e.slice(2, 4), t), + s = this.applyTransform([e[0], e[3]], t), + r = this.applyTransform([e[2], e[1]], t); + return [ + Math.min(i[0], a[0], s[0], r[0]), + Math.min(i[1], a[1], s[1], r[1]), + Math.max(i[0], a[0], s[0], r[0]), + Math.max(i[1], a[1], s[1], r[1]), + ]; + } + static inverseTransform(e) { + const t = e[0] * e[3] - e[1] * e[2]; + return [ + e[3] / t, + -e[1] / t, + -e[2] / t, + e[0] / t, + (e[2] * e[5] - e[4] * e[3]) / t, + (e[4] * e[1] - e[5] * e[0]) / t, + ]; + } + static singularValueDecompose2dScale(e) { + const t = [e[0], e[2], e[1], e[3]], + i = e[0] * t[0] + e[1] * t[2], + a = e[0] * t[1] + e[1] * t[3], + s = e[2] * t[0] + e[3] * t[2], + r = e[2] * t[1] + e[3] * t[3], + n = (i + r) / 2, + o = Math.sqrt((i + r) ** 2 - 4 * (i * r - s * a)) / 2, + g = n + o || 1, + c = n - o || 1; + return [Math.sqrt(g), Math.sqrt(c)]; + } + static normalizeRect(e) { + const t = e.slice(0); + if (e[0] > e[2]) { + t[0] = e[2]; + t[2] = e[0]; + } + if (e[1] > e[3]) { + t[1] = e[3]; + t[3] = e[1]; + } + return t; + } + static intersect(e, t) { + const i = Math.max(Math.min(e[0], e[2]), Math.min(t[0], t[2])), + a = Math.min(Math.max(e[0], e[2]), Math.max(t[0], t[2])); + if (i > a) return null; + const s = Math.max(Math.min(e[1], e[3]), Math.min(t[1], t[3])), + r = Math.min(Math.max(e[1], e[3]), Math.max(t[1], t[3])); + return s > r ? null : [i, s, a, r]; + } + static #A(e, t, i, a, s, r, n, o, g, c) { + if (g <= 0 || g >= 1) return; + const h = 1 - g, + l = g * g, + C = l * g, + Q = h * (h * (h * e + 3 * g * t) + 3 * l * i) + C * a, + E = h * (h * (h * s + 3 * g * r) + 3 * l * n) + C * o; + c[0] = Math.min(c[0], Q); + c[1] = Math.min(c[1], E); + c[2] = Math.max(c[2], Q); + c[3] = Math.max(c[3], E); + } + static #e(e, t, i, a, s, r, n, o, g, c, h, l) { + if (Math.abs(g) < 1e-12) { + Math.abs(c) >= 1e-12 && this.#A(e, t, i, a, s, r, n, o, -h / c, l); + return; + } + const C = c ** 2 - 4 * h * g; + if (C < 0) return; + const Q = Math.sqrt(C), + E = 2 * g; + this.#A(e, t, i, a, s, r, n, o, (-c + Q) / E, l); + this.#A(e, t, i, a, s, r, n, o, (-c - Q) / E, l); + } + static bezierBoundingBox(e, t, i, a, s, r, n, o, g) { + if (g) { + g[0] = Math.min(g[0], e, n); + g[1] = Math.min(g[1], t, o); + g[2] = Math.max(g[2], e, n); + g[3] = Math.max(g[3], t, o); + } else g = [Math.min(e, n), Math.min(t, o), Math.max(e, n), Math.max(t, o)]; + this.#e( + e, + i, + s, + n, + t, + a, + r, + o, + 3 * (3 * (i - s) - e + n), + 6 * (e - 2 * i + s), + 3 * (i - e), + g, + ); + this.#e( + e, + i, + s, + n, + t, + a, + r, + o, + 3 * (3 * (a - r) - t + o), + 6 * (t - 2 * a + r), + 3 * (a - t), + g, + ); + return g; + } +} +const ot = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 728, + 711, 710, 729, 733, 731, 730, 732, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 8226, 8224, 8225, 8230, 8212, 8211, 402, 8260, 8249, 8250, 8722, + 8240, 8222, 8220, 8221, 8216, 8217, 8218, 8482, 64257, 64258, 321, 338, 352, + 376, 381, 305, 322, 339, 353, 382, 0, 8364, +]; +function stringToPDFString(e) { + if (e[0] >= "ï") { + let t; + if ("þ" === e[0] && "ÿ" === e[1]) { + t = "utf-16be"; + e.length % 2 == 1 && (e = e.slice(0, -1)); + } else if ("ÿ" === e[0] && "þ" === e[1]) { + t = "utf-16le"; + e.length % 2 == 1 && (e = e.slice(0, -1)); + } else "ï" === e[0] && "»" === e[1] && "¿" === e[2] && (t = "utf-8"); + if (t) + try { + const i = new TextDecoder(t, { fatal: !0 }), + a = stringToBytes(e), + s = i.decode(a); + return s.includes("") ? s.replaceAll(/\x1b[^\x1b]*(?:\x1b|$)/g, "") : s; + } catch (e) { + warn(`stringToPDFString: "${e}".`); + } + } + const t = []; + for (let i = 0, a = e.length; i < a; i++) { + const s = e.charCodeAt(i); + if (27 === s) { + for (; ++i < a && 27 !== e.charCodeAt(i); ); + continue; + } + const r = ot[s]; + t.push(r ? String.fromCharCode(r) : e.charAt(i)); + } + return t.join(""); +} +function stringToUTF8String(e) { + return decodeURIComponent(escape(e)); +} +function utf8StringToString(e) { + return unescape(encodeURIComponent(e)); +} +function isArrayEqual(e, t) { + if (e.length !== t.length) return !1; + for (let i = 0, a = e.length; i < a; i++) if (e[i] !== t[i]) return !1; + return !0; +} +function getModificationDate(e = new Date()) { + return [ + e.getUTCFullYear().toString(), + (e.getUTCMonth() + 1).toString().padStart(2, "0"), + e.getUTCDate().toString().padStart(2, "0"), + e.getUTCHours().toString().padStart(2, "0"), + e.getUTCMinutes().toString().padStart(2, "0"), + e.getUTCSeconds().toString().padStart(2, "0"), + ].join(""); +} +let gt = null, + It = null; +const ct = 0, + ht = 1, + lt = 2, + Ct = 3, + Bt = 4, + Qt = 5, + Et = 6, + ut = 7, + dt = 8, + ft = Symbol("CIRCULAR_REF"), + pt = Symbol("EOF"); +let mt = Object.create(null), + yt = Object.create(null), + wt = Object.create(null); +class Name { + constructor(e) { + this.name = e; + } + static get(e) { + return (yt[e] ||= new Name(e)); + } +} +class Cmd { + constructor(e) { + this.cmd = e; + } + static get(e) { + return (mt[e] ||= new Cmd(e)); + } +} +const bt = function nonSerializableClosure() { + return bt; +}; +class Dict { + constructor(e = null) { + this._map = Object.create(null); + this.xref = e; + this.objId = null; + this.suppressEncryption = !1; + this.__nonSerializable__ = bt; + } + assignXref(e) { + this.xref = e; + } + get size() { + return Object.keys(this._map).length; + } + get(e, t, i) { + let a = this._map[e]; + if (void 0 === a && void 0 !== t) { + a = this._map[t]; + void 0 === a && void 0 !== i && (a = this._map[i]); + } + return a instanceof Ref && this.xref + ? this.xref.fetch(a, this.suppressEncryption) + : a; + } + async getAsync(e, t, i) { + let a = this._map[e]; + if (void 0 === a && void 0 !== t) { + a = this._map[t]; + void 0 === a && void 0 !== i && (a = this._map[i]); + } + return a instanceof Ref && this.xref + ? this.xref.fetchAsync(a, this.suppressEncryption) + : a; + } + getArray(e, t, i) { + let a = this._map[e]; + if (void 0 === a && void 0 !== t) { + a = this._map[t]; + void 0 === a && void 0 !== i && (a = this._map[i]); + } + a instanceof Ref && + this.xref && + (a = this.xref.fetch(a, this.suppressEncryption)); + if (Array.isArray(a)) { + a = a.slice(); + for (let e = 0, t = a.length; e < t; e++) + a[e] instanceof Ref && + this.xref && + (a[e] = this.xref.fetch(a[e], this.suppressEncryption)); + } + return a; + } + getRaw(e) { + return this._map[e]; + } + getKeys() { + return Object.keys(this._map); + } + getRawValues() { + return Object.values(this._map); + } + set(e, t) { + this._map[e] = t; + } + has(e) { + return void 0 !== this._map[e]; + } + forEach(e) { + for (const t in this._map) e(t, this.get(t)); + } + static get empty() { + const e = new Dict(null); + e.set = (e, t) => { + unreachable("Should not call `set` on the empty dictionary."); + }; + return shadow(this, "empty", e); + } + static merge({ xref: e, dictArray: t, mergeSubDicts: i = !1 }) { + const a = new Dict(e), + s = new Map(); + for (const e of t) + if (e instanceof Dict) + for (const [t, a] of Object.entries(e._map)) { + let e = s.get(t); + if (void 0 === e) { + e = []; + s.set(t, e); + } else if (!(i && a instanceof Dict)) continue; + e.push(a); + } + for (const [t, i] of s) { + if (1 === i.length || !(i[0] instanceof Dict)) { + a._map[t] = i[0]; + continue; + } + const s = new Dict(e); + for (const e of i) + for (const [t, i] of Object.entries(e._map)) + void 0 === s._map[t] && (s._map[t] = i); + s.size > 0 && (a._map[t] = s); + } + s.clear(); + return a.size > 0 ? a : Dict.empty; + } + clone() { + const e = new Dict(this.xref); + for (const t of this.getKeys()) e.set(t, this.getRaw(t)); + return e; + } +} +class Ref { + constructor(e, t) { + this.num = e; + this.gen = t; + } + toString() { + return 0 === this.gen ? `${this.num}R` : `${this.num}R${this.gen}`; + } + static fromString(e) { + const t = wt[e]; + if (t) return t; + const i = /^(\d+)R(\d*)$/.exec(e); + return i && "0" !== i[1] + ? (wt[e] = new Ref(parseInt(i[1]), i[2] ? parseInt(i[2]) : 0)) + : null; + } + static get(e, t) { + const i = 0 === t ? `${e}R` : `${e}R${t}`; + return (wt[i] ||= new Ref(e, t)); + } +} +class RefSet { + constructor(e = null) { + this._set = new Set(e?._set); + } + has(e) { + return this._set.has(e.toString()); + } + put(e) { + this._set.add(e.toString()); + } + remove(e) { + this._set.delete(e.toString()); + } + [Symbol.iterator]() { + return this._set.values(); + } + clear() { + this._set.clear(); + } +} +class RefSetCache { + constructor() { + this._map = new Map(); + } + get size() { + return this._map.size; + } + get(e) { + return this._map.get(e.toString()); + } + has(e) { + return this._map.has(e.toString()); + } + put(e, t) { + this._map.set(e.toString(), t); + } + putAlias(e, t) { + this._map.set(e.toString(), this.get(t)); + } + [Symbol.iterator]() { + return this._map.values(); + } + clear() { + this._map.clear(); + } + *items() { + for (const [e, t] of this._map) yield [Ref.fromString(e), t]; + } +} +function isName(e, t) { + return e instanceof Name && (void 0 === t || e.name === t); +} +function isCmd(e, t) { + return e instanceof Cmd && (void 0 === t || e.cmd === t); +} +function isDict(e, t) { + return e instanceof Dict && (void 0 === t || isName(e.get("Type"), t)); +} +function isRefsEqual(e, t) { + return e.num === t.num && e.gen === t.gen; +} +class BaseStream { + constructor() { + this.constructor === BaseStream && + unreachable("Cannot initialize BaseStream."); + } + get length() { + unreachable("Abstract getter `length` accessed"); + } + get isEmpty() { + unreachable("Abstract getter `isEmpty` accessed"); + } + get isDataLoaded() { + return shadow(this, "isDataLoaded", !0); + } + getByte() { + unreachable("Abstract method `getByte` called"); + } + getBytes(e) { + unreachable("Abstract method `getBytes` called"); + } + peekByte() { + const e = this.getByte(); + -1 !== e && this.pos--; + return e; + } + peekBytes(e) { + const t = this.getBytes(e); + this.pos -= t.length; + return t; + } + getUint16() { + const e = this.getByte(), + t = this.getByte(); + return -1 === e || -1 === t ? -1 : (e << 8) + t; + } + getInt32() { + return ( + (this.getByte() << 24) + + (this.getByte() << 16) + + (this.getByte() << 8) + + this.getByte() + ); + } + getByteRange(e, t) { + unreachable("Abstract method `getByteRange` called"); + } + getString(e) { + return bytesToString(this.getBytes(e)); + } + skip(e) { + this.pos += e || 1; + } + reset() { + unreachable("Abstract method `reset` called"); + } + moveStart() { + unreachable("Abstract method `moveStart` called"); + } + makeSubStream(e, t, i = null) { + unreachable("Abstract method `makeSubStream` called"); + } + getBaseStreams() { + return null; + } +} +const Dt = /^[1-9]\.\d$/; +function getLookupTableFactory(e) { + let t; + return function () { + if (e) { + t = Object.create(null); + e(t); + e = null; + } + return t; + }; +} +class MissingDataException extends rt { + constructor(e, t) { + super(`Missing data [${e}, ${t})`, "MissingDataException"); + this.begin = e; + this.end = t; + } +} +class ParserEOFException extends rt { + constructor(e) { + super(e, "ParserEOFException"); + } +} +class XRefEntryException extends rt { + constructor(e) { + super(e, "XRefEntryException"); + } +} +class XRefParseException extends rt { + constructor(e) { + super(e, "XRefParseException"); + } +} +function arrayBuffersToBytes(e) { + const t = e.length; + if (0 === t) return new Uint8Array(0); + if (1 === t) return new Uint8Array(e[0]); + let i = 0; + for (let a = 0; a < t; a++) i += e[a].byteLength; + const a = new Uint8Array(i); + let s = 0; + for (let i = 0; i < t; i++) { + const t = new Uint8Array(e[i]); + a.set(t, s); + s += t.byteLength; + } + return a; +} +function getInheritableProperty({ + dict: e, + key: t, + getArray: i = !1, + stopWhenFound: a = !0, +}) { + let s; + const r = new RefSet(); + for (; e instanceof Dict && (!e.objId || !r.has(e.objId)); ) { + e.objId && r.put(e.objId); + const n = i ? e.getArray(t) : e.get(t); + if (void 0 !== n) { + if (a) return n; + (s ||= []).push(n); + } + e = e.get("Parent"); + } + return s; +} +const Ft = [ + "", + "C", + "CC", + "CCC", + "CD", + "D", + "DC", + "DCC", + "DCCC", + "CM", + "", + "X", + "XX", + "XXX", + "XL", + "L", + "LX", + "LXX", + "LXXX", + "XC", + "", + "I", + "II", + "III", + "IV", + "V", + "VI", + "VII", + "VIII", + "IX", +]; +function toRomanNumerals(e, t = !1) { + assert( + Number.isInteger(e) && e > 0, + "The number should be a positive integer.", + ); + const i = []; + let a; + for (; e >= 1e3; ) { + e -= 1e3; + i.push("M"); + } + a = (e / 100) | 0; + e %= 100; + i.push(Ft[a]); + a = (e / 10) | 0; + e %= 10; + i.push(Ft[10 + a]); + i.push(Ft[20 + e]); + const s = i.join(""); + return t ? s.toLowerCase() : s; +} +function log2(e) { + return e <= 0 ? 0 : Math.ceil(Math.log2(e)); +} +function readInt8(e, t) { + return (e[t] << 24) >> 24; +} +function readUint16(e, t) { + return (e[t] << 8) | e[t + 1]; +} +function readUint32(e, t) { + return ((e[t] << 24) | (e[t + 1] << 16) | (e[t + 2] << 8) | e[t + 3]) >>> 0; +} +function isWhiteSpace(e) { + return 32 === e || 9 === e || 13 === e || 10 === e; +} +function isNumberArray(e, t) { + return ( + Array.isArray(e) && + (null === t || e.length === t) && + e.every((e) => "number" == typeof e) + ); +} +function lookupMatrix(e, t) { + return isNumberArray(e, 6) ? e : t; +} +function lookupRect(e, t) { + return isNumberArray(e, 4) ? e : t; +} +function lookupNormalRect(e, t) { + return isNumberArray(e, 4) ? Util.normalizeRect(e) : t; +} +function parseXFAPath(e) { + const t = /(.+)\[(\d+)\]$/; + return e.split(".").map((e) => { + const i = e.match(t); + return i ? { name: i[1], pos: parseInt(i[2], 10) } : { name: e, pos: 0 }; + }); +} +function escapePDFName(e) { + const t = []; + let i = 0; + for (let a = 0, s = e.length; a < s; a++) { + const s = e.charCodeAt(a); + if ( + s < 33 || + s > 126 || + 35 === s || + 40 === s || + 41 === s || + 60 === s || + 62 === s || + 91 === s || + 93 === s || + 123 === s || + 125 === s || + 47 === s || + 37 === s + ) { + i < a && t.push(e.substring(i, a)); + t.push(`#${s.toString(16)}`); + i = a + 1; + } + } + if (0 === t.length) return e; + i < e.length && t.push(e.substring(i, e.length)); + return t.join(""); +} +function escapeString(e) { + return e.replaceAll(/([()\\\n\r])/g, (e) => + "\n" === e ? "\\n" : "\r" === e ? "\\r" : `\\${e}`, + ); +} +function _collectJS(e, t, i, a) { + if (!e) return; + let s = null; + if (e instanceof Ref) { + if (a.has(e)) return; + s = e; + a.put(s); + e = t.fetch(e); + } + if (Array.isArray(e)) for (const s of e) _collectJS(s, t, i, a); + else if (e instanceof Dict) { + if (isName(e.get("S"), "JavaScript")) { + const t = e.get("JS"); + let a; + t instanceof BaseStream + ? (a = t.getString()) + : "string" == typeof t && (a = t); + a &&= stringToPDFString(a).replaceAll("\0", ""); + a && i.push(a); + } + _collectJS(e.getRaw("Next"), t, i, a); + } + s && a.remove(s); +} +function collectActions(e, t, i) { + const a = Object.create(null), + s = getInheritableProperty({ dict: t, key: "AA", stopWhenFound: !1 }); + if (s) + for (let t = s.length - 1; t >= 0; t--) { + const r = s[t]; + if (r instanceof Dict) + for (const t of r.getKeys()) { + const s = i[t]; + if (!s) continue; + const n = []; + _collectJS(r.getRaw(t), e, n, new RefSet()); + n.length > 0 && (a[s] = n); + } + } + if (t.has("A")) { + const i = []; + _collectJS(t.get("A"), e, i, new RefSet()); + i.length > 0 && (a.Action = i); + } + return objectSize(a) > 0 ? a : null; +} +const St = { 60: "<", 62: ">", 38: "&", 34: """, 39: "'" }; +function* codePointIter(e) { + for (let t = 0, i = e.length; t < i; t++) { + const i = e.codePointAt(t); + i > 55295 && (i < 57344 || i > 65533) && t++; + yield i; + } +} +function encodeToXmlString(e) { + const t = []; + let i = 0; + for (let a = 0, s = e.length; a < s; a++) { + const s = e.codePointAt(a); + if (32 <= s && s <= 126) { + const r = St[s]; + if (r) { + i < a && t.push(e.substring(i, a)); + t.push(r); + i = a + 1; + } + } else { + i < a && t.push(e.substring(i, a)); + t.push(`&#x${s.toString(16).toUpperCase()};`); + s > 55295 && (s < 57344 || s > 65533) && a++; + i = a + 1; + } + } + if (0 === t.length) return e; + i < e.length && t.push(e.substring(i, e.length)); + return t.join(""); +} +function validateFontName(e, t = !1) { + const i = /^("|').*("|')$/.exec(e); + if (i && i[1] === i[2]) { + if (new RegExp(`[^\\\\]${i[1]}`).test(e.slice(1, -1))) { + t && warn(`FontFamily contains unescaped ${i[1]}: ${e}.`); + return !1; + } + } else + for (const i of e.split(/[ \t]+/)) + if (/^(\d|(-(\d|-)))/.test(i) || !/^[\w-\\]+$/.test(i)) { + t && warn(`FontFamily contains invalid : ${e}.`); + return !1; + } + return !0; +} +function validateCSSFont(e) { + const t = new Set([ + "100", + "200", + "300", + "400", + "500", + "600", + "700", + "800", + "900", + "1000", + "normal", + "bold", + "bolder", + "lighter", + ]), + { fontFamily: i, fontWeight: a, italicAngle: s } = e; + if (!validateFontName(i, !0)) return !1; + const r = a ? a.toString() : ""; + e.fontWeight = t.has(r) ? r : "400"; + const n = parseFloat(s); + e.italicAngle = isNaN(n) || n < -90 || n > 90 ? "14" : s.toString(); + return !0; +} +function recoverJsURL(e) { + const t = new RegExp( + "^\\s*(" + + ["app.launchURL", "window.open", "xfa.host.gotoURL"] + .join("|") + .replaceAll(".", "\\.") + + ")\\((?:'|\")([^'\"]*)(?:'|\")(?:,\\s*(\\w+)\\)|\\))", + "i", + ).exec(e); + if (t?.[2]) { + const e = t[2]; + let i = !1; + "true" === t[3] && "app.launchURL" === t[1] && (i = !0); + return { url: e, newWindow: i }; + } + return null; +} +function numberToString(e) { + if (Number.isInteger(e)) return e.toString(); + const t = Math.round(100 * e); + return t % 100 == 0 + ? (t / 100).toString() + : t % 10 == 0 + ? e.toFixed(1) + : e.toFixed(2); +} +function getNewAnnotationsMap(e) { + if (!e) return null; + const t = new Map(); + for (const [i, a] of e) { + if (!i.startsWith(E)) continue; + let e = t.get(a.pageIndex); + if (!e) { + e = []; + t.set(a.pageIndex, e); + } + e.push(a); + } + return t.size > 0 ? t : null; +} +function isAscii(e) { + return /^[\x00-\x7F]*$/.test(e); +} +function stringToUTF16HexString(e) { + const t = []; + for (let i = 0, a = e.length; i < a; i++) { + const a = e.charCodeAt(i); + t.push( + ((a >> 8) & 255).toString(16).padStart(2, "0"), + (255 & a).toString(16).padStart(2, "0"), + ); + } + return t.join(""); +} +function stringToUTF16String(e, t = !1) { + const i = []; + t && i.push("þÿ"); + for (let t = 0, a = e.length; t < a; t++) { + const a = e.charCodeAt(t); + i.push(String.fromCharCode((a >> 8) & 255), String.fromCharCode(255 & a)); + } + return i.join(""); +} +function getRotationMatrix(e, t, i) { + switch (e) { + case 90: + return [0, 1, -1, 0, t, 0]; + case 180: + return [-1, 0, 0, -1, t, i]; + case 270: + return [0, -1, 1, 0, 0, i]; + default: + throw new Error("Invalid rotation"); + } +} +function getSizeInBytes(e) { + return Math.ceil(Math.ceil(Math.log2(1 + e)) / 8); +} +class Stream extends BaseStream { + constructor(e, t, i, a) { + super(); + this.bytes = e instanceof Uint8Array ? e : new Uint8Array(e); + this.start = t || 0; + this.pos = this.start; + this.end = t + i || this.bytes.length; + this.dict = a; + } + get length() { + return this.end - this.start; + } + get isEmpty() { + return 0 === this.length; + } + getByte() { + return this.pos >= this.end ? -1 : this.bytes[this.pos++]; + } + getBytes(e) { + const t = this.bytes, + i = this.pos, + a = this.end; + if (!e) return t.subarray(i, a); + let s = i + e; + s > a && (s = a); + this.pos = s; + return t.subarray(i, s); + } + getByteRange(e, t) { + e < 0 && (e = 0); + t > this.end && (t = this.end); + return this.bytes.subarray(e, t); + } + reset() { + this.pos = this.start; + } + moveStart() { + this.start = this.pos; + } + makeSubStream(e, t, i = null) { + return new Stream(this.bytes.buffer, e, t, i); + } +} +class StringStream extends Stream { + constructor(e) { + super(stringToBytes(e)); + } +} +class NullStream extends Stream { + constructor() { + super(new Uint8Array(0)); + } +} +class ChunkedStream extends Stream { + constructor(e, t, i) { + super(new Uint8Array(e), 0, e, null); + this.chunkSize = t; + this._loadedChunks = new Set(); + this.numChunks = Math.ceil(e / t); + this.manager = i; + this.progressiveDataLength = 0; + this.lastSuccessfulEnsureByteChunk = -1; + } + getMissingChunks() { + const e = []; + for (let t = 0, i = this.numChunks; t < i; ++t) + this._loadedChunks.has(t) || e.push(t); + return e; + } + get numChunksLoaded() { + return this._loadedChunks.size; + } + get isDataLoaded() { + return this.numChunksLoaded === this.numChunks; + } + onReceiveData(e, t) { + const i = this.chunkSize; + if (e % i != 0) throw new Error(`Bad begin offset: ${e}`); + const a = e + t.byteLength; + if (a % i != 0 && a !== this.bytes.length) + throw new Error(`Bad end offset: ${a}`); + this.bytes.set(new Uint8Array(t), e); + const s = Math.floor(e / i), + r = Math.floor((a - 1) / i) + 1; + for (let e = s; e < r; ++e) this._loadedChunks.add(e); + } + onReceiveProgressiveData(e) { + let t = this.progressiveDataLength; + const i = Math.floor(t / this.chunkSize); + this.bytes.set(new Uint8Array(e), t); + t += e.byteLength; + this.progressiveDataLength = t; + const a = t >= this.end ? this.numChunks : Math.floor(t / this.chunkSize); + for (let e = i; e < a; ++e) this._loadedChunks.add(e); + } + ensureByte(e) { + if (e < this.progressiveDataLength) return; + const t = Math.floor(e / this.chunkSize); + if (!(t > this.numChunks) && t !== this.lastSuccessfulEnsureByteChunk) { + if (!this._loadedChunks.has(t)) throw new MissingDataException(e, e + 1); + this.lastSuccessfulEnsureByteChunk = t; + } + } + ensureRange(e, t) { + if (e >= t) return; + if (t <= this.progressiveDataLength) return; + const i = Math.floor(e / this.chunkSize); + if (i > this.numChunks) return; + const a = Math.min( + Math.floor((t - 1) / this.chunkSize) + 1, + this.numChunks, + ); + for (let s = i; s < a; ++s) + if (!this._loadedChunks.has(s)) throw new MissingDataException(e, t); + } + nextEmptyChunk(e) { + const t = this.numChunks; + for (let i = 0; i < t; ++i) { + const a = (e + i) % t; + if (!this._loadedChunks.has(a)) return a; + } + return null; + } + hasChunk(e) { + return this._loadedChunks.has(e); + } + getByte() { + const e = this.pos; + if (e >= this.end) return -1; + e >= this.progressiveDataLength && this.ensureByte(e); + return this.bytes[this.pos++]; + } + getBytes(e) { + const t = this.bytes, + i = this.pos, + a = this.end; + if (!e) { + a > this.progressiveDataLength && this.ensureRange(i, a); + return t.subarray(i, a); + } + let s = i + e; + s > a && (s = a); + s > this.progressiveDataLength && this.ensureRange(i, s); + this.pos = s; + return t.subarray(i, s); + } + getByteRange(e, t) { + e < 0 && (e = 0); + t > this.end && (t = this.end); + t > this.progressiveDataLength && this.ensureRange(e, t); + return this.bytes.subarray(e, t); + } + makeSubStream(e, t, i = null) { + t + ? e + t > this.progressiveDataLength && this.ensureRange(e, e + t) + : e >= this.progressiveDataLength && this.ensureByte(e); + function ChunkedStreamSubstream() {} + ChunkedStreamSubstream.prototype = Object.create(this); + ChunkedStreamSubstream.prototype.getMissingChunks = function () { + const e = this.chunkSize, + t = Math.floor(this.start / e), + i = Math.floor((this.end - 1) / e) + 1, + a = []; + for (let e = t; e < i; ++e) this._loadedChunks.has(e) || a.push(e); + return a; + }; + Object.defineProperty(ChunkedStreamSubstream.prototype, "isDataLoaded", { + get() { + return ( + this.numChunksLoaded === this.numChunks || + 0 === this.getMissingChunks().length + ); + }, + configurable: !0, + }); + const a = new ChunkedStreamSubstream(); + a.pos = a.start = e; + a.end = e + t || this.end; + a.dict = i; + return a; + } + getBaseStreams() { + return [this]; + } +} +class ChunkedStreamManager { + constructor(e, t) { + this.length = t.length; + this.chunkSize = t.rangeChunkSize; + this.stream = new ChunkedStream(this.length, this.chunkSize, this); + this.pdfNetworkStream = e; + this.disableAutoFetch = t.disableAutoFetch; + this.msgHandler = t.msgHandler; + this.currRequestId = 0; + this._chunksNeededByRequest = new Map(); + this._requestsByChunk = new Map(); + this._promisesByRequest = new Map(); + this.progressiveDataLength = 0; + this.aborted = !1; + this._loadedStreamCapability = Promise.withResolvers(); + } + sendRequest(e, t) { + const i = this.pdfNetworkStream.getRangeReader(e, t); + i.isStreamingSupported || (i.onProgress = this.onProgress.bind(this)); + let a = [], + s = 0; + return new Promise((e, t) => { + const readChunk = ({ value: r, done: n }) => { + try { + if (n) { + const t = arrayBuffersToBytes(a); + a = null; + e(t); + return; + } + s += r.byteLength; + i.isStreamingSupported && this.onProgress({ loaded: s }); + a.push(r); + i.read().then(readChunk, t); + } catch (e) { + t(e); + } + }; + i.read().then(readChunk, t); + }).then((t) => { + this.aborted || this.onReceiveData({ chunk: t, begin: e }); + }); + } + requestAllChunks(e = !1) { + if (!e) { + const e = this.stream.getMissingChunks(); + this._requestChunks(e); + } + return this._loadedStreamCapability.promise; + } + _requestChunks(e) { + const t = this.currRequestId++, + i = new Set(); + this._chunksNeededByRequest.set(t, i); + for (const t of e) this.stream.hasChunk(t) || i.add(t); + if (0 === i.size) return Promise.resolve(); + const a = Promise.withResolvers(); + this._promisesByRequest.set(t, a); + const s = []; + for (const e of i) { + let i = this._requestsByChunk.get(e); + if (!i) { + i = []; + this._requestsByChunk.set(e, i); + s.push(e); + } + i.push(t); + } + if (s.length > 0) { + const e = this.groupChunks(s); + for (const t of e) { + const e = t.beginChunk * this.chunkSize, + i = Math.min(t.endChunk * this.chunkSize, this.length); + this.sendRequest(e, i).catch(a.reject); + } + } + return a.promise.catch((e) => { + if (!this.aborted) throw e; + }); + } + getStream() { + return this.stream; + } + requestRange(e, t) { + t = Math.min(t, this.length); + const i = this.getBeginChunk(e), + a = this.getEndChunk(t), + s = []; + for (let e = i; e < a; ++e) s.push(e); + return this._requestChunks(s); + } + requestRanges(e = []) { + const t = []; + for (const i of e) { + const e = this.getBeginChunk(i.begin), + a = this.getEndChunk(i.end); + for (let i = e; i < a; ++i) t.includes(i) || t.push(i); + } + t.sort(function (e, t) { + return e - t; + }); + return this._requestChunks(t); + } + groupChunks(e) { + const t = []; + let i = -1, + a = -1; + for (let s = 0, r = e.length; s < r; ++s) { + const r = e[s]; + i < 0 && (i = r); + if (a >= 0 && a + 1 !== r) { + t.push({ beginChunk: i, endChunk: a + 1 }); + i = r; + } + s + 1 === e.length && t.push({ beginChunk: i, endChunk: r + 1 }); + a = r; + } + return t; + } + onProgress(e) { + this.msgHandler.send("DocProgress", { + loaded: this.stream.numChunksLoaded * this.chunkSize + e.loaded, + total: this.length, + }); + } + onReceiveData(e) { + const t = e.chunk, + i = void 0 === e.begin, + a = i ? this.progressiveDataLength : e.begin, + s = a + t.byteLength, + r = Math.floor(a / this.chunkSize), + n = + s < this.length + ? Math.floor(s / this.chunkSize) + : Math.ceil(s / this.chunkSize); + if (i) { + this.stream.onReceiveProgressiveData(t); + this.progressiveDataLength = s; + } else this.stream.onReceiveData(a, t); + this.stream.isDataLoaded && + this._loadedStreamCapability.resolve(this.stream); + const o = []; + for (let e = r; e < n; ++e) { + const t = this._requestsByChunk.get(e); + if (t) { + this._requestsByChunk.delete(e); + for (const i of t) { + const t = this._chunksNeededByRequest.get(i); + t.has(e) && t.delete(e); + t.size > 0 || o.push(i); + } + } + } + if (!this.disableAutoFetch && 0 === this._requestsByChunk.size) { + let e; + if (1 === this.stream.numChunksLoaded) { + const t = this.stream.numChunks - 1; + this.stream.hasChunk(t) || (e = t); + } else e = this.stream.nextEmptyChunk(n); + Number.isInteger(e) && this._requestChunks([e]); + } + for (const e of o) { + const t = this._promisesByRequest.get(e); + this._promisesByRequest.delete(e); + t.resolve(); + } + this.msgHandler.send("DocProgress", { + loaded: this.stream.numChunksLoaded * this.chunkSize, + total: this.length, + }); + } + onError(e) { + this._loadedStreamCapability.reject(e); + } + getBeginChunk(e) { + return Math.floor(e / this.chunkSize); + } + getEndChunk(e) { + return Math.floor((e - 1) / this.chunkSize) + 1; + } + abort(e) { + this.aborted = !0; + this.pdfNetworkStream?.cancelAllRequests(e); + for (const t of this._promisesByRequest.values()) t.reject(e); + } +} +class ColorSpace { + constructor(e, t) { + this.constructor === ColorSpace && + unreachable("Cannot initialize ColorSpace."); + this.name = e; + this.numComps = t; + } + getRgb(e, t) { + const i = new Uint8ClampedArray(3); + this.getRgbItem(e, t, i, 0); + return i; + } + getRgbItem(e, t, i, a) { + unreachable("Should not call ColorSpace.getRgbItem"); + } + getRgbBuffer(e, t, i, a, s, r, n) { + unreachable("Should not call ColorSpace.getRgbBuffer"); + } + getOutputLength(e, t) { + unreachable("Should not call ColorSpace.getOutputLength"); + } + isPassthrough(e) { + return !1; + } + isDefaultDecode(e, t) { + return ColorSpace.isDefaultDecode(e, this.numComps); + } + fillRgb(e, t, i, a, s, r, n, o, g) { + const c = t * i; + let h = null; + const l = 1 << n, + C = i !== s || t !== a; + if (this.isPassthrough(n)) h = o; + else if ( + 1 === this.numComps && + c > l && + "DeviceGray" !== this.name && + "DeviceRGB" !== this.name + ) { + const t = n <= 8 ? new Uint8Array(l) : new Uint16Array(l); + for (let e = 0; e < l; e++) t[e] = e; + const i = new Uint8ClampedArray(3 * l); + this.getRgbBuffer(t, 0, l, i, 0, n, 0); + if (C) { + h = new Uint8Array(3 * c); + let e = 0; + for (let t = 0; t < c; ++t) { + const a = 3 * o[t]; + h[e++] = i[a]; + h[e++] = i[a + 1]; + h[e++] = i[a + 2]; + } + } else { + let t = 0; + for (let a = 0; a < c; ++a) { + const s = 3 * o[a]; + e[t++] = i[s]; + e[t++] = i[s + 1]; + e[t++] = i[s + 2]; + t += g; + } + } + } else if (C) { + h = new Uint8ClampedArray(3 * c); + this.getRgbBuffer(o, 0, c, h, 0, n, 0); + } else this.getRgbBuffer(o, 0, a * r, e, 0, n, g); + if (h) + if (C) + !(function resizeRgbImage(e, t, i, a, s, r, n) { + n = 1 !== n ? 0 : n; + const o = i / s, + g = a / r; + let c, + h = 0; + const l = new Uint16Array(s), + C = 3 * i; + for (let e = 0; e < s; e++) l[e] = 3 * Math.floor(e * o); + for (let i = 0; i < r; i++) { + const a = Math.floor(i * g) * C; + for (let i = 0; i < s; i++) { + c = a + l[i]; + t[h++] = e[c++]; + t[h++] = e[c++]; + t[h++] = e[c++]; + h += n; + } + } + })(h, e, t, i, a, s, g); + else { + let t = 0, + i = 0; + for (let s = 0, n = a * r; s < n; s++) { + e[t++] = h[i++]; + e[t++] = h[i++]; + e[t++] = h[i++]; + t += g; + } + } + } + get usesZeroToOneRange() { + return shadow(this, "usesZeroToOneRange", !0); + } + static _cache(e, t, i, a) { + if (!i) + throw new Error( + 'ColorSpace._cache - expected "localColorSpaceCache" argument.', + ); + if (!a) + throw new Error( + 'ColorSpace._cache - expected "parsedColorSpace" argument.', + ); + let s, r; + if (e instanceof Ref) { + r = e; + e = t.fetch(e); + } + e instanceof Name && (s = e.name); + (s || r) && i.set(s, r, a); + } + static getCached(e, t, i) { + if (!i) + throw new Error( + 'ColorSpace.getCached - expected "localColorSpaceCache" argument.', + ); + if (e instanceof Ref) { + const a = i.getByRef(e); + if (a) return a; + try { + e = t.fetch(e); + } catch (e) { + if (e instanceof MissingDataException) throw e; + } + } + if (e instanceof Name) { + const t = i.getByName(e.name); + if (t) return t; + } + return null; + } + static async parseAsync({ + cs: e, + xref: t, + resources: i = null, + pdfFunctionFactory: a, + localColorSpaceCache: s, + }) { + const r = this._parse(e, t, i, a); + this._cache(e, t, s, r); + return r; + } + static parse({ + cs: e, + xref: t, + resources: i = null, + pdfFunctionFactory: a, + localColorSpaceCache: s, + }) { + const r = this.getCached(e, t, s); + if (r) return r; + const n = this._parse(e, t, i, a); + this._cache(e, t, s, n); + return n; + } + static _parse(e, t, i = null, a) { + if ((e = t.fetchIfRef(e)) instanceof Name) + switch (e.name) { + case "G": + case "DeviceGray": + return this.singletons.gray; + case "RGB": + case "DeviceRGB": + return this.singletons.rgb; + case "CMYK": + case "DeviceCMYK": + return this.singletons.cmyk; + case "Pattern": + return new PatternCS(null); + default: + if (i instanceof Dict) { + const s = i.get("ColorSpace"); + if (s instanceof Dict) { + const r = s.get(e.name); + if (r) { + if (r instanceof Name) return this._parse(r, t, i, a); + e = r; + break; + } + } + } + throw new FormatError(`Unrecognized ColorSpace: ${e.name}`); + } + if (Array.isArray(e)) { + const s = t.fetchIfRef(e[0]).name; + let r, n, o, g, c, h; + switch (s) { + case "G": + case "DeviceGray": + return this.singletons.gray; + case "RGB": + case "DeviceRGB": + return this.singletons.rgb; + case "CMYK": + case "DeviceCMYK": + return this.singletons.cmyk; + case "CalGray": + r = t.fetchIfRef(e[1]); + g = r.getArray("WhitePoint"); + c = r.getArray("BlackPoint"); + h = r.get("Gamma"); + return new CalGrayCS(g, c, h); + case "CalRGB": + r = t.fetchIfRef(e[1]); + g = r.getArray("WhitePoint"); + c = r.getArray("BlackPoint"); + h = r.getArray("Gamma"); + const l = r.getArray("Matrix"); + return new CalRGBCS(g, c, h, l); + case "ICCBased": + const C = t.fetchIfRef(e[1]).dict; + n = C.get("N"); + const Q = C.get("Alternate"); + if (Q) { + const e = this._parse(Q, t, i, a); + if (e.numComps === n) return e; + warn("ICCBased color space: Ignoring incorrect /Alternate entry."); + } + if (1 === n) return this.singletons.gray; + if (3 === n) return this.singletons.rgb; + if (4 === n) return this.singletons.cmyk; + break; + case "Pattern": + o = e[1] || null; + o && (o = this._parse(o, t, i, a)); + return new PatternCS(o); + case "I": + case "Indexed": + o = this._parse(e[1], t, i, a); + const E = t.fetchIfRef(e[2]) + 1, + u = t.fetchIfRef(e[3]); + return new IndexedCS(o, E, u); + case "Separation": + case "DeviceN": + const d = t.fetchIfRef(e[1]); + n = Array.isArray(d) ? d.length : 1; + o = this._parse(e[2], t, i, a); + const f = a.create(e[3]); + return new AlternateCS(n, o, f); + case "Lab": + r = t.fetchIfRef(e[1]); + g = r.getArray("WhitePoint"); + c = r.getArray("BlackPoint"); + const p = r.getArray("Range"); + return new LabCS(g, c, p); + default: + throw new FormatError(`Unimplemented ColorSpace object: ${s}`); + } + } + throw new FormatError(`Unrecognized ColorSpace object: ${e}`); + } + static isDefaultDecode(e, t) { + if (!Array.isArray(e)) return !0; + if (2 * t !== e.length) { + warn("The decode map is not the correct length"); + return !0; + } + for (let t = 0, i = e.length; t < i; t += 2) + if (0 !== e[t] || 1 !== e[t + 1]) return !1; + return !0; + } + static get singletons() { + return shadow(this, "singletons", { + get gray() { + return shadow(this, "gray", new DeviceGrayCS()); + }, + get rgb() { + return shadow(this, "rgb", new DeviceRgbCS()); + }, + get cmyk() { + return shadow(this, "cmyk", new DeviceCmykCS()); + }, + }); + } +} +class AlternateCS extends ColorSpace { + constructor(e, t, i) { + super("Alternate", e); + this.base = t; + this.tintFn = i; + this.tmpBuf = new Float32Array(t.numComps); + } + getRgbItem(e, t, i, a) { + const s = this.tmpBuf; + this.tintFn(e, t, s, 0); + this.base.getRgbItem(s, 0, i, a); + } + getRgbBuffer(e, t, i, a, s, r, n) { + const o = this.tintFn, + g = this.base, + c = 1 / ((1 << r) - 1), + h = g.numComps, + l = g.usesZeroToOneRange, + C = (g.isPassthrough(8) || !l) && 0 === n; + let Q = C ? s : 0; + const E = C ? a : new Uint8ClampedArray(h * i), + u = this.numComps, + d = new Float32Array(u), + f = new Float32Array(h); + let p, m; + for (p = 0; p < i; p++) { + for (m = 0; m < u; m++) d[m] = e[t++] * c; + o(d, 0, f, 0); + if (l) for (m = 0; m < h; m++) E[Q++] = 255 * f[m]; + else { + g.getRgbItem(f, 0, E, Q); + Q += h; + } + } + C || g.getRgbBuffer(E, 0, i, a, s, 8, n); + } + getOutputLength(e, t) { + return this.base.getOutputLength( + (e * this.base.numComps) / this.numComps, + t, + ); + } +} +class PatternCS extends ColorSpace { + constructor(e) { + super("Pattern", null); + this.base = e; + } + isDefaultDecode(e, t) { + unreachable("Should not call PatternCS.isDefaultDecode"); + } +} +class IndexedCS extends ColorSpace { + constructor(e, t, i) { + super("Indexed", 1); + this.base = e; + this.highVal = t; + const a = e.numComps * t; + this.lookup = new Uint8Array(a); + if (i instanceof BaseStream) { + const e = i.getBytes(a); + this.lookup.set(e); + } else { + if ("string" != typeof i) + throw new FormatError(`IndexedCS - unrecognized lookup table: ${i}`); + for (let e = 0; e < a; ++e) this.lookup[e] = 255 & i.charCodeAt(e); + } + } + getRgbItem(e, t, i, a) { + const s = this.base.numComps, + r = e[t] * s; + this.base.getRgbBuffer(this.lookup, r, 1, i, a, 8, 0); + } + getRgbBuffer(e, t, i, a, s, r, n) { + const o = this.base, + g = o.numComps, + c = o.getOutputLength(g, n), + h = this.lookup; + for (let r = 0; r < i; ++r) { + const i = e[t++] * g; + o.getRgbBuffer(h, i, 1, a, s, 8, n); + s += c; + } + } + getOutputLength(e, t) { + return this.base.getOutputLength(e * this.base.numComps, t); + } + isDefaultDecode(e, t) { + if (!Array.isArray(e)) return !0; + if (2 !== e.length) { + warn("Decode map length is not correct"); + return !0; + } + if (!Number.isInteger(t) || t < 1) { + warn("Bits per component is not correct"); + return !0; + } + return 0 === e[0] && e[1] === (1 << t) - 1; + } +} +class DeviceGrayCS extends ColorSpace { + constructor() { + super("DeviceGray", 1); + } + getRgbItem(e, t, i, a) { + const s = 255 * e[t]; + i[a] = i[a + 1] = i[a + 2] = s; + } + getRgbBuffer(e, t, i, a, s, r, n) { + const o = 255 / ((1 << r) - 1); + let g = t, + c = s; + for (let t = 0; t < i; ++t) { + const t = o * e[g++]; + a[c++] = t; + a[c++] = t; + a[c++] = t; + c += n; + } + } + getOutputLength(e, t) { + return e * (3 + t); + } +} +class DeviceRgbCS extends ColorSpace { + constructor() { + super("DeviceRGB", 3); + } + getRgbItem(e, t, i, a) { + i[a] = 255 * e[t]; + i[a + 1] = 255 * e[t + 1]; + i[a + 2] = 255 * e[t + 2]; + } + getRgbBuffer(e, t, i, a, s, r, n) { + if (8 === r && 0 === n) { + a.set(e.subarray(t, t + 3 * i), s); + return; + } + const o = 255 / ((1 << r) - 1); + let g = t, + c = s; + for (let t = 0; t < i; ++t) { + a[c++] = o * e[g++]; + a[c++] = o * e[g++]; + a[c++] = o * e[g++]; + c += n; + } + } + getOutputLength(e, t) { + return ((e * (3 + t)) / 3) | 0; + } + isPassthrough(e) { + return 8 === e; + } +} +class DeviceCmykCS extends ColorSpace { + constructor() { + super("DeviceCMYK", 4); + } + #t(e, t, i, a, s) { + const r = e[t] * i, + n = e[t + 1] * i, + o = e[t + 2] * i, + g = e[t + 3] * i; + a[s] = + 255 + + r * + (-4.387332384609988 * r + + 54.48615194189176 * n + + 18.82290502165302 * o + + 212.25662451639585 * g - + 285.2331026137004) + + n * + (1.7149763477362134 * n - + 5.6096736904047315 * o + + -17.873870861415444 * g - + 5.497006427196366) + + o * + (-2.5217340131683033 * o - 21.248923337353073 * g + 17.5119270841813) + + g * (-21.86122147463605 * g - 189.48180835922747); + a[s + 1] = + 255 + + r * + (8.841041422036149 * r + + 60.118027045597366 * n + + 6.871425592049007 * o + + 31.159100130055922 * g - + 79.2970844816548) + + n * + (-15.310361306967817 * n + + 17.575251261109482 * o + + 131.35250912493976 * g - + 190.9453302588951) + + o * (4.444339102852739 * o + 9.8632861493405 * g - 24.86741582555878) + + g * (-20.737325471181034 * g - 187.80453709719578); + a[s + 2] = + 255 + + r * + (0.8842522430003296 * r + + 8.078677503112928 * n + + 30.89978309703729 * o - + 0.23883238689178934 * g - + 14.183576799673286) + + n * + (10.49593273432072 * n + + 63.02378494754052 * o + + 50.606957656360734 * g - + 112.23884253719248) + + o * + (0.03296041114873217 * o + + 115.60384449646641 * g - + 193.58209356861505) + + g * (-22.33816807309886 * g - 180.12613974708367); + } + getRgbItem(e, t, i, a) { + this.#t(e, t, 1, i, a); + } + getRgbBuffer(e, t, i, a, s, r, n) { + const o = 1 / ((1 << r) - 1); + for (let r = 0; r < i; r++) { + this.#t(e, t, o, a, s); + t += 4; + s += 3 + n; + } + } + getOutputLength(e, t) { + return ((e / 4) * (3 + t)) | 0; + } +} +class CalGrayCS extends ColorSpace { + constructor(e, t, i) { + super("CalGray", 1); + if (!e) + throw new FormatError( + "WhitePoint missing - required for color space CalGray", + ); + [this.XW, this.YW, this.ZW] = e; + [this.XB, this.YB, this.ZB] = t || [0, 0, 0]; + this.G = i || 1; + if (this.XW < 0 || this.ZW < 0 || 1 !== this.YW) + throw new FormatError( + `Invalid WhitePoint components for ${this.name}, no fallback available`, + ); + if (this.XB < 0 || this.YB < 0 || this.ZB < 0) { + info(`Invalid BlackPoint for ${this.name}, falling back to default.`); + this.XB = this.YB = this.ZB = 0; + } + (0 === this.XB && 0 === this.YB && 0 === this.ZB) || + warn( + `${this.name}, BlackPoint: XB: ${this.XB}, YB: ${this.YB}, ZB: ${this.ZB}, only default values are supported.`, + ); + if (this.G < 1) { + info( + `Invalid Gamma: ${this.G} for ${this.name}, falling back to default.`, + ); + this.G = 1; + } + } + #t(e, t, i, a, s) { + const r = (e[t] * s) ** this.G, + n = this.YW * r, + o = Math.max(295.8 * n ** 0.3333333333333333 - 40.8, 0); + i[a] = o; + i[a + 1] = o; + i[a + 2] = o; + } + getRgbItem(e, t, i, a) { + this.#t(e, t, i, a, 1); + } + getRgbBuffer(e, t, i, a, s, r, n) { + const o = 1 / ((1 << r) - 1); + for (let r = 0; r < i; ++r) { + this.#t(e, t, a, s, o); + t += 1; + s += 3 + n; + } + } + getOutputLength(e, t) { + return e * (3 + t); + } +} +class CalRGBCS extends ColorSpace { + static #i = new Float32Array([ + 0.8951, 0.2664, -0.1614, -0.7502, 1.7135, 0.0367, 0.0389, -0.0685, 1.0296, + ]); + static #a = new Float32Array([ + 0.9869929, -0.1470543, 0.1599627, 0.4323053, 0.5183603, 0.0492912, + -0.0085287, 0.0400428, 0.9684867, + ]); + static #s = new Float32Array([ + 3.2404542, -1.5371385, -0.4985314, -0.969266, 1.8760108, 0.041556, + 0.0556434, -0.2040259, 1.0572252, + ]); + static #r = new Float32Array([1, 1, 1]); + static #n = new Float32Array(3); + static #o = new Float32Array(3); + static #g = new Float32Array(3); + static #I = (24 / 116) ** 3 / 8; + constructor(e, t, i, a) { + super("CalRGB", 3); + if (!e) + throw new FormatError( + "WhitePoint missing - required for color space CalRGB", + ); + const [s, r, n] = (this.whitePoint = e), + [o, g, c] = (this.blackPoint = t || new Float32Array(3)); + [this.GR, this.GG, this.GB] = i || new Float32Array([1, 1, 1]); + [ + this.MXA, + this.MYA, + this.MZA, + this.MXB, + this.MYB, + this.MZB, + this.MXC, + this.MYC, + this.MZC, + ] = a || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]); + if (s < 0 || n < 0 || 1 !== r) + throw new FormatError( + `Invalid WhitePoint components for ${this.name}, no fallback available`, + ); + if (o < 0 || g < 0 || c < 0) { + info( + `Invalid BlackPoint for ${this.name} [${o}, ${g}, ${c}], falling back to default.`, + ); + this.blackPoint = new Float32Array(3); + } + if (this.GR < 0 || this.GG < 0 || this.GB < 0) { + info( + `Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ${this.name}, falling back to default.`, + ); + this.GR = this.GG = this.GB = 1; + } + } + #c(e, t, i) { + i[0] = e[0] * t[0] + e[1] * t[1] + e[2] * t[2]; + i[1] = e[3] * t[0] + e[4] * t[1] + e[5] * t[2]; + i[2] = e[6] * t[0] + e[7] * t[1] + e[8] * t[2]; + } + #h(e, t, i) { + i[0] = (1 * t[0]) / e[0]; + i[1] = (1 * t[1]) / e[1]; + i[2] = (1 * t[2]) / e[2]; + } + #l(e, t, i) { + i[0] = (0.95047 * t[0]) / e[0]; + i[1] = (1 * t[1]) / e[1]; + i[2] = (1.08883 * t[2]) / e[2]; + } + #C(e) { + return e <= 0.0031308 + ? this.#B(0, 1, 12.92 * e) + : e >= 0.99554525 + ? 1 + : this.#B(0, 1, 1.055 * e ** (1 / 2.4) - 0.055); + } + #B(e, t, i) { + return Math.max(e, Math.min(t, i)); + } + #Q(e) { + return e < 0 + ? -this.#Q(-e) + : e > 8 + ? ((e + 16) / 116) ** 3 + : e * CalRGBCS.#I; + } + #E(e, t, i) { + if (0 === e[0] && 0 === e[1] && 0 === e[2]) { + i[0] = t[0]; + i[1] = t[1]; + i[2] = t[2]; + return; + } + const a = this.#Q(0), + s = (1 - a) / (1 - this.#Q(e[0])), + r = 1 - s, + n = (1 - a) / (1 - this.#Q(e[1])), + o = 1 - n, + g = (1 - a) / (1 - this.#Q(e[2])), + c = 1 - g; + i[0] = t[0] * s + r; + i[1] = t[1] * n + o; + i[2] = t[2] * g + c; + } + #u(e, t, i) { + if (1 === e[0] && 1 === e[2]) { + i[0] = t[0]; + i[1] = t[1]; + i[2] = t[2]; + return; + } + const a = i; + this.#c(CalRGBCS.#i, t, a); + const s = CalRGBCS.#n; + this.#h(e, a, s); + this.#c(CalRGBCS.#a, s, i); + } + #d(e, t, i) { + const a = i; + this.#c(CalRGBCS.#i, t, a); + const s = CalRGBCS.#n; + this.#l(e, a, s); + this.#c(CalRGBCS.#a, s, i); + } + #t(e, t, i, a, s) { + const r = this.#B(0, 1, e[t] * s), + n = this.#B(0, 1, e[t + 1] * s), + o = this.#B(0, 1, e[t + 2] * s), + g = 1 === r ? 1 : r ** this.GR, + c = 1 === n ? 1 : n ** this.GG, + h = 1 === o ? 1 : o ** this.GB, + l = this.MXA * g + this.MXB * c + this.MXC * h, + C = this.MYA * g + this.MYB * c + this.MYC * h, + Q = this.MZA * g + this.MZB * c + this.MZC * h, + E = CalRGBCS.#o; + E[0] = l; + E[1] = C; + E[2] = Q; + const u = CalRGBCS.#g; + this.#u(this.whitePoint, E, u); + const d = CalRGBCS.#o; + this.#E(this.blackPoint, u, d); + const f = CalRGBCS.#g; + this.#d(CalRGBCS.#r, d, f); + const p = CalRGBCS.#o; + this.#c(CalRGBCS.#s, f, p); + i[a] = 255 * this.#C(p[0]); + i[a + 1] = 255 * this.#C(p[1]); + i[a + 2] = 255 * this.#C(p[2]); + } + getRgbItem(e, t, i, a) { + this.#t(e, t, i, a, 1); + } + getRgbBuffer(e, t, i, a, s, r, n) { + const o = 1 / ((1 << r) - 1); + for (let r = 0; r < i; ++r) { + this.#t(e, t, a, s, o); + t += 3; + s += 3 + n; + } + } + getOutputLength(e, t) { + return ((e * (3 + t)) / 3) | 0; + } +} +class LabCS extends ColorSpace { + constructor(e, t, i) { + super("Lab", 3); + if (!e) + throw new FormatError( + "WhitePoint missing - required for color space Lab", + ); + [this.XW, this.YW, this.ZW] = e; + [this.amin, this.amax, this.bmin, this.bmax] = i || [-100, 100, -100, 100]; + [this.XB, this.YB, this.ZB] = t || [0, 0, 0]; + if (this.XW < 0 || this.ZW < 0 || 1 !== this.YW) + throw new FormatError( + "Invalid WhitePoint components, no fallback available", + ); + if (this.XB < 0 || this.YB < 0 || this.ZB < 0) { + info("Invalid BlackPoint, falling back to default"); + this.XB = this.YB = this.ZB = 0; + } + if (this.amin > this.amax || this.bmin > this.bmax) { + info("Invalid Range, falling back to defaults"); + this.amin = -100; + this.amax = 100; + this.bmin = -100; + this.bmax = 100; + } + } + #f(e) { + return e >= 6 / 29 ? e ** 3 : (108 / 841) * (e - 4 / 29); + } + #p(e, t, i, a) { + return i + (e * (a - i)) / t; + } + #t(e, t, i, a, s) { + let r = e[t], + n = e[t + 1], + o = e[t + 2]; + if (!1 !== i) { + r = this.#p(r, i, 0, 100); + n = this.#p(n, i, this.amin, this.amax); + o = this.#p(o, i, this.bmin, this.bmax); + } + n > this.amax ? (n = this.amax) : n < this.amin && (n = this.amin); + o > this.bmax ? (o = this.bmax) : o < this.bmin && (o = this.bmin); + const g = (r + 16) / 116, + c = g + n / 500, + h = g - o / 200, + l = this.XW * this.#f(c), + C = this.YW * this.#f(g), + Q = this.ZW * this.#f(h); + let E, u, d; + if (this.ZW < 1) { + E = 3.1339 * l + -1.617 * C + -0.4906 * Q; + u = -0.9785 * l + 1.916 * C + 0.0333 * Q; + d = 0.072 * l + -0.229 * C + 1.4057 * Q; + } else { + E = 3.2406 * l + -1.5372 * C + -0.4986 * Q; + u = -0.9689 * l + 1.8758 * C + 0.0415 * Q; + d = 0.0557 * l + -0.204 * C + 1.057 * Q; + } + a[s] = 255 * Math.sqrt(E); + a[s + 1] = 255 * Math.sqrt(u); + a[s + 2] = 255 * Math.sqrt(d); + } + getRgbItem(e, t, i, a) { + this.#t(e, t, !1, i, a); + } + getRgbBuffer(e, t, i, a, s, r, n) { + const o = (1 << r) - 1; + for (let r = 0; r < i; r++) { + this.#t(e, t, o, a, s); + t += 3; + s += 3 + n; + } + } + getOutputLength(e, t) { + return ((e * (3 + t)) / 3) | 0; + } + isDefaultDecode(e, t) { + return !0; + } + get usesZeroToOneRange() { + return shadow(this, "usesZeroToOneRange", !1); + } +} +function hexToInt(e, t) { + let i = 0; + for (let a = 0; a <= t; a++) i = (i << 8) | e[a]; + return i >>> 0; +} +function hexToStr(e, t) { + return 1 === t + ? String.fromCharCode(e[0], e[1]) + : 3 === t + ? String.fromCharCode(e[0], e[1], e[2], e[3]) + : String.fromCharCode(...e.subarray(0, t + 1)); +} +function addHex(e, t, i) { + let a = 0; + for (let s = i; s >= 0; s--) { + a += e[s] + t[s]; + e[s] = 255 & a; + a >>= 8; + } +} +function incHex(e, t) { + let i = 1; + for (let a = t; a >= 0 && i > 0; a--) { + i += e[a]; + e[a] = 255 & i; + i >>= 8; + } +} +const kt = 16; +class BinaryCMapStream { + constructor(e) { + this.buffer = e; + this.pos = 0; + this.end = e.length; + this.tmpBuf = new Uint8Array(19); + } + readByte() { + return this.pos >= this.end ? -1 : this.buffer[this.pos++]; + } + readNumber() { + let e, + t = 0; + do { + const i = this.readByte(); + if (i < 0) throw new FormatError("unexpected EOF in bcmap"); + e = !(128 & i); + t = (t << 7) | (127 & i); + } while (!e); + return t; + } + readSigned() { + const e = this.readNumber(); + return 1 & e ? ~(e >>> 1) : e >>> 1; + } + readHex(e, t) { + e.set(this.buffer.subarray(this.pos, this.pos + t + 1)); + this.pos += t + 1; + } + readHexNumber(e, t) { + let i; + const a = this.tmpBuf; + let s = 0; + do { + const e = this.readByte(); + if (e < 0) throw new FormatError("unexpected EOF in bcmap"); + i = !(128 & e); + a[s++] = 127 & e; + } while (!i); + let r = t, + n = 0, + o = 0; + for (; r >= 0; ) { + for (; o < 8 && a.length > 0; ) { + n |= a[--s] << o; + o += 7; + } + e[r] = 255 & n; + r--; + n >>= 8; + o -= 8; + } + } + readHexSigned(e, t) { + this.readHexNumber(e, t); + const i = 1 & e[t] ? 255 : 0; + let a = 0; + for (let s = 0; s <= t; s++) { + a = ((1 & a) << 8) | e[s]; + e[s] = (a >> 1) ^ i; + } + } + readString() { + const e = this.readNumber(), + t = new Array(e); + for (let i = 0; i < e; i++) t[i] = this.readNumber(); + return String.fromCharCode(...t); + } +} +class BinaryCMapReader { + async process(e, t, i) { + const a = new BinaryCMapStream(e), + s = a.readByte(); + t.vertical = !!(1 & s); + let r = null; + const n = new Uint8Array(kt), + o = new Uint8Array(kt), + g = new Uint8Array(kt), + c = new Uint8Array(kt), + h = new Uint8Array(kt); + let l, C; + for (; (C = a.readByte()) >= 0; ) { + const e = C >> 5; + if (7 === e) { + switch (31 & C) { + case 0: + a.readString(); + break; + case 1: + r = a.readString(); + } + continue; + } + const i = !!(16 & C), + s = 15 & C; + if (s + 1 > kt) + throw new Error("BinaryCMapReader.process: Invalid dataSize."); + const Q = 1, + E = a.readNumber(); + switch (e) { + case 0: + a.readHex(n, s); + a.readHexNumber(o, s); + addHex(o, n, s); + t.addCodespaceRange(s + 1, hexToInt(n, s), hexToInt(o, s)); + for (let e = 1; e < E; e++) { + incHex(o, s); + a.readHexNumber(n, s); + addHex(n, o, s); + a.readHexNumber(o, s); + addHex(o, n, s); + t.addCodespaceRange(s + 1, hexToInt(n, s), hexToInt(o, s)); + } + break; + case 1: + a.readHex(n, s); + a.readHexNumber(o, s); + addHex(o, n, s); + a.readNumber(); + for (let e = 1; e < E; e++) { + incHex(o, s); + a.readHexNumber(n, s); + addHex(n, o, s); + a.readHexNumber(o, s); + addHex(o, n, s); + a.readNumber(); + } + break; + case 2: + a.readHex(g, s); + l = a.readNumber(); + t.mapOne(hexToInt(g, s), l); + for (let e = 1; e < E; e++) { + incHex(g, s); + if (!i) { + a.readHexNumber(h, s); + addHex(g, h, s); + } + l = a.readSigned() + (l + 1); + t.mapOne(hexToInt(g, s), l); + } + break; + case 3: + a.readHex(n, s); + a.readHexNumber(o, s); + addHex(o, n, s); + l = a.readNumber(); + t.mapCidRange(hexToInt(n, s), hexToInt(o, s), l); + for (let e = 1; e < E; e++) { + incHex(o, s); + if (i) n.set(o); + else { + a.readHexNumber(n, s); + addHex(n, o, s); + } + a.readHexNumber(o, s); + addHex(o, n, s); + l = a.readNumber(); + t.mapCidRange(hexToInt(n, s), hexToInt(o, s), l); + } + break; + case 4: + a.readHex(g, Q); + a.readHex(c, s); + t.mapOne(hexToInt(g, Q), hexToStr(c, s)); + for (let e = 1; e < E; e++) { + incHex(g, Q); + if (!i) { + a.readHexNumber(h, Q); + addHex(g, h, Q); + } + incHex(c, s); + a.readHexSigned(h, s); + addHex(c, h, s); + t.mapOne(hexToInt(g, Q), hexToStr(c, s)); + } + break; + case 5: + a.readHex(n, Q); + a.readHexNumber(o, Q); + addHex(o, n, Q); + a.readHex(c, s); + t.mapBfRange(hexToInt(n, Q), hexToInt(o, Q), hexToStr(c, s)); + for (let e = 1; e < E; e++) { + incHex(o, Q); + if (i) n.set(o); + else { + a.readHexNumber(n, Q); + addHex(n, o, Q); + } + a.readHexNumber(o, Q); + addHex(o, n, Q); + a.readHex(c, s); + t.mapBfRange(hexToInt(n, Q), hexToInt(o, Q), hexToStr(c, s)); + } + break; + default: + throw new Error(`BinaryCMapReader.process - unknown type: ${e}`); + } + } + return r ? i(r) : t; + } +} +const Rt = new Uint8Array(0); +class DecodeStream extends BaseStream { + constructor(e) { + super(); + this._rawMinBufferLength = e || 0; + this.pos = 0; + this.bufferLength = 0; + this.eof = !1; + this.buffer = Rt; + this.minBufferLength = 512; + if (e) for (; this.minBufferLength < e; ) this.minBufferLength *= 2; + } + get isEmpty() { + for (; !this.eof && 0 === this.bufferLength; ) this.readBlock(); + return 0 === this.bufferLength; + } + ensureBuffer(e) { + const t = this.buffer; + if (e <= t.byteLength) return t; + let i = this.minBufferLength; + for (; i < e; ) i *= 2; + const a = new Uint8Array(i); + a.set(t); + return (this.buffer = a); + } + getByte() { + const e = this.pos; + for (; this.bufferLength <= e; ) { + if (this.eof) return -1; + this.readBlock(); + } + return this.buffer[this.pos++]; + } + getBytes(e, t = !1) { + const i = this.pos; + let a; + if (e) { + this.ensureBuffer(i + e); + a = i + e; + for (; !this.eof && this.bufferLength < a; ) this.readBlock(t); + const s = this.bufferLength; + a > s && (a = s); + } else { + for (; !this.eof; ) this.readBlock(t); + a = this.bufferLength; + } + this.pos = a; + return this.buffer.subarray(i, a); + } + reset() { + this.pos = 0; + } + makeSubStream(e, t, i = null) { + if (void 0 === t) for (; !this.eof; ) this.readBlock(); + else { + const i = e + t; + for (; this.bufferLength <= i && !this.eof; ) this.readBlock(); + } + return new Stream(this.buffer, e, t, i); + } + getBaseStreams() { + return this.str ? this.str.getBaseStreams() : null; + } +} +class StreamsSequenceStream extends DecodeStream { + constructor(e, t = null) { + let i = 0; + for (const t of e) + i += t instanceof DecodeStream ? t._rawMinBufferLength : t.length; + super(i); + this.streams = e; + this._onError = t; + } + readBlock() { + const e = this.streams; + if (0 === e.length) { + this.eof = !0; + return; + } + const t = e.shift(); + let i; + try { + i = t.getBytes(); + } catch (e) { + if (this._onError) { + this._onError(e, t.dict?.objId); + return; + } + throw e; + } + const a = this.bufferLength, + s = a + i.length; + this.ensureBuffer(s).set(i, a); + this.bufferLength = s; + } + getBaseStreams() { + const e = []; + for (const t of this.streams) { + const i = t.getBaseStreams(); + i && e.push(...i); + } + return e.length > 0 ? e : null; + } +} +class Ascii85Stream extends DecodeStream { + constructor(e, t) { + t && (t *= 0.8); + super(t); + this.str = e; + this.dict = e.dict; + this.input = new Uint8Array(5); + } + readBlock() { + const e = this.str; + let t = e.getByte(); + for (; isWhiteSpace(t); ) t = e.getByte(); + if (-1 === t || 126 === t) { + this.eof = !0; + return; + } + const i = this.bufferLength; + let a, s; + if (122 === t) { + a = this.ensureBuffer(i + 4); + for (s = 0; s < 4; ++s) a[i + s] = 0; + this.bufferLength += 4; + } else { + const r = this.input; + r[0] = t; + for (s = 1; s < 5; ++s) { + t = e.getByte(); + for (; isWhiteSpace(t); ) t = e.getByte(); + r[s] = t; + if (-1 === t || 126 === t) break; + } + a = this.ensureBuffer(i + s - 1); + this.bufferLength += s - 1; + if (s < 5) { + for (; s < 5; ++s) r[s] = 117; + this.eof = !0; + } + let n = 0; + for (s = 0; s < 5; ++s) n = 85 * n + (r[s] - 33); + for (s = 3; s >= 0; --s) { + a[i + s] = 255 & n; + n >>= 8; + } + } + } +} +class AsciiHexStream extends DecodeStream { + constructor(e, t) { + t && (t *= 0.5); + super(t); + this.str = e; + this.dict = e.dict; + this.firstDigit = -1; + } + readBlock() { + const e = this.str.getBytes(8e3); + if (!e.length) { + this.eof = !0; + return; + } + const t = (e.length + 1) >> 1, + i = this.ensureBuffer(this.bufferLength + t); + let a = this.bufferLength, + s = this.firstDigit; + for (const t of e) { + let e; + if (t >= 48 && t <= 57) e = 15 & t; + else { + if (!((t >= 65 && t <= 70) || (t >= 97 && t <= 102))) { + if (62 === t) { + this.eof = !0; + break; + } + continue; + } + e = 9 + (15 & t); + } + if (s < 0) s = e; + else { + i[a++] = (s << 4) | e; + s = -1; + } + } + if (s >= 0 && this.eof) { + i[a++] = s << 4; + s = -1; + } + this.firstDigit = s; + this.bufferLength = a; + } +} +const Nt = -1, + Gt = [ + [-1, -1], + [-1, -1], + [7, 8], + [7, 7], + [6, 6], + [6, 6], + [6, 5], + [6, 5], + [4, 0], + [4, 0], + [4, 0], + [4, 0], + [4, 0], + [4, 0], + [4, 0], + [4, 0], + [3, 1], + [3, 1], + [3, 1], + [3, 1], + [3, 1], + [3, 1], + [3, 1], + [3, 1], + [3, 1], + [3, 1], + [3, 1], + [3, 1], + [3, 1], + [3, 1], + [3, 1], + [3, 1], + [3, 4], + [3, 4], + [3, 4], + [3, 4], + [3, 4], + [3, 4], + [3, 4], + [3, 4], + [3, 4], + [3, 4], + [3, 4], + [3, 4], + [3, 4], + [3, 4], + [3, 4], + [3, 4], + [3, 3], + [3, 3], + [3, 3], + [3, 3], + [3, 3], + [3, 3], + [3, 3], + [3, 3], + [3, 3], + [3, 3], + [3, 3], + [3, 3], + [3, 3], + [3, 3], + [3, 3], + [3, 3], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + [1, 2], + ], + xt = [ + [-1, -1], + [12, -2], + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [11, 1792], + [11, 1792], + [12, 1984], + [12, 2048], + [12, 2112], + [12, 2176], + [12, 2240], + [12, 2304], + [11, 1856], + [11, 1856], + [11, 1920], + [11, 1920], + [12, 2368], + [12, 2432], + [12, 2496], + [12, 2560], + ], + Mt = [ + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [8, 29], + [8, 29], + [8, 30], + [8, 30], + [8, 45], + [8, 45], + [8, 46], + [8, 46], + [7, 22], + [7, 22], + [7, 22], + [7, 22], + [7, 23], + [7, 23], + [7, 23], + [7, 23], + [8, 47], + [8, 47], + [8, 48], + [8, 48], + [6, 13], + [6, 13], + [6, 13], + [6, 13], + [6, 13], + [6, 13], + [6, 13], + [6, 13], + [7, 20], + [7, 20], + [7, 20], + [7, 20], + [8, 33], + [8, 33], + [8, 34], + [8, 34], + [8, 35], + [8, 35], + [8, 36], + [8, 36], + [8, 37], + [8, 37], + [8, 38], + [8, 38], + [7, 19], + [7, 19], + [7, 19], + [7, 19], + [8, 31], + [8, 31], + [8, 32], + [8, 32], + [6, 1], + [6, 1], + [6, 1], + [6, 1], + [6, 1], + [6, 1], + [6, 1], + [6, 1], + [6, 12], + [6, 12], + [6, 12], + [6, 12], + [6, 12], + [6, 12], + [6, 12], + [6, 12], + [8, 53], + [8, 53], + [8, 54], + [8, 54], + [7, 26], + [7, 26], + [7, 26], + [7, 26], + [8, 39], + [8, 39], + [8, 40], + [8, 40], + [8, 41], + [8, 41], + [8, 42], + [8, 42], + [8, 43], + [8, 43], + [8, 44], + [8, 44], + [7, 21], + [7, 21], + [7, 21], + [7, 21], + [7, 28], + [7, 28], + [7, 28], + [7, 28], + [8, 61], + [8, 61], + [8, 62], + [8, 62], + [8, 63], + [8, 63], + [8, 0], + [8, 0], + [8, 320], + [8, 320], + [8, 384], + [8, 384], + [5, 10], + [5, 10], + [5, 10], + [5, 10], + [5, 10], + [5, 10], + [5, 10], + [5, 10], + [5, 10], + [5, 10], + [5, 10], + [5, 10], + [5, 10], + [5, 10], + [5, 10], + [5, 10], + [5, 11], + [5, 11], + [5, 11], + [5, 11], + [5, 11], + [5, 11], + [5, 11], + [5, 11], + [5, 11], + [5, 11], + [5, 11], + [5, 11], + [5, 11], + [5, 11], + [5, 11], + [5, 11], + [7, 27], + [7, 27], + [7, 27], + [7, 27], + [8, 59], + [8, 59], + [8, 60], + [8, 60], + [9, 1472], + [9, 1536], + [9, 1600], + [9, 1728], + [7, 18], + [7, 18], + [7, 18], + [7, 18], + [7, 24], + [7, 24], + [7, 24], + [7, 24], + [8, 49], + [8, 49], + [8, 50], + [8, 50], + [8, 51], + [8, 51], + [8, 52], + [8, 52], + [7, 25], + [7, 25], + [7, 25], + [7, 25], + [8, 55], + [8, 55], + [8, 56], + [8, 56], + [8, 57], + [8, 57], + [8, 58], + [8, 58], + [6, 192], + [6, 192], + [6, 192], + [6, 192], + [6, 192], + [6, 192], + [6, 192], + [6, 192], + [6, 1664], + [6, 1664], + [6, 1664], + [6, 1664], + [6, 1664], + [6, 1664], + [6, 1664], + [6, 1664], + [8, 448], + [8, 448], + [8, 512], + [8, 512], + [9, 704], + [9, 768], + [8, 640], + [8, 640], + [8, 576], + [8, 576], + [9, 832], + [9, 896], + [9, 960], + [9, 1024], + [9, 1088], + [9, 1152], + [9, 1216], + [9, 1280], + [9, 1344], + [9, 1408], + [7, 256], + [7, 256], + [7, 256], + [7, 256], + [4, 2], + [4, 2], + [4, 2], + [4, 2], + [4, 2], + [4, 2], + [4, 2], + [4, 2], + [4, 2], + [4, 2], + [4, 2], + [4, 2], + [4, 2], + [4, 2], + [4, 2], + [4, 2], + [4, 2], + [4, 2], + [4, 2], + [4, 2], + [4, 2], + [4, 2], + [4, 2], + [4, 2], + [4, 2], + [4, 2], + [4, 2], + [4, 2], + [4, 2], + [4, 2], + [4, 2], + [4, 2], + [4, 3], + [4, 3], + [4, 3], + [4, 3], + [4, 3], + [4, 3], + [4, 3], + [4, 3], + [4, 3], + [4, 3], + [4, 3], + [4, 3], + [4, 3], + [4, 3], + [4, 3], + [4, 3], + [4, 3], + [4, 3], + [4, 3], + [4, 3], + [4, 3], + [4, 3], + [4, 3], + [4, 3], + [4, 3], + [4, 3], + [4, 3], + [4, 3], + [4, 3], + [4, 3], + [4, 3], + [4, 3], + [5, 128], + [5, 128], + [5, 128], + [5, 128], + [5, 128], + [5, 128], + [5, 128], + [5, 128], + [5, 128], + [5, 128], + [5, 128], + [5, 128], + [5, 128], + [5, 128], + [5, 128], + [5, 128], + [5, 8], + [5, 8], + [5, 8], + [5, 8], + [5, 8], + [5, 8], + [5, 8], + [5, 8], + [5, 8], + [5, 8], + [5, 8], + [5, 8], + [5, 8], + [5, 8], + [5, 8], + [5, 8], + [5, 9], + [5, 9], + [5, 9], + [5, 9], + [5, 9], + [5, 9], + [5, 9], + [5, 9], + [5, 9], + [5, 9], + [5, 9], + [5, 9], + [5, 9], + [5, 9], + [5, 9], + [5, 9], + [6, 16], + [6, 16], + [6, 16], + [6, 16], + [6, 16], + [6, 16], + [6, 16], + [6, 16], + [6, 17], + [6, 17], + [6, 17], + [6, 17], + [6, 17], + [6, 17], + [6, 17], + [6, 17], + [4, 4], + [4, 4], + [4, 4], + [4, 4], + [4, 4], + [4, 4], + [4, 4], + [4, 4], + [4, 4], + [4, 4], + [4, 4], + [4, 4], + [4, 4], + [4, 4], + [4, 4], + [4, 4], + [4, 4], + [4, 4], + [4, 4], + [4, 4], + [4, 4], + [4, 4], + [4, 4], + [4, 4], + [4, 4], + [4, 4], + [4, 4], + [4, 4], + [4, 4], + [4, 4], + [4, 4], + [4, 4], + [4, 5], + [4, 5], + [4, 5], + [4, 5], + [4, 5], + [4, 5], + [4, 5], + [4, 5], + [4, 5], + [4, 5], + [4, 5], + [4, 5], + [4, 5], + [4, 5], + [4, 5], + [4, 5], + [4, 5], + [4, 5], + [4, 5], + [4, 5], + [4, 5], + [4, 5], + [4, 5], + [4, 5], + [4, 5], + [4, 5], + [4, 5], + [4, 5], + [4, 5], + [4, 5], + [4, 5], + [4, 5], + [6, 14], + [6, 14], + [6, 14], + [6, 14], + [6, 14], + [6, 14], + [6, 14], + [6, 14], + [6, 15], + [6, 15], + [6, 15], + [6, 15], + [6, 15], + [6, 15], + [6, 15], + [6, 15], + [5, 64], + [5, 64], + [5, 64], + [5, 64], + [5, 64], + [5, 64], + [5, 64], + [5, 64], + [5, 64], + [5, 64], + [5, 64], + [5, 64], + [5, 64], + [5, 64], + [5, 64], + [5, 64], + [4, 6], + [4, 6], + [4, 6], + [4, 6], + [4, 6], + [4, 6], + [4, 6], + [4, 6], + [4, 6], + [4, 6], + [4, 6], + [4, 6], + [4, 6], + [4, 6], + [4, 6], + [4, 6], + [4, 6], + [4, 6], + [4, 6], + [4, 6], + [4, 6], + [4, 6], + [4, 6], + [4, 6], + [4, 6], + [4, 6], + [4, 6], + [4, 6], + [4, 6], + [4, 6], + [4, 6], + [4, 6], + [4, 7], + [4, 7], + [4, 7], + [4, 7], + [4, 7], + [4, 7], + [4, 7], + [4, 7], + [4, 7], + [4, 7], + [4, 7], + [4, 7], + [4, 7], + [4, 7], + [4, 7], + [4, 7], + [4, 7], + [4, 7], + [4, 7], + [4, 7], + [4, 7], + [4, 7], + [4, 7], + [4, 7], + [4, 7], + [4, 7], + [4, 7], + [4, 7], + [4, 7], + [4, 7], + [4, 7], + [4, 7], + ], + Ut = [ + [-1, -1], + [-1, -1], + [12, -2], + [12, -2], + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [11, 1792], + [11, 1792], + [11, 1792], + [11, 1792], + [12, 1984], + [12, 1984], + [12, 2048], + [12, 2048], + [12, 2112], + [12, 2112], + [12, 2176], + [12, 2176], + [12, 2240], + [12, 2240], + [12, 2304], + [12, 2304], + [11, 1856], + [11, 1856], + [11, 1856], + [11, 1856], + [11, 1920], + [11, 1920], + [11, 1920], + [11, 1920], + [12, 2368], + [12, 2368], + [12, 2432], + [12, 2432], + [12, 2496], + [12, 2496], + [12, 2560], + [12, 2560], + [10, 18], + [10, 18], + [10, 18], + [10, 18], + [10, 18], + [10, 18], + [10, 18], + [10, 18], + [12, 52], + [12, 52], + [13, 640], + [13, 704], + [13, 768], + [13, 832], + [12, 55], + [12, 55], + [12, 56], + [12, 56], + [13, 1280], + [13, 1344], + [13, 1408], + [13, 1472], + [12, 59], + [12, 59], + [12, 60], + [12, 60], + [13, 1536], + [13, 1600], + [11, 24], + [11, 24], + [11, 24], + [11, 24], + [11, 25], + [11, 25], + [11, 25], + [11, 25], + [13, 1664], + [13, 1728], + [12, 320], + [12, 320], + [12, 384], + [12, 384], + [12, 448], + [12, 448], + [13, 512], + [13, 576], + [12, 53], + [12, 53], + [12, 54], + [12, 54], + [13, 896], + [13, 960], + [13, 1024], + [13, 1088], + [13, 1152], + [13, 1216], + [10, 64], + [10, 64], + [10, 64], + [10, 64], + [10, 64], + [10, 64], + [10, 64], + [10, 64], + ], + Lt = [ + [8, 13], + [8, 13], + [8, 13], + [8, 13], + [8, 13], + [8, 13], + [8, 13], + [8, 13], + [8, 13], + [8, 13], + [8, 13], + [8, 13], + [8, 13], + [8, 13], + [8, 13], + [8, 13], + [11, 23], + [11, 23], + [12, 50], + [12, 51], + [12, 44], + [12, 45], + [12, 46], + [12, 47], + [12, 57], + [12, 58], + [12, 61], + [12, 256], + [10, 16], + [10, 16], + [10, 16], + [10, 16], + [10, 17], + [10, 17], + [10, 17], + [10, 17], + [12, 48], + [12, 49], + [12, 62], + [12, 63], + [12, 30], + [12, 31], + [12, 32], + [12, 33], + [12, 40], + [12, 41], + [11, 22], + [11, 22], + [8, 14], + [8, 14], + [8, 14], + [8, 14], + [8, 14], + [8, 14], + [8, 14], + [8, 14], + [8, 14], + [8, 14], + [8, 14], + [8, 14], + [8, 14], + [8, 14], + [8, 14], + [8, 14], + [7, 10], + [7, 10], + [7, 10], + [7, 10], + [7, 10], + [7, 10], + [7, 10], + [7, 10], + [7, 10], + [7, 10], + [7, 10], + [7, 10], + [7, 10], + [7, 10], + [7, 10], + [7, 10], + [7, 10], + [7, 10], + [7, 10], + [7, 10], + [7, 10], + [7, 10], + [7, 10], + [7, 10], + [7, 10], + [7, 10], + [7, 10], + [7, 10], + [7, 10], + [7, 10], + [7, 10], + [7, 10], + [7, 11], + [7, 11], + [7, 11], + [7, 11], + [7, 11], + [7, 11], + [7, 11], + [7, 11], + [7, 11], + [7, 11], + [7, 11], + [7, 11], + [7, 11], + [7, 11], + [7, 11], + [7, 11], + [7, 11], + [7, 11], + [7, 11], + [7, 11], + [7, 11], + [7, 11], + [7, 11], + [7, 11], + [7, 11], + [7, 11], + [7, 11], + [7, 11], + [7, 11], + [7, 11], + [7, 11], + [7, 11], + [9, 15], + [9, 15], + [9, 15], + [9, 15], + [9, 15], + [9, 15], + [9, 15], + [9, 15], + [12, 128], + [12, 192], + [12, 26], + [12, 27], + [12, 28], + [12, 29], + [11, 19], + [11, 19], + [11, 20], + [11, 20], + [12, 34], + [12, 35], + [12, 36], + [12, 37], + [12, 38], + [12, 39], + [11, 21], + [11, 21], + [12, 42], + [12, 43], + [10, 0], + [10, 0], + [10, 0], + [10, 0], + [7, 12], + [7, 12], + [7, 12], + [7, 12], + [7, 12], + [7, 12], + [7, 12], + [7, 12], + [7, 12], + [7, 12], + [7, 12], + [7, 12], + [7, 12], + [7, 12], + [7, 12], + [7, 12], + [7, 12], + [7, 12], + [7, 12], + [7, 12], + [7, 12], + [7, 12], + [7, 12], + [7, 12], + [7, 12], + [7, 12], + [7, 12], + [7, 12], + [7, 12], + [7, 12], + [7, 12], + [7, 12], + ], + Jt = [ + [-1, -1], + [-1, -1], + [-1, -1], + [-1, -1], + [6, 9], + [6, 8], + [5, 7], + [5, 7], + [4, 6], + [4, 6], + [4, 6], + [4, 6], + [4, 5], + [4, 5], + [4, 5], + [4, 5], + [3, 1], + [3, 1], + [3, 1], + [3, 1], + [3, 1], + [3, 1], + [3, 1], + [3, 1], + [3, 4], + [3, 4], + [3, 4], + [3, 4], + [3, 4], + [3, 4], + [3, 4], + [3, 4], + [2, 3], + [2, 3], + [2, 3], + [2, 3], + [2, 3], + [2, 3], + [2, 3], + [2, 3], + [2, 3], + [2, 3], + [2, 3], + [2, 3], + [2, 3], + [2, 3], + [2, 3], + [2, 3], + [2, 2], + [2, 2], + [2, 2], + [2, 2], + [2, 2], + [2, 2], + [2, 2], + [2, 2], + [2, 2], + [2, 2], + [2, 2], + [2, 2], + [2, 2], + [2, 2], + [2, 2], + [2, 2], + ]; +class CCITTFaxDecoder { + constructor(e, t = {}) { + if (!e || "function" != typeof e.next) + throw new Error('CCITTFaxDecoder - invalid "source" parameter.'); + this.source = e; + this.eof = !1; + this.encoding = t.K || 0; + this.eoline = t.EndOfLine || !1; + this.byteAlign = t.EncodedByteAlign || !1; + this.columns = t.Columns || 1728; + this.rows = t.Rows || 0; + this.eoblock = t.EndOfBlock ?? !0; + this.black = t.BlackIs1 || !1; + this.codingLine = new Uint32Array(this.columns + 1); + this.refLine = new Uint32Array(this.columns + 2); + this.codingLine[0] = this.columns; + this.codingPos = 0; + this.row = 0; + this.nextLine2D = this.encoding < 0; + this.inputBits = 0; + this.inputBuf = 0; + this.outputBits = 0; + this.rowsDone = !1; + let i; + for (; 0 === (i = this._lookBits(12)); ) this._eatBits(1); + 1 === i && this._eatBits(12); + if (this.encoding > 0) { + this.nextLine2D = !this._lookBits(1); + this._eatBits(1); + } + } + readNextChar() { + if (this.eof) return -1; + const e = this.refLine, + t = this.codingLine, + i = this.columns; + let a, s, r, n, o; + if (0 === this.outputBits) { + this.rowsDone && (this.eof = !0); + if (this.eof) return -1; + this.err = !1; + let r, o, g; + if (this.nextLine2D) { + for (n = 0; t[n] < i; ++n) e[n] = t[n]; + e[n++] = i; + e[n] = i; + t[0] = 0; + this.codingPos = 0; + a = 0; + s = 0; + for (; t[this.codingPos] < i; ) { + r = this._getTwoDimCode(); + switch (r) { + case 0: + this._addPixels(e[a + 1], s); + e[a + 1] < i && (a += 2); + break; + case 1: + r = o = 0; + if (s) { + do { + r += g = this._getBlackCode(); + } while (g >= 64); + do { + o += g = this._getWhiteCode(); + } while (g >= 64); + } else { + do { + r += g = this._getWhiteCode(); + } while (g >= 64); + do { + o += g = this._getBlackCode(); + } while (g >= 64); + } + this._addPixels(t[this.codingPos] + r, s); + t[this.codingPos] < i && + this._addPixels(t[this.codingPos] + o, 1 ^ s); + for (; e[a] <= t[this.codingPos] && e[a] < i; ) a += 2; + break; + case 7: + this._addPixels(e[a] + 3, s); + s ^= 1; + if (t[this.codingPos] < i) { + ++a; + for (; e[a] <= t[this.codingPos] && e[a] < i; ) a += 2; + } + break; + case 5: + this._addPixels(e[a] + 2, s); + s ^= 1; + if (t[this.codingPos] < i) { + ++a; + for (; e[a] <= t[this.codingPos] && e[a] < i; ) a += 2; + } + break; + case 3: + this._addPixels(e[a] + 1, s); + s ^= 1; + if (t[this.codingPos] < i) { + ++a; + for (; e[a] <= t[this.codingPos] && e[a] < i; ) a += 2; + } + break; + case 2: + this._addPixels(e[a], s); + s ^= 1; + if (t[this.codingPos] < i) { + ++a; + for (; e[a] <= t[this.codingPos] && e[a] < i; ) a += 2; + } + break; + case 8: + this._addPixelsNeg(e[a] - 3, s); + s ^= 1; + if (t[this.codingPos] < i) { + a > 0 ? --a : ++a; + for (; e[a] <= t[this.codingPos] && e[a] < i; ) a += 2; + } + break; + case 6: + this._addPixelsNeg(e[a] - 2, s); + s ^= 1; + if (t[this.codingPos] < i) { + a > 0 ? --a : ++a; + for (; e[a] <= t[this.codingPos] && e[a] < i; ) a += 2; + } + break; + case 4: + this._addPixelsNeg(e[a] - 1, s); + s ^= 1; + if (t[this.codingPos] < i) { + a > 0 ? --a : ++a; + for (; e[a] <= t[this.codingPos] && e[a] < i; ) a += 2; + } + break; + case Nt: + this._addPixels(i, 0); + this.eof = !0; + break; + default: + info("bad 2d code"); + this._addPixels(i, 0); + this.err = !0; + } + } + } else { + t[0] = 0; + this.codingPos = 0; + s = 0; + for (; t[this.codingPos] < i; ) { + r = 0; + if (s) + do { + r += g = this._getBlackCode(); + } while (g >= 64); + else + do { + r += g = this._getWhiteCode(); + } while (g >= 64); + this._addPixels(t[this.codingPos] + r, s); + s ^= 1; + } + } + let c = !1; + this.byteAlign && (this.inputBits &= -8); + if (this.eoblock || this.row !== this.rows - 1) { + r = this._lookBits(12); + if (this.eoline) + for (; r !== Nt && 1 !== r; ) { + this._eatBits(1); + r = this._lookBits(12); + } + else + for (; 0 === r; ) { + this._eatBits(1); + r = this._lookBits(12); + } + if (1 === r) { + this._eatBits(12); + c = !0; + } else r === Nt && (this.eof = !0); + } else this.rowsDone = !0; + if (!this.eof && this.encoding > 0 && !this.rowsDone) { + this.nextLine2D = !this._lookBits(1); + this._eatBits(1); + } + if (this.eoblock && c && this.byteAlign) { + r = this._lookBits(12); + if (1 === r) { + this._eatBits(12); + if (this.encoding > 0) { + this._lookBits(1); + this._eatBits(1); + } + if (this.encoding >= 0) + for (n = 0; n < 4; ++n) { + r = this._lookBits(12); + 1 !== r && info("bad rtc code: " + r); + this._eatBits(12); + if (this.encoding > 0) { + this._lookBits(1); + this._eatBits(1); + } + } + this.eof = !0; + } + } else if (this.err && this.eoline) { + for (;;) { + r = this._lookBits(13); + if (r === Nt) { + this.eof = !0; + return -1; + } + if (r >> 1 == 1) break; + this._eatBits(1); + } + this._eatBits(12); + if (this.encoding > 0) { + this._eatBits(1); + this.nextLine2D = !(1 & r); + } + } + this.outputBits = + t[0] > 0 ? t[(this.codingPos = 0)] : t[(this.codingPos = 1)]; + this.row++; + } + if (this.outputBits >= 8) { + o = 1 & this.codingPos ? 0 : 255; + this.outputBits -= 8; + if (0 === this.outputBits && t[this.codingPos] < i) { + this.codingPos++; + this.outputBits = t[this.codingPos] - t[this.codingPos - 1]; + } + } else { + r = 8; + o = 0; + do { + if ("number" != typeof this.outputBits) + throw new FormatError( + 'Invalid /CCITTFaxDecode data, "outputBits" must be a number.', + ); + if (this.outputBits > r) { + o <<= r; + 1 & this.codingPos || (o |= 255 >> (8 - r)); + this.outputBits -= r; + r = 0; + } else { + o <<= this.outputBits; + 1 & this.codingPos || (o |= 255 >> (8 - this.outputBits)); + r -= this.outputBits; + this.outputBits = 0; + if (t[this.codingPos] < i) { + this.codingPos++; + this.outputBits = t[this.codingPos] - t[this.codingPos - 1]; + } else if (r > 0) { + o <<= r; + r = 0; + } + } + } while (r); + } + this.black && (o ^= 255); + return o; + } + _addPixels(e, t) { + const i = this.codingLine; + let a = this.codingPos; + if (e > i[a]) { + if (e > this.columns) { + info("row is wrong length"); + this.err = !0; + e = this.columns; + } + (1 & a) ^ t && ++a; + i[a] = e; + } + this.codingPos = a; + } + _addPixelsNeg(e, t) { + const i = this.codingLine; + let a = this.codingPos; + if (e > i[a]) { + if (e > this.columns) { + info("row is wrong length"); + this.err = !0; + e = this.columns; + } + (1 & a) ^ t && ++a; + i[a] = e; + } else if (e < i[a]) { + if (e < 0) { + info("invalid code"); + this.err = !0; + e = 0; + } + for (; a > 0 && e < i[a - 1]; ) --a; + i[a] = e; + } + this.codingPos = a; + } + _findTableCode(e, t, i, a) { + const s = a || 0; + for (let a = e; a <= t; ++a) { + let e = this._lookBits(a); + if (e === Nt) return [!0, 1, !1]; + a < t && (e <<= t - a); + if (!s || e >= s) { + const t = i[e - s]; + if (t[0] === a) { + this._eatBits(a); + return [!0, t[1], !0]; + } + } + } + return [!1, 0, !1]; + } + _getTwoDimCode() { + let e, + t = 0; + if (this.eoblock) { + t = this._lookBits(7); + e = Gt[t]; + if (e?.[0] > 0) { + this._eatBits(e[0]); + return e[1]; + } + } else { + const e = this._findTableCode(1, 7, Gt); + if (e[0] && e[2]) return e[1]; + } + info("Bad two dim code"); + return Nt; + } + _getWhiteCode() { + let e, + t = 0; + if (this.eoblock) { + t = this._lookBits(12); + if (t === Nt) return 1; + e = t >> 5 == 0 ? xt[t] : Mt[t >> 3]; + if (e[0] > 0) { + this._eatBits(e[0]); + return e[1]; + } + } else { + let e = this._findTableCode(1, 9, Mt); + if (e[0]) return e[1]; + e = this._findTableCode(11, 12, xt); + if (e[0]) return e[1]; + } + info("bad white code"); + this._eatBits(1); + return 1; + } + _getBlackCode() { + let e, t; + if (this.eoblock) { + e = this._lookBits(13); + if (e === Nt) return 1; + t = + e >> 7 == 0 + ? Ut[e] + : e >> 9 == 0 && e >> 7 != 0 + ? Lt[(e >> 1) - 64] + : Jt[e >> 7]; + if (t[0] > 0) { + this._eatBits(t[0]); + return t[1]; + } + } else { + let e = this._findTableCode(2, 6, Jt); + if (e[0]) return e[1]; + e = this._findTableCode(7, 12, Lt, 64); + if (e[0]) return e[1]; + e = this._findTableCode(10, 13, Ut); + if (e[0]) return e[1]; + } + info("bad black code"); + this._eatBits(1); + return 1; + } + _lookBits(e) { + let t; + for (; this.inputBits < e; ) { + if (-1 === (t = this.source.next())) + return 0 === this.inputBits + ? Nt + : (this.inputBuf << (e - this.inputBits)) & (65535 >> (16 - e)); + this.inputBuf = (this.inputBuf << 8) | t; + this.inputBits += 8; + } + return (this.inputBuf >> (this.inputBits - e)) & (65535 >> (16 - e)); + } + _eatBits(e) { + (this.inputBits -= e) < 0 && (this.inputBits = 0); + } +} +class CCITTFaxStream extends DecodeStream { + constructor(e, t, i) { + super(t); + this.str = e; + this.dict = e.dict; + i instanceof Dict || (i = Dict.empty); + const a = { next: () => e.getByte() }; + this.ccittFaxDecoder = new CCITTFaxDecoder(a, { + K: i.get("K"), + EndOfLine: i.get("EndOfLine"), + EncodedByteAlign: i.get("EncodedByteAlign"), + Columns: i.get("Columns"), + Rows: i.get("Rows"), + EndOfBlock: i.get("EndOfBlock"), + BlackIs1: i.get("BlackIs1"), + }); + } + readBlock() { + for (; !this.eof; ) { + const e = this.ccittFaxDecoder.readNextChar(); + if (-1 === e) { + this.eof = !0; + return; + } + this.ensureBuffer(this.bufferLength + 1); + this.buffer[this.bufferLength++] = e; + } + } +} +const Ht = new Int32Array([ + 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15, + ]), + Yt = new Int32Array([ + 3, 4, 5, 6, 7, 8, 9, 10, 65547, 65549, 65551, 65553, 131091, 131095, 131099, + 131103, 196643, 196651, 196659, 196667, 262211, 262227, 262243, 262259, + 327811, 327843, 327875, 327907, 258, 258, 258, + ]), + vt = new Int32Array([ + 1, 2, 3, 4, 65541, 65543, 131081, 131085, 196625, 196633, 262177, 262193, + 327745, 327777, 393345, 393409, 459009, 459137, 524801, 525057, 590849, + 591361, 657409, 658433, 724993, 727041, 794625, 798721, 868353, 876545, + ]), + Kt = [ + new Int32Array([ + 459008, 524368, 524304, 524568, 459024, 524400, 524336, 590016, 459016, + 524384, 524320, 589984, 524288, 524416, 524352, 590048, 459012, 524376, + 524312, 589968, 459028, 524408, 524344, 590032, 459020, 524392, 524328, + 59e4, 524296, 524424, 524360, 590064, 459010, 524372, 524308, 524572, + 459026, 524404, 524340, 590024, 459018, 524388, 524324, 589992, 524292, + 524420, 524356, 590056, 459014, 524380, 524316, 589976, 459030, 524412, + 524348, 590040, 459022, 524396, 524332, 590008, 524300, 524428, 524364, + 590072, 459009, 524370, 524306, 524570, 459025, 524402, 524338, 590020, + 459017, 524386, 524322, 589988, 524290, 524418, 524354, 590052, 459013, + 524378, 524314, 589972, 459029, 524410, 524346, 590036, 459021, 524394, + 524330, 590004, 524298, 524426, 524362, 590068, 459011, 524374, 524310, + 524574, 459027, 524406, 524342, 590028, 459019, 524390, 524326, 589996, + 524294, 524422, 524358, 590060, 459015, 524382, 524318, 589980, 459031, + 524414, 524350, 590044, 459023, 524398, 524334, 590012, 524302, 524430, + 524366, 590076, 459008, 524369, 524305, 524569, 459024, 524401, 524337, + 590018, 459016, 524385, 524321, 589986, 524289, 524417, 524353, 590050, + 459012, 524377, 524313, 589970, 459028, 524409, 524345, 590034, 459020, + 524393, 524329, 590002, 524297, 524425, 524361, 590066, 459010, 524373, + 524309, 524573, 459026, 524405, 524341, 590026, 459018, 524389, 524325, + 589994, 524293, 524421, 524357, 590058, 459014, 524381, 524317, 589978, + 459030, 524413, 524349, 590042, 459022, 524397, 524333, 590010, 524301, + 524429, 524365, 590074, 459009, 524371, 524307, 524571, 459025, 524403, + 524339, 590022, 459017, 524387, 524323, 589990, 524291, 524419, 524355, + 590054, 459013, 524379, 524315, 589974, 459029, 524411, 524347, 590038, + 459021, 524395, 524331, 590006, 524299, 524427, 524363, 590070, 459011, + 524375, 524311, 524575, 459027, 524407, 524343, 590030, 459019, 524391, + 524327, 589998, 524295, 524423, 524359, 590062, 459015, 524383, 524319, + 589982, 459031, 524415, 524351, 590046, 459023, 524399, 524335, 590014, + 524303, 524431, 524367, 590078, 459008, 524368, 524304, 524568, 459024, + 524400, 524336, 590017, 459016, 524384, 524320, 589985, 524288, 524416, + 524352, 590049, 459012, 524376, 524312, 589969, 459028, 524408, 524344, + 590033, 459020, 524392, 524328, 590001, 524296, 524424, 524360, 590065, + 459010, 524372, 524308, 524572, 459026, 524404, 524340, 590025, 459018, + 524388, 524324, 589993, 524292, 524420, 524356, 590057, 459014, 524380, + 524316, 589977, 459030, 524412, 524348, 590041, 459022, 524396, 524332, + 590009, 524300, 524428, 524364, 590073, 459009, 524370, 524306, 524570, + 459025, 524402, 524338, 590021, 459017, 524386, 524322, 589989, 524290, + 524418, 524354, 590053, 459013, 524378, 524314, 589973, 459029, 524410, + 524346, 590037, 459021, 524394, 524330, 590005, 524298, 524426, 524362, + 590069, 459011, 524374, 524310, 524574, 459027, 524406, 524342, 590029, + 459019, 524390, 524326, 589997, 524294, 524422, 524358, 590061, 459015, + 524382, 524318, 589981, 459031, 524414, 524350, 590045, 459023, 524398, + 524334, 590013, 524302, 524430, 524366, 590077, 459008, 524369, 524305, + 524569, 459024, 524401, 524337, 590019, 459016, 524385, 524321, 589987, + 524289, 524417, 524353, 590051, 459012, 524377, 524313, 589971, 459028, + 524409, 524345, 590035, 459020, 524393, 524329, 590003, 524297, 524425, + 524361, 590067, 459010, 524373, 524309, 524573, 459026, 524405, 524341, + 590027, 459018, 524389, 524325, 589995, 524293, 524421, 524357, 590059, + 459014, 524381, 524317, 589979, 459030, 524413, 524349, 590043, 459022, + 524397, 524333, 590011, 524301, 524429, 524365, 590075, 459009, 524371, + 524307, 524571, 459025, 524403, 524339, 590023, 459017, 524387, 524323, + 589991, 524291, 524419, 524355, 590055, 459013, 524379, 524315, 589975, + 459029, 524411, 524347, 590039, 459021, 524395, 524331, 590007, 524299, + 524427, 524363, 590071, 459011, 524375, 524311, 524575, 459027, 524407, + 524343, 590031, 459019, 524391, 524327, 589999, 524295, 524423, 524359, + 590063, 459015, 524383, 524319, 589983, 459031, 524415, 524351, 590047, + 459023, 524399, 524335, 590015, 524303, 524431, 524367, 590079, + ]), + 9, + ], + Tt = [ + new Int32Array([ + 327680, 327696, 327688, 327704, 327684, 327700, 327692, 327708, 327682, + 327698, 327690, 327706, 327686, 327702, 327694, 0, 327681, 327697, 327689, + 327705, 327685, 327701, 327693, 327709, 327683, 327699, 327691, 327707, + 327687, 327703, 327695, 0, + ]), + 5, + ]; +class FlateStream extends DecodeStream { + constructor(e, t) { + super(t); + this.str = e; + this.dict = e.dict; + const i = e.getByte(), + a = e.getByte(); + if (-1 === i || -1 === a) + throw new FormatError(`Invalid header in flate stream: ${i}, ${a}`); + if (8 != (15 & i)) + throw new FormatError( + `Unknown compression method in flate stream: ${i}, ${a}`, + ); + if (((i << 8) + a) % 31 != 0) + throw new FormatError(`Bad FCHECK in flate stream: ${i}, ${a}`); + if (32 & a) + throw new FormatError(`FDICT bit set in flate stream: ${i}, ${a}`); + this.codeSize = 0; + this.codeBuf = 0; + } + getBits(e) { + const t = this.str; + let i, + a = this.codeSize, + s = this.codeBuf; + for (; a < e; ) { + if (-1 === (i = t.getByte())) + throw new FormatError("Bad encoding in flate stream"); + s |= i << a; + a += 8; + } + i = s & ((1 << e) - 1); + this.codeBuf = s >> e; + this.codeSize = a -= e; + return i; + } + getCode(e) { + const t = this.str, + i = e[0], + a = e[1]; + let s, + r = this.codeSize, + n = this.codeBuf; + for (; r < a && -1 !== (s = t.getByte()); ) { + n |= s << r; + r += 8; + } + const o = i[n & ((1 << a) - 1)], + g = o >> 16, + c = 65535 & o; + if (g < 1 || r < g) throw new FormatError("Bad encoding in flate stream"); + this.codeBuf = n >> g; + this.codeSize = r - g; + return c; + } + generateHuffmanTable(e) { + const t = e.length; + let i, + a = 0; + for (i = 0; i < t; ++i) e[i] > a && (a = e[i]); + const s = 1 << a, + r = new Int32Array(s); + for (let n = 1, o = 0, g = 2; n <= a; ++n, o <<= 1, g <<= 1) + for (let a = 0; a < t; ++a) + if (e[a] === n) { + let e = 0, + t = o; + for (i = 0; i < n; ++i) { + e = (e << 1) | (1 & t); + t >>= 1; + } + for (i = e; i < s; i += g) r[i] = (n << 16) | a; + ++o; + } + return [r, a]; + } + #m(e) { + info(e); + this.eof = !0; + } + readBlock() { + let e, t; + const i = this.str; + let a, + s, + r = this.getBits(3); + 1 & r && (this.eof = !0); + r >>= 1; + if (0 === r) { + let t; + if (-1 === (t = i.getByte())) { + this.#m("Bad block header in flate stream"); + return; + } + let a = t; + if (-1 === (t = i.getByte())) { + this.#m("Bad block header in flate stream"); + return; + } + a |= t << 8; + if (-1 === (t = i.getByte())) { + this.#m("Bad block header in flate stream"); + return; + } + let s = t; + if (-1 === (t = i.getByte())) { + this.#m("Bad block header in flate stream"); + return; + } + s |= t << 8; + if (s !== (65535 & ~a) && (0 !== a || 0 !== s)) + throw new FormatError("Bad uncompressed block length in flate stream"); + this.codeBuf = 0; + this.codeSize = 0; + const r = this.bufferLength, + n = r + a; + e = this.ensureBuffer(n); + this.bufferLength = n; + if (0 === a) -1 === i.peekByte() && (this.eof = !0); + else { + const t = i.getBytes(a); + e.set(t, r); + t.length < a && (this.eof = !0); + } + return; + } + if (1 === r) { + a = Kt; + s = Tt; + } else { + if (2 !== r) throw new FormatError("Unknown block type in flate stream"); + { + const e = this.getBits(5) + 257, + i = this.getBits(5) + 1, + r = this.getBits(4) + 4, + n = new Uint8Array(Ht.length); + let o; + for (o = 0; o < r; ++o) n[Ht[o]] = this.getBits(3); + const g = this.generateHuffmanTable(n); + t = 0; + o = 0; + const c = e + i, + h = new Uint8Array(c); + let l, C, Q; + for (; o < c; ) { + const e = this.getCode(g); + if (16 === e) { + l = 2; + C = 3; + Q = t; + } else if (17 === e) { + l = 3; + C = 3; + Q = t = 0; + } else { + if (18 !== e) { + h[o++] = t = e; + continue; + } + l = 7; + C = 11; + Q = t = 0; + } + let i = this.getBits(l) + C; + for (; i-- > 0; ) h[o++] = Q; + } + a = this.generateHuffmanTable(h.subarray(0, e)); + s = this.generateHuffmanTable(h.subarray(e, c)); + } + } + e = this.buffer; + let n = e ? e.length : 0, + o = this.bufferLength; + for (;;) { + let i = this.getCode(a); + if (i < 256) { + if (o + 1 >= n) { + e = this.ensureBuffer(o + 1); + n = e.length; + } + e[o++] = i; + continue; + } + if (256 === i) { + this.bufferLength = o; + return; + } + i -= 257; + i = Yt[i]; + let r = i >> 16; + r > 0 && (r = this.getBits(r)); + t = (65535 & i) + r; + i = this.getCode(s); + i = vt[i]; + r = i >> 16; + r > 0 && (r = this.getBits(r)); + const g = (65535 & i) + r; + if (o + t >= n) { + e = this.ensureBuffer(o + t); + n = e.length; + } + for (let i = 0; i < t; ++i, ++o) e[o] = e[o - g]; + } + } +} +const qt = [ + { qe: 22017, nmps: 1, nlps: 1, switchFlag: 1 }, + { qe: 13313, nmps: 2, nlps: 6, switchFlag: 0 }, + { qe: 6145, nmps: 3, nlps: 9, switchFlag: 0 }, + { qe: 2753, nmps: 4, nlps: 12, switchFlag: 0 }, + { qe: 1313, nmps: 5, nlps: 29, switchFlag: 0 }, + { qe: 545, nmps: 38, nlps: 33, switchFlag: 0 }, + { qe: 22017, nmps: 7, nlps: 6, switchFlag: 1 }, + { qe: 21505, nmps: 8, nlps: 14, switchFlag: 0 }, + { qe: 18433, nmps: 9, nlps: 14, switchFlag: 0 }, + { qe: 14337, nmps: 10, nlps: 14, switchFlag: 0 }, + { qe: 12289, nmps: 11, nlps: 17, switchFlag: 0 }, + { qe: 9217, nmps: 12, nlps: 18, switchFlag: 0 }, + { qe: 7169, nmps: 13, nlps: 20, switchFlag: 0 }, + { qe: 5633, nmps: 29, nlps: 21, switchFlag: 0 }, + { qe: 22017, nmps: 15, nlps: 14, switchFlag: 1 }, + { qe: 21505, nmps: 16, nlps: 14, switchFlag: 0 }, + { qe: 20737, nmps: 17, nlps: 15, switchFlag: 0 }, + { qe: 18433, nmps: 18, nlps: 16, switchFlag: 0 }, + { qe: 14337, nmps: 19, nlps: 17, switchFlag: 0 }, + { qe: 13313, nmps: 20, nlps: 18, switchFlag: 0 }, + { qe: 12289, nmps: 21, nlps: 19, switchFlag: 0 }, + { qe: 10241, nmps: 22, nlps: 19, switchFlag: 0 }, + { qe: 9217, nmps: 23, nlps: 20, switchFlag: 0 }, + { qe: 8705, nmps: 24, nlps: 21, switchFlag: 0 }, + { qe: 7169, nmps: 25, nlps: 22, switchFlag: 0 }, + { qe: 6145, nmps: 26, nlps: 23, switchFlag: 0 }, + { qe: 5633, nmps: 27, nlps: 24, switchFlag: 0 }, + { qe: 5121, nmps: 28, nlps: 25, switchFlag: 0 }, + { qe: 4609, nmps: 29, nlps: 26, switchFlag: 0 }, + { qe: 4353, nmps: 30, nlps: 27, switchFlag: 0 }, + { qe: 2753, nmps: 31, nlps: 28, switchFlag: 0 }, + { qe: 2497, nmps: 32, nlps: 29, switchFlag: 0 }, + { qe: 2209, nmps: 33, nlps: 30, switchFlag: 0 }, + { qe: 1313, nmps: 34, nlps: 31, switchFlag: 0 }, + { qe: 1089, nmps: 35, nlps: 32, switchFlag: 0 }, + { qe: 673, nmps: 36, nlps: 33, switchFlag: 0 }, + { qe: 545, nmps: 37, nlps: 34, switchFlag: 0 }, + { qe: 321, nmps: 38, nlps: 35, switchFlag: 0 }, + { qe: 273, nmps: 39, nlps: 36, switchFlag: 0 }, + { qe: 133, nmps: 40, nlps: 37, switchFlag: 0 }, + { qe: 73, nmps: 41, nlps: 38, switchFlag: 0 }, + { qe: 37, nmps: 42, nlps: 39, switchFlag: 0 }, + { qe: 21, nmps: 43, nlps: 40, switchFlag: 0 }, + { qe: 9, nmps: 44, nlps: 41, switchFlag: 0 }, + { qe: 5, nmps: 45, nlps: 42, switchFlag: 0 }, + { qe: 1, nmps: 45, nlps: 43, switchFlag: 0 }, + { qe: 22017, nmps: 46, nlps: 46, switchFlag: 0 }, +]; +class ArithmeticDecoder { + constructor(e, t, i) { + this.data = e; + this.bp = t; + this.dataEnd = i; + this.chigh = e[t]; + this.clow = 0; + this.byteIn(); + this.chigh = ((this.chigh << 7) & 65535) | ((this.clow >> 9) & 127); + this.clow = (this.clow << 7) & 65535; + this.ct -= 7; + this.a = 32768; + } + byteIn() { + const e = this.data; + let t = this.bp; + if (255 === e[t]) + if (e[t + 1] > 143) { + this.clow += 65280; + this.ct = 8; + } else { + t++; + this.clow += e[t] << 9; + this.ct = 7; + this.bp = t; + } + else { + t++; + this.clow += t < this.dataEnd ? e[t] << 8 : 65280; + this.ct = 8; + this.bp = t; + } + if (this.clow > 65535) { + this.chigh += this.clow >> 16; + this.clow &= 65535; + } + } + readBit(e, t) { + let i = e[t] >> 1, + a = 1 & e[t]; + const s = qt[i], + r = s.qe; + let n, + o = this.a - r; + if (this.chigh < r) + if (o < r) { + o = r; + n = a; + i = s.nmps; + } else { + o = r; + n = 1 ^ a; + 1 === s.switchFlag && (a = n); + i = s.nlps; + } + else { + this.chigh -= r; + if (0 != (32768 & o)) { + this.a = o; + return a; + } + if (o < r) { + n = 1 ^ a; + 1 === s.switchFlag && (a = n); + i = s.nlps; + } else { + n = a; + i = s.nmps; + } + } + do { + 0 === this.ct && this.byteIn(); + o <<= 1; + this.chigh = ((this.chigh << 1) & 65535) | ((this.clow >> 15) & 1); + this.clow = (this.clow << 1) & 65535; + this.ct--; + } while (0 == (32768 & o)); + this.a = o; + e[t] = (i << 1) | a; + return n; + } +} +class Jbig2Error extends rt { + constructor(e) { + super(e, "Jbig2Error"); + } +} +class ContextCache { + getContexts(e) { + return e in this ? this[e] : (this[e] = new Int8Array(65536)); + } +} +class DecodingContext { + constructor(e, t, i) { + this.data = e; + this.start = t; + this.end = i; + } + get decoder() { + return shadow( + this, + "decoder", + new ArithmeticDecoder(this.data, this.start, this.end), + ); + } + get contextCache() { + return shadow(this, "contextCache", new ContextCache()); + } +} +const Ot = 2 ** 31 - 1, + Pt = -(2 ** 31); +function decodeInteger(e, t, i) { + const a = e.getContexts(t); + let s = 1; + function readBits(e) { + let t = 0; + for (let r = 0; r < e; r++) { + const e = i.readBit(a, s); + s = s < 256 ? (s << 1) | e : (511 & ((s << 1) | e)) | 256; + t = (t << 1) | e; + } + return t >>> 0; + } + const r = readBits(1), + n = readBits(1) + ? readBits(1) + ? readBits(1) + ? readBits(1) + ? readBits(1) + ? readBits(32) + 4436 + : readBits(12) + 340 + : readBits(8) + 84 + : readBits(6) + 20 + : readBits(4) + 4 + : readBits(2); + let o; + 0 === r ? (o = n) : n > 0 && (o = -n); + return o >= Pt && o <= Ot ? o : null; +} +function decodeIAID(e, t, i) { + const a = e.getContexts("IAID"); + let s = 1; + for (let e = 0; e < i; e++) { + s = (s << 1) | t.readBit(a, s); + } + return i < 31 ? s & ((1 << i) - 1) : 2147483647 & s; +} +const Wt = [ + "SymbolDictionary", + null, + null, + null, + "IntermediateTextRegion", + null, + "ImmediateTextRegion", + "ImmediateLosslessTextRegion", + null, + null, + null, + null, + null, + null, + null, + null, + "PatternDictionary", + null, + null, + null, + "IntermediateHalftoneRegion", + null, + "ImmediateHalftoneRegion", + "ImmediateLosslessHalftoneRegion", + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + "IntermediateGenericRegion", + null, + "ImmediateGenericRegion", + "ImmediateLosslessGenericRegion", + "IntermediateGenericRefinementRegion", + null, + "ImmediateGenericRefinementRegion", + "ImmediateLosslessGenericRefinementRegion", + null, + null, + null, + null, + "PageInformation", + "EndOfPage", + "EndOfStripe", + "EndOfFile", + "Profiles", + "Tables", + null, + null, + null, + null, + null, + null, + null, + null, + "Extension", + ], + Xt = [ + [ + { x: -1, y: -2 }, + { x: 0, y: -2 }, + { x: 1, y: -2 }, + { x: -2, y: -1 }, + { x: -1, y: -1 }, + { x: 0, y: -1 }, + { x: 1, y: -1 }, + { x: 2, y: -1 }, + { x: -4, y: 0 }, + { x: -3, y: 0 }, + { x: -2, y: 0 }, + { x: -1, y: 0 }, + ], + [ + { x: -1, y: -2 }, + { x: 0, y: -2 }, + { x: 1, y: -2 }, + { x: 2, y: -2 }, + { x: -2, y: -1 }, + { x: -1, y: -1 }, + { x: 0, y: -1 }, + { x: 1, y: -1 }, + { x: 2, y: -1 }, + { x: -3, y: 0 }, + { x: -2, y: 0 }, + { x: -1, y: 0 }, + ], + [ + { x: -1, y: -2 }, + { x: 0, y: -2 }, + { x: 1, y: -2 }, + { x: -2, y: -1 }, + { x: -1, y: -1 }, + { x: 0, y: -1 }, + { x: 1, y: -1 }, + { x: -2, y: 0 }, + { x: -1, y: 0 }, + ], + [ + { x: -3, y: -1 }, + { x: -2, y: -1 }, + { x: -1, y: -1 }, + { x: 0, y: -1 }, + { x: 1, y: -1 }, + { x: -4, y: 0 }, + { x: -3, y: 0 }, + { x: -2, y: 0 }, + { x: -1, y: 0 }, + ], + ], + jt = [ + { + coding: [ + { x: 0, y: -1 }, + { x: 1, y: -1 }, + { x: -1, y: 0 }, + ], + reference: [ + { x: 0, y: -1 }, + { x: 1, y: -1 }, + { x: -1, y: 0 }, + { x: 0, y: 0 }, + { x: 1, y: 0 }, + { x: -1, y: 1 }, + { x: 0, y: 1 }, + { x: 1, y: 1 }, + ], + }, + { + coding: [ + { x: -1, y: -1 }, + { x: 0, y: -1 }, + { x: 1, y: -1 }, + { x: -1, y: 0 }, + ], + reference: [ + { x: 0, y: -1 }, + { x: -1, y: 0 }, + { x: 0, y: 0 }, + { x: 1, y: 0 }, + { x: 0, y: 1 }, + { x: 1, y: 1 }, + ], + }, + ], + Zt = [39717, 1941, 229, 405], + Vt = [32, 8]; +function decodeBitmap(e, t, i, a, s, r, n, o) { + if (e) { + return decodeMMRBitmap(new Reader(o.data, o.start, o.end), t, i, !1); + } + if ( + 0 === a && + !r && + !s && + 4 === n.length && + 3 === n[0].x && + -1 === n[0].y && + -3 === n[1].x && + -1 === n[1].y && + 2 === n[2].x && + -2 === n[2].y && + -2 === n[3].x && + -2 === n[3].y + ) + return (function decodeBitmapTemplate0(e, t, i) { + const a = i.decoder, + s = i.contextCache.getContexts("GB"), + r = []; + let n, o, g, c, h, l, C; + for (o = 0; o < t; o++) { + h = r[o] = new Uint8Array(e); + l = o < 1 ? h : r[o - 1]; + C = o < 2 ? h : r[o - 2]; + n = + (C[0] << 13) | + (C[1] << 12) | + (C[2] << 11) | + (l[0] << 7) | + (l[1] << 6) | + (l[2] << 5) | + (l[3] << 4); + for (g = 0; g < e; g++) { + h[g] = c = a.readBit(s, n); + n = + ((31735 & n) << 1) | + (g + 3 < e ? C[g + 3] << 11 : 0) | + (g + 4 < e ? l[g + 4] << 4 : 0) | + c; + } + } + return r; + })(t, i, o); + const g = !!r, + c = Xt[a].concat(n); + c.sort(function (e, t) { + return e.y - t.y || e.x - t.x; + }); + const h = c.length, + l = new Int8Array(h), + C = new Int8Array(h), + Q = []; + let E, + u, + d = 0, + f = 0, + p = 0, + m = 0; + for (u = 0; u < h; u++) { + l[u] = c[u].x; + C[u] = c[u].y; + f = Math.min(f, c[u].x); + p = Math.max(p, c[u].x); + m = Math.min(m, c[u].y); + u < h - 1 && c[u].y === c[u + 1].y && c[u].x === c[u + 1].x - 1 + ? (d |= 1 << (h - 1 - u)) + : Q.push(u); + } + const y = Q.length, + w = new Int8Array(y), + b = new Int8Array(y), + D = new Uint16Array(y); + for (E = 0; E < y; E++) { + u = Q[E]; + w[E] = c[u].x; + b[E] = c[u].y; + D[E] = 1 << (h - 1 - u); + } + const F = -f, + S = -m, + k = t - p, + R = Zt[a]; + let N = new Uint8Array(t); + const G = [], + x = o.decoder, + M = o.contextCache.getContexts("GB"); + let U, + L, + J, + H, + Y, + v = 0, + K = 0; + for (let e = 0; e < i; e++) { + if (s) { + v ^= x.readBit(M, R); + if (v) { + G.push(N); + continue; + } + } + N = new Uint8Array(N); + G.push(N); + for (U = 0; U < t; U++) { + if (g && r[e][U]) { + N[U] = 0; + continue; + } + if (U >= F && U < k && e >= S) { + K = (K << 1) & d; + for (u = 0; u < y; u++) { + L = e + b[u]; + J = U + w[u]; + H = G[L][J]; + if (H) { + H = D[u]; + K |= H; + } + } + } else { + K = 0; + Y = h - 1; + for (u = 0; u < h; u++, Y--) { + J = U + l[u]; + if (J >= 0 && J < t) { + L = e + C[u]; + if (L >= 0) { + H = G[L][J]; + H && (K |= H << Y); + } + } + } + } + const i = x.readBit(M, K); + N[U] = i; + } + } + return G; +} +function decodeRefinement(e, t, i, a, s, r, n, o, g) { + let c = jt[i].coding; + 0 === i && (c = c.concat([o[0]])); + const h = c.length, + l = new Int32Array(h), + C = new Int32Array(h); + let Q; + for (Q = 0; Q < h; Q++) { + l[Q] = c[Q].x; + C[Q] = c[Q].y; + } + let E = jt[i].reference; + 0 === i && (E = E.concat([o[1]])); + const u = E.length, + d = new Int32Array(u), + f = new Int32Array(u); + for (Q = 0; Q < u; Q++) { + d[Q] = E[Q].x; + f[Q] = E[Q].y; + } + const p = a[0].length, + m = a.length, + y = Vt[i], + w = [], + b = g.decoder, + D = g.contextCache.getContexts("GR"); + let F = 0; + for (let i = 0; i < t; i++) { + if (n) { + F ^= b.readBit(D, y); + if (F) throw new Jbig2Error("prediction is not supported"); + } + const t = new Uint8Array(e); + w.push(t); + for (let n = 0; n < e; n++) { + let o, + g, + c = 0; + for (Q = 0; Q < h; Q++) { + o = i + C[Q]; + g = n + l[Q]; + o < 0 || g < 0 || g >= e ? (c <<= 1) : (c = (c << 1) | w[o][g]); + } + for (Q = 0; Q < u; Q++) { + o = i + f[Q] - r; + g = n + d[Q] - s; + o < 0 || o >= m || g < 0 || g >= p + ? (c <<= 1) + : (c = (c << 1) | a[o][g]); + } + const E = b.readBit(D, c); + t[n] = E; + } + } + return w; +} +function decodeTextRegion( + e, + t, + i, + a, + s, + r, + n, + o, + g, + c, + h, + l, + C, + Q, + E, + u, + d, + f, + p, +) { + if (e && t) throw new Jbig2Error("refinement with Huffman is not supported"); + const m = []; + let y, w; + for (y = 0; y < a; y++) { + w = new Uint8Array(i); + if (s) for (let e = 0; e < i; e++) w[e] = s; + m.push(w); + } + const b = d.decoder, + D = d.contextCache; + let F = e ? -Q.tableDeltaT.decode(p) : -decodeInteger(D, "IADT", b), + S = 0; + y = 0; + for (; y < r; ) { + F += e ? Q.tableDeltaT.decode(p) : decodeInteger(D, "IADT", b); + S += e ? Q.tableFirstS.decode(p) : decodeInteger(D, "IAFS", b); + let a = S; + for (;;) { + let s = 0; + n > 1 && (s = e ? p.readBits(f) : decodeInteger(D, "IAIT", b)); + const r = n * F + s, + S = e ? Q.symbolIDTable.decode(p) : decodeIAID(D, b, g), + k = t && (e ? p.readBit() : decodeInteger(D, "IARI", b)); + let R = o[S], + N = R[0].length, + G = R.length; + if (k) { + const e = decodeInteger(D, "IARDW", b), + t = decodeInteger(D, "IARDH", b); + N += e; + G += t; + R = decodeRefinement( + N, + G, + E, + R, + (e >> 1) + decodeInteger(D, "IARDX", b), + (t >> 1) + decodeInteger(D, "IARDY", b), + !1, + u, + d, + ); + } + let x = 0; + c + ? 1 & l + ? (x = G - 1) + : (a += G - 1) + : l > 1 + ? (a += N - 1) + : (x = N - 1); + const M = r - (1 & l ? 0 : G - 1), + U = a - (2 & l ? N - 1 : 0); + let L, J, H; + if (c) + for (L = 0; L < G; L++) { + w = m[U + L]; + if (!w) continue; + H = R[L]; + const e = Math.min(i - M, N); + switch (C) { + case 0: + for (J = 0; J < e; J++) w[M + J] |= H[J]; + break; + case 2: + for (J = 0; J < e; J++) w[M + J] ^= H[J]; + break; + default: + throw new Jbig2Error(`operator ${C} is not supported`); + } + } + else + for (J = 0; J < G; J++) { + w = m[M + J]; + if (w) { + H = R[J]; + switch (C) { + case 0: + for (L = 0; L < N; L++) w[U + L] |= H[L]; + break; + case 2: + for (L = 0; L < N; L++) w[U + L] ^= H[L]; + break; + default: + throw new Jbig2Error(`operator ${C} is not supported`); + } + } + } + y++; + const Y = e ? Q.tableDeltaS.decode(p) : decodeInteger(D, "IADS", b); + if (null === Y) break; + a += x + Y + h; + } + } + return m; +} +function readSegmentHeader(e, t) { + const i = {}; + i.number = readUint32(e, t); + const a = e[t + 4], + s = 63 & a; + if (!Wt[s]) throw new Jbig2Error("invalid segment type: " + s); + i.type = s; + i.typeName = Wt[s]; + i.deferredNonRetain = !!(128 & a); + const r = !!(64 & a), + n = e[t + 5]; + let o = (n >> 5) & 7; + const g = [31 & n]; + let c = t + 6; + if (7 === n) { + o = 536870911 & readUint32(e, c - 1); + c += 3; + let t = (o + 7) >> 3; + g[0] = e[c++]; + for (; --t > 0; ) g.push(e[c++]); + } else if (5 === n || 6 === n) + throw new Jbig2Error("invalid referred-to flags"); + i.retainBits = g; + let h = 4; + i.number <= 256 ? (h = 1) : i.number <= 65536 && (h = 2); + const l = []; + let C, Q; + for (C = 0; C < o; C++) { + let t; + t = 1 === h ? e[c] : 2 === h ? readUint16(e, c) : readUint32(e, c); + l.push(t); + c += h; + } + i.referredTo = l; + if (r) { + i.pageAssociation = readUint32(e, c); + c += 4; + } else i.pageAssociation = e[c++]; + i.length = readUint32(e, c); + c += 4; + if (4294967295 === i.length) { + if (38 !== s) throw new Jbig2Error("invalid unknown segment length"); + { + const t = readRegionSegmentInformation(e, c), + a = !!(1 & e[c + zt]), + s = 6, + r = new Uint8Array(s); + if (!a) { + r[0] = 255; + r[1] = 172; + } + r[2] = (t.height >>> 24) & 255; + r[3] = (t.height >> 16) & 255; + r[4] = (t.height >> 8) & 255; + r[5] = 255 & t.height; + for (C = c, Q = e.length; C < Q; C++) { + let t = 0; + for (; t < s && r[t] === e[C + t]; ) t++; + if (t === s) { + i.length = C + s; + break; + } + } + if (4294967295 === i.length) + throw new Jbig2Error("segment end was not found"); + } + } + i.headerEnd = c; + return i; +} +function readSegments(e, t, i, a) { + const s = []; + let r = i; + for (; r < a; ) { + const i = readSegmentHeader(t, r); + r = i.headerEnd; + const a = { header: i, data: t }; + if (!e.randomAccess) { + a.start = r; + r += i.length; + a.end = r; + } + s.push(a); + if (51 === i.type) break; + } + if (e.randomAccess) + for (let e = 0, t = s.length; e < t; e++) { + s[e].start = r; + r += s[e].header.length; + s[e].end = r; + } + return s; +} +function readRegionSegmentInformation(e, t) { + return { + width: readUint32(e, t), + height: readUint32(e, t + 4), + x: readUint32(e, t + 8), + y: readUint32(e, t + 12), + combinationOperator: 7 & e[t + 16], + }; +} +const zt = 17; +function processSegment(e, t) { + const i = e.header, + a = e.data, + s = e.end; + let r, + n, + o, + g, + c = e.start; + switch (i.type) { + case 0: + const e = {}, + t = readUint16(a, c); + e.huffman = !!(1 & t); + e.refinement = !!(2 & t); + e.huffmanDHSelector = (t >> 2) & 3; + e.huffmanDWSelector = (t >> 4) & 3; + e.bitmapSizeSelector = (t >> 6) & 1; + e.aggregationInstancesSelector = (t >> 7) & 1; + e.bitmapCodingContextUsed = !!(256 & t); + e.bitmapCodingContextRetained = !!(512 & t); + e.template = (t >> 10) & 3; + e.refinementTemplate = (t >> 12) & 1; + c += 2; + if (!e.huffman) { + g = 0 === e.template ? 4 : 1; + n = []; + for (o = 0; o < g; o++) { + n.push({ x: readInt8(a, c), y: readInt8(a, c + 1) }); + c += 2; + } + e.at = n; + } + if (e.refinement && !e.refinementTemplate) { + n = []; + for (o = 0; o < 2; o++) { + n.push({ x: readInt8(a, c), y: readInt8(a, c + 1) }); + c += 2; + } + e.refinementAt = n; + } + e.numberOfExportedSymbols = readUint32(a, c); + c += 4; + e.numberOfNewSymbols = readUint32(a, c); + c += 4; + r = [e, i.number, i.referredTo, a, c, s]; + break; + case 6: + case 7: + const h = {}; + h.info = readRegionSegmentInformation(a, c); + c += zt; + const l = readUint16(a, c); + c += 2; + h.huffman = !!(1 & l); + h.refinement = !!(2 & l); + h.logStripSize = (l >> 2) & 3; + h.stripSize = 1 << h.logStripSize; + h.referenceCorner = (l >> 4) & 3; + h.transposed = !!(64 & l); + h.combinationOperator = (l >> 7) & 3; + h.defaultPixelValue = (l >> 9) & 1; + h.dsOffset = (l << 17) >> 27; + h.refinementTemplate = (l >> 15) & 1; + if (h.huffman) { + const e = readUint16(a, c); + c += 2; + h.huffmanFS = 3 & e; + h.huffmanDS = (e >> 2) & 3; + h.huffmanDT = (e >> 4) & 3; + h.huffmanRefinementDW = (e >> 6) & 3; + h.huffmanRefinementDH = (e >> 8) & 3; + h.huffmanRefinementDX = (e >> 10) & 3; + h.huffmanRefinementDY = (e >> 12) & 3; + h.huffmanRefinementSizeSelector = !!(16384 & e); + } + if (h.refinement && !h.refinementTemplate) { + n = []; + for (o = 0; o < 2; o++) { + n.push({ x: readInt8(a, c), y: readInt8(a, c + 1) }); + c += 2; + } + h.refinementAt = n; + } + h.numberOfSymbolInstances = readUint32(a, c); + c += 4; + r = [h, i.referredTo, a, c, s]; + break; + case 16: + const C = {}, + Q = a[c++]; + C.mmr = !!(1 & Q); + C.template = (Q >> 1) & 3; + C.patternWidth = a[c++]; + C.patternHeight = a[c++]; + C.maxPatternIndex = readUint32(a, c); + c += 4; + r = [C, i.number, a, c, s]; + break; + case 22: + case 23: + const E = {}; + E.info = readRegionSegmentInformation(a, c); + c += zt; + const u = a[c++]; + E.mmr = !!(1 & u); + E.template = (u >> 1) & 3; + E.enableSkip = !!(8 & u); + E.combinationOperator = (u >> 4) & 7; + E.defaultPixelValue = (u >> 7) & 1; + E.gridWidth = readUint32(a, c); + c += 4; + E.gridHeight = readUint32(a, c); + c += 4; + E.gridOffsetX = 4294967295 & readUint32(a, c); + c += 4; + E.gridOffsetY = 4294967295 & readUint32(a, c); + c += 4; + E.gridVectorX = readUint16(a, c); + c += 2; + E.gridVectorY = readUint16(a, c); + c += 2; + r = [E, i.referredTo, a, c, s]; + break; + case 38: + case 39: + const d = {}; + d.info = readRegionSegmentInformation(a, c); + c += zt; + const f = a[c++]; + d.mmr = !!(1 & f); + d.template = (f >> 1) & 3; + d.prediction = !!(8 & f); + if (!d.mmr) { + g = 0 === d.template ? 4 : 1; + n = []; + for (o = 0; o < g; o++) { + n.push({ x: readInt8(a, c), y: readInt8(a, c + 1) }); + c += 2; + } + d.at = n; + } + r = [d, a, c, s]; + break; + case 48: + const p = { + width: readUint32(a, c), + height: readUint32(a, c + 4), + resolutionX: readUint32(a, c + 8), + resolutionY: readUint32(a, c + 12), + }; + 4294967295 === p.height && delete p.height; + const m = a[c + 16]; + readUint16(a, c + 17); + p.lossless = !!(1 & m); + p.refinement = !!(2 & m); + p.defaultPixelValue = (m >> 2) & 1; + p.combinationOperator = (m >> 3) & 3; + p.requiresBuffer = !!(32 & m); + p.combinationOperatorOverride = !!(64 & m); + r = [p]; + break; + case 49: + case 50: + case 51: + case 62: + break; + case 53: + r = [i.number, a, c, s]; + break; + default: + throw new Jbig2Error( + `segment type ${i.typeName}(${i.type}) is not implemented`, + ); + } + const h = "on" + i.typeName; + h in t && t[h].apply(t, r); +} +function processSegments(e, t) { + for (let i = 0, a = e.length; i < a; i++) processSegment(e[i], t); +} +class SimpleSegmentVisitor { + onPageInformation(e) { + this.currentPageInfo = e; + const t = (e.width + 7) >> 3, + i = new Uint8ClampedArray(t * e.height); + e.defaultPixelValue && i.fill(255); + this.buffer = i; + } + drawBitmap(e, t) { + const i = this.currentPageInfo, + a = e.width, + s = e.height, + r = (i.width + 7) >> 3, + n = i.combinationOperatorOverride + ? e.combinationOperator + : i.combinationOperator, + o = this.buffer, + g = 128 >> (7 & e.x); + let c, + h, + l, + C, + Q = e.y * r + (e.x >> 3); + switch (n) { + case 0: + for (c = 0; c < s; c++) { + l = g; + C = Q; + for (h = 0; h < a; h++) { + t[c][h] && (o[C] |= l); + l >>= 1; + if (!l) { + l = 128; + C++; + } + } + Q += r; + } + break; + case 2: + for (c = 0; c < s; c++) { + l = g; + C = Q; + for (h = 0; h < a; h++) { + t[c][h] && (o[C] ^= l); + l >>= 1; + if (!l) { + l = 128; + C++; + } + } + Q += r; + } + break; + default: + throw new Jbig2Error(`operator ${n} is not supported`); + } + } + onImmediateGenericRegion(e, t, i, a) { + const s = e.info, + r = new DecodingContext(t, i, a), + n = decodeBitmap( + e.mmr, + s.width, + s.height, + e.template, + e.prediction, + null, + e.at, + r, + ); + this.drawBitmap(s, n); + } + onImmediateLosslessGenericRegion() { + this.onImmediateGenericRegion(...arguments); + } + onSymbolDictionary(e, t, i, a, s, r) { + let n, o; + if (e.huffman) { + n = (function getSymbolDictionaryHuffmanTables(e, t, i) { + let a, + s, + r, + n, + o = 0; + switch (e.huffmanDHSelector) { + case 0: + case 1: + a = getStandardTable(e.huffmanDHSelector + 4); + break; + case 3: + a = getCustomHuffmanTable(o, t, i); + o++; + break; + default: + throw new Jbig2Error("invalid Huffman DH selector"); + } + switch (e.huffmanDWSelector) { + case 0: + case 1: + s = getStandardTable(e.huffmanDWSelector + 2); + break; + case 3: + s = getCustomHuffmanTable(o, t, i); + o++; + break; + default: + throw new Jbig2Error("invalid Huffman DW selector"); + } + if (e.bitmapSizeSelector) { + r = getCustomHuffmanTable(o, t, i); + o++; + } else r = getStandardTable(1); + n = e.aggregationInstancesSelector + ? getCustomHuffmanTable(o, t, i) + : getStandardTable(1); + return { + tableDeltaHeight: a, + tableDeltaWidth: s, + tableBitmapSize: r, + tableAggregateInstances: n, + }; + })(e, i, this.customTables); + o = new Reader(a, s, r); + } + let g = this.symbols; + g || (this.symbols = g = {}); + const c = []; + for (const e of i) { + const t = g[e]; + t && c.push(...t); + } + const h = new DecodingContext(a, s, r); + g[t] = (function decodeSymbolDictionary( + e, + t, + i, + a, + s, + r, + n, + o, + g, + c, + h, + l, + ) { + if (e && t) + throw new Jbig2Error("symbol refinement with Huffman is not supported"); + const C = []; + let Q = 0, + E = log2(i.length + a); + const u = h.decoder, + d = h.contextCache; + let f, p; + if (e) { + f = getStandardTable(1); + p = []; + E = Math.max(E, 1); + } + for (; C.length < a; ) { + Q += e ? r.tableDeltaHeight.decode(l) : decodeInteger(d, "IADH", u); + let a = 0, + s = 0; + const f = e ? p.length : 0; + for (;;) { + const f = e + ? r.tableDeltaWidth.decode(l) + : decodeInteger(d, "IADW", u); + if (null === f) break; + a += f; + s += a; + let m; + if (t) { + const s = decodeInteger(d, "IAAI", u); + if (s > 1) + m = decodeTextRegion( + e, + t, + a, + Q, + 0, + s, + 1, + i.concat(C), + E, + 0, + 0, + 1, + 0, + r, + g, + c, + h, + 0, + l, + ); + else { + const e = decodeIAID(d, u, E), + t = decodeInteger(d, "IARDX", u), + s = decodeInteger(d, "IARDY", u); + m = decodeRefinement( + a, + Q, + g, + e < i.length ? i[e] : C[e - i.length], + t, + s, + !1, + c, + h, + ); + } + C.push(m); + } else if (e) p.push(a); + else { + m = decodeBitmap(!1, a, Q, n, !1, null, o, h); + C.push(m); + } + } + if (e && !t) { + const e = r.tableBitmapSize.decode(l); + l.byteAlign(); + let t; + if (0 === e) t = readUncompressedBitmap(l, s, Q); + else { + const i = l.end, + a = l.position + e; + l.end = a; + t = decodeMMRBitmap(l, s, Q, !1); + l.end = i; + l.position = a; + } + const i = p.length; + if (f === i - 1) C.push(t); + else { + let e, + a, + s, + r, + n, + o = 0; + for (e = f; e < i; e++) { + r = p[e]; + s = o + r; + n = []; + for (a = 0; a < Q; a++) n.push(t[a].subarray(o, s)); + C.push(n); + o = s; + } + } + } + } + const m = [], + y = []; + let w, + b, + D = !1; + const F = i.length + a; + for (; y.length < F; ) { + let t = e ? f.decode(l) : decodeInteger(d, "IAEX", u); + for (; t--; ) y.push(D); + D = !D; + } + for (w = 0, b = i.length; w < b; w++) y[w] && m.push(i[w]); + for (let e = 0; e < a; w++, e++) y[w] && m.push(C[e]); + return m; + })( + e.huffman, + e.refinement, + c, + e.numberOfNewSymbols, + e.numberOfExportedSymbols, + n, + e.template, + e.at, + e.refinementTemplate, + e.refinementAt, + h, + o, + ); + } + onImmediateTextRegion(e, t, i, a, s) { + const r = e.info; + let n, o; + const g = this.symbols, + c = []; + for (const e of t) { + const t = g[e]; + t && c.push(...t); + } + const h = log2(c.length); + if (e.huffman) { + o = new Reader(i, a, s); + n = (function getTextRegionHuffmanTables(e, t, i, a, s) { + const r = []; + for (let e = 0; e <= 34; e++) { + const t = s.readBits(4); + r.push(new HuffmanLine([e, t, 0, 0])); + } + const n = new HuffmanTable(r, !1); + r.length = 0; + for (let e = 0; e < a; ) { + const t = n.decode(s); + if (t >= 32) { + let i, a, n; + switch (t) { + case 32: + if (0 === e) + throw new Jbig2Error("no previous value in symbol ID table"); + a = s.readBits(2) + 3; + i = r[e - 1].prefixLength; + break; + case 33: + a = s.readBits(3) + 3; + i = 0; + break; + case 34: + a = s.readBits(7) + 11; + i = 0; + break; + default: + throw new Jbig2Error("invalid code length in symbol ID table"); + } + for (n = 0; n < a; n++) { + r.push(new HuffmanLine([e, i, 0, 0])); + e++; + } + } else { + r.push(new HuffmanLine([e, t, 0, 0])); + e++; + } + } + s.byteAlign(); + const o = new HuffmanTable(r, !1); + let g, + c, + h, + l = 0; + switch (e.huffmanFS) { + case 0: + case 1: + g = getStandardTable(e.huffmanFS + 6); + break; + case 3: + g = getCustomHuffmanTable(l, t, i); + l++; + break; + default: + throw new Jbig2Error("invalid Huffman FS selector"); + } + switch (e.huffmanDS) { + case 0: + case 1: + case 2: + c = getStandardTable(e.huffmanDS + 8); + break; + case 3: + c = getCustomHuffmanTable(l, t, i); + l++; + break; + default: + throw new Jbig2Error("invalid Huffman DS selector"); + } + switch (e.huffmanDT) { + case 0: + case 1: + case 2: + h = getStandardTable(e.huffmanDT + 11); + break; + case 3: + h = getCustomHuffmanTable(l, t, i); + l++; + break; + default: + throw new Jbig2Error("invalid Huffman DT selector"); + } + if (e.refinement) + throw new Jbig2Error("refinement with Huffman is not supported"); + return { + symbolIDTable: o, + tableFirstS: g, + tableDeltaS: c, + tableDeltaT: h, + }; + })(e, t, this.customTables, c.length, o); + } + const l = new DecodingContext(i, a, s), + C = decodeTextRegion( + e.huffman, + e.refinement, + r.width, + r.height, + e.defaultPixelValue, + e.numberOfSymbolInstances, + e.stripSize, + c, + h, + e.transposed, + e.dsOffset, + e.referenceCorner, + e.combinationOperator, + n, + e.refinementTemplate, + e.refinementAt, + l, + e.logStripSize, + o, + ); + this.drawBitmap(r, C); + } + onImmediateLosslessTextRegion() { + this.onImmediateTextRegion(...arguments); + } + onPatternDictionary(e, t, i, a, s) { + let r = this.patterns; + r || (this.patterns = r = {}); + const n = new DecodingContext(i, a, s); + r[t] = (function decodePatternDictionary(e, t, i, a, s, r) { + const n = []; + if (!e) { + n.push({ x: -t, y: 0 }); + 0 === s && n.push({ x: -3, y: -1 }, { x: 2, y: -2 }, { x: -2, y: -2 }); + } + const o = decodeBitmap(e, (a + 1) * t, i, s, !1, null, n, r), + g = []; + for (let e = 0; e <= a; e++) { + const a = [], + s = t * e, + r = s + t; + for (let e = 0; e < i; e++) a.push(o[e].subarray(s, r)); + g.push(a); + } + return g; + })( + e.mmr, + e.patternWidth, + e.patternHeight, + e.maxPatternIndex, + e.template, + n, + ); + } + onImmediateHalftoneRegion(e, t, i, a, s) { + const r = this.patterns[t[0]], + n = e.info, + o = new DecodingContext(i, a, s), + g = (function decodeHalftoneRegion( + e, + t, + i, + a, + s, + r, + n, + o, + g, + c, + h, + l, + C, + Q, + E, + ) { + if (n) throw new Jbig2Error("skip is not supported"); + if (0 !== o) + throw new Jbig2Error( + `operator "${o}" is not supported in halftone region`, + ); + const u = []; + let d, f, p; + for (d = 0; d < s; d++) { + p = new Uint8Array(a); + if (r) for (f = 0; f < a; f++) p[f] = r; + u.push(p); + } + const m = t.length, + y = t[0], + w = y[0].length, + b = y.length, + D = log2(m), + F = []; + if (!e) { + F.push({ x: i <= 1 ? 3 : 2, y: -1 }); + 0 === i && + F.push({ x: -3, y: -1 }, { x: 2, y: -2 }, { x: -2, y: -2 }); + } + const S = []; + let k, R, N, G, x, M, U, L, J, H, Y; + e && (k = new Reader(E.data, E.start, E.end)); + for (d = D - 1; d >= 0; d--) { + R = e + ? decodeMMRBitmap(k, g, c, !0) + : decodeBitmap(!1, g, c, i, !1, null, F, E); + S[d] = R; + } + for (N = 0; N < c; N++) + for (G = 0; G < g; G++) { + x = 0; + M = 0; + for (f = D - 1; f >= 0; f--) { + x ^= S[f][N][G]; + M |= x << f; + } + U = t[M]; + L = (h + N * Q + G * C) >> 8; + J = (l + N * C - G * Q) >> 8; + if (L >= 0 && L + w <= a && J >= 0 && J + b <= s) + for (d = 0; d < b; d++) { + Y = u[J + d]; + H = U[d]; + for (f = 0; f < w; f++) Y[L + f] |= H[f]; + } + else { + let e, t; + for (d = 0; d < b; d++) { + t = J + d; + if (!(t < 0 || t >= s)) { + Y = u[t]; + H = U[d]; + for (f = 0; f < w; f++) { + e = L + f; + e >= 0 && e < a && (Y[e] |= H[f]); + } + } + } + } + } + return u; + })( + e.mmr, + r, + e.template, + n.width, + n.height, + e.defaultPixelValue, + e.enableSkip, + e.combinationOperator, + e.gridWidth, + e.gridHeight, + e.gridOffsetX, + e.gridOffsetY, + e.gridVectorX, + e.gridVectorY, + o, + ); + this.drawBitmap(n, g); + } + onImmediateLosslessHalftoneRegion() { + this.onImmediateHalftoneRegion(...arguments); + } + onTables(e, t, i, a) { + let s = this.customTables; + s || (this.customTables = s = {}); + s[e] = (function decodeTablesSegment(e, t, i) { + const a = e[t], + s = 4294967295 & readUint32(e, t + 1), + r = 4294967295 & readUint32(e, t + 5), + n = new Reader(e, t + 9, i), + o = 1 + ((a >> 1) & 7), + g = 1 + ((a >> 4) & 7), + c = []; + let h, + l, + C = s; + do { + h = n.readBits(o); + l = n.readBits(g); + c.push(new HuffmanLine([C, h, l, 0])); + C += 1 << l; + } while (C < r); + h = n.readBits(o); + c.push(new HuffmanLine([s - 1, h, 32, 0, "lower"])); + h = n.readBits(o); + c.push(new HuffmanLine([r, h, 32, 0])); + if (1 & a) { + h = n.readBits(o); + c.push(new HuffmanLine([h, 0])); + } + return new HuffmanTable(c, !1); + })(t, i, a); + } +} +class HuffmanLine { + constructor(e) { + if (2 === e.length) { + this.isOOB = !0; + this.rangeLow = 0; + this.prefixLength = e[0]; + this.rangeLength = 0; + this.prefixCode = e[1]; + this.isLowerRange = !1; + } else { + this.isOOB = !1; + this.rangeLow = e[0]; + this.prefixLength = e[1]; + this.rangeLength = e[2]; + this.prefixCode = e[3]; + this.isLowerRange = "lower" === e[4]; + } + } +} +class HuffmanTreeNode { + constructor(e) { + this.children = []; + if (e) { + this.isLeaf = !0; + this.rangeLength = e.rangeLength; + this.rangeLow = e.rangeLow; + this.isLowerRange = e.isLowerRange; + this.isOOB = e.isOOB; + } else this.isLeaf = !1; + } + buildTree(e, t) { + const i = (e.prefixCode >> t) & 1; + if (t <= 0) this.children[i] = new HuffmanTreeNode(e); + else { + let a = this.children[i]; + a || (this.children[i] = a = new HuffmanTreeNode(null)); + a.buildTree(e, t - 1); + } + } + decodeNode(e) { + if (this.isLeaf) { + if (this.isOOB) return null; + const t = e.readBits(this.rangeLength); + return this.rangeLow + (this.isLowerRange ? -t : t); + } + const t = this.children[e.readBit()]; + if (!t) throw new Jbig2Error("invalid Huffman data"); + return t.decodeNode(e); + } +} +class HuffmanTable { + constructor(e, t) { + t || this.assignPrefixCodes(e); + this.rootNode = new HuffmanTreeNode(null); + for (let t = 0, i = e.length; t < i; t++) { + const i = e[t]; + i.prefixLength > 0 && this.rootNode.buildTree(i, i.prefixLength - 1); + } + } + decode(e) { + return this.rootNode.decodeNode(e); + } + assignPrefixCodes(e) { + const t = e.length; + let i = 0; + for (let a = 0; a < t; a++) i = Math.max(i, e[a].prefixLength); + const a = new Uint32Array(i + 1); + for (let i = 0; i < t; i++) a[e[i].prefixLength]++; + let s, + r, + n, + o = 1, + g = 0; + a[0] = 0; + for (; o <= i; ) { + g = (g + a[o - 1]) << 1; + s = g; + r = 0; + for (; r < t; ) { + n = e[r]; + if (n.prefixLength === o) { + n.prefixCode = s; + s++; + } + r++; + } + o++; + } + } +} +const _t = {}; +function getStandardTable(e) { + let t, + i = _t[e]; + if (i) return i; + switch (e) { + case 1: + t = [ + [0, 1, 4, 0], + [16, 2, 8, 2], + [272, 3, 16, 6], + [65808, 3, 32, 7], + ]; + break; + case 2: + t = [ + [0, 1, 0, 0], + [1, 2, 0, 2], + [2, 3, 0, 6], + [3, 4, 3, 14], + [11, 5, 6, 30], + [75, 6, 32, 62], + [6, 63], + ]; + break; + case 3: + t = [ + [-256, 8, 8, 254], + [0, 1, 0, 0], + [1, 2, 0, 2], + [2, 3, 0, 6], + [3, 4, 3, 14], + [11, 5, 6, 30], + [-257, 8, 32, 255, "lower"], + [75, 7, 32, 126], + [6, 62], + ]; + break; + case 4: + t = [ + [1, 1, 0, 0], + [2, 2, 0, 2], + [3, 3, 0, 6], + [4, 4, 3, 14], + [12, 5, 6, 30], + [76, 5, 32, 31], + ]; + break; + case 5: + t = [ + [-255, 7, 8, 126], + [1, 1, 0, 0], + [2, 2, 0, 2], + [3, 3, 0, 6], + [4, 4, 3, 14], + [12, 5, 6, 30], + [-256, 7, 32, 127, "lower"], + [76, 6, 32, 62], + ]; + break; + case 6: + t = [ + [-2048, 5, 10, 28], + [-1024, 4, 9, 8], + [-512, 4, 8, 9], + [-256, 4, 7, 10], + [-128, 5, 6, 29], + [-64, 5, 5, 30], + [-32, 4, 5, 11], + [0, 2, 7, 0], + [128, 3, 7, 2], + [256, 3, 8, 3], + [512, 4, 9, 12], + [1024, 4, 10, 13], + [-2049, 6, 32, 62, "lower"], + [2048, 6, 32, 63], + ]; + break; + case 7: + t = [ + [-1024, 4, 9, 8], + [-512, 3, 8, 0], + [-256, 4, 7, 9], + [-128, 5, 6, 26], + [-64, 5, 5, 27], + [-32, 4, 5, 10], + [0, 4, 5, 11], + [32, 5, 5, 28], + [64, 5, 6, 29], + [128, 4, 7, 12], + [256, 3, 8, 1], + [512, 3, 9, 2], + [1024, 3, 10, 3], + [-1025, 5, 32, 30, "lower"], + [2048, 5, 32, 31], + ]; + break; + case 8: + t = [ + [-15, 8, 3, 252], + [-7, 9, 1, 508], + [-5, 8, 1, 253], + [-3, 9, 0, 509], + [-2, 7, 0, 124], + [-1, 4, 0, 10], + [0, 2, 1, 0], + [2, 5, 0, 26], + [3, 6, 0, 58], + [4, 3, 4, 4], + [20, 6, 1, 59], + [22, 4, 4, 11], + [38, 4, 5, 12], + [70, 5, 6, 27], + [134, 5, 7, 28], + [262, 6, 7, 60], + [390, 7, 8, 125], + [646, 6, 10, 61], + [-16, 9, 32, 510, "lower"], + [1670, 9, 32, 511], + [2, 1], + ]; + break; + case 9: + t = [ + [-31, 8, 4, 252], + [-15, 9, 2, 508], + [-11, 8, 2, 253], + [-7, 9, 1, 509], + [-5, 7, 1, 124], + [-3, 4, 1, 10], + [-1, 3, 1, 2], + [1, 3, 1, 3], + [3, 5, 1, 26], + [5, 6, 1, 58], + [7, 3, 5, 4], + [39, 6, 2, 59], + [43, 4, 5, 11], + [75, 4, 6, 12], + [139, 5, 7, 27], + [267, 5, 8, 28], + [523, 6, 8, 60], + [779, 7, 9, 125], + [1291, 6, 11, 61], + [-32, 9, 32, 510, "lower"], + [3339, 9, 32, 511], + [2, 0], + ]; + break; + case 10: + t = [ + [-21, 7, 4, 122], + [-5, 8, 0, 252], + [-4, 7, 0, 123], + [-3, 5, 0, 24], + [-2, 2, 2, 0], + [2, 5, 0, 25], + [3, 6, 0, 54], + [4, 7, 0, 124], + [5, 8, 0, 253], + [6, 2, 6, 1], + [70, 5, 5, 26], + [102, 6, 5, 55], + [134, 6, 6, 56], + [198, 6, 7, 57], + [326, 6, 8, 58], + [582, 6, 9, 59], + [1094, 6, 10, 60], + [2118, 7, 11, 125], + [-22, 8, 32, 254, "lower"], + [4166, 8, 32, 255], + [2, 2], + ]; + break; + case 11: + t = [ + [1, 1, 0, 0], + [2, 2, 1, 2], + [4, 4, 0, 12], + [5, 4, 1, 13], + [7, 5, 1, 28], + [9, 5, 2, 29], + [13, 6, 2, 60], + [17, 7, 2, 122], + [21, 7, 3, 123], + [29, 7, 4, 124], + [45, 7, 5, 125], + [77, 7, 6, 126], + [141, 7, 32, 127], + ]; + break; + case 12: + t = [ + [1, 1, 0, 0], + [2, 2, 0, 2], + [3, 3, 1, 6], + [5, 5, 0, 28], + [6, 5, 1, 29], + [8, 6, 1, 60], + [10, 7, 0, 122], + [11, 7, 1, 123], + [13, 7, 2, 124], + [17, 7, 3, 125], + [25, 7, 4, 126], + [41, 8, 5, 254], + [73, 8, 32, 255], + ]; + break; + case 13: + t = [ + [1, 1, 0, 0], + [2, 3, 0, 4], + [3, 4, 0, 12], + [4, 5, 0, 28], + [5, 4, 1, 13], + [7, 3, 3, 5], + [15, 6, 1, 58], + [17, 6, 2, 59], + [21, 6, 3, 60], + [29, 6, 4, 61], + [45, 6, 5, 62], + [77, 7, 6, 126], + [141, 7, 32, 127], + ]; + break; + case 14: + t = [ + [-2, 3, 0, 4], + [-1, 3, 0, 5], + [0, 1, 0, 0], + [1, 3, 0, 6], + [2, 3, 0, 7], + ]; + break; + case 15: + t = [ + [-24, 7, 4, 124], + [-8, 6, 2, 60], + [-4, 5, 1, 28], + [-2, 4, 0, 12], + [-1, 3, 0, 4], + [0, 1, 0, 0], + [1, 3, 0, 5], + [2, 4, 0, 13], + [3, 5, 1, 29], + [5, 6, 2, 61], + [9, 7, 4, 125], + [-25, 7, 32, 126, "lower"], + [25, 7, 32, 127], + ]; + break; + default: + throw new Jbig2Error(`standard table B.${e} does not exist`); + } + for (let e = 0, i = t.length; e < i; e++) t[e] = new HuffmanLine(t[e]); + i = new HuffmanTable(t, !0); + _t[e] = i; + return i; +} +class Reader { + constructor(e, t, i) { + this.data = e; + this.start = t; + this.end = i; + this.position = t; + this.shift = -1; + this.currentByte = 0; + } + readBit() { + if (this.shift < 0) { + if (this.position >= this.end) + throw new Jbig2Error("end of data while reading bit"); + this.currentByte = this.data[this.position++]; + this.shift = 7; + } + const e = (this.currentByte >> this.shift) & 1; + this.shift--; + return e; + } + readBits(e) { + let t, + i = 0; + for (t = e - 1; t >= 0; t--) i |= this.readBit() << t; + return i; + } + byteAlign() { + this.shift = -1; + } + next() { + return this.position >= this.end ? -1 : this.data[this.position++]; + } +} +function getCustomHuffmanTable(e, t, i) { + let a = 0; + for (let s = 0, r = t.length; s < r; s++) { + const r = i[t[s]]; + if (r) { + if (e === a) return r; + a++; + } + } + throw new Jbig2Error("can't find custom Huffman table"); +} +function readUncompressedBitmap(e, t, i) { + const a = []; + for (let s = 0; s < i; s++) { + const i = new Uint8Array(t); + a.push(i); + for (let a = 0; a < t; a++) i[a] = e.readBit(); + e.byteAlign(); + } + return a; +} +function decodeMMRBitmap(e, t, i, a) { + const s = new CCITTFaxDecoder(e, { + K: -1, + Columns: t, + Rows: i, + BlackIs1: !0, + EndOfBlock: a, + }), + r = []; + let n, + o = !1; + for (let e = 0; e < i; e++) { + const e = new Uint8Array(t); + r.push(e); + let i = -1; + for (let a = 0; a < t; a++) { + if (i < 0) { + n = s.readNextChar(); + if (-1 === n) { + n = 0; + o = !0; + } + i = 7; + } + e[a] = (n >> i) & 1; + i--; + } + } + if (a && !o) { + const e = 5; + for (let t = 0; t < e && -1 !== s.readNextChar(); t++); + } + return r; +} +class Jbig2Image { + parseChunks(e) { + return (function parseJbig2Chunks(e) { + const t = new SimpleSegmentVisitor(); + for (let i = 0, a = e.length; i < a; i++) { + const a = e[i]; + processSegments(readSegments({}, a.data, a.start, a.end), t); + } + return t.buffer; + })(e); + } + parse(e) { + throw new Error("Not implemented: Jbig2Image.parse"); + } +} +class Jbig2Stream extends DecodeStream { + constructor(e, t, i) { + super(t); + this.stream = e; + this.dict = e.dict; + this.maybeLength = t; + this.params = i; + } + get bytes() { + return shadow(this, "bytes", this.stream.getBytes(this.maybeLength)); + } + ensureBuffer(e) {} + readBlock() { + if (this.eof) return; + const e = new Jbig2Image(), + t = []; + if (this.params instanceof Dict) { + const e = this.params.get("JBIG2Globals"); + if (e instanceof BaseStream) { + const i = e.getBytes(); + t.push({ data: i, start: 0, end: i.length }); + } + } + t.push({ data: this.bytes, start: 0, end: this.bytes.length }); + const i = e.parseChunks(t), + a = i.length; + for (let e = 0; e < a; e++) i[e] ^= 255; + this.buffer = i; + this.bufferLength = a; + this.eof = !0; + } +} +function convertToRGBA(e) { + switch (e.kind) { + case b: + return convertBlackAndWhiteToRGBA(e); + case D: + return (function convertRGBToRGBA({ + src: e, + srcPos: t = 0, + dest: i, + destPos: a = 0, + width: s, + height: r, + }) { + let n = 0; + const o = e.length >> 2, + g = new Uint32Array(e.buffer, t, o); + if (FeatureTest.isLittleEndian) { + for (; n < o - 2; n += 3, a += 4) { + const e = g[n], + t = g[n + 1], + s = g[n + 2]; + i[a] = 4278190080 | e; + i[a + 1] = (e >>> 24) | (t << 8) | 4278190080; + i[a + 2] = (t >>> 16) | (s << 16) | 4278190080; + i[a + 3] = (s >>> 8) | 4278190080; + } + for (let t = 4 * n, s = e.length; t < s; t += 3) + i[a++] = e[t] | (e[t + 1] << 8) | (e[t + 2] << 16) | 4278190080; + } else { + for (; n < o - 2; n += 3, a += 4) { + const e = g[n], + t = g[n + 1], + s = g[n + 2]; + i[a] = 255 | e; + i[a + 1] = (e << 24) | (t >>> 8) | 255; + i[a + 2] = (t << 16) | (s >>> 16) | 255; + i[a + 3] = (s << 8) | 255; + } + for (let t = 4 * n, s = e.length; t < s; t += 3) + i[a++] = (e[t] << 24) | (e[t + 1] << 16) | (e[t + 2] << 8) | 255; + } + return { srcPos: t, destPos: a }; + })(e); + } + return null; +} +function convertBlackAndWhiteToRGBA({ + src: e, + srcPos: t = 0, + dest: i, + width: a, + height: s, + nonBlackColor: r = 4294967295, + inverseDecode: n = !1, +}) { + const o = FeatureTest.isLittleEndian ? 4278190080 : 255, + [g, c] = n ? [r, o] : [o, r], + h = a >> 3, + l = 7 & a, + C = e.length; + i = new Uint32Array(i.buffer); + let Q = 0; + for (let a = 0; a < s; a++) { + for (const a = t + h; t < a; t++) { + const a = t < C ? e[t] : 255; + i[Q++] = 128 & a ? c : g; + i[Q++] = 64 & a ? c : g; + i[Q++] = 32 & a ? c : g; + i[Q++] = 16 & a ? c : g; + i[Q++] = 8 & a ? c : g; + i[Q++] = 4 & a ? c : g; + i[Q++] = 2 & a ? c : g; + i[Q++] = 1 & a ? c : g; + } + if (0 === l) continue; + const a = t < C ? e[t++] : 255; + for (let e = 0; e < l; e++) i[Q++] = a & (1 << (7 - e)) ? c : g; + } + return { srcPos: t, destPos: Q }; +} +class JpegError extends rt { + constructor(e) { + super(e, "JpegError"); + } +} +class DNLMarkerError extends rt { + constructor(e, t) { + super(e, "DNLMarkerError"); + this.scanLines = t; + } +} +class EOIMarkerError extends rt { + constructor(e) { + super(e, "EOIMarkerError"); + } +} +const $t = new Uint8Array([ + 0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, 26, 33, 40, + 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, 56, 57, 50, 43, 36, + 29, 22, 15, 23, 30, 37, 44, 51, 58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, + 54, 47, 55, 62, 63, + ]), + Ai = 4017, + ei = 799, + ti = 3406, + ii = 2276, + ai = 1567, + si = 3784, + ri = 5793, + ni = 2896; +function buildHuffmanTable(e, t) { + let i, + a, + s = 0, + r = 16; + for (; r > 0 && !e[r - 1]; ) r--; + const n = [{ children: [], index: 0 }]; + let o, + g = n[0]; + for (i = 0; i < r; i++) { + for (a = 0; a < e[i]; a++) { + g = n.pop(); + g.children[g.index] = t[s]; + for (; g.index > 0; ) g = n.pop(); + g.index++; + n.push(g); + for (; n.length <= i; ) { + n.push((o = { children: [], index: 0 })); + g.children[g.index] = o.children; + g = o; + } + s++; + } + if (i + 1 < r) { + n.push((o = { children: [], index: 0 })); + g.children[g.index] = o.children; + g = o; + } + } + return n[0].children; +} +function getBlockBufferOffset(e, t, i) { + return 64 * ((e.blocksPerLine + 1) * t + i); +} +function decodeScan(e, t, i, a, s, r, n, o, g, c = !1) { + const h = i.mcusPerLine, + l = i.progressive, + C = t; + let Q = 0, + E = 0; + function readBit() { + if (E > 0) { + E--; + return (Q >> E) & 1; + } + Q = e[t++]; + if (255 === Q) { + const a = e[t++]; + if (a) { + if (220 === a && c) { + const a = readUint16(e, (t += 2)); + t += 2; + if (a > 0 && a !== i.scanLines) + throw new DNLMarkerError( + "Found DNL marker (0xFFDC) while parsing scan data", + a, + ); + } else if (217 === a) { + if (c) { + const e = p * (8 === i.precision ? 8 : 0); + if (e > 0 && Math.round(i.scanLines / e) >= 5) + throw new DNLMarkerError( + "Found EOI marker (0xFFD9) while parsing scan data, possibly caused by incorrect `scanLines` parameter", + e, + ); + } + throw new EOIMarkerError( + "Found EOI marker (0xFFD9) while parsing scan data", + ); + } + throw new JpegError(`unexpected marker ${((Q << 8) | a).toString(16)}`); + } + } + E = 7; + return Q >>> 7; + } + function decodeHuffman(e) { + let t = e; + for (;;) { + t = t[readBit()]; + switch (typeof t) { + case "number": + return t; + case "object": + continue; + } + throw new JpegError("invalid huffman sequence"); + } + } + function receive(e) { + let t = 0; + for (; e > 0; ) { + t = (t << 1) | readBit(); + e--; + } + return t; + } + function receiveAndExtend(e) { + if (1 === e) return 1 === readBit() ? 1 : -1; + const t = receive(e); + return t >= 1 << (e - 1) ? t : t + (-1 << e) + 1; + } + let u = 0; + let d, + f = 0; + let p = 0; + function decodeMcu(e, t, i, a, s) { + const r = i % h; + p = ((i / h) | 0) * e.v + a; + const n = r * e.h + s; + t(e, getBlockBufferOffset(e, p, n)); + } + function decodeBlock(e, t, i) { + p = (i / e.blocksPerLine) | 0; + const a = i % e.blocksPerLine; + t(e, getBlockBufferOffset(e, p, a)); + } + const m = a.length; + let y, w, b, D, F, S; + S = l + ? 0 === r + ? 0 === o + ? function decodeDCFirst(e, t) { + const i = decodeHuffman(e.huffmanTableDC), + a = 0 === i ? 0 : receiveAndExtend(i) << g; + e.blockData[t] = e.pred += a; + } + : function decodeDCSuccessive(e, t) { + e.blockData[t] |= readBit() << g; + } + : 0 === o + ? function decodeACFirst(e, t) { + if (u > 0) { + u--; + return; + } + let i = r; + const a = n; + for (; i <= a; ) { + const a = decodeHuffman(e.huffmanTableAC), + s = 15 & a, + r = a >> 4; + if (0 === s) { + if (r < 15) { + u = receive(r) + (1 << r) - 1; + break; + } + i += 16; + continue; + } + i += r; + const n = $t[i]; + e.blockData[t + n] = receiveAndExtend(s) * (1 << g); + i++; + } + } + : function decodeACSuccessive(e, t) { + let i = r; + const a = n; + let s, + o, + c = 0; + for (; i <= a; ) { + const a = t + $t[i], + r = e.blockData[a] < 0 ? -1 : 1; + switch (f) { + case 0: + o = decodeHuffman(e.huffmanTableAC); + s = 15 & o; + c = o >> 4; + if (0 === s) + if (c < 15) { + u = receive(c) + (1 << c); + f = 4; + } else { + c = 16; + f = 1; + } + else { + if (1 !== s) throw new JpegError("invalid ACn encoding"); + d = receiveAndExtend(s); + f = c ? 2 : 3; + } + continue; + case 1: + case 2: + if (e.blockData[a]) e.blockData[a] += r * (readBit() << g); + else { + c--; + 0 === c && (f = 2 === f ? 3 : 0); + } + break; + case 3: + if (e.blockData[a]) e.blockData[a] += r * (readBit() << g); + else { + e.blockData[a] = d << g; + f = 0; + } + break; + case 4: + e.blockData[a] && (e.blockData[a] += r * (readBit() << g)); + } + i++; + } + if (4 === f) { + u--; + 0 === u && (f = 0); + } + } + : function decodeBaseline(e, t) { + const i = decodeHuffman(e.huffmanTableDC), + a = 0 === i ? 0 : receiveAndExtend(i); + e.blockData[t] = e.pred += a; + let s = 1; + for (; s < 64; ) { + const i = decodeHuffman(e.huffmanTableAC), + a = 15 & i, + r = i >> 4; + if (0 === a) { + if (r < 15) break; + s += 16; + continue; + } + s += r; + const n = $t[s]; + e.blockData[t + n] = receiveAndExtend(a); + s++; + } + }; + let k, + R = 0; + const N = + 1 === m ? a[0].blocksPerLine * a[0].blocksPerColumn : h * i.mcusPerColumn; + let G, x; + for (; R <= N; ) { + const i = s ? Math.min(N - R, s) : N; + if (i > 0) { + for (w = 0; w < m; w++) a[w].pred = 0; + u = 0; + if (1 === m) { + y = a[0]; + for (F = 0; F < i; F++) { + decodeBlock(y, S, R); + R++; + } + } else + for (F = 0; F < i; F++) { + for (w = 0; w < m; w++) { + y = a[w]; + G = y.h; + x = y.v; + for (b = 0; b < x; b++) + for (D = 0; D < G; D++) decodeMcu(y, S, R, b, D); + } + R++; + } + } + E = 0; + k = findNextFileMarker(e, t); + if (!k) break; + if (k.invalid) { + warn( + `decodeScan - ${i > 0 ? "unexpected" : "excessive"} MCU data, current marker is: ${k.invalid}`, + ); + t = k.offset; + } + if (!(k.marker >= 65488 && k.marker <= 65495)) break; + t += 2; + } + return t - C; +} +function quantizeAndInverse(e, t, i) { + const a = e.quantizationTable, + s = e.blockData; + let r, n, o, g, c, h, l, C, Q, E, u, d, f, p, m, y, w; + if (!a) throw new JpegError("missing required Quantization Table."); + for (let e = 0; e < 64; e += 8) { + Q = s[t + e]; + E = s[t + e + 1]; + u = s[t + e + 2]; + d = s[t + e + 3]; + f = s[t + e + 4]; + p = s[t + e + 5]; + m = s[t + e + 6]; + y = s[t + e + 7]; + Q *= a[e]; + if (0 != (E | u | d | f | p | m | y)) { + E *= a[e + 1]; + u *= a[e + 2]; + d *= a[e + 3]; + f *= a[e + 4]; + p *= a[e + 5]; + m *= a[e + 6]; + y *= a[e + 7]; + r = (ri * Q + 128) >> 8; + n = (ri * f + 128) >> 8; + o = u; + g = m; + c = (ni * (E - y) + 128) >> 8; + C = (ni * (E + y) + 128) >> 8; + h = d << 4; + l = p << 4; + r = (r + n + 1) >> 1; + n = r - n; + w = (o * si + g * ai + 128) >> 8; + o = (o * ai - g * si + 128) >> 8; + g = w; + c = (c + l + 1) >> 1; + l = c - l; + C = (C + h + 1) >> 1; + h = C - h; + r = (r + g + 1) >> 1; + g = r - g; + n = (n + o + 1) >> 1; + o = n - o; + w = (c * ii + C * ti + 2048) >> 12; + c = (c * ti - C * ii + 2048) >> 12; + C = w; + w = (h * ei + l * Ai + 2048) >> 12; + h = (h * Ai - l * ei + 2048) >> 12; + l = w; + i[e] = r + C; + i[e + 7] = r - C; + i[e + 1] = n + l; + i[e + 6] = n - l; + i[e + 2] = o + h; + i[e + 5] = o - h; + i[e + 3] = g + c; + i[e + 4] = g - c; + } else { + w = (ri * Q + 512) >> 10; + i[e] = w; + i[e + 1] = w; + i[e + 2] = w; + i[e + 3] = w; + i[e + 4] = w; + i[e + 5] = w; + i[e + 6] = w; + i[e + 7] = w; + } + } + for (let e = 0; e < 8; ++e) { + Q = i[e]; + E = i[e + 8]; + u = i[e + 16]; + d = i[e + 24]; + f = i[e + 32]; + p = i[e + 40]; + m = i[e + 48]; + y = i[e + 56]; + if (0 != (E | u | d | f | p | m | y)) { + r = (ri * Q + 2048) >> 12; + n = (ri * f + 2048) >> 12; + o = u; + g = m; + c = (ni * (E - y) + 2048) >> 12; + C = (ni * (E + y) + 2048) >> 12; + h = d; + l = p; + r = 4112 + ((r + n + 1) >> 1); + n = r - n; + w = (o * si + g * ai + 2048) >> 12; + o = (o * ai - g * si + 2048) >> 12; + g = w; + c = (c + l + 1) >> 1; + l = c - l; + C = (C + h + 1) >> 1; + h = C - h; + r = (r + g + 1) >> 1; + g = r - g; + n = (n + o + 1) >> 1; + o = n - o; + w = (c * ii + C * ti + 2048) >> 12; + c = (c * ti - C * ii + 2048) >> 12; + C = w; + w = (h * ei + l * Ai + 2048) >> 12; + h = (h * Ai - l * ei + 2048) >> 12; + l = w; + Q = r + C; + y = r - C; + E = n + l; + m = n - l; + u = o + h; + p = o - h; + d = g + c; + f = g - c; + Q < 16 ? (Q = 0) : Q >= 4080 ? (Q = 255) : (Q >>= 4); + E < 16 ? (E = 0) : E >= 4080 ? (E = 255) : (E >>= 4); + u < 16 ? (u = 0) : u >= 4080 ? (u = 255) : (u >>= 4); + d < 16 ? (d = 0) : d >= 4080 ? (d = 255) : (d >>= 4); + f < 16 ? (f = 0) : f >= 4080 ? (f = 255) : (f >>= 4); + p < 16 ? (p = 0) : p >= 4080 ? (p = 255) : (p >>= 4); + m < 16 ? (m = 0) : m >= 4080 ? (m = 255) : (m >>= 4); + y < 16 ? (y = 0) : y >= 4080 ? (y = 255) : (y >>= 4); + s[t + e] = Q; + s[t + e + 8] = E; + s[t + e + 16] = u; + s[t + e + 24] = d; + s[t + e + 32] = f; + s[t + e + 40] = p; + s[t + e + 48] = m; + s[t + e + 56] = y; + } else { + w = (ri * Q + 8192) >> 14; + w = w < -2040 ? 0 : w >= 2024 ? 255 : (w + 2056) >> 4; + s[t + e] = w; + s[t + e + 8] = w; + s[t + e + 16] = w; + s[t + e + 24] = w; + s[t + e + 32] = w; + s[t + e + 40] = w; + s[t + e + 48] = w; + s[t + e + 56] = w; + } + } +} +function buildComponentData(e, t) { + const i = t.blocksPerLine, + a = t.blocksPerColumn, + s = new Int16Array(64); + for (let e = 0; e < a; e++) + for (let a = 0; a < i; a++) { + quantizeAndInverse(t, getBlockBufferOffset(t, e, a), s); + } + return t.blockData; +} +function findNextFileMarker(e, t, i = t) { + const a = e.length - 1; + let s = i < t ? i : t; + if (t >= a) return null; + const r = readUint16(e, t); + if (r >= 65472 && r <= 65534) return { invalid: null, marker: r, offset: t }; + let n = readUint16(e, s); + for (; !(n >= 65472 && n <= 65534); ) { + if (++s >= a) return null; + n = readUint16(e, s); + } + return { invalid: r.toString(16), marker: n, offset: s }; +} +class JpegImage { + constructor({ decodeTransform: e = null, colorTransform: t = -1 } = {}) { + this._decodeTransform = e; + this._colorTransform = t; + } + parse(e, { dnlScanLines: t = null } = {}) { + function readDataBlock() { + const t = readUint16(e, s); + s += 2; + let i = s + t - 2; + const a = findNextFileMarker(e, i, s); + if (a?.invalid) { + warn( + "readDataBlock - incorrect length, current marker is: " + a.invalid, + ); + i = a.offset; + } + const r = e.subarray(s, i); + s += r.length; + return r; + } + function prepareComponents(e) { + const t = Math.ceil(e.samplesPerLine / 8 / e.maxH), + i = Math.ceil(e.scanLines / 8 / e.maxV); + for (const a of e.components) { + const s = Math.ceil((Math.ceil(e.samplesPerLine / 8) * a.h) / e.maxH), + r = Math.ceil((Math.ceil(e.scanLines / 8) * a.v) / e.maxV), + n = t * a.h, + o = 64 * (i * a.v) * (n + 1); + a.blockData = new Int16Array(o); + a.blocksPerLine = s; + a.blocksPerColumn = r; + } + e.mcusPerLine = t; + e.mcusPerColumn = i; + } + let i, + a, + s = 0, + r = null, + n = null, + o = 0; + const g = [], + c = [], + h = []; + let l = readUint16(e, s); + s += 2; + if (65496 !== l) throw new JpegError("SOI not found"); + l = readUint16(e, s); + s += 2; + A: for (; 65497 !== l; ) { + let C, Q, E; + switch (l) { + case 65504: + case 65505: + case 65506: + case 65507: + case 65508: + case 65509: + case 65510: + case 65511: + case 65512: + case 65513: + case 65514: + case 65515: + case 65516: + case 65517: + case 65518: + case 65519: + case 65534: + const u = readDataBlock(); + 65504 === l && + 74 === u[0] && + 70 === u[1] && + 73 === u[2] && + 70 === u[3] && + 0 === u[4] && + (r = { + version: { major: u[5], minor: u[6] }, + densityUnits: u[7], + xDensity: (u[8] << 8) | u[9], + yDensity: (u[10] << 8) | u[11], + thumbWidth: u[12], + thumbHeight: u[13], + thumbData: u.subarray(14, 14 + 3 * u[12] * u[13]), + }); + 65518 === l && + 65 === u[0] && + 100 === u[1] && + 111 === u[2] && + 98 === u[3] && + 101 === u[4] && + (n = { + version: (u[5] << 8) | u[6], + flags0: (u[7] << 8) | u[8], + flags1: (u[9] << 8) | u[10], + transformCode: u[11], + }); + break; + case 65499: + const d = readUint16(e, s); + s += 2; + const f = d + s - 2; + let p; + for (; s < f; ) { + const t = e[s++], + i = new Uint16Array(64); + if (t >> 4 == 0) + for (Q = 0; Q < 64; Q++) { + p = $t[Q]; + i[p] = e[s++]; + } + else { + if (t >> 4 != 1) throw new JpegError("DQT - invalid table spec"); + for (Q = 0; Q < 64; Q++) { + p = $t[Q]; + i[p] = readUint16(e, s); + s += 2; + } + } + g[15 & t] = i; + } + break; + case 65472: + case 65473: + case 65474: + if (i) throw new JpegError("Only single frame JPEGs supported"); + s += 2; + i = {}; + i.extended = 65473 === l; + i.progressive = 65474 === l; + i.precision = e[s++]; + const m = readUint16(e, s); + s += 2; + i.scanLines = t || m; + i.samplesPerLine = readUint16(e, s); + s += 2; + i.components = []; + i.componentIds = {}; + const y = e[s++]; + let w = 0, + b = 0; + for (C = 0; C < y; C++) { + const t = e[s], + a = e[s + 1] >> 4, + r = 15 & e[s + 1]; + w < a && (w = a); + b < r && (b = r); + const n = e[s + 2]; + E = i.components.push({ + h: a, + v: r, + quantizationId: n, + quantizationTable: null, + }); + i.componentIds[t] = E - 1; + s += 3; + } + i.maxH = w; + i.maxV = b; + prepareComponents(i); + break; + case 65476: + const D = readUint16(e, s); + s += 2; + for (C = 2; C < D; ) { + const t = e[s++], + i = new Uint8Array(16); + let a = 0; + for (Q = 0; Q < 16; Q++, s++) a += i[Q] = e[s]; + const r = new Uint8Array(a); + for (Q = 0; Q < a; Q++, s++) r[Q] = e[s]; + C += 17 + a; + (t >> 4 == 0 ? h : c)[15 & t] = buildHuffmanTable(i, r); + } + break; + case 65501: + s += 2; + a = readUint16(e, s); + s += 2; + break; + case 65498: + const F = 1 == ++o && !t; + s += 2; + const S = e[s++], + k = []; + for (C = 0; C < S; C++) { + const t = e[s++], + a = i.componentIds[t], + r = i.components[a]; + r.index = t; + const n = e[s++]; + r.huffmanTableDC = h[n >> 4]; + r.huffmanTableAC = c[15 & n]; + k.push(r); + } + const R = e[s++], + N = e[s++], + G = e[s++]; + try { + const t = decodeScan(e, s, i, k, a, R, N, G >> 4, 15 & G, F); + s += t; + } catch (t) { + if (t instanceof DNLMarkerError) { + warn(`${t.message} -- attempting to re-parse the JPEG image.`); + return this.parse(e, { dnlScanLines: t.scanLines }); + } + if (t instanceof EOIMarkerError) { + warn(`${t.message} -- ignoring the rest of the image data.`); + break A; + } + throw t; + } + break; + case 65500: + s += 4; + break; + case 65535: + 255 !== e[s] && s--; + break; + default: + const x = findNextFileMarker(e, s - 2, s - 3); + if (x?.invalid) { + warn( + "JpegImage.parse - unexpected data, current marker is: " + + x.invalid, + ); + s = x.offset; + break; + } + if (!x || s >= e.length - 1) { + warn( + "JpegImage.parse - reached the end of the image data without finding an EOI marker (0xFFD9).", + ); + break A; + } + throw new JpegError( + "JpegImage.parse - unknown marker: " + l.toString(16), + ); + } + l = readUint16(e, s); + s += 2; + } + if (!i) throw new JpegError("JpegImage.parse - no frame data found."); + this.width = i.samplesPerLine; + this.height = i.scanLines; + this.jfif = r; + this.adobe = n; + this.components = []; + for (const e of i.components) { + const t = g[e.quantizationId]; + t && (e.quantizationTable = t); + this.components.push({ + index: e.index, + output: buildComponentData(0, e), + scaleX: e.h / i.maxH, + scaleY: e.v / i.maxV, + blocksPerLine: e.blocksPerLine, + blocksPerColumn: e.blocksPerColumn, + }); + } + this.numComponents = this.components.length; + } + _getLinearizedBlockData(e, t, i = !1) { + const a = this.width / e, + s = this.height / t; + let r, + n, + o, + g, + c, + h, + l, + C, + Q, + E, + u, + d = 0; + const f = this.components.length, + p = e * t * f, + m = new Uint8ClampedArray(p), + y = new Uint32Array(e), + w = 4294967288; + let b; + for (l = 0; l < f; l++) { + r = this.components[l]; + n = r.scaleX * a; + o = r.scaleY * s; + d = l; + u = r.output; + g = (r.blocksPerLine + 1) << 3; + if (n !== b) { + for (c = 0; c < e; c++) { + C = 0 | (c * n); + y[c] = ((C & w) << 3) | (7 & C); + } + b = n; + } + for (h = 0; h < t; h++) { + C = 0 | (h * o); + E = (g * (C & w)) | ((7 & C) << 3); + for (c = 0; c < e; c++) { + m[d] = u[E + y[c]]; + d += f; + } + } + } + let D = this._decodeTransform; + i || + 4 !== f || + D || + (D = new Int32Array([-256, 255, -256, 255, -256, 255, -256, 255])); + if (D) + for (l = 0; l < p; ) + for (C = 0, Q = 0; C < f; C++, l++, Q += 2) + m[l] = ((m[l] * D[Q]) >> 8) + D[Q + 1]; + return m; + } + get _isColorConversionNeeded() { + return this.adobe + ? !!this.adobe.transformCode + : 3 === this.numComponents + ? 0 !== this._colorTransform && + (82 !== this.components[0].index || + 71 !== this.components[1].index || + 66 !== this.components[2].index) + : 1 === this._colorTransform; + } + _convertYccToRgb(e) { + let t, i, a; + for (let s = 0, r = e.length; s < r; s += 3) { + t = e[s]; + i = e[s + 1]; + a = e[s + 2]; + e[s] = t - 179.456 + 1.402 * a; + e[s + 1] = t + 135.459 - 0.344 * i - 0.714 * a; + e[s + 2] = t - 226.816 + 1.772 * i; + } + return e; + } + _convertYccToRgba(e, t) { + for (let i = 0, a = 0, s = e.length; i < s; i += 3, a += 4) { + const s = e[i], + r = e[i + 1], + n = e[i + 2]; + t[a] = s - 179.456 + 1.402 * n; + t[a + 1] = s + 135.459 - 0.344 * r - 0.714 * n; + t[a + 2] = s - 226.816 + 1.772 * r; + t[a + 3] = 255; + } + return t; + } + _convertYcckToRgb(e) { + let t, + i, + a, + s, + r = 0; + for (let n = 0, o = e.length; n < o; n += 4) { + t = e[n]; + i = e[n + 1]; + a = e[n + 2]; + s = e[n + 3]; + e[r++] = + i * + (-660635669420364e-19 * i + + 0.000437130475926232 * a - + 54080610064599e-18 * t + + 0.00048449797120281 * s - + 0.154362151871126) - + 122.67195406894 + + a * + (-0.000957964378445773 * a + + 0.000817076911346625 * t - + 0.00477271405408747 * s + + 1.53380253221734) + + t * + (0.000961250184130688 * t - + 0.00266257332283933 * s + + 0.48357088451265) + + s * (-0.000336197177618394 * s + 0.484791561490776); + e[r++] = + 107.268039397724 + + i * + (219927104525741e-19 * i - + 0.000640992018297945 * a + + 0.000659397001245577 * t + + 0.000426105652938837 * s - + 0.176491792462875) + + a * + (-0.000778269941513683 * a + + 0.00130872261408275 * t + + 0.000770482631801132 * s - + 0.151051492775562) + + t * + (0.00126935368114843 * t - + 0.00265090189010898 * s + + 0.25802910206845) + + s * (-0.000318913117588328 * s - 0.213742400323665); + e[r++] = + i * + (-0.000570115196973677 * i - + 263409051004589e-19 * a + + 0.0020741088115012 * t - + 0.00288260236853442 * s + + 0.814272968359295) - + 20.810012546947 + + a * + (-153496057440975e-19 * a - + 0.000132689043961446 * t + + 0.000560833691242812 * s - + 0.195152027534049) + + t * + (0.00174418132927582 * t - + 0.00255243321439347 * s + + 0.116935020465145) + + s * (-0.000343531996510555 * s + 0.24165260232407); + } + return e.subarray(0, r); + } + _convertYcckToRgba(e) { + for (let t = 0, i = e.length; t < i; t += 4) { + const i = e[t], + a = e[t + 1], + s = e[t + 2], + r = e[t + 3]; + e[t] = + a * + (-660635669420364e-19 * a + + 0.000437130475926232 * s - + 54080610064599e-18 * i + + 0.00048449797120281 * r - + 0.154362151871126) - + 122.67195406894 + + s * + (-0.000957964378445773 * s + + 0.000817076911346625 * i - + 0.00477271405408747 * r + + 1.53380253221734) + + i * + (0.000961250184130688 * i - + 0.00266257332283933 * r + + 0.48357088451265) + + r * (-0.000336197177618394 * r + 0.484791561490776); + e[t + 1] = + 107.268039397724 + + a * + (219927104525741e-19 * a - + 0.000640992018297945 * s + + 0.000659397001245577 * i + + 0.000426105652938837 * r - + 0.176491792462875) + + s * + (-0.000778269941513683 * s + + 0.00130872261408275 * i + + 0.000770482631801132 * r - + 0.151051492775562) + + i * + (0.00126935368114843 * i - + 0.00265090189010898 * r + + 0.25802910206845) + + r * (-0.000318913117588328 * r - 0.213742400323665); + e[t + 2] = + a * + (-0.000570115196973677 * a - + 263409051004589e-19 * s + + 0.0020741088115012 * i - + 0.00288260236853442 * r + + 0.814272968359295) - + 20.810012546947 + + s * + (-153496057440975e-19 * s - + 0.000132689043961446 * i + + 0.000560833691242812 * r - + 0.195152027534049) + + i * + (0.00174418132927582 * i - + 0.00255243321439347 * r + + 0.116935020465145) + + r * (-0.000343531996510555 * r + 0.24165260232407); + e[t + 3] = 255; + } + return e; + } + _convertYcckToCmyk(e) { + let t, i, a; + for (let s = 0, r = e.length; s < r; s += 4) { + t = e[s]; + i = e[s + 1]; + a = e[s + 2]; + e[s] = 434.456 - t - 1.402 * a; + e[s + 1] = 119.541 - t + 0.344 * i + 0.714 * a; + e[s + 2] = 481.816 - t - 1.772 * i; + } + return e; + } + _convertCmykToRgb(e) { + let t, + i, + a, + s, + r = 0; + for (let n = 0, o = e.length; n < o; n += 4) { + t = e[n]; + i = e[n + 1]; + a = e[n + 2]; + s = e[n + 3]; + e[r++] = + 255 + + t * + (-6747147073602441e-20 * t + + 0.0008379262121013727 * i + + 0.0002894718188643294 * a + + 0.003264231057537806 * s - + 1.1185611867203937) + + i * + (26374107616089405e-21 * i - + 8626949158638572e-20 * a - + 0.0002748769067499491 * s - + 0.02155688794978967) + + a * + (-3878099212869363e-20 * a - + 0.0003267808279485286 * s + + 0.0686742238595345) - + s * (0.0003361971776183937 * s + 0.7430659151342254); + e[r++] = + 255 + + t * + (0.00013596372813588848 * t + + 0.000924537132573585 * i + + 0.00010567359618683593 * a + + 0.0004791864687436512 * s - + 0.3109689587515875) + + i * + (-0.00023545346108370344 * i + + 0.0002702845253534714 * a + + 0.0020200308977307156 * s - + 0.7488052167015494) + + a * + (6834815998235662e-20 * a + + 0.00015168452363460973 * s - + 0.09751927774728933) - + s * (0.0003189131175883281 * s + 0.7364883807733168); + e[r++] = + 255 + + t * + (13598650411385307e-21 * t + + 0.00012423956175490851 * i + + 0.0004751985097583589 * a - + 36729317476630422e-22 * s - + 0.05562186980264034) + + i * + (0.00016141380598724676 * i + + 0.0009692239130725186 * a + + 0.0007782692450036253 * s - + 0.44015232367526463) + + a * + (5.068882914068769e-7 * a + + 0.0017778369011375071 * s - + 0.7591454649749609) - + s * (0.0003435319965105553 * s + 0.7063770186160144); + } + return e.subarray(0, r); + } + _convertCmykToRgba(e) { + for (let t = 0, i = e.length; t < i; t += 4) { + const i = e[t], + a = e[t + 1], + s = e[t + 2], + r = e[t + 3]; + e[t] = + 255 + + i * + (-6747147073602441e-20 * i + + 0.0008379262121013727 * a + + 0.0002894718188643294 * s + + 0.003264231057537806 * r - + 1.1185611867203937) + + a * + (26374107616089405e-21 * a - + 8626949158638572e-20 * s - + 0.0002748769067499491 * r - + 0.02155688794978967) + + s * + (-3878099212869363e-20 * s - + 0.0003267808279485286 * r + + 0.0686742238595345) - + r * (0.0003361971776183937 * r + 0.7430659151342254); + e[t + 1] = + 255 + + i * + (0.00013596372813588848 * i + + 0.000924537132573585 * a + + 0.00010567359618683593 * s + + 0.0004791864687436512 * r - + 0.3109689587515875) + + a * + (-0.00023545346108370344 * a + + 0.0002702845253534714 * s + + 0.0020200308977307156 * r - + 0.7488052167015494) + + s * + (6834815998235662e-20 * s + + 0.00015168452363460973 * r - + 0.09751927774728933) - + r * (0.0003189131175883281 * r + 0.7364883807733168); + e[t + 2] = + 255 + + i * + (13598650411385307e-21 * i + + 0.00012423956175490851 * a + + 0.0004751985097583589 * s - + 36729317476630422e-22 * r - + 0.05562186980264034) + + a * + (0.00016141380598724676 * a + + 0.0009692239130725186 * s + + 0.0007782692450036253 * r - + 0.44015232367526463) + + s * + (5.068882914068769e-7 * s + + 0.0017778369011375071 * r - + 0.7591454649749609) - + r * (0.0003435319965105553 * r + 0.7063770186160144); + e[t + 3] = 255; + } + return e; + } + getData({ + width: e, + height: t, + forceRGBA: i = !1, + forceRGB: a = !1, + isSourcePDF: s = !1, + }) { + if (this.numComponents > 4) throw new JpegError("Unsupported color mode"); + const r = this._getLinearizedBlockData(e, t, s); + if (1 === this.numComponents && (i || a)) { + const e = r.length * (i ? 4 : 3), + t = new Uint8ClampedArray(e); + let a = 0; + if (i) + !(function grayToRGBA(e, t) { + if (FeatureTest.isLittleEndian) + for (let i = 0, a = e.length; i < a; i++) + t[i] = (65793 * e[i]) | 4278190080; + else + for (let i = 0, a = e.length; i < a; i++) + t[i] = (16843008 * e[i]) | 255; + })(r, new Uint32Array(t.buffer)); + else + for (const e of r) { + t[a++] = e; + t[a++] = e; + t[a++] = e; + } + return t; + } + if (3 === this.numComponents && this._isColorConversionNeeded) { + if (i) { + const e = new Uint8ClampedArray((r.length / 3) * 4); + return this._convertYccToRgba(r, e); + } + return this._convertYccToRgb(r); + } + if (4 === this.numComponents) { + if (this._isColorConversionNeeded) + return i + ? this._convertYcckToRgba(r) + : a + ? this._convertYcckToRgb(r) + : this._convertYcckToCmyk(r); + if (i) return this._convertCmykToRgba(r); + if (a) return this._convertCmykToRgb(r); + } + return r; + } +} +class JpegStream extends DecodeStream { + constructor(e, t, i) { + let a; + for (; -1 !== (a = e.getByte()); ) + if (255 === a) { + e.skip(-1); + break; + } + super(t); + this.stream = e; + this.dict = e.dict; + this.maybeLength = t; + this.params = i; + } + get bytes() { + return shadow(this, "bytes", this.stream.getBytes(this.maybeLength)); + } + ensureBuffer(e) {} + readBlock() { + if (this.eof) return; + const e = { decodeTransform: void 0, colorTransform: void 0 }, + t = this.dict.getArray("D", "Decode"); + if ((this.forceRGBA || this.forceRGB) && Array.isArray(t)) { + const i = this.dict.get("BPC", "BitsPerComponent") || 8, + a = t.length, + s = new Int32Array(a); + let r = !1; + const n = (1 << i) - 1; + for (let e = 0; e < a; e += 2) { + s[e] = (256 * (t[e + 1] - t[e])) | 0; + s[e + 1] = (t[e] * n) | 0; + (256 === s[e] && 0 === s[e + 1]) || (r = !0); + } + r && (e.decodeTransform = s); + } + if (this.params instanceof Dict) { + const t = this.params.get("ColorTransform"); + Number.isInteger(t) && (e.colorTransform = t); + } + const i = new JpegImage(e); + i.parse(this.bytes); + const a = i.getData({ + width: this.drawWidth, + height: this.drawHeight, + forceRGBA: this.forceRGBA, + forceRGB: this.forceRGB, + isSourcePDF: !0, + }); + this.buffer = a; + this.bufferLength = a.length; + this.eof = !0; + } +} +var oi, + gi = + ((oi = + "undefined" != typeof document ? document.currentScript?.src : void 0), + function (e = {}) { + var t, + i, + a = Object.assign({}, e); + new Promise((e, a) => { + t = e; + i = a; + }); + a.decode = function (e, t) { + const i = e.length, + s = a._malloc(i); + a.HEAPU8.set(e, s); + const r = a._jp2_decode(s, i, t ? 1 : 0); + a._free(s); + if (r) { + const { errorMessages: e } = a; + if (e) { + delete a.errorMessages; + return e; + } + return "Unknown error"; + } + const { imageData: n } = a; + a.imageData = null; + return n; + }; + var s, + r = Object.assign({}, a), + n = "./this.program", + o = ""; + "undefined" != typeof document && + document.currentScript && + (o = document.currentScript.src); + oi && (o = oi); + o = o.startsWith("blob:") + ? "" + : o.substr(0, o.replace(/[?#].*/, "").lastIndexOf("/") + 1); + var g, + c, + h, + l, + C, + Q = a.print || console.log.bind(console), + E = a.printErr || console.error.bind(console); + Object.assign(a, r); + r = null; + a.arguments && a.arguments; + a.thisProgram && (n = a.thisProgram); + a.quit && a.quit; + a.wasmBinary && (g = a.wasmBinary); + function tryParseAsDataURI(e) { + if (isDataURI(e)) + return (function intArrayFromBase64(e) { + for ( + var t = atob(e), i = new Uint8Array(t.length), a = 0; + a < t.length; + ++a + ) + i[a] = t.charCodeAt(a); + return i; + })(e.slice(b.length)); + } + function updateMemoryViews() { + var e = c.buffer; + a.HEAP8 = h = new Int8Array(e); + a.HEAP16 = new Int16Array(e); + a.HEAPU8 = l = new Uint8Array(e); + a.HEAPU16 = new Uint16Array(e); + a.HEAP32 = new Int32Array(e); + a.HEAPU32 = C = new Uint32Array(e); + a.HEAPF32 = new Float32Array(e); + a.HEAPF64 = new Float64Array(e); + } + var u, + d = [], + f = [], + p = [], + m = 0, + y = null, + w = null, + b = "data:application/octet-stream;base64,", + isDataURI = (e) => e.startsWith(b); + function instantiateSync(e, t) { + var i, + a = (function getBinarySync(e) { + if (e == u && g) return new Uint8Array(g); + var t = tryParseAsDataURI(e); + if (t) return t; + if (s) return s(e); + throw 'sync fetching of the wasm failed: you can preload it to Module["wasmBinary"] manually, or emcc.py will do that for you when generating HTML (but not JS)'; + })(e); + i = new WebAssembly.Module(a); + return [new WebAssembly.Instance(i, t), i]; + } + var D, + callRuntimeCallbacks = (e) => { + for (; e.length > 0; ) e.shift()(a); + }, + F = + (a.noExitRuntime, + (e) => { + var t = (e - c.buffer.byteLength + 65535) / 65536; + try { + c.grow(t); + updateMemoryViews(); + return 1; + } catch (e) {} + }), + S = {}, + getEnvStrings = () => { + if (!getEnvStrings.strings) { + var e = { + USER: "web_user", + LOGNAME: "web_user", + PATH: "/", + PWD: "/", + HOME: "/home/web_user", + LANG: + ( + ("object" == typeof navigator && + navigator.languages && + navigator.languages[0]) || + "C" + ).replace("-", "_") + ".UTF-8", + _: n || "./this.program", + }; + for (var t in S) void 0 === S[t] ? delete e[t] : (e[t] = S[t]); + var i = []; + for (var t in e) i.push(`${t}=${e[t]}`); + getEnvStrings.strings = i; + } + return getEnvStrings.strings; + }, + k = [null, [], []], + R = + "undefined" != typeof TextDecoder ? new TextDecoder("utf8") : void 0, + UTF8ArrayToString = (e, t, i) => { + for (var a = t + i, s = t; e[s] && !(s >= a); ) ++s; + if (s - t > 16 && e.buffer && R) return R.decode(e.subarray(t, s)); + for (var r = ""; t < s; ) { + var n = e[t++]; + if (128 & n) { + var o = 63 & e[t++]; + if (192 != (224 & n)) { + var g = 63 & e[t++]; + if ( + (n = + 224 == (240 & n) + ? ((15 & n) << 12) | (o << 6) | g + : ((7 & n) << 18) | + (o << 12) | + (g << 6) | + (63 & e[t++])) < 65536 + ) + r += String.fromCharCode(n); + else { + var c = n - 65536; + r += String.fromCharCode( + 55296 | (c >> 10), + 56320 | (1023 & c), + ); + } + } else r += String.fromCharCode(((31 & n) << 6) | o); + } else r += String.fromCharCode(n); + } + return r; + }, + printChar = (e, t) => { + var i = k[e]; + if (0 === t || 10 === t) { + (1 === e ? Q : E)(UTF8ArrayToString(i, 0)); + i.length = 0; + } else i.push(t); + }, + UTF8ToString = (e, t) => (e ? UTF8ArrayToString(l, e, t) : ""), + N = { + f: (e, t, i) => l.copyWithin(e, t, t + i), + b: (e) => { + var t = l.length, + i = 2147483648; + if ((e >>>= 0) > i) return !1; + for (var a, s, r = 1; r <= 4; r *= 2) { + var n = t * (1 + 0.2 / r); + n = Math.min(n, e + 100663296); + var o = Math.min( + i, + (a = Math.max(e, n)) + (((s = 65536) - (a % s)) % s), + ); + if (F(o)) return !0; + } + return !1; + }, + c: (e, t) => { + var i = 0; + getEnvStrings().forEach((a, s) => { + var r = t + i; + C[(e + 4 * s) >> 2] = r; + ((e, t) => { + for (var i = 0; i < e.length; ++i) h[t++] = e.charCodeAt(i); + h[t] = 0; + })(a, r); + i += a.length + 1; + }); + return 0; + }, + d: (e, t) => { + var i = getEnvStrings(); + C[e >> 2] = i.length; + var a = 0; + i.forEach((e) => (a += e.length + 1)); + C[t >> 2] = a; + return 0; + }, + e: (e, t, i, a) => { + for (var s = 0, r = 0; r < i; r++) { + var n = C[t >> 2], + o = C[(t + 4) >> 2]; + t += 8; + for (var g = 0; g < o; g++) printChar(e, l[n + g]); + s += o; + } + C[a >> 2] = s; + return 0; + }, + g: function _jsPrintWarning(e) { + const t = UTF8ToString(e); + (a.warn || console.warn)(`OpenJPEG: ${t}`); + }, + h: function _setImageData(e, t) { + a.imageData = new Uint8ClampedArray(a.HEAPU8.subarray(e, e + t)); + }, + a: function _storeErrorMessage(e) { + const t = UTF8ToString(e); + a.errorMessages + ? (a.errorMessages += "\n" + t) + : (a.errorMessages = t); + }, + }, + G = (function createWasm() { + var e = (function getWasmImports() { + return { a: N }; + })(); + function receiveInstance(e, t) { + G = e.exports; + c = G.i; + updateMemoryViews(); + !(function addOnInit(e) { + f.unshift(e); + })(G.j); + !(function removeRunDependency(e) { + m--; + a.monitorRunDependencies?.(m); + if (0 == m) { + if (null !== y) { + clearInterval(y); + y = null; + } + if (w) { + var t = w; + w = null; + t(); + } + } + })(); + return G; + } + !(function addRunDependency(e) { + m++; + a.monitorRunDependencies?.(m); + })(); + if (a.instantiateWasm) + try { + return a.instantiateWasm(e, receiveInstance); + } catch (e) { + E(`Module.instantiateWasm callback failed with error: ${e}`); + i(e); + } + u || + (u = + "data:application/octet-stream;base64,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dEGwnQFqKAIAIQICfiAAKQMIIg5CAFMEQEEMIAFBAWogAUELThshBCADQQFrIQNBfyACdEF/c0EBdCEBQgEMAQsgAUEBa0EAIAFBAUobIQQgDkE/IAJrrYinQX8gAnRBf3NxQQF0QQFyIQEgAyACQQFqIgJrIQMgAq0LIQ8gACADNgIQIAAgBDYCHCAAIA4gD4Y3AwggACAAKQMoQv//////QIMgAa1CI4aENwMoQQYhBSADQQZIDQAgACgCHCIBQQJ0QbCdAWooAgAhAgJ+IAApAwgiDkIAUwRAQQwgAUEBaiABQQtOGyEEIANBAWshA0F/IAJ0QX9zQQF0IQFCAQwBCyABQQFrQQAgAUEBShshBCAOQT8gAmutiKdBfyACdEF/c3FBAXRBAXIhASADIAJBAWoiAmshAyACrQshDyAAIAM2AhAgACAENgIcIAAgDiAPhjcDCCAAIAApAyhC////////QIMgAa1CKoaENwMoQQchBSADQQZIDQAgACgCHCIBQQJ0QbCdAWooAgAhAgJ+IAApAwgiDkIAUwRAQQwgAUEBaiABQQtOGyEEIANBAWshA0F/IAJ0QX9zQQF0IQFCAQwBCyABQQFrQQAgAUEBShshBCAOQT8gAmutiKdBfyACdEF/c3FBAXRBAXIhASADIAJBAWoiAmshAyACrQshDyAAIAM2AhAgACAENgIcIAAgDiAPhjcDCCAAIAApAyhC/////////0CDIAGtQjGGhDcDKEEIIQULIAAgBUEBazYCICAAIAApAygiDkIHiDcDKCAOp0H/AHELIgEBfyAABEAgACgCDCIBBEAgARAJIABBADYCDAsgABAJCwuFAQIFfwF+AkAgAEKAgICAEFQEQCAAIQcMAQsDQCABQQFrIgEgAEIKgCIHQvYBfiAAfKdBMHI6AAAgAEL/////nwFWIQUgByEAIAUNAAsLIAenIgIEQANAIAFBAWsiASACQQpuIgNB9gFsIAJqQTByOgAAIAJBCUshBiADIQIgBg0ACwsgAQv54gEEen8Gewh+AX0jAEEQayJOJAACQCAALQAIQYABcUUNACAAKALMASABRw0AIAAoApwBIAFBjCxsaiJPKALcKyIVRQRAIE8QKQwBCyAAKALIARogACgC0AEhGSAAKAJMIgdFBEAgACgCSCEHCyAHKAIAIQYgBygCBCELIAco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AAACAAAA/a4BQQL9rAH9sQH9CwIAIAEiBkEBaiIBIA9HDQALIA8hBwsgByAbTg0AA0AgB0EDdCEBIAcgLEghBgJAIAdBAEwEQCA2KAIAIQogB0EATgRAIBQgAUECdCIBaiIyIDIoAgAgCiABIDZqIEUgBhsoAgBqQQJqQQJ1azYCACABICRqIgogCigCACAgKAIAIAEgIGogPCAGGygCAGpBAmpBAnVrNgIAIAEgKmoiCiAKKAIAIB8oAgAgASAfaiA6IAYbKAIAakECakECdWs2AgAgQygCACABIENqICYgBhsoAgBqQQJqIQYgASApaiEBDAILIBQgAUECdCIBaiIGIAYoAgAgCkEBdEECakECdWs2AgAgASAkaiIGIAYoAgAgFCgCFEEBdEECakECdWs2AgAgASAqaiIGIAYoAgAgFCgCGEEBdEECakECdWs2AgAgASApaiEBIBQoAhxBAXRBAmohBgwBCyAUIAcgLCAGG0EDdEEEa0ECdCIKaigCACEyIAZFBEAgFCABQQJ0IgFqIgYgBigCACAyIEUoAgBqQQJqQQJ1azYCACABICRqIgYgBigCACAKICRqKAIAIDwoAgBqQQJqQQJ1azYCACABICpqIgYgBigCACAKICpqKAIAIDooAgBqQQJqQQJ1azYCACABIClqIQEgCiApaigCACAmKAIAakECaiEGDAELIBQgAUECdCIBaiIGIAYoAgAgMiAGKAIQakECakECdWs2AgAgASAkaiIGIAYoAgAgCiAkaigCACAGKAIQakECakECdWs2AgAgASAqaiIGIAYoAgAgCiAqaigCACAGKAIQakECakECdWs2AgAgCiApaigCACABIClqIgEoAhBqQQJqIQYLIAEgASgCACAGQQJ1azYCACAHQQFqIgcgG0cNAAsLIA4gHE4NACAMIA4iASIHSgRAA0AgFCABQQV0aiIHIAf9AAIgIAf9AAIA/a4BQQH9rAEgB/0AAhD9rgH9CwIQIAFBAWoiASAMRw0ACyAMIQcLIAcgHE4NAANAIEMgB0EDdCIBQQJ0aiIyAn8gB0EASARAIBQoAgAhBiAHQX9HBEAgNiABQQJ0IgFqIgogCigCACAGajYCACABICBqIgYgBigCACAkKAIAajYCACABIB9qIgEgASgCACAqKAIAajYCACApKAIADAILIDYgAUECdCIB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LQAAQYD+A3I2AgwLIABBADYCEEEBCwtJAQF/AkBBAUEsEAwiAQRAIAFBADYCEAJAIABBAEwEQCABQQFBCBAMIgA2AiQgAEUNAQwDCyABQQA2AgwLIAEQCQtBACEBCyABC34CAX8BfiAAvSIDQjSIp0H/D3EiAkH/D0cEfCACRQRAIAEgAEQAAAAAAAAAAGEEf0EABSAARAAAAAAAAPBDoiABEF8hACABKAIAQUBqCzYCACAADwsgASACQf4HazYCACADQv////////+HgH+DQoCAgICAgIDwP4S/BSAACwuRAgAgAEUEQEEADwsCfwJAIAFB/wBNDQACQEGUzwEoAgAoAgBFBEAgAUGAf3FBgL8DRg0CDAELIAFB/w9NBEAgACABQT9xQYABcjoAASAAIAFBBnZBwAFyOgAAQQIMAwsgAUGAQHFBgMADRyABQYCwA09xRQRAIAAgAUE/cUGAAXI6AAIgACABQQx2QeABcjoAACAAIAFBBnZBP3FBgAFyOgABQQMMAwsgAUGAgARrQf//P00EQCAAIAFBP3FBgAFyOgADIAAgAUESdkHwAXI6AAAgACABQQZ2QT9xQYABcjoAAiAAIAFBDHZBP3FBgAFyOgABQQQMAwsLQZTGAUEZNgIAQX8MAQsgACABOgAAQQELC7wCAAJAAkACQAJAAkACQAJAAkACQAJAAkAgAUEJaw4SAAgJCggJAQIDBAoJCgoICQUGBwsgAiACKAIAIgFBBGo2AgAgACABKAIANgIADwsgAiACKAIAIgFBBGo2AgAgACABMgEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMwEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMAAANwMADwsgAiACKAIAIgFBBGo2AgAgACABMQAANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACIAMRAwALDwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMAC3MBBn8gACgCACIDLAAAQTBrIgFBCUsEQEEADwsDQEF/IQQgAkHMmbPmAE0EQEF/IAEgAkEKbCIFaiABIAVB/////wdzSxshBAsgACADQQFqIgU2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VP0gAiACKgJ0/SAD/QsCACABIAMgF2pBAnRqIAL9CQIYIAIqAjj9IAEgAioCWP0gAiACKgJ4/SAD/QsCACABIAMgFmpBAnRqIAL9CQIcIAIqAjz9IAEgAioCXP0gAiACKgJ8/SAD/QsCACADQQRqIgMgBEcNAAsgBCALRg0BCwNAIAEgBCAbakECdGogBiAEQQV0aiIDKgIQOAIAIAEgBCAYakECdGogAyoCFDgCACABIAQgF2pBAnRqIAMqAhg4AgAgASAEIBZqQQJ0aiADKgIcOAIAIARBAWoiBCALRw0ACwsgHUEBaiEdIAEgJEECdGohASAcQQhqIhwgACgCLE0NAAsLIAAoAgAQCSAAEAkLcwECfyAAKAIcIgFBCGoiAyAAKAIgIgJNBEADQCAAIAAoAhggAUECdGogACgCFEEIECsgAyIBQQhqIgMgACgCICICTQ0ACwsgASACSQRAIAAgACgCGCABQQJ0aiAAKAIUIAIgAWsQKwsgACgCABAJIAAQCQtEACAAKAIcIgEgACgCIEkEQANAIAAgACgCGCAAKAIUIAFsQQJ0ahBWIAFBAWoiASAAKAIgSQ0ACwsgACgCABAJIAAQCQuoAQEFfyAAKAJUIgMoAgAhBSADKAIEIgQgACgCFCAAKAIcIgdrIgYgBCAGSRsiBgRAIAUgByAGEAsaIAMgAygCACAGaiIFNgIAIAMgAygCBCAGayIENgIECyAEIAIgAiAESxsiBARAIAUgASAEEAsaIAMgAygCACAEaiIFNgIAIAMgAygCBCAEazYCBAsgBUEAOgAAIAAgACgCLCIBNgIcIAAgATYCFCACC54FAgZ+BH8gASABKAIAQQdqQXhxIgFBEGo2AgAgACELIAEpAwAhAyABKQMIIQcjAEEgayIIJAAgB0L///////8/gyEEAn4gB0IwiEL//wGDIgWnIgpBgfgAa0H9D00EQCAEQgSGIANCPIiEIQIgCkGA+ABrrSEFAkAgA0L//////////w+DIgNCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyADQoCAgICAgICACFINACACQgGDIAJ8IQILQgAgAiACQv////////8HViIAGyECIACtIAV8DAELAkAgAyAEhFANACAFQv//AVINACAEQgSGIANCPIiEQoCAgICAgIAEhCECQv8PDAELQv8PIApB/ocB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JWQpIAAlc30KAAkJIH0KAFtERVZdIER1bXAgYW4gaW1hZ2VfY29tcF9oZWFkZXIgc3RydWN0IHsKAFtERVZdIER1bXAgYW4gaW1hZ2VfaGVhZGVyIHN0cnVjdCB7CgBJbWFnZSBpbmZvIHsKAAkgZGVmYXVsdCB0aWxlIHsKACVzCSBjb21wb25lbnQgJWQgewoACQkgY29tcCAlZCB7CgAJIFRpbGUgaW5kZXg6IHsKAAkgTWFya2VyIGxpc3Q6IHsKAENvZGVzdHJlYW0gaW5kZXggZnJvbSBtYWluIGhlYWRlcjogewoAQ29kZXN0cmVhbSBpbmZvIGZyb20gbWFpbiBoZWFkZXI6IHsKAFN0cmVhbSBlcnJvciB3aGlsZSByZWFkaW5nIEpQMiBIZWFkZXIgYm94CgBGb3VuZCBhIG1pc3BsYWNlZCAnJWMlYyVjJWMnIGJveCBvdXRzaWRlIGpwMmggYm94CgBNYWxmb3JtZWQgSlAyIGZpbGUgZm9ybWF0OiBmaXJzdCBib3ggbXVzdCBiZSBKUEVHIDIwMDAgc2lnbmF0dXJlIGJveAoATWFsZm9ybWVkIEpQMiBmaWxlIGZvcm1hdDogc2Vjb25kIGJveCBtdXN0IGJlIGZpbGUgdHlwZSBib3gKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIGhhbmRsZSBqcGVnMjAwMCBib3gKAE5vdCBlbm91Z2ggbWVtb3J5IHdpdGggRlRZUCBCb3gKAEEgbWFya2VyIElEIHdhcyBleHBlY3RlZCAoMHhmZi0tKSBpbnN0ZWFkIG9mICUuOHgKAAkJIG1jdD0leAoACQkJIGNibGtzdHk9JSN4CgAJCQkgY3N0eT0lI3gKAAkJIHByZz0lI3gKAEludGVnZXIgb3ZlcmZsb3cKAAkgdGR4PSV1LCB0ZHk9JXUKAAkgdHc9JXUsIHRoPSV1CgAJIHR4MD0ldSwgdHkwPSV1CgBJbnZhbGlkIGNvbXBvbmVudCBpbmRleDogJXUKAFN0cmVhbSB0b28gc2hvcnQKAE1hcmtlciBoYW5kbGVyIGZ1bmN0aW9uIGZhaWxlZCB0byByZWFkIHRoZSBtYXJrZXIgc2VnbWVudAoATm90IGVub3VnaCBtZW1vcnkgZm9yIGN1cnJlbnQgcHJlY2luY3QgY29kZWJsb2NrIGVsZW1lbnQKAEVycm9yIHJlYWRpbmcgU1BDb2QgU1BDb2MgZWxlbWVudAoARXJyb3IgcmVhZGluZyBTUWNkIG9yIFNRY2MgZWxlbWVudAoAQSBCUENDIGhlYWRlciBib3ggaXMgYXZhaWxhYmxlIGFsdGhvdWdoIEJQQyBnaXZlbiBieSB0aGUgSUhEUiBib3ggKCVkKSBpbmRpY2F0ZSBjb21wb25lbnRzIGJpdCBkZXB0aCBpcyBjb25zdGFudAoARXJyb3Igd2l0aCBTSVogbWFya2VyOiBpbGxlZ2FsIHRpbGUgb2Zmc2V0CgBJbnZhbGlkIHByZWNpbmN0CgBOb3QgZW5vdWdoIG1lbW9yeSB0byBoYW5kbGUgYmFuZCBwcmVjaW50cwoARmFpbGVkIHRvIGRlY29kZSBhbGwgdXNlZCBjb21wb25lbnRzCgBTaXplIG9mIGNvZGUgYmxvY2sgZGF0YSBleGNlZWRzIHN5c3RlbSBsaW1pdHMKAFNpemUgb2YgdGlsZSBkYXRhIGV4Y2VlZHMgc3lzdGVtIGxpbWl0cwoAQ2Fubm90IHRha2UgaW4gY2hhcmdlIG11bHRpcGxlIE1DVCBtYXJrZXJzCgBDb3JydXB0ZWQgUFBNIG1hcmtlcnMKAE5vdCBlbm91Z2ggbWVtb3J5IGZvciB0aWxlIHJlc29sdXRpb25zCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgbXVsdGlwbGUgY29sbGVjdGlvbnMKAEludmFsaWQgUENMUiBib3guIFJlcG9ydHMgMCBwYWxldHRlIGNvbHVtbnMKAFdlIGRvIG5vdCBzdXBwb3J0IFJPSSBpbiBkZWNvZGluZyBIVCBjb2RlYmxvY2tzCgBDYW5ub3QgaGFuZGxlIGJveCBvZiB1bmRlZmluZWQgc2l6ZXMKAENhbm5vdCB0YWtlIGluIGNoYXJnZSBjb2xsZWN0aW9ucyB3aXRob3V0IHNhbWUgbnVtYmVyIG9mIGluZGl4ZXMKAEludmFsaWQgdGlsZWMtPndpbl94eHggdmFsdWVzCgBDYW5ub3QgaGFuZGxlIGJveCBvZiBsZXNzIHRoYW4gOCBieXRlcwoAQ2Fubm90IGhhbmRsZSBYTCBib3ggb2YgbGVzcyB0aGFuIDE2IGJ5dGVzCgBDb21wb25lbnQgaW5kZXggJXUgdXNlZCBzZXZlcmFsIHRpbWVzCgBJbnZhbGlkIFBDTFIgYm94LiBSZXBvcnRzICVkIGVudHJpZXMKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIGNyZWF0ZSBUYWctdHJlZSBub2RlcwoAQ2Fubm90IHRha2UgaW4gY2hhcmdlIG1jdCBkYXRhIHdpdGhpbiBtdWx0aXBsZSBNQ1QgcmVjb3JkcwoAQ2Fubm90IGRlY29kZSB0aWxlLCBtZW1vcnkgZXJyb3IKAG9wal9qMmtfYXBwbHlfbmJfdGlsZV9wYXJ0c19jb3JyZWN0aW9uIGVycm9yCgBQcm9ibGVtIHdpdGggc2tpcHBpbmcgSlBFRzIwMDAgYm94LCBzdHJlYW0gZXJyb3IKAFByb2JsZW0gd2l0aCByZWFkaW5nIEpQRUcyMDAwIGJveCwgc3RyZWFtIGVycm9yCgBVbmtub3duIG1hcmtlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gYWRkIHRsIG1hcmtlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gYWRkIG1oIG1hcmtlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gdGFrZSBpbiBjaGFyZ2UgU0laIG1hcmtlcgoARXJyb3IgcmVhZGluZyBQUFQgbWFya2VyCgBOb3QgZW5vdWdoIG1lbW9yeSB0byByZWFkIFBQVCBtYXJrZXIKAEVycm9yIHJlYWRpbmcgU09UIG1hcmtlcgoARXJyb3IgcmVhZGluZyBQTFQgbWFya2VyCgBFcnJvciByZWFkaW5nIE1DVCBtYXJrZXIKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlYWQgTUNUIG1hcmtlcgoATm90IGVub3VnaCBzcGFjZSBmb3IgZXhwZWN0ZWQgU09QIG1hcmtlcgoARXhwZWN0ZWQgU09QIG1hcmtlcgoARXJyb3IgcmVhZGluZyBNQ08gbWFya2VyCgBFcnJvciByZWFkaW5nIFJHTiBtYXJrZXIKAEVycm9yIHJlYWRpbmcgUFBNIG1hcmtlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gcmVhZCBQUE0gbWFya2VyCgBFcnJvciByZWFkaW5nIFRMTSBtYXJrZXIKAEVycm9yIHJlYWRpbmcgUExNIG1hcmtlcgoATm90IGVub3VnaCBzcGFjZSBmb3IgZXhwZWN0ZWQgRVBIIG1hcmtlcgoARXhwZWN0ZWQgRVBIIG1hcmtlcgoARXJyb3IgcmVhZGluZyBDUkcgbWFya2VyCgBVbmtub3duIHByb2dyZXNzaW9uIG9yZGVyIGluIENPRCBtYXJrZXIKAFVua25vd24gU2NvZCB2YWx1ZSBpbiBDT0QgbWFya2VyCgBFcnJvciByZWFkaW5nIENPRCBtYXJrZXIKAEVycm9yIHJlYWRpbmcgUUNEIG1hcmtlcgoAQ3Jyb3IgcmVhZGluZyBDQkQgbWFya2VyCgBFcnJvciByZWFkaW5nIFBPQyBtYXJrZXIKAEVycm9yIHJlYWRpbmcgQ09DIG1hcmtlcgoARXJyb3IgcmVhZGluZyBRQ0MgbWFya2VyCgBFcnJvciByZWFkaW5nIE1DQyBtYXJrZXIKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlYWQgTUNDIG1hcmtlcgoAcmVxdWlyZWQgU0laIG1hcmtlciBub3QgZm91bmQgaW4gbWFpbiBoZWFkZXIKAHJlcXVpcmVkIENPRCBtYXJrZXIgbm90IGZvdW5kIGluIG1haW4gaGVhZGVyCgByZXF1aXJlZCBRQ0QgbWFya2VyIG5vdCBmb3VuZCBpbiBtYWluIGhlYWRlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gaGFuZGxlIGpwZWcyMDAwIGZpbGUgaGVhZGVyCgBOb3QgZW5vdWdoIG1lbW9yeSB0byByZWFkIGhlYWRlcgoARXJyb3Igd2l0aCBKUCBTaWduYXR1cmUgOiBiYWQgbWFnaWMgbnVtYmVyCgBJbiBTT1QgbWFya2VyLCBUUFNvdCAoJWQpIGlzIG5vdCB2YWxpZCByZWdhcmRzIHRvIHRoZSBjdXJyZW50IG51bWJlciBvZiB0aWxlLXBhcnQgKCVkKSwgZ2l2aW5nIHVwCgBJbiBTT1QgbWFya2VyLCBUUFNvdCAoJWQpIGlzIG5vdCB2YWxpZCByZWdhcmRzIHRvIHRoZSBwcmV2aW91cyBudW1iZXIgb2YgdGlsZS1wYXJ0ICglZCksIGdpdmluZyB1cAoASW4gU09UIG1hcmtlciwgVFBTb3QgKCVkKSBpcyBub3QgdmFsaWQgcmVnYXJkcyB0byB0aGUgY3VycmVudCBudW1iZXIgb2YgdGlsZS1wYXJ0IChoZWFkZXIpICglZCksIGdpdmluZyB1cAoAdGlsZXMgcmVxdWlyZSBhdCBsZWFzdCBvbmUgcmVzb2x1dGlvbgoATWFya2VyIGlzIG5vdCBjb21wbGlhbnQgd2l0aCBpdHMgcG9zaXRpb24KAFByb2JsZW0gd2l0aCBzZWVrIGZ1bmN0aW9uCgBFcnJvciByZWFkaW5nIFNQQ29kIFNQQ29jIGVsZW1lbnQsIEludmFsaWQgY2Jsa3cvY2Jsa2ggY29tYmluYXRpb24KAEludmFsaWQgbXVsdGlwbGUgY29tcG9uZW50IHRyYW5zZm9ybWF0aW9uCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgY29sbGVjdGlvbnMgb3RoZXIgdGhhbiBhcnJheSBkZWNvcnJlbGF0aW9uCgBUb28gbGFyZ2UgdmFsdWUgZm9yIE5wcG0KAE5vdCBlbm91Z2ggYnl0ZXMgdG8gcmVhZCBOcHBtCgBiYWQgcGxhY2VkIGpwZWcgY29kZXN0cmVhbQoACSBNYWluIGhlYWRlciBzdGFydCBwb3NpdGlvbj0lbGxpCgkgTWFpbiBoZWFkZXIgZW5kIHBvc2l0aW9uPSVsbGkKAE1hcmtlciBzaXplIGluY29uc2lzdGVudCB3aXRoIHN0cmVhbSBsZW5ndGgKAFRpbGUgcGFydCBsZW5ndGggc2l6ZSBpbmNvbnNpc3RlbnQgd2l0aCBzdHJlYW0gbGVuZ3RoCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgbXVsdGlwbGUgZGF0YSBzcGFubmluZwoAV3JvbmcgZmxhZwoARXJyb3Igd2l0aCBGVFlQIHNpZ25hdHVyZSBCb3ggc2l6ZQoARXJyb3Igd2l0aCBKUCBzaWduYXR1cmUgQm94IHNpemUKAEludmFsaWQgcHJlY2luY3Qgc2l6ZQoASW5jb25zaXN0ZW50IG1hcmtlciBzaXplCgBJbnZhbGlkIG1hcmtlciBzaXplCgBFcnJvciB3aXRoIFNJWiBtYXJrZXIgc2l6ZQoATm90IGVub3VnaCBtZW1vcnkgdG8gYWRkIGEgbmV3IHZhbGlkYXRpb24gcHJvY2VkdXJlCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBkZWNvZGUgdGlsZQoARmFpbGVkIHRvIGRlY29kZSB0aGUgY29kZXN0cmVhbSBpbiB0aGUgSlAyIGZpbGUKAENhbm5vdCB0YWtlIGluIGNoYXJnZSBjb2xsZWN0aW9ucyB3aXRoIGluZGl4IHNodWZmbGUKAENhbm5vdCBhbGxvY2F0ZSBUaWVyIDEgaGFuZGxlCgBObyBkZWNvZGVkIGFyZWEgcGFyYW1ldGVycywgc2V0IHRoZSBkZWNvZGVkIGFyZWEgdG8gdGhlIHdob2xlIGltYWdlCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBjcmVhdGUgVGFnLXRyZWUKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlaW5pdGlhbGl6ZSB0aGUgdGFnIHRyZWUKAEVycm9yIHJlYWRpbmcgU1BDb2QgU1BDb2MgZWxlbWVudCwgSW52YWxpZCB0cmFuc2Zvcm1hdGlvbiBmb3VuZAoARXJyb3IgcmVhZGluZyBTUENvZCBTUENvYyBlbGVtZW50LiBVbnN1cHBvcnRlZCBNaXhlZCBIVCBjb2RlLWJsb2NrIHN0eWxlIGZvdW5kCgBUaWxlIFkgY29vcmRpbmF0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQKAFRpbGUgWCBjb29yZGluYXRlcyBhcmUgbm90IHN1cHBvcnRlZAoASW1hZ2UgY29vcmRpbmF0ZXMgYWJvdmUgSU5UX01BWCBhcmUgbm90IHN1cHBvcnRlZAoASlBFRzIwMDAgSGVhZGVyIGJveCBub3QgcmVhZCB5ZXQsICclYyVjJWMlYycgYm94IHdpbGwgYmUgaWdub3JlZAoAb3BqX2oya19tZXJnZV9wcHQoKSBoYXMgYWxyZWFkeSBiZWVuIGNhbGxlZAoATm90IGVub3VnaCBtZW1vcnkgdG8gcmVhZCBTT1QgbWFya2VyLiBUaWxlIGluZGV4IGFsbG9jYXRpb24gZmFpbGVkCgBJZ25vcmluZyBpaGRyIGJveC4gRmlyc3QgaWhkciBib3ggYWxyZWFkeSByZWFkCgBacHB0ICV1IGFscmVhZHkgcmVhZAoAWnBwbSAldSBhbHJlYWR5IHJlYWQKAFBURVJNIGNoZWNrIGZhaWx1cmU6ICVkIHN5bnRoZXRpemVkIDB4RkYgbWFya2VycyByZWFkCgAJCQkgY2Jsa3c9Ml4lZAoACQkJIGNibGtoPTJeJWQKAAkJCSBxbnRzdHk9JWQKACVzIGR4PSVkLCBkeT0lZAoACQkJIHJvaXNoaWZ0PSVkCgAJCQkgbnVtZ2JpdHM9JWQKAAkJIG51bWxheWVycz0lZAoAJXMgbnVtY29tcHM9JWQKAG9wal9qcDJfYXBwbHlfY2RlZjogYWNuPSVkLCBudW1jb21wcz0lZAoAb3BqX2pwMl9hcHBseV9jZGVmOiBjbj0lZCwgbnVtY29tcHM9JWQKAAkJCSBudW1yZXNvbHV0aW9ucz0lZAoACQkgdHlwZT0lI3gsIHBvcz0lbGxpLCBsZW49JWQKACVzIHNnbmQ9JWQKAAkJCSBxbWZiaWQ9JWQKACVzIHByZWM9JWQKAAkJIG5iIG9mIHRpbGUtcGFydCBpbiB0aWxlIFslZF09JWQKACVzIHgxPSVkLCB5MT0lZAoAJXMgeDA9JWQsIHkwPSVkCgBGYWlsZWQgdG8gZGVjb2RlIHRpbGUgJWQvJWQKAFNldHRpbmcgZGVjb2RpbmcgYXJlYSB0byAlZCwlZCwlZCwlZAoARmFpbGVkIHRvIGRlY29kZSBjb21wb25lbnQgJWQKAEludmFsaWQgdmFsdWUgZm9yIG51bXJlc29sdXRpb25zIDogJWQsIG1heCB2YWx1ZSBpcyBzZXQgaW4gb3BlbmpwZWcuaCBhdCAlZAoASW52YWxpZCBjb21wb25lbnQgbnVtYmVyOiAlZCwgcmVnYXJkaW5nIHRoZSBudW1iZXIgb2YgY29tcG9uZW50cyAlZAoAVG9vIG1hbnkgUE9DcyAlZAoASW52YWxpZCB0aWxlIG51bWJlciAlZAoASW52YWxpZCB0aWxlIHBhcnQgaW5kZXggZm9yIHRpbGUgbnVtYmVyICVkLiBHb3QgJWQsIGV4cGVjdGVkICVkCgBFcnJvciB3aXRoIFNJWiBtYXJrZXI6IG51bWJlciBvZiBjb21wb25lbnQgaXMgaWxsZWdhbCAtPiAlZAoATm90IGVub3VnaCBtZW1vcnkgZm9yIGNpZWxhYgoAQ2Fubm90IGFsbG9jYXRlIGNibGstPmRlY29kZWRfZGF0YQoARmFpbGVkIHRvIG1lcmdlIFBQVCBkYXRhCgBGYWlsZWQgdG8gbWVyZ2UgUFBNIGRhdGEKAEludmFsaWQgbnVtYmVyIG9mIGxheWVycyBpbiBDT0QgbWFya2VyIDogJWQgbm90IGluIHJhbmdlIFsxLTY1NTM1XQoAU3RyZWFtIHRvbyBzaG9ydCwgZXhwZWN0ZWQgU09UCgBVbmFibGUgdG8gc2V0IHQxIGhhbmRsZSBhcyBUTFMKAFN0cmVhbSBkb2VzIG5vdCBlbmQgd2l0aCBFT0MKAENhbm5vdCBoYW5kbGUgYm94IHNpemVzIGhpZ2hlciB0aGFuIDJeMzIKAG9wal9waV9uZXh0X2xyY3AoKTogaW52YWxpZCBjb21wbm8wL2NvbXBubzEKAG9wal9waV9uZXh0X3JsY3AoKTogaW52YWxpZCBjb21wbm8wL2NvbXBubzEKAG9wal9waV9uZXh0X2NwcmwoKTogaW52YWxpZCBjb21wbm8wL2NvbXBubzEKAG9wal9waV9uZXh0X3BjcmwoKTogaW52YWxpZCBjb21wbm8wL2NvbXBubzEKAG9wal9waV9uZXh0X3JwY2woKTogaW52YWxpZCBjb21wbm8wL2NvbXBubzEKAG9wal90MV9kZWNvZGVfY2JsaygpOiB1bnN1cHBvcnRlZCBicG5vX3BsdXNfb25lID0gJWQgPj0gMzEKAEZhaWxlZCB0byBkZWNvZGUgdGlsZSAxLzEKAEluc3VmZmljaWVudCBkYXRhIGZvciBDTUFQIGJveC4KAE5lZWQgdG8gcmVhZCBhIFBDTFIgYm94IGJlZm9yZSB0aGUgQ01BUCBib3guCgBJbnN1ZmZpY2llbnQgZGF0YSBmb3IgQ0RFRiBib3guCgBOdW1iZXIgb2YgY2hhbm5lbCBkZXNjcmlwdGlvbiBpcyBlcXVhbCB0byB6ZXJvIGluIENERUYgYm94LgoAU3RyZWFtIGVycm9yIHdoaWxlIHJlYWRpbmcgSlAyIEhlYWRlciBib3g6IG5vICdpaGRyJyBib3guCgBOb24gY29uZm9ybWFudCBjb2Rlc3RyZWFtIFRQc290PT1UTnNvdC4KAFN0cmVhbSBlcnJvciB3aGlsZSByZWFkaW5nIEpQMiBIZWFkZXIgYm94OiBib3ggbGVuZ3RoIGlzIGluY29uc2lzdGVudC4KAEJveCBsZW5ndGggaXMgaW5jb25zaXN0ZW50LgoAUmVzb2x1dGlvbiBmYWN0b3IgaXMgZ3JlYXRlciB0aGFuIHRoZSBtYXhpbXVtIHJlc29sdXRpb24gaW4gdGhlIGNvbXBvbmVudC4KAENvbXBvbmVudCBtYXBwaW5nIHNlZW1zIHdyb25nLiBUcnlpbmcgdG8gY29ycmVjdC4KAEluY29tcGxldGUgY2hhbm5lbCBkZWZpbml0aW9ucy4KAE1hbGZvcm1lZCBIVCBjb2RlYmxvY2suIEludmFsaWQgY29kZWJsb2NrIGxlbmd0aCB2YWx1ZXMuCgBXZSBkbyBub3Qgc3VwcG9ydCBtb3JlIHRoYW4gMyBjb2RpbmcgcGFzc2VzIGluIGFuIEhUIGNvZGVibG9jazsgVGhpcyBjb2RlYmxvY2tzIGhhcyAlZCBwYXNzZXMuCgBNYWxmb3JtZWQgSFQgY29kZWJsb2NrLiBEZWNvZGluZyB0aGlzIGNvZGVibG9jayBpcyBzdG9wcGVkLiBUaGVyZSBhcmUgJWQgemVybyBiaXRwbGFuZXMgaW4gJWQgYml0cGxhbmVzLgoAQ2Fubm90IHRha2UgaW4gY2hhcmdlIG11bHRpcGxlIHRyYW5zZm9ybWF0aW9uIHN0YWdlcy4KAFVua25vd24gbWFya2VyIGhhcyBiZWVuIGRldGVjdGVkIGFuZCBnZW5lcmF0ZWQgZXJyb3IuCgBDb2RlYyBwcm92aWRlZCB0byB0aGUgb3BqX3NldF9kZWNvZGVkX2NvbXBvbmVudHMgZnVuY3Rpb24gaXMgbm90IGEgZGVjb21wcmVzc29yIGhhbmRsZXIuCgBDb2RlYyBwcm92aWRlZCB0byB0aGUgb3BqX3NldHVwX2RlY29kZXIgZnVuY3Rpb24gaXMgbm90IGEgZGVjb21wcmVzc29yIGhhbmRsZXIuCgBDb2RlYyBwcm92aWRlZCB0byB0aGUgb3BqX3JlYWRfaGVhZGVyIGZ1bmN0aW9uIGlzIG5vdCBhIGRlY29tcHJlc3NvciBoYW5kbGVyLgoAVGlsZXMgZG9uJ3QgYWxsIGhhdmUgdGhlIHNhbWUgZGltZW5zaW9uLiBTa2lwIHRoZSBNQ1Qgc3RlcC4KAE51bWJlciBvZiBjb21wb25lbnRzICglZCkgaXMgaW5jb25zaXN0ZW50IHdpdGggYSBNQ1QuIFNraXAgdGhlIE1DVCBzdGVwLgoASlAyIGJveCB3aGljaCBhcmUgYWZ0ZXIgdGhlIGNvZGVzdHJlYW0gd2lsbCBub3QgYmUgcmVhZCBieSB0aGlzIGZ1bmN0aW9uLgoATWFsZm9ybWVkIEhUIGNvZGVibG9jay4gV2hlbiB0aGUgbnVtYmVyIG9mIHplcm8gcGxhbmVzIGJpdHBsYW5lcyBpcyBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIGJpdHBsYW5lcywgb25seSB0aGUgY2xlYW51cCBwYXNzIG1ha2VzIHNlbnNlLCBidXQgd2UgaGF2ZSAlZCBwYXNzZXMgaW4gdGhpcyBjb2RlYmxvY2suIFRoZXJlZm9yZSwgb25seSB0aGUgY2xlYW51cCBwYXNzIHdpbGwgYmUgZGVjb2RlZC4gVGhpcyBtZXNzYWdlIHdpbGwgbm90IGJlIGRpc3BsYXllZCBhZ2Fpbi4KAEltYWdlIGhhcyBsZXNzIGNvbXBvbmVudHMgdGhhbiBjb2Rlc3RyZWFtLgoATmVlZCB0byBkZWNvZGUgdGhlIG1haW4gaGVhZGVyIGJlZm9yZSBiZWdpbiB0byBkZWNvZGUgdGhlIHJlbWFpbmluZyBjb2Rlc3RyZWFtLgoAUHNvdCB2YWx1ZSBvZiB0aGUgY3VycmVudCB0aWxlLXBhcnQgaXMgZXF1YWwgdG8gemVybywgd2UgYXNzdW1pbmcgaXQgaXMgdGhlIGxhc3QgdGlsZS1wYXJ0IG9mIHRoZSBjb2Rlc3RyZWFtLgoAQSBtYWxmb3JtZWQgY29kZWJsb2NrIHRoYXQgaGFzIG1vcmUgdGhhbiBvbmUgY29kaW5nIHBhc3MsIGJ1dCB6ZXJvIGxlbmd0aCBmb3IgMm5kIGFuZCBwb3RlbnRpYWxseSB0aGUgM3JkIHBhc3MgaW4gYW4gSFQgY29kZWJsb2NrLgoACQkJIHRpbGUtcGFydFslZF06IHN0YXJfcG9zPSVsbGksIGVuZF9oZWFkZXI9JWxsaSwgZW5kX3Bvcz0lbGxpLgoAVGlsZSAldSBoYXMgVFBzb3QgPT0gMCBhbmQgVE5zb3QgPT0gMCwgYnV0IG5vIG90aGVyIHRpbGUtcGFydHMgd2VyZSBmb3VuZC4gRU9DIGlzIGFsc28gbWlzc2luZy4KAENvbXBvbmVudCAlZCBkb2Vzbid0IGhhdmUgYSBtYXBwaW5nLgoAQSBjb25mb3JtaW5nIEpQMiByZWFkZXIgc2hhbGwgaWdub3JlIGFsbCBDb2xvdXIgU3BlY2lmaWNhdGlvbiBib3hlcyBhZnRlciB0aGUgZmlyc3QsIHNvIHdlIGlnbm9yZSB0aGlzIG9uZS4KAFRoZSBzaWduYXR1cmUgYm94IG11c3QgYmUgdGhlIGZpcnN0IGJveCBpbiB0aGUgZmlsZS4KAFRoZSAgYm94IG11c3QgYmUgdGhlIGZpcnN0IGJveCBpbiB0aGUgZmlsZS4KAFRoZSBmdHlwIGJveCBtdXN0IGJlIHRoZSBzZWNvbmQgYm94IGluIHRoZSBmaWxlLgoARmFpbGVkIHRvIGRlY29kZS4KAE1hbGZvcm1lZCBIVCBjb2RlYmxvY2suIEluY29ycmVjdCBNRUwgc2VnbWVudCBzZXF1ZW5jZS4KAENvbXBvbmVudCAlZCBpcyBtYXBwZWQgdHdpY2UuCgBPbmx5IG9uZSBDTUFQIGJveCBpcyBhbGxvd2VkLgoAYXBwbHlfY29sb3JfdHJhbnNmb3JtcyA9IE9QSl9UUlVFIGlzIG5vdCBzdXBwb3J0ZWQuCgBXZSBuZWVkIGFuIGltYWdlIHByZXZpb3VzbHkgY3JlYXRlZC4KAElIRFIgYm94X21pc3NpbmcuIFJlcXVpcmVkLgoASlAySCBib3ggbWlzc2luZy4gUmVxdWlyZWQuCgBOb3Qgc3VyZSBob3cgdGhhdCBoYXBwZW5lZC4KAE1haW4gaGVhZGVyIGhhcyBiZWVuIGNvcnJlY3RseSBkZWNvZGVkLgoAVGlsZSAlZC8lZCBoYXMgYmVlbiBkZWNvZGVkLgoASGVhZGVyIG9mIHRpbGUgJWQgLyAlZCBoYXMgYmVlbiByZWFkLgoARW1wdHkgU09UIG1hcmtlciBkZXRlY3RlZDogUHNvdD0lZC4KAERpcmVjdCB1c2UgYXQgIyVkIGhvd2V2ZXIgcGNvbD0lZC4KAEltcGxlbWVudGF0aW9uIGxpbWl0YXRpb246IGZvciBwYWxldHRlIG1hcHBpbmcsIHBjb2xbJWRdIHNob3VsZCBiZSBlcXVhbCB0byAlZCwgYnV0IGlzIGVxdWFsIHRvICVkLgoASW52YWxpZCBjb21wb25lbnQvcGFsZXR0ZSBpbmRleCBmb3IgZGlyZWN0IG1hcHBpbmcgJWQuCgBJbnZhbGlkIHZhbHVlIGZvciBjbWFwWyVkXS5tdHlwID0gJWQuCgBQc290IHZhbHVlIGlzIG5vdCBjb3JyZWN0IHJlZ2FyZHMgdG8gdGhlIEpQRUcyMDAwIG5vcm06ICVkLgoATWFsZm9ybWVkIEhUIGNvZGVibG9jay4gVkxDIGNvZGUgcHJvZHVjZXMgc2lnbmlmaWNhbnQgc2FtcGxlcyBvdXRzaWRlIHRoZSBjb2RlYmxvY2sgYXJlYS4KAFVuZXhwZWN0ZWQgT09NLgoAMzIgYml0cyBhcmUgbm90IGVub3VnaCB0byBkZWNvZGUgdGhpcyBjb2RlYmxvY2ssIHNpbmNlIHRoZSBudW1iZXIgb2YgYml0cGxhbmUsICVkLCBpcyBsYXJnZXIgdGhhbiAzMC4KAEJvdHRvbSBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feTE9JWQpIHNob3VsZCBiZSA+IDAuCgBSaWdodCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDE9JWQpIHNob3VsZCBiZSA+IDAuCgBVcCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feTA9JWQpIHNob3VsZCBiZSA+PSAwLgoATGVmdCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDA9JWQpIHNob3VsZCBiZSA+PSAwLgoARXJyb3IgcmVhZGluZyBQUFQgbWFya2VyOiBwYWNrZXQgaGVhZGVyIGhhdmUgYmVlbiBwcmV2aW91c2x5IGZvdW5kIGluIHRoZSBtYWluIGhlYWRlciAoUFBNIG1hcmtlcikuCgBTdGFydCB0byByZWFkIGoyayBtYWluIGhlYWRlciAoJWxsZCkuCgBCb3R0b20gcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3kxPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChZc2l6PSVkKS4KAFVwIHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl95MD0lZCkgaXMgb3V0c2lkZSB0aGUgaW1hZ2UgYXJlYSAoWXNpej0lZCkuCgBSaWdodCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDE9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFhzaXo9JWQpLgoATGVmdCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDA9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFhzaXo9JWQpLgoAQm90dG9tIHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl95MT0lZCkgaXMgb3V0c2lkZSB0aGUgaW1hZ2UgYXJlYSAoWU9zaXo9JWQpLgoAVXAgcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3kwPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChZT3Npej0lZCkuCgBSaWdodCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDE9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFhPc2l6PSVkKS4KAExlZnQgcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3gwPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChYT3Npej0lZCkuCgBTaXplIHggb2YgdGhlIGRlY29kZWQgY29tcG9uZW50IGltYWdlIGlzIGluY29ycmVjdCAoY29tcFslZF0udz0lZCkuCgBTaXplIHkgb2YgdGhlIGRlY29kZWQgY29tcG9uZW50IGltYWdlIGlzIGluY29ycmVjdCAoY29tcFslZF0uaD0lZCkuCgBUaWxlIHJlYWQsIGRlY29kZWQgYW5kIHVwZGF0ZWQgaXMgbm90IHRoZSBkZXNpcmVkIG9uZSAoJWQgdnMgJWQpLgoASW52YWxpZCBjb21wb25lbnQgaW5kZXggJWQgKD49ICVkKS4KAG9wal9yZWFkX2hlYWRlcigpIHNob3VsZCBiZSBjYWxsZWQgYmVmb3JlIG9wal9zZXRfZGVjb2RlZF9jb21wb25lbnRzKCkuCgBNZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlIGluIG9wal9qcDJfYXBwbHlfcGNscigpLgoAaW1hZ2UtPmNvbXBzWyVkXS5kYXRhID09IE5VTEwgaW4gb3BqX2pwMl9hcHBseV9wY2xyKCkuCgBpbnZhbGlkIGJveCBzaXplICVkICgleCkKAEZhaWwgdG8gcmVhZCB0aGUgY3VycmVudCBtYXJrZXIgc2VnbWVudCAoJSN4KQoARXJyb3Igd2l0aCBTSVogbWFya2VyOiBJSERSIHcoJXUpIGgoJXUpIHZzLiBTSVogdygldSkgaCgldSkKAEVycm9yIHJlYWRpbmcgQ09DIG1hcmtlciAoYmFkIG51bWJlciBvZiBjb21wb25lbnRzKQoASW52YWxpZCBudW1iZXIgb2YgdGlsZXMgOiAldSB4ICV1IChtYXhpbXVtIGZpeGVkIGJ5IGpwZWcyMDAwIG5vcm0gaXMgNjU1MzUgdGlsZXMpCgBJbnZhbGlkIG51bWJlciBvZiBjb21wb25lbnRzIChpaGRyKQoATm90IGVub3VnaCBtZW1vcnkgdG8gaGFuZGxlIGltYWdlIGhlYWRlciAoaWhkcikKAFdyb25nIHZhbHVlcyBmb3I6IHcoJWQpIGgoJWQpIG51bWNvbXBzKCVkKSAoaWhkcikKAEludmFsaWQgdmFsdWVzIGZvciBjb21wID0gJWQgOiBkeD0ldSBkeT0ldSAoc2hvdWxkIGJlIGJldHdlZW4gMSBhbmQgMjU1IGFjY29yZGluZyB0byB0aGUgSlBFRzIwMDAgbm9ybSkKAEJhZCBpbWFnZSBoZWFkZXIgYm94IChiYWQgc2l6ZSkKAEJhZCBDT0xSIGhlYWRlciBib3ggKGJhZCBzaXplKQoAQmFkIEJQQ0MgaGVhZGVyIGJveCAoYmFkIHNpemUpCgBFcnJvciB3aXRoIFNJWiBtYXJrZXI6IG5lZ2F0aXZlIG9yIHplcm8gaW1hZ2Ugc2l6ZSAoJWxsZCB4ICVsbGQpCgBza2lwOiBzZWdtZW50IHRvbyBsb25nICglZCkgd2l0aCBtYXggKCVkKSBmb3IgY29kZWJsb2NrICVkIChwPSVkLCBiPSVkLCByPSVkLCBjPSVkKQoAcmVhZDogc2VnbWVudCB0b28gbG9uZyAoJWQpIHdpdGggbWF4ICglZCkgZm9yIGNvZGVibG9jayAlZCAocD0lZCwgYj0lZCwgcj0lZCwgYz0lZCkKAERlc3BpdGUgSlAyIEJQQyE9MjU1LCBwcmVjaXNpb24gYW5kL29yIHNnbmQgdmFsdWVzIGZvciBjb21wWyVkXSBpcyBkaWZmZXJlbnQgdGhhbiBjb21wWzBdOgogICAgICAgIFswXSBwcmVjKCVkKSBzZ25kKCVkKSBbJWRdIHByZWMoJWQpIHNnbmQoJWQpCgBiYWQgY29tcG9uZW50IG51bWJlciBpbiBSR04gKCVkIHdoZW4gdGhlcmUgYXJlIG9ubHkgJWQpCgBFcnJvciB3aXRoIFNJWiBtYXJrZXI6IG51bWJlciBvZiBjb21wb25lbnQgaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGUgcmVtYWluaW5nIG51bWJlciBvZiBwYXJhbWV0ZXJzICggJWQgdnMgJWQpCgBFcnJvciB3aXRoIFNJWiBtYXJrZXI6IGludmFsaWQgdGlsZSBzaXplICh0ZHg6ICVkLCB0ZHk6ICVkKQoAQmFkIENPTFIgaGVhZGVyIGJveCAoYmFkIHNpemU6ICVkKQoAQmFkIENPTFIgaGVhZGVyIGJveCAoQ0lFTGFiLCBiYWQgc2l6ZTogJWQpCgBQVEVSTSBjaGVjayBmYWlsdXJlOiAlZCByZW1haW5pbmcgYnl0ZXMgaW4gY29kZSBibG9jayAoJWQgdXNlZCAvICVkKQoATWFsZm9ybWVkIEhUIGNvZGVibG9jay4gT25lIG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uIGlzIG5vdCBtZXQ6IDIgPD0gU2N1cCA8PSBtaW4oTGN1cCwgNDA3OSkKAEludmFsaWQgdmFsdWVzIGZvciBjb21wID0gJWQgOiBwcmVjPSV1IChzaG91bGQgYmUgYmV0d2VlbiAxIGFuZCAzOCBhY2NvcmRpbmcgdG8gdGhlIEpQRUcyMDAwIG5vcm0uIE9wZW5KcGVnIG9ubHkgc3VwcG9ydHMgdXAgdG8gMzEpCgBJbnZhbGlkIGJpdCBudW1iZXIgJWQgaW4gb3BqX3QyX3JlYWRfcGFja2V0X2hlYWRlcigpCgBTdHJlYW0gZXJyb3IhCgBFcnJvciBvbiB3cml0aW5nIHN0cmVhbSEKAFN0cmVhbSByZWFjaGVkIGl0cyBlbmQgIQoARXhwZWN0ZWQgYSBTT0MgbWFya2VyIAoASW52YWxpZCBib3ggc2l6ZSAlZCBmb3IgYm94ICclYyVjJWMlYycuIE5lZWQgJWQgYnl0ZXMsICVkIGJ5dGVzIHJlbWFpbmluZyAKAE1hbGZvcm1lZCBIVCBjb2RlYmxvY2suIERlY29kaW5nIHRoaXMgY29kZWJsb2NrIGlzIHN0b3BwZWQuIFVfcSBpcyBsYXJnZXIgdGhhbiB6ZXJvIGJpdHBsYW5lcyArIDEgCgBNYWxmb3JtZWQgSFQgY29kZWJsb2NrLiBEZWNvZGluZyB0aGlzIGNvZGVibG9jayBpcyBzdG9wcGVkLiBVX3EgaXNsYXJnZXIgdGhhbiBiaXRwbGFuZXMgKyAxIAoAQ09MUiBCT1ggbWV0aCB2YWx1ZSBpcyBub3QgYSByZWd1bGFyIHZhbHVlICglZCksIHNvIHdlIHdpbGwgaWdub3JlIHRoZSBlbnRpcmUgQ29sb3VyIFNwZWNpZmljYXRpb24gYm94LiAKAFdoaWxlIHJlYWRpbmcgQ0NQX1FOVFNUWSBlbGVtZW50IGluc2lkZSBRQ0Qgb3IgUUNDIG1hcmtlciBzZWdtZW50LCBudW1iZXIgb2Ygc3ViYmFuZHMgKCVkKSBpcyBncmVhdGVyIHRvIE9QSl9KMktfTUFYQkFORFMgKCVkKS4gU28gd2UgbGltaXQgdGhlIG51bWJlciBvZiBlbGVtZW50cyBzdG9yZWQgdG8gT1BKX0oyS19NQVhCQU5EUyAoJWQpIGFuZCBza2lwIHRoZSByZXN0LiAKAEpQMiBJSERSIGJveDogY29tcHJlc3Npb24gdHlwZSBpbmRpY2F0ZSB0aGF0IHRoZSBmaWxlIGlzIG5vdCBhIGNvbmZvcm1pbmcgSlAyIGZpbGUgKCVkKSAKAFRpbGUgaW5kZXggcHJvdmlkZWQgYnkgdGhlIHVzZXIgaXMgaW5jb3JyZWN0ICVkIChtYXggPSAlZCkgCgBFcnJvciBkZWNvZGluZyBjb21wb25lbnQgJWQuClRoZSBudW1iZXIgb2YgcmVzb2x1dGlvbnMgdG8gcmVtb3ZlICglZCkgaXMgZ3JlYXRlciBvciBlcXVhbCB0aGFuIHRoZSBudW1iZXIgb2YgcmVzb2x1dGlvbnMgb2YgdGhpcyBjb21wb25lbnQg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AAABVAAAAQAAABBQAADQUAAAAUgAAAAAAAAgUAAAwFAAAAFIAAABAAAAMFAAANBQAAABOAAAAAAAAEBQAADAUAAAATgAAAEAAABQUAAA0FAAAAEwAAAAAAAAYFAAACBRAAABMAAAAQAAAHBQAAAwUQAAASQAAAAAAACAUAAAQFEAAAEkAAABAAAAkFAAAFBRAAABHAAAAAAAAKBQAACAUQAAARwAAAEAAACwUAAAkFEAAAEWAAAAAAAAoFIAAKBRAAABFgAAAQAAALBSAACwUQAAAVYAAAAAAADgUAAA0FAAAAFWAAABAAAA8FAAAMBQAAABVAAAAAAAAABRAADAUAAAAVQAAAEAAAAQUQAA0FAAAAFRAAAAAAAAIFEAAOBQAAABUQAAAQAAADBRAADwUAAAAUgAAAAAAABAUQAAAFEAAAFIAAABAAAAUFEAABBRAAABOAAAAAAAAGBRAAAgUQAAATgAAAEAAABwUQAAMFEAAAE0AAAAAAAAgFEAAEBRAAABNAAAAQAAAJBRAABQUQAAATAAAAAAAACgUQAAYFEAAAEwAAABAAAAsFEAAHBRAAABKAAAAAAAAMBRAABgUQAAASgAAAEAAADQUQAAcFEAAAEkAAAAAAAA4FEAAIBRAAABJAAAAQAAAPBRAACQUQAAASIAAAAAAAAAUgAAoFEAAAEiAAABAAAAEFIAALBRAAABHAAAAAAAACBSAADAUQAAARwAAAEAAAAwUgAA0FEAAAEYAAAAAAAAQFIAAOBRAAABGAAAAQAAAFBSAADwUQAAARYAAAAAAABgUgAAAFIAAAEWAAABAAAAcFIAABBSAAABFAAAAAAAAIBSAAAgUgAAARQAAAEAAACQUgAAMFIAAAESAAAAAAAAoFIAAEBSAAABEgAAAQAAALBSAABQUgAAAREAAAAAAADAUgAAYFIAAAERAAABAAAA0FIAAHBSAADBCgAAAAAAAOBSAACAUgAAwQoAAAEAAADwUgAAkFIAAMEJAAAAAAAAAFMAAKBSAADBCQAAAQAAABBTAACwUgAAoQgAAAAAAAAgUwAAwFIAAKEIAAABAAAAMFMAANBSAAAhBQAAAAAAAEBTAADgUgAAIQUAAAEAAABQUwAA8FIAAEEEAAAAAAAAYFMAAABTAABBBAAAAQAAAHBTAAAQUwAAoQIAAAAAAACAUwAAIFMAAKECAAABAAAAkFMAADBTAAAhAgAAAAAAAKBTAABAUwAAIQIAAAEAAACwUwAAUFMAAEEBAAAAAAAAwFMAAGBTAABBAQAAAQAAANBTAABwUwAAEQEAAAAAAADgUwAAgFMAABEBAAABAAAA8FMAAJBTAACFAAAAAAAAAABUAACgUwAAhQAAAAEAAAAQVAAAsFMAAEkAAAAAAAAAIFQAAMBTAABJAAAAAQAAADBUAADQUwAAJQAAAAAAAABAVAAA4FMAACUAAAABAAAAUFQAAPBTAAAVAAAAAAAAAGBUAAAAVAAAFQAAAAEAAABwVAAAEFQAAAkAAAAAAAAAgFQAACBUAAAJAAAAAQAAAJBUAAAwVAAABQAAAAAAAACgVAAAQFQAAAUAAAABAAAAsFQAAFBUAAABAAAAAAAAAKBUAABgVAAAAQAAAAEAAACwVAAAcFQAAAFWAAAAAAAAwFQAAMBUAAABVgAAAQAAANBUAADQVAAAAAEDAwECAwMFBgcHBgYHBwABAwMBAgMDBQYHBwYGBwcFBgcHBgYHBwgICAgICAgIBQYHBwYGBwcICAgICAgICAECAwMCAgMDBgYHBwYGBwcBAgMDAgIDAwYGBwcGBgcHBgYHBwYGBwcICAgICAgICAYGBwcGBgcHCAgICAgICAgDAwQEAwMEBAcHBwcHBwcHAwMEBAMDBAQHBwcHBwcHBwcHBwcHBwcHCAgICAgICAgHBwcHBwcHBwgICAgICAgIAwMEBAMDBAQHBwcHBwcHBwMDBAQDAwQEBwcHBwcHBwcHBwcHBwcHBwgICAgICAgIBwcHBwcHBwcICAgICAgICAECAwMCAgMDBgYHBwYGBwcBAgMDAgIDAwYGBwcGBgcHBgYHBwYGBwcICAgICAgICAYGBwcGBgcHCAgICAgICAgCAgMDAgIDAwYGBwcGBgcHAgIDAwICAwMGBgcHBgYHBwYGBwcGBgcHCAgICAgICAgGBgcHBgYHBwgICAgICAgIAwMEBAMDBAQHBwcHBwcHBwMDBAQDAwQEBwcHBwcHBwcHBwcHBwcHBwgICAgICAgIBwcHBwcHBwcICAgICAgICAMDBAQDAwQEBwcHBwcHBwcDAwQEAwMEBAcHBwcHBwcHBwcHBwcHBwcICAgICAgICAcHBwcHBwcHCAgICAgICAgAAQUGAQIGBgMDBwcDAwcHAAEFBgECBgYDAwcHAwMHBwMDBwcDAwcHBAQHBwQEBwcDAwcHAwMHBwQEBwcEBAcHAQIGBgICBgYDAwcHAwMHBwECBgYCAgYGAwMHBwMDBwcDAwcHAwMHBwQEBwcEBAcHAwMHBwMDBwcEBAcHBAQHBwUGCAgGBggIBwcICAcHCAgFBggIBgYICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgGBggIBgYICAcHCAgHBwgIBgYICAYGCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIAQIGBgICBgYDAwcHAwMHBwECBgYCAgYGAwMHBwMDBwcDAwcHAwMHBwQEBwcEBAcHAwMHBwMDBwcEBAcHBAQHBwICBgYCAgYGAwMHBwMDBwcCAgYGAgIGBgMDBwcDAwcHAwMHBwMDBwcEBAcHBAQHBwMDBwcDAwcHBAQHBwQEBwcGBggIBgYICAcHCAgHBwgIBgYICAYGCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBgYICAYGCAgHBwgIBwcICAYGCAgGBggIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAABAwMBAgMDBQYHBwYGBwcAAQMDAQIDAwUGBwcGBgcHBQYHBwYGBwcICAgICAgICAUGBwcGBgcHCAgICAgICAgBAgMDAgIDAwYGBwcGBgcHAQIDAwICAwMGBgcHBgYHBwYGBwcGBgcHCAgICAgICAgGBgcHBgYHBwgICAgICAgIAwMEBAMDBAQHBwcHBwcHBwMDBAQDAwQEBwcHBwcHBwcHBwcHBwcHBwgICAgICAgIBwcHBwcHBwcICAgICAgICAMDBAQDAwQEBwcHBwcHBwcDAwQEAwMEBAcHBwcHBwcHBwcHBwcHBwcICAgICAgICAcHBwcHBwcHCAgICAgICAgBAgMDAgIDAwYGBwcGBgcHAQIDAwICAwMGBgcHBgYHBwYGBwcGBgcHCAgICAgICAgGBgcHBgYHBwgICAgICAgIAgIDAwICAwMGBgcHBgYHBwICAwMCAgMDBgYHBwYGBwcGBgcHBgYHBwgICAgICAgIBgYHBwYGBwcICAgICAgICAMDBAQDAwQEBwcHBwcHBwcDAwQEAwMEBAcHBwcHBwcHBwcHBwcHBwcICAgICAgICAcHBwcHBwcHCAgICAgICAgDAwQEAwMEBAcHBwcHBwcHAwMEBAMDBAQHBwcHBwcHBwcHBwcHBwcHCAgICAgICAgHBwcHBwcHBwgICAgICAgIAAMBBAMGBAcBBAIFBAcFBwADAQQDBgQHAQQCBQQHBQcBBAIFBAcFBwIFAgUFBwUHAQQCBQQHBQcCBQIFBQcFBwMGBAcGCAcIBAcFBwcIBwgDBgQHBggHCAQHBQcHCAcIBAcFBwcIBwgFBwUHBwgHCAQHBQcHCAcIBQcFBwcIBwgBBAIFBAcFBwIFAgUFBwUHAQQCBQQHBQcCBQIFBQcFBwIFAgUFBwUHAgUCBQUHBQcCBQIFBQcFBwIFAgUFBwUHBAcFBwcIBwgFBwUHBwgHCAQHBQcHCAcIBQcFBwcIBwgFBwUHBwgHCAUHBQcHCAcIBQcFBwcIBwgFBwUHBwgHCAMGBAcGCAcIBAcFBwcIBwgDBgQHBggHCAQHBQcHCAcIBAcFBwcIBwgFBwUHBwgHCAQHBQcHCAcIBQcFBwcIBwgGCAcICAgICAcIBwgICAgIBggHCAgICAgHCAcICAgICAcIBwgICAgIBwgHCAgICAgHCAcICAgICAcIBwgICAgIBAcFBwcIBwgFBwUHBwgHCAQHBQcHCAcIBQcFBwcIBwgFBwUHBwgHCAUHBQcHCAcIBQcFBwcIBwgFBwUHBwgHCAcIBwgICAgIBwgHCAgICAgHCAcICAgICAcIBwgICAgIBwgHCAgICAgHCAcICAgICAcIBwgICAgIBwgHCAgICAgJCQoKCQkKCgwMDQsMDA0LCQkKCgkJCgoMDAsNDAwLDQwMDQ0MDAsLDAkNCgkMCgsMDAsLDAwNDQwJCwoJDAoNCQkKCgkJCgoMDA0LDAwNCwkJCgoJCQoKDAwLDQwMCw0MDA0NDAwLCwwJDQoJDAoLDAwLCwwMDQ0MCQsKCQwKDQoKCgoKCgoKDQsNCw0LDQsKCgkJCgoJCQ0LDAwNCwwMDQ0NDQsLCwsNCg0KCgsKCw0NDAwLCwwMDQoMCQoLCQwKCgkJCgoJCQsNDAwLDQwMCgoKCgoKCgoLDQsNCw0LDQsLDAwNDQwMCwoMCQoNCQwLCwsLDQ0NDQsKCwoKDQoNAEHpuwELNwEAAQABAAEAAAEBAAABAQABAAEAAQABAAAAAAEBAQEAAAAAAAEAAQAAAAABAQEBAAAAAQABAQEAQam8AQs3AQABAAEAAQAAAQEAAAEBAAEAAQABAAEAAAAAAQEBAQAAAAAAAQABAAAAAAEBAQEAAAABAAEBAQBB6bwBCwcBAAEAAQABAEH5vAELlQIBAAEAAQABAAAAAAEBAQEAAAAAAAEAAQAAAAABAQEBAAAAAAABAAEBAQAAAQEAAAABAAEAAQABAQEBAQEBAQEAAQABAAEAAQAAAAABAQEBAAEAAAEBAAEAAAAAAQEBAQABAAEBAQEBAgAAAAQAAAAEAAAACAAAAJD/AAAMAAAAGAAAAFL/AAAUAAAAGQAAAFP/AAAUAAAAGgAAAF7/AAAUAAAAGwAAAFz/AAAUAAAAHAAAAF3/AAAUAAAAHQAAAF//AAAUAAAAHgAAAFH/AAACAAAAHwAAAFX/AAAEAAAAIAAAAFf/AAAEAAAAIQAAAFj/AAAQAAAAIgAAAGD/AAAEAAAAIwAAAGH/AAAQAAAAJAAAAJH/AEGYvwELZWP/AAAEAAAAJQAAAGT/AAAUAAAAJgAAAHT/AAAUAAAAJwAAAHj/AAAEAAAAKAAAAFD/AAAEAAAAKQAAAFn/AAAEAAAAKgAAAHX/AAAUAAAAKwAAAHf/AAAUAAAALAAAAAAAAAAUAEGQwAELNS0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAAICBQajYAAABweXRmNwAAAGgycGo4AEHQwAELMnJkaGk5AAAAcmxvYzoAAABjY3BiOwAAAHJsY3A8AAAAcGFtYz0AAABmZWRjPgAAAHhiAEGQwQELQRkACwAZGRkAAAAABQAAAAAAAAkAAAAACwAAAAAAAAAAGQAKChkZGQMKBwABAAkLGAAACQYLAAALAAYZAAAAGRkZAEHhwQELIQ4AAAAAAAAAABkACw0ZGRkADQAAAgAJDgAAAAkADgAADgBBm8IBCwEMAEGnwgELFRMAAAAAEwAAAAAJDAAAAAAADAAADABB1cIBCwEQAEHhwgELFQ8AAAAEDwAAAAAJEAAAAAAAEAAAEABBj8MBCwESAEGbwwELHhEAAAAAEQAAAAAJEgAAAAAAEgAAEgAAGgAAABoaGgBB0sMBCw4aAAAAGhoaAAAAAAAACQBBg8QBCwEUAEGPxAELFRcAAAAAFwAAAAAJFAAAAAAAFAAAFABBvcQBCwEWAEHJxAELJxUAAAAAFQAAAAAJFgAAAAAAFgAAFgAAMDEyMzQ1Njc4OUFCQ0RFRgBB8cQBCwhsAQAAAAAABQBBhMUBCwFpAEGcxQELDmoAAABrAAAA+GcAAAAEAEG0xQELAQEAQcTFAQsF/////wo="); + return receiveInstance(instantiateSync(u, e)[0]); + })(); + G.j, + (a._malloc = G.k), + (a._free = G.l), + (a._jp2_decode = G.n), + G._emscripten_stack_restore, + G._emscripten_stack_alloc, + G.emscripten_stack_get_current; + w = function runCaller() { + D || run(); + D || (w = runCaller); + }; + function run() { + if (!(m > 0)) { + !(function preRun() { + if (a.preRun) { + "function" == typeof a.preRun && (a.preRun = [a.preRun]); + for (; a.preRun.length; ) (e = a.preRun.shift()), d.unshift(e); + } + var e; + callRuntimeCallbacks(d); + })(); + if (!(m > 0)) + if (a.setStatus) { + a.setStatus("Running..."); + setTimeout(function () { + setTimeout(function () { + a.setStatus(""); + }, 1); + doRun(); + }, 1); + } else doRun(); + } + function doRun() { + if (!D) { + D = !0; + a.calledRun = !0; + !(function initRuntime() { + callRuntimeCallbacks(f); + })(); + t(a); + a.onRuntimeInitialized && a.onRuntimeInitialized(); + !(function postRun() { + if (a.postRun) { + "function" == typeof a.postRun && (a.postRun = [a.postRun]); + for (; a.postRun.length; ) + (e = a.postRun.shift()), p.unshift(e); + } + var e; + callRuntimeCallbacks(p); + })(); + } + } + } + if (a.preInit) { + "function" == typeof a.preInit && (a.preInit = [a.preInit]); + for (; a.preInit.length > 0; ) a.preInit.pop()(); + } + run(); + return a; + }); +const Ii = gi; +class JpxError extends rt { + constructor(e) { + super(e, "JpxError"); + } +} +class JpxImage { + static #y = null; + static decode(e, t = !1) { + this.#y ||= Ii({ warn }); + const i = this.#y.decode(e, t); + if ("string" == typeof i) throw new JpxError(i); + return i; + } + static cleanup() { + this.#y = null; + } + static parseImageProperties(e) { + let t = e.getByte(); + for (; t >= 0; ) { + const i = t; + t = e.getByte(); + if (65361 === ((i << 8) | t)) { + e.skip(4); + const t = e.getInt32() >>> 0, + i = e.getInt32() >>> 0, + a = e.getInt32() >>> 0, + s = e.getInt32() >>> 0; + e.skip(16); + return { + width: t - a, + height: i - s, + bitsPerComponent: 8, + componentsCount: e.getUint16(), + }; + } + } + throw new JpxError("No size marker found in JPX stream"); + } +} +class JpxStream extends DecodeStream { + constructor(e, t, i) { + super(t); + this.stream = e; + this.dict = e.dict; + this.maybeLength = t; + this.params = i; + } + get bytes() { + return shadow(this, "bytes", this.stream.getBytes(this.maybeLength)); + } + ensureBuffer(e) {} + readBlock(e) { + if (!this.eof) { + this.buffer = JpxImage.decode(this.bytes, e); + this.bufferLength = this.buffer.length; + this.eof = !0; + } + } +} +class LZWStream extends DecodeStream { + constructor(e, t, i) { + super(t); + this.str = e; + this.dict = e.dict; + this.cachedData = 0; + this.bitsCached = 0; + const a = 4096, + s = { + earlyChange: i, + codeLength: 9, + nextCode: 258, + dictionaryValues: new Uint8Array(a), + dictionaryLengths: new Uint16Array(a), + dictionaryPrevCodes: new Uint16Array(a), + currentSequence: new Uint8Array(a), + currentSequenceLength: 0, + }; + for (let e = 0; e < 256; ++e) { + s.dictionaryValues[e] = e; + s.dictionaryLengths[e] = 1; + } + this.lzwState = s; + } + readBits(e) { + let t = this.bitsCached, + i = this.cachedData; + for (; t < e; ) { + const e = this.str.getByte(); + if (-1 === e) { + this.eof = !0; + return null; + } + i = (i << 8) | e; + t += 8; + } + this.bitsCached = t -= e; + this.cachedData = i; + this.lastCode = null; + return (i >>> t) & ((1 << e) - 1); + } + readBlock() { + let e, + t, + i, + a = 1024; + const s = this.lzwState; + if (!s) return; + const r = s.earlyChange; + let n = s.nextCode; + const o = s.dictionaryValues, + g = s.dictionaryLengths, + c = s.dictionaryPrevCodes; + let h = s.codeLength, + l = s.prevCode; + const C = s.currentSequence; + let Q = s.currentSequenceLength, + E = 0, + u = this.bufferLength, + d = this.ensureBuffer(this.bufferLength + a); + for (e = 0; e < 512; e++) { + const e = this.readBits(h), + s = Q > 0; + if (e < 256) { + C[0] = e; + Q = 1; + } else { + if (!(e >= 258)) { + if (256 === e) { + h = 9; + n = 258; + Q = 0; + continue; + } + this.eof = !0; + delete this.lzwState; + break; + } + if (e < n) { + Q = g[e]; + for (t = Q - 1, i = e; t >= 0; t--) { + C[t] = o[i]; + i = c[i]; + } + } else C[Q++] = C[0]; + } + if (s) { + c[n] = l; + g[n] = g[l] + 1; + o[n] = C[0]; + n++; + h = + (n + r) & (n + r - 1) + ? h + : 0 | Math.min(Math.log(n + r) / 0.6931471805599453 + 1, 12); + } + l = e; + E += Q; + if (a < E) { + do { + a += 512; + } while (a < E); + d = this.ensureBuffer(this.bufferLength + a); + } + for (t = 0; t < Q; t++) d[u++] = C[t]; + } + s.nextCode = n; + s.codeLength = h; + s.prevCode = l; + s.currentSequenceLength = Q; + this.bufferLength = u; + } +} +class PredictorStream extends DecodeStream { + constructor(e, t, i) { + super(t); + if (!(i instanceof Dict)) return e; + const a = (this.predictor = i.get("Predictor") || 1); + if (a <= 1) return e; + if (2 !== a && (a < 10 || a > 15)) + throw new FormatError(`Unsupported predictor: ${a}`); + this.readBlock = 2 === a ? this.readBlockTiff : this.readBlockPng; + this.str = e; + this.dict = e.dict; + const s = (this.colors = i.get("Colors") || 1), + r = (this.bits = i.get("BPC", "BitsPerComponent") || 8), + n = (this.columns = i.get("Columns") || 1); + this.pixBytes = (s * r + 7) >> 3; + this.rowBytes = (n * s * r + 7) >> 3; + return this; + } + readBlockTiff() { + const e = this.rowBytes, + t = this.bufferLength, + i = this.ensureBuffer(t + e), + a = this.bits, + s = this.colors, + r = this.str.getBytes(e); + this.eof = !r.length; + if (this.eof) return; + let n, + o = 0, + g = 0, + c = 0, + h = 0, + l = t; + if (1 === a && 1 === s) + for (n = 0; n < e; ++n) { + let e = r[n] ^ o; + e ^= e >> 1; + e ^= e >> 2; + e ^= e >> 4; + o = (1 & e) << 7; + i[l++] = e; + } + else if (8 === a) { + for (n = 0; n < s; ++n) i[l++] = r[n]; + for (; n < e; ++n) { + i[l] = i[l - s] + r[n]; + l++; + } + } else if (16 === a) { + const t = 2 * s; + for (n = 0; n < t; ++n) i[l++] = r[n]; + for (; n < e; n += 2) { + const e = + ((255 & r[n]) << 8) + + (255 & r[n + 1]) + + ((255 & i[l - t]) << 8) + + (255 & i[l - t + 1]); + i[l++] = (e >> 8) & 255; + i[l++] = 255 & e; + } + } else { + const e = new Uint8Array(s + 1), + l = (1 << a) - 1; + let C = 0, + Q = t; + const E = this.columns; + for (n = 0; n < E; ++n) + for (let t = 0; t < s; ++t) { + if (c < a) { + o = (o << 8) | (255 & r[C++]); + c += 8; + } + e[t] = (e[t] + (o >> (c - a))) & l; + c -= a; + g = (g << a) | e[t]; + h += a; + if (h >= 8) { + i[Q++] = (g >> (h - 8)) & 255; + h -= 8; + } + } + h > 0 && (i[Q++] = (g << (8 - h)) + (o & ((1 << (8 - h)) - 1))); + } + this.bufferLength += e; + } + readBlockPng() { + const e = this.rowBytes, + t = this.pixBytes, + i = this.str.getByte(), + a = this.str.getBytes(e); + this.eof = !a.length; + if (this.eof) return; + const s = this.bufferLength, + r = this.ensureBuffer(s + e); + let n = r.subarray(s - e, s); + 0 === n.length && (n = new Uint8Array(e)); + let o, + g, + c, + h = s; + switch (i) { + case 0: + for (o = 0; o < e; ++o) r[h++] = a[o]; + break; + case 1: + for (o = 0; o < t; ++o) r[h++] = a[o]; + for (; o < e; ++o) { + r[h] = (r[h - t] + a[o]) & 255; + h++; + } + break; + case 2: + for (o = 0; o < e; ++o) r[h++] = (n[o] + a[o]) & 255; + break; + case 3: + for (o = 0; o < t; ++o) r[h++] = (n[o] >> 1) + a[o]; + for (; o < e; ++o) { + r[h] = (((n[o] + r[h - t]) >> 1) + a[o]) & 255; + h++; + } + break; + case 4: + for (o = 0; o < t; ++o) { + g = n[o]; + c = a[o]; + r[h++] = g + c; + } + for (; o < e; ++o) { + g = n[o]; + const e = n[o - t], + i = r[h - t], + s = i + g - e; + let l = s - i; + l < 0 && (l = -l); + let C = s - g; + C < 0 && (C = -C); + let Q = s - e; + Q < 0 && (Q = -Q); + c = a[o]; + r[h++] = l <= C && l <= Q ? i + c : C <= Q ? g + c : e + c; + } + break; + default: + throw new FormatError(`Unsupported predictor: ${i}`); + } + this.bufferLength += e; + } +} +class RunLengthStream extends DecodeStream { + constructor(e, t) { + super(t); + this.str = e; + this.dict = e.dict; + } + readBlock() { + const e = this.str.getBytes(2); + if (!e || e.length < 2 || 128 === e[0]) { + this.eof = !0; + return; + } + let t, + i = this.bufferLength, + a = e[0]; + if (a < 128) { + t = this.ensureBuffer(i + a + 1); + t[i++] = e[1]; + if (a > 0) { + const e = this.str.getBytes(a); + t.set(e, i); + i += a; + } + } else { + a = 257 - a; + const s = e[1]; + t = this.ensureBuffer(i + a + 1); + for (let e = 0; e < a; e++) t[i++] = s; + } + this.bufferLength = i; + } +} +class Parser { + constructor({ + lexer: e, + xref: t, + allowStreams: i = !1, + recoveryMode: a = !1, + }) { + this.lexer = e; + this.xref = t; + this.allowStreams = i; + this.recoveryMode = a; + this.imageCache = Object.create(null); + this._imageId = 0; + this.refill(); + } + refill() { + this.buf1 = this.lexer.getObj(); + this.buf2 = this.lexer.getObj(); + } + shift() { + if (this.buf2 instanceof Cmd && "ID" === this.buf2.cmd) { + this.buf1 = this.buf2; + this.buf2 = null; + } else { + this.buf1 = this.buf2; + this.buf2 = this.lexer.getObj(); + } + } + tryShift() { + try { + this.shift(); + return !0; + } catch (e) { + if (e instanceof MissingDataException) throw e; + return !1; + } + } + getObj(e = null) { + const t = this.buf1; + this.shift(); + if (t instanceof Cmd) + switch (t.cmd) { + case "BI": + return this.makeInlineImage(e); + case "[": + const i = []; + for (; !isCmd(this.buf1, "]") && this.buf1 !== pt; ) + i.push(this.getObj(e)); + if (this.buf1 === pt) { + if (this.recoveryMode) return i; + throw new ParserEOFException("End of file inside array."); + } + this.shift(); + return i; + case "<<": + const a = new Dict(this.xref); + for (; !isCmd(this.buf1, ">>") && this.buf1 !== pt; ) { + if (!(this.buf1 instanceof Name)) { + info("Malformed dictionary: key must be a name object"); + this.shift(); + continue; + } + const t = this.buf1.name; + this.shift(); + if (this.buf1 === pt) break; + a.set(t, this.getObj(e)); + } + if (this.buf1 === pt) { + if (this.recoveryMode) return a; + throw new ParserEOFException("End of file inside dictionary."); + } + if (isCmd(this.buf2, "stream")) + return this.allowStreams ? this.makeStream(a, e) : a; + this.shift(); + return a; + default: + return t; + } + if (Number.isInteger(t)) { + if (Number.isInteger(this.buf1) && isCmd(this.buf2, "R")) { + const e = Ref.get(t, this.buf1); + this.shift(); + this.shift(); + return e; + } + return t; + } + return "string" == typeof t && e ? e.decryptString(t) : t; + } + findDefaultInlineStreamEnd(e) { + const { knownCommands: t } = this.lexer, + i = e.pos; + let a, + s, + r = 0; + for (; -1 !== (a = e.getByte()); ) + if (0 === r) r = 69 === a ? 1 : 0; + else if (1 === r) r = 73 === a ? 2 : 0; + else if (32 === a || 10 === a || 13 === a) { + s = e.pos; + const i = e.peekBytes(15), + n = i.length; + if (0 === n) break; + for (let e = 0; e < n; e++) { + a = i[e]; + if ( + (0 !== a || 0 === i[e + 1]) && + 10 !== a && + 13 !== a && + (a < 32 || a > 127) + ) { + r = 0; + break; + } + } + if (2 !== r) continue; + if (!t) { + warn( + "findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined.", + ); + continue; + } + const o = new Lexer(new Stream(i.slice()), t); + o._hexStringWarn = () => {}; + let g = 0; + for (;;) { + const e = o.getObj(); + if (e === pt) { + r = 0; + break; + } + if (e instanceof Cmd) { + const i = t[e.cmd]; + if (!i) { + r = 0; + break; + } + if (i.variableArgs ? g <= i.numArgs : g === i.numArgs) break; + g = 0; + } else g++; + } + if (2 === r) break; + } else r = 0; + if (-1 === a) { + warn( + "findDefaultInlineStreamEnd: Reached the end of the stream without finding a valid EI marker", + ); + if (s) { + warn('... trying to recover by using the last "EI" occurrence.'); + e.skip(-(e.pos - s)); + } + } + let n = 4; + e.skip(-n); + a = e.peekByte(); + e.skip(n); + isWhiteSpace(a) || n--; + return e.pos - n - i; + } + findDCTDecodeInlineStreamEnd(e) { + const t = e.pos; + let i, + a, + s = !1; + for (; -1 !== (i = e.getByte()); ) + if (255 === i) { + switch (e.getByte()) { + case 0: + break; + case 255: + e.skip(-1); + break; + case 217: + s = !0; + break; + case 192: + case 193: + case 194: + case 195: + case 197: + case 198: + case 199: + case 201: + case 202: + case 203: + case 205: + case 206: + case 207: + case 196: + case 204: + case 218: + case 219: + case 220: + case 221: + case 222: + case 223: + case 224: + case 225: + case 226: + case 227: + case 228: + case 229: + case 230: + case 231: + case 232: + case 233: + case 234: + case 235: + case 236: + case 237: + case 238: + case 239: + case 254: + a = e.getUint16(); + a > 2 ? e.skip(a - 2) : e.skip(-2); + } + if (s) break; + } + const r = e.pos - t; + if (-1 === i) { + warn( + "Inline DCTDecode image stream: EOI marker not found, searching for /EI/ instead.", + ); + e.skip(-r); + return this.findDefaultInlineStreamEnd(e); + } + this.inlineStreamSkipEI(e); + return r; + } + findASCII85DecodeInlineStreamEnd(e) { + const t = e.pos; + let i; + for (; -1 !== (i = e.getByte()); ) + if (126 === i) { + const t = e.pos; + i = e.peekByte(); + for (; isWhiteSpace(i); ) { + e.skip(); + i = e.peekByte(); + } + if (62 === i) { + e.skip(); + break; + } + if (e.pos > t) { + const t = e.peekBytes(2); + if (69 === t[0] && 73 === t[1]) break; + } + } + const a = e.pos - t; + if (-1 === i) { + warn( + "Inline ASCII85Decode image stream: EOD marker not found, searching for /EI/ instead.", + ); + e.skip(-a); + return this.findDefaultInlineStreamEnd(e); + } + this.inlineStreamSkipEI(e); + return a; + } + findASCIIHexDecodeInlineStreamEnd(e) { + const t = e.pos; + let i; + for (; -1 !== (i = e.getByte()) && 62 !== i; ); + const a = e.pos - t; + if (-1 === i) { + warn( + "Inline ASCIIHexDecode image stream: EOD marker not found, searching for /EI/ instead.", + ); + e.skip(-a); + return this.findDefaultInlineStreamEnd(e); + } + this.inlineStreamSkipEI(e); + return a; + } + inlineStreamSkipEI(e) { + let t, + i = 0; + for (; -1 !== (t = e.getByte()); ) + if (0 === i) i = 69 === t ? 1 : 0; + else if (1 === i) i = 73 === t ? 2 : 0; + else if (2 === i) break; + } + makeInlineImage(e) { + const t = this.lexer, + i = t.stream, + a = Object.create(null); + let s; + for (; !isCmd(this.buf1, "ID") && this.buf1 !== pt; ) { + if (!(this.buf1 instanceof Name)) + throw new FormatError("Dictionary key must be a name object"); + const t = this.buf1.name; + this.shift(); + if (this.buf1 === pt) break; + a[t] = this.getObj(e); + } + -1 !== t.beginInlineImagePos && (s = i.pos - t.beginInlineImagePos); + const r = this.xref.fetchIfRef(a.F || a.Filter); + let n; + if (r instanceof Name) n = r.name; + else if (Array.isArray(r)) { + const e = this.xref.fetchIfRef(r[0]); + e instanceof Name && (n = e.name); + } + const o = i.pos; + let g, c; + switch (n) { + case "DCT": + case "DCTDecode": + g = this.findDCTDecodeInlineStreamEnd(i); + break; + case "A85": + case "ASCII85Decode": + g = this.findASCII85DecodeInlineStreamEnd(i); + break; + case "AHx": + case "ASCIIHexDecode": + g = this.findASCIIHexDecodeInlineStreamEnd(i); + break; + default: + g = this.findDefaultInlineStreamEnd(i); + } + if (g < 1e3 && s > 0) { + const e = i.pos; + i.pos = t.beginInlineImagePos; + c = (function getInlineImageCacheKey(e) { + const t = [], + i = e.length; + let a = 0; + for (; a < i - 1; ) t.push((e[a++] << 8) | e[a++]); + a < i && t.push(e[a]); + return i + "_" + String.fromCharCode.apply(null, t); + })(i.getBytes(s + g)); + i.pos = e; + const a = this.imageCache[c]; + if (void 0 !== a) { + this.buf2 = Cmd.get("EI"); + this.shift(); + a.reset(); + return a; + } + } + const h = new Dict(this.xref); + for (const e in a) h.set(e, a[e]); + let l = i.makeSubStream(o, g, h); + e && (l = e.createStream(l, g)); + l = this.filter(l, h, g); + l.dict = h; + if (void 0 !== c) { + l.cacheKey = "inline_img_" + ++this._imageId; + this.imageCache[c] = l; + } + this.buf2 = Cmd.get("EI"); + this.shift(); + return l; + } + #w(e) { + const { stream: t } = this.lexer; + t.pos = e; + const i = new Uint8Array([101, 110, 100]), + a = i.length, + s = [ + new Uint8Array([115, 116, 114, 101, 97, 109]), + new Uint8Array([115, 116, 101, 97, 109]), + new Uint8Array([115, 116, 114, 101, 97]), + ], + r = 9 - a; + for (; t.pos < t.end; ) { + const n = t.peekBytes(2048), + o = n.length - 9; + if (o <= 0) break; + let g = 0; + for (; g < o; ) { + let o = 0; + for (; o < a && n[g + o] === i[o]; ) o++; + if (o >= a) { + let a = !1; + for (const e of s) { + const t = e.length; + let s = 0; + for (; s < t && n[g + o + s] === e[s]; ) s++; + if (s >= r) { + a = !0; + break; + } + if (s >= t) { + if (isWhiteSpace(n[g + o + s])) { + info( + `Found "${bytesToString([...i, ...e])}" when searching for endstream command.`, + ); + a = !0; + } + break; + } + } + if (a) { + t.pos += g; + return t.pos - e; + } + } + g++; + } + t.pos += o; + } + return -1; + } + makeStream(e, t) { + const i = this.lexer; + let a = i.stream; + i.skipToNextLine(); + const s = a.pos - 1; + let r = e.get("Length"); + if (!Number.isInteger(r)) { + info(`Bad length "${r && r.toString()}" in stream.`); + r = 0; + } + a.pos = s + r; + i.nextChar(); + if (this.tryShift() && isCmd(this.buf2, "endstream")) this.shift(); + else { + r = this.#w(s); + if (r < 0) throw new FormatError("Missing endstream command."); + i.nextChar(); + this.shift(); + this.shift(); + } + this.shift(); + a = a.makeSubStream(s, r, e); + t && (a = t.createStream(a, r)); + a = this.filter(a, e, r); + a.dict = e; + return a; + } + filter(e, t, i) { + let a = t.get("F", "Filter"), + s = t.get("DP", "DecodeParms"); + if (a instanceof Name) { + Array.isArray(s) && + warn("/DecodeParms should not be an Array, when /Filter is a Name."); + return this.makeFilter(e, a.name, i, s); + } + let r = i; + if (Array.isArray(a)) { + const t = a, + i = s; + for (let n = 0, o = t.length; n < o; ++n) { + a = this.xref.fetchIfRef(t[n]); + if (!(a instanceof Name)) + throw new FormatError(`Bad filter name "${a}"`); + s = null; + Array.isArray(i) && n in i && (s = this.xref.fetchIfRef(i[n])); + e = this.makeFilter(e, a.name, r, s); + r = null; + } + } + return e; + } + makeFilter(e, t, i, a) { + if (0 === i) { + warn(`Empty "${t}" stream.`); + return new NullStream(); + } + try { + switch (t) { + case "Fl": + case "FlateDecode": + return a + ? new PredictorStream(new FlateStream(e, i), i, a) + : new FlateStream(e, i); + case "LZW": + case "LZWDecode": + let t = 1; + if (a) { + a.has("EarlyChange") && (t = a.get("EarlyChange")); + return new PredictorStream(new LZWStream(e, i, t), i, a); + } + return new LZWStream(e, i, t); + case "DCT": + case "DCTDecode": + return new JpegStream(e, i, a); + case "JPX": + case "JPXDecode": + return new JpxStream(e, i, a); + case "A85": + case "ASCII85Decode": + return new Ascii85Stream(e, i); + case "AHx": + case "ASCIIHexDecode": + return new AsciiHexStream(e, i); + case "CCF": + case "CCITTFaxDecode": + return new CCITTFaxStream(e, i, a); + case "RL": + case "RunLengthDecode": + return new RunLengthStream(e, i); + case "JBIG2Decode": + return new Jbig2Stream(e, i, a); + } + warn(`Filter "${t}" is not supported.`); + return e; + } catch (e) { + if (e instanceof MissingDataException) throw e; + warn(`Invalid stream: "${e}"`); + return new NullStream(); + } + } +} +const ci = [ + 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +]; +function toHexDigit(e) { + return e >= 48 && e <= 57 + ? 15 & e + : (e >= 65 && e <= 70) || (e >= 97 && e <= 102) + ? 9 + (15 & e) + : -1; +} +class Lexer { + constructor(e, t = null) { + this.stream = e; + this.nextChar(); + this.strBuf = []; + this.knownCommands = t; + this._hexStringNumWarn = 0; + this.beginInlineImagePos = -1; + } + nextChar() { + return (this.currentChar = this.stream.getByte()); + } + peekChar() { + return this.stream.peekByte(); + } + getNumber() { + let e = this.currentChar, + t = !1, + i = 0, + a = 1; + if (45 === e) { + a = -1; + e = this.nextChar(); + 45 === e && (e = this.nextChar()); + } else 43 === e && (e = this.nextChar()); + if (10 === e || 13 === e) + do { + e = this.nextChar(); + } while (10 === e || 13 === e); + if (46 === e) { + i = 10; + e = this.nextChar(); + } + if (e < 48 || e > 57) { + const t = `Invalid number: ${String.fromCharCode(e)} (charCode ${e})`; + if (isWhiteSpace(e) || -1 === e) { + info(`Lexer.getNumber - "${t}".`); + return 0; + } + throw new FormatError(t); + } + let s = e - 48, + r = 0, + n = 1; + for (; (e = this.nextChar()) >= 0; ) + if (e >= 48 && e <= 57) { + const a = e - 48; + if (t) r = 10 * r + a; + else { + 0 !== i && (i *= 10); + s = 10 * s + a; + } + } else if (46 === e) { + if (0 !== i) break; + i = 1; + } else if (45 === e) + warn("Badly formatted number: minus sign in the middle"); + else { + if (69 !== e && 101 !== e) break; + e = this.peekChar(); + if (43 === e || 45 === e) { + n = 45 === e ? -1 : 1; + this.nextChar(); + } else if (e < 48 || e > 57) break; + t = !0; + } + 0 !== i && (s /= i); + t && (s *= 10 ** (n * r)); + return a * s; + } + getString() { + let e = 1, + t = !1; + const i = this.strBuf; + i.length = 0; + let a = this.nextChar(); + for (;;) { + let s = !1; + switch (0 | a) { + case -1: + warn("Unterminated string"); + t = !0; + break; + case 40: + ++e; + i.push("("); + break; + case 41: + if (0 == --e) { + this.nextChar(); + t = !0; + } else i.push(")"); + break; + case 92: + a = this.nextChar(); + switch (a) { + case -1: + warn("Unterminated string"); + t = !0; + break; + case 110: + i.push("\n"); + break; + case 114: + i.push("\r"); + break; + case 116: + i.push("\t"); + break; + case 98: + i.push("\b"); + break; + case 102: + i.push("\f"); + break; + case 92: + case 40: + case 41: + i.push(String.fromCharCode(a)); + break; + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + let e = 15 & a; + a = this.nextChar(); + s = !0; + if (a >= 48 && a <= 55) { + e = (e << 3) + (15 & a); + a = this.nextChar(); + if (a >= 48 && a <= 55) { + s = !1; + e = (e << 3) + (15 & a); + } + } + i.push(String.fromCharCode(e)); + break; + case 13: + 10 === this.peekChar() && this.nextChar(); + break; + case 10: + break; + default: + i.push(String.fromCharCode(a)); + } + break; + default: + i.push(String.fromCharCode(a)); + } + if (t) break; + s || (a = this.nextChar()); + } + return i.join(""); + } + getName() { + let e, t; + const i = this.strBuf; + i.length = 0; + for (; (e = this.nextChar()) >= 0 && !ci[e]; ) + if (35 === e) { + e = this.nextChar(); + if (ci[e]) { + warn( + "Lexer_getName: NUMBER SIGN (#) should be followed by a hexadecimal number.", + ); + i.push("#"); + break; + } + const a = toHexDigit(e); + if (-1 !== a) { + t = e; + e = this.nextChar(); + const s = toHexDigit(e); + if (-1 === s) { + warn( + `Lexer_getName: Illegal digit (${String.fromCharCode(e)}) in hexadecimal number.`, + ); + i.push("#", String.fromCharCode(t)); + if (ci[e]) break; + i.push(String.fromCharCode(e)); + continue; + } + i.push(String.fromCharCode((a << 4) | s)); + } else i.push("#", String.fromCharCode(e)); + } else i.push(String.fromCharCode(e)); + i.length > 127 && + warn(`Name token is longer than allowed by the spec: ${i.length}`); + return Name.get(i.join("")); + } + _hexStringWarn(e) { + 5 != this._hexStringNumWarn++ + ? this._hexStringNumWarn > 5 || + warn(`getHexString - ignoring invalid character: ${e}`) + : warn("getHexString - ignoring additional invalid characters."); + } + getHexString() { + const e = this.strBuf; + e.length = 0; + let t, + i, + a = this.currentChar, + s = !0; + this._hexStringNumWarn = 0; + for (;;) { + if (a < 0) { + warn("Unterminated hex string"); + break; + } + if (62 === a) { + this.nextChar(); + break; + } + if (1 !== ci[a]) { + if (s) { + t = toHexDigit(a); + if (-1 === t) { + this._hexStringWarn(a); + a = this.nextChar(); + continue; + } + } else { + i = toHexDigit(a); + if (-1 === i) { + this._hexStringWarn(a); + a = this.nextChar(); + continue; + } + e.push(String.fromCharCode((t << 4) | i)); + } + s = !s; + a = this.nextChar(); + } else a = this.nextChar(); + } + return e.join(""); + } + getObj() { + let e = !1, + t = this.currentChar; + for (;;) { + if (t < 0) return pt; + if (e) (10 !== t && 13 !== t) || (e = !1); + else if (37 === t) e = !0; + else if (1 !== ci[t]) break; + t = this.nextChar(); + } + switch (0 | t) { + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + case 43: + case 45: + case 46: + return this.getNumber(); + case 40: + return this.getString(); + case 47: + return this.getName(); + case 91: + this.nextChar(); + return Cmd.get("["); + case 93: + this.nextChar(); + return Cmd.get("]"); + case 60: + t = this.nextChar(); + if (60 === t) { + this.nextChar(); + return Cmd.get("<<"); + } + return this.getHexString(); + case 62: + t = this.nextChar(); + if (62 === t) { + this.nextChar(); + return Cmd.get(">>"); + } + return Cmd.get(">"); + case 123: + this.nextChar(); + return Cmd.get("{"); + case 125: + this.nextChar(); + return Cmd.get("}"); + case 41: + this.nextChar(); + throw new FormatError(`Illegal character: ${t}`); + } + let i = String.fromCharCode(t); + if (t < 32 || t > 127) { + const e = this.peekChar(); + if (e >= 32 && e <= 127) { + this.nextChar(); + return Cmd.get(i); + } + } + const a = this.knownCommands; + let s = void 0 !== a?.[i]; + for (; (t = this.nextChar()) >= 0 && !ci[t]; ) { + const e = i + String.fromCharCode(t); + if (s && void 0 === a[e]) break; + if (128 === i.length) + throw new FormatError(`Command token too long: ${i.length}`); + i = e; + s = void 0 !== a?.[i]; + } + if ("true" === i) return !0; + if ("false" === i) return !1; + if ("null" === i) return null; + "BI" === i && (this.beginInlineImagePos = this.stream.pos); + return Cmd.get(i); + } + skipToNextLine() { + let e = this.currentChar; + for (; e >= 0; ) { + if (13 === e) { + e = this.nextChar(); + 10 === e && this.nextChar(); + break; + } + if (10 === e) { + this.nextChar(); + break; + } + e = this.nextChar(); + } + } +} +class Linearization { + static create(e) { + function getInt(e, t, i = !1) { + const a = e.get(t); + if (Number.isInteger(a) && (i ? a >= 0 : a > 0)) return a; + throw new Error( + `The "${t}" parameter in the linearization dictionary is invalid.`, + ); + } + const t = new Parser({ lexer: new Lexer(e), xref: null }), + i = t.getObj(), + a = t.getObj(), + s = t.getObj(), + r = t.getObj(); + let n, o; + if ( + !( + Number.isInteger(i) && + Number.isInteger(a) && + isCmd(s, "obj") && + r instanceof Dict && + "number" == typeof (n = r.get("Linearized")) && + n > 0 + ) + ) + return null; + if ((o = getInt(r, "L")) !== e.length) + throw new Error( + 'The "L" parameter in the linearization dictionary does not equal the stream length.', + ); + return { + length: o, + hints: (function getHints(e) { + const t = e.get("H"); + let i; + if (Array.isArray(t) && (2 === (i = t.length) || 4 === i)) { + for (let e = 0; e < i; e++) { + const i = t[e]; + if (!(Number.isInteger(i) && i > 0)) + throw new Error( + `Hint (${e}) in the linearization dictionary is invalid.`, + ); + } + return t; + } + throw new Error( + "Hint array in the linearization dictionary is invalid.", + ); + })(r), + objectNumberFirst: getInt(r, "O"), + endFirst: getInt(r, "E"), + numPages: getInt(r, "N"), + mainXRefEntriesOffset: getInt(r, "T"), + pageFirst: r.has("P") ? getInt(r, "P", !0) : 0, + }; + } +} +const hi = [ + "Adobe-GB1-UCS2", + "Adobe-CNS1-UCS2", + "Adobe-Japan1-UCS2", + "Adobe-Korea1-UCS2", + "78-EUC-H", + "78-EUC-V", + "78-H", + "78-RKSJ-H", + "78-RKSJ-V", + "78-V", + "78ms-RKSJ-H", + "78ms-RKSJ-V", + "83pv-RKSJ-H", + "90ms-RKSJ-H", + "90ms-RKSJ-V", + "90msp-RKSJ-H", + "90msp-RKSJ-V", + "90pv-RKSJ-H", + "90pv-RKSJ-V", + "Add-H", + "Add-RKSJ-H", + "Add-RKSJ-V", + "Add-V", + "Adobe-CNS1-0", + "Adobe-CNS1-1", + "Adobe-CNS1-2", + "Adobe-CNS1-3", + "Adobe-CNS1-4", + "Adobe-CNS1-5", + "Adobe-CNS1-6", + "Adobe-GB1-0", + "Adobe-GB1-1", + "Adobe-GB1-2", + "Adobe-GB1-3", + "Adobe-GB1-4", + "Adobe-GB1-5", + "Adobe-Japan1-0", + "Adobe-Japan1-1", + "Adobe-Japan1-2", + "Adobe-Japan1-3", + "Adobe-Japan1-4", + "Adobe-Japan1-5", + "Adobe-Japan1-6", + "Adobe-Korea1-0", + "Adobe-Korea1-1", + "Adobe-Korea1-2", + "B5-H", + "B5-V", + "B5pc-H", + "B5pc-V", + "CNS-EUC-H", + "CNS-EUC-V", + "CNS1-H", + "CNS1-V", + "CNS2-H", + "CNS2-V", + "ETHK-B5-H", + "ETHK-B5-V", + "ETen-B5-H", + "ETen-B5-V", + "ETenms-B5-H", + "ETenms-B5-V", + "EUC-H", + "EUC-V", + "Ext-H", + "Ext-RKSJ-H", + "Ext-RKSJ-V", + "Ext-V", + "GB-EUC-H", + "GB-EUC-V", + "GB-H", + "GB-V", + "GBK-EUC-H", + "GBK-EUC-V", + "GBK2K-H", + "GBK2K-V", + "GBKp-EUC-H", + "GBKp-EUC-V", + "GBT-EUC-H", + "GBT-EUC-V", + "GBT-H", + "GBT-V", + "GBTpc-EUC-H", + "GBTpc-EUC-V", + "GBpc-EUC-H", + "GBpc-EUC-V", + "H", + "HKdla-B5-H", + "HKdla-B5-V", + "HKdlb-B5-H", + "HKdlb-B5-V", + "HKgccs-B5-H", + "HKgccs-B5-V", + "HKm314-B5-H", + "HKm314-B5-V", + "HKm471-B5-H", + "HKm471-B5-V", + "HKscs-B5-H", + "HKscs-B5-V", + "Hankaku", + "Hiragana", + "KSC-EUC-H", + "KSC-EUC-V", + "KSC-H", + "KSC-Johab-H", + "KSC-Johab-V", + "KSC-V", + "KSCms-UHC-H", + "KSCms-UHC-HW-H", + "KSCms-UHC-HW-V", + "KSCms-UHC-V", + "KSCpc-EUC-H", + "KSCpc-EUC-V", + "Katakana", + "NWP-H", + "NWP-V", + "RKSJ-H", + "RKSJ-V", + "Roman", + "UniCNS-UCS2-H", + "UniCNS-UCS2-V", + "UniCNS-UTF16-H", + "UniCNS-UTF16-V", + "UniCNS-UTF32-H", + "UniCNS-UTF32-V", + "UniCNS-UTF8-H", + "UniCNS-UTF8-V", + "UniGB-UCS2-H", + "UniGB-UCS2-V", + "UniGB-UTF16-H", + "UniGB-UTF16-V", + "UniGB-UTF32-H", + "UniGB-UTF32-V", + "UniGB-UTF8-H", + "UniGB-UTF8-V", + "UniJIS-UCS2-H", + "UniJIS-UCS2-HW-H", + "UniJIS-UCS2-HW-V", + "UniJIS-UCS2-V", + "UniJIS-UTF16-H", + "UniJIS-UTF16-V", + "UniJIS-UTF32-H", + "UniJIS-UTF32-V", + "UniJIS-UTF8-H", + "UniJIS-UTF8-V", + "UniJIS2004-UTF16-H", + "UniJIS2004-UTF16-V", + "UniJIS2004-UTF32-H", + "UniJIS2004-UTF32-V", + "UniJIS2004-UTF8-H", + "UniJIS2004-UTF8-V", + "UniJISPro-UCS2-HW-V", + "UniJISPro-UCS2-V", + "UniJISPro-UTF8-V", + "UniJISX0213-UTF32-H", + "UniJISX0213-UTF32-V", + "UniJISX02132004-UTF32-H", + "UniJISX02132004-UTF32-V", + "UniKS-UCS2-H", + "UniKS-UCS2-V", + "UniKS-UTF16-H", + "UniKS-UTF16-V", + "UniKS-UTF32-H", + "UniKS-UTF32-V", + "UniKS-UTF8-H", + "UniKS-UTF8-V", + "V", + "WP-Symbol", + ], + li = 2 ** 24 - 1; +class CMap { + constructor(e = !1) { + this.codespaceRanges = [[], [], [], []]; + this.numCodespaceRanges = 0; + this._map = []; + this.name = ""; + this.vertical = !1; + this.useCMap = null; + this.builtInCMap = e; + } + addCodespaceRange(e, t, i) { + this.codespaceRanges[e - 1].push(t, i); + this.numCodespaceRanges++; + } + mapCidRange(e, t, i) { + if (t - e > li) + throw new Error("mapCidRange - ignoring data above MAX_MAP_RANGE."); + for (; e <= t; ) this._map[e++] = i++; + } + mapBfRange(e, t, i) { + if (t - e > li) + throw new Error("mapBfRange - ignoring data above MAX_MAP_RANGE."); + const a = i.length - 1; + for (; e <= t; ) { + this._map[e++] = i; + const t = i.charCodeAt(a) + 1; + t > 255 + ? (i = + i.substring(0, a - 1) + + String.fromCharCode(i.charCodeAt(a - 1) + 1) + + "\0") + : (i = i.substring(0, a) + String.fromCharCode(t)); + } + } + mapBfRangeToArray(e, t, i) { + if (t - e > li) + throw new Error("mapBfRangeToArray - ignoring data above MAX_MAP_RANGE."); + const a = i.length; + let s = 0; + for (; e <= t && s < a; ) { + this._map[e] = i[s++]; + ++e; + } + } + mapOne(e, t) { + this._map[e] = t; + } + lookup(e) { + return this._map[e]; + } + contains(e) { + return void 0 !== this._map[e]; + } + forEach(e) { + const t = this._map, + i = t.length; + if (i <= 65536) for (let a = 0; a < i; a++) void 0 !== t[a] && e(a, t[a]); + else for (const i in t) e(i, t[i]); + } + charCodeOf(e) { + const t = this._map; + if (t.length <= 65536) return t.indexOf(e); + for (const i in t) if (t[i] === e) return 0 | i; + return -1; + } + getMap() { + return this._map; + } + readCharCode(e, t, i) { + let a = 0; + const s = this.codespaceRanges; + for (let r = 0, n = s.length; r < n; r++) { + a = ((a << 8) | e.charCodeAt(t + r)) >>> 0; + const n = s[r]; + for (let e = 0, t = n.length; e < t; ) { + const t = n[e++], + s = n[e++]; + if (a >= t && a <= s) { + i.charcode = a; + i.length = r + 1; + return; + } + } + } + i.charcode = 0; + i.length = 1; + } + getCharCodeLength(e) { + const t = this.codespaceRanges; + for (let i = 0, a = t.length; i < a; i++) { + const a = t[i]; + for (let t = 0, s = a.length; t < s; ) { + const s = a[t++], + r = a[t++]; + if (e >= s && e <= r) return i + 1; + } + } + return 1; + } + get length() { + return this._map.length; + } + get isIdentityCMap() { + if ("Identity-H" !== this.name && "Identity-V" !== this.name) return !1; + if (65536 !== this._map.length) return !1; + for (let e = 0; e < 65536; e++) if (this._map[e] !== e) return !1; + return !0; + } +} +class IdentityCMap extends CMap { + constructor(e, t) { + super(); + this.vertical = e; + this.addCodespaceRange(t, 0, 65535); + } + mapCidRange(e, t, i) { + unreachable("should not call mapCidRange"); + } + mapBfRange(e, t, i) { + unreachable("should not call mapBfRange"); + } + mapBfRangeToArray(e, t, i) { + unreachable("should not call mapBfRangeToArray"); + } + mapOne(e, t) { + unreachable("should not call mapCidOne"); + } + lookup(e) { + return Number.isInteger(e) && e <= 65535 ? e : void 0; + } + contains(e) { + return Number.isInteger(e) && e <= 65535; + } + forEach(e) { + for (let t = 0; t <= 65535; t++) e(t, t); + } + charCodeOf(e) { + return Number.isInteger(e) && e <= 65535 ? e : -1; + } + getMap() { + const e = new Array(65536); + for (let t = 0; t <= 65535; t++) e[t] = t; + return e; + } + get length() { + return 65536; + } + get isIdentityCMap() { + unreachable("should not access .isIdentityCMap"); + } +} +function strToInt(e) { + let t = 0; + for (let i = 0; i < e.length; i++) t = (t << 8) | e.charCodeAt(i); + return t >>> 0; +} +function expectString(e) { + if ("string" != typeof e) + throw new FormatError("Malformed CMap: expected string."); +} +function expectInt(e) { + if (!Number.isInteger(e)) + throw new FormatError("Malformed CMap: expected int."); +} +function parseBfChar(e, t) { + for (;;) { + let i = t.getObj(); + if (i === pt) break; + if (isCmd(i, "endbfchar")) return; + expectString(i); + const a = strToInt(i); + i = t.getObj(); + expectString(i); + const s = i; + e.mapOne(a, s); + } +} +function parseBfRange(e, t) { + for (;;) { + let i = t.getObj(); + if (i === pt) break; + if (isCmd(i, "endbfrange")) return; + expectString(i); + const a = strToInt(i); + i = t.getObj(); + expectString(i); + const s = strToInt(i); + i = t.getObj(); + if (Number.isInteger(i) || "string" == typeof i) { + const t = Number.isInteger(i) ? String.fromCharCode(i) : i; + e.mapBfRange(a, s, t); + } else { + if (!isCmd(i, "[")) break; + { + i = t.getObj(); + const r = []; + for (; !isCmd(i, "]") && i !== pt; ) { + r.push(i); + i = t.getObj(); + } + e.mapBfRangeToArray(a, s, r); + } + } + } + throw new FormatError("Invalid bf range."); +} +function parseCidChar(e, t) { + for (;;) { + let i = t.getObj(); + if (i === pt) break; + if (isCmd(i, "endcidchar")) return; + expectString(i); + const a = strToInt(i); + i = t.getObj(); + expectInt(i); + const s = i; + e.mapOne(a, s); + } +} +function parseCidRange(e, t) { + for (;;) { + let i = t.getObj(); + if (i === pt) break; + if (isCmd(i, "endcidrange")) return; + expectString(i); + const a = strToInt(i); + i = t.getObj(); + expectString(i); + const s = strToInt(i); + i = t.getObj(); + expectInt(i); + const r = i; + e.mapCidRange(a, s, r); + } +} +function parseCodespaceRange(e, t) { + for (;;) { + let i = t.getObj(); + if (i === pt) break; + if (isCmd(i, "endcodespacerange")) return; + if ("string" != typeof i) break; + const a = strToInt(i); + i = t.getObj(); + if ("string" != typeof i) break; + const s = strToInt(i); + e.addCodespaceRange(i.length, a, s); + } + throw new FormatError("Invalid codespace range."); +} +function parseWMode(e, t) { + const i = t.getObj(); + Number.isInteger(i) && (e.vertical = !!i); +} +function parseCMapName(e, t) { + const i = t.getObj(); + i instanceof Name && (e.name = i.name); +} +async function parseCMap(e, t, i, a) { + let s, r; + A: for (;;) + try { + const i = t.getObj(); + if (i === pt) break; + if (i instanceof Name) { + "WMode" === i.name + ? parseWMode(e, t) + : "CMapName" === i.name && parseCMapName(e, t); + s = i; + } else if (i instanceof Cmd) + switch (i.cmd) { + case "endcmap": + break A; + case "usecmap": + s instanceof Name && (r = s.name); + break; + case "begincodespacerange": + parseCodespaceRange(e, t); + break; + case "beginbfchar": + parseBfChar(e, t); + break; + case "begincidchar": + parseCidChar(e, t); + break; + case "beginbfrange": + parseBfRange(e, t); + break; + case "begincidrange": + parseCidRange(e, t); + } + } catch (e) { + if (e instanceof MissingDataException) throw e; + warn("Invalid cMap data: " + e); + continue; + } + !a && r && (a = r); + return a ? extendCMap(e, i, a) : e; +} +async function extendCMap(e, t, i) { + e.useCMap = await createBuiltInCMap(i, t); + if (0 === e.numCodespaceRanges) { + const t = e.useCMap.codespaceRanges; + for (let i = 0; i < t.length; i++) e.codespaceRanges[i] = t[i].slice(); + e.numCodespaceRanges = e.useCMap.numCodespaceRanges; + } + e.useCMap.forEach(function (t, i) { + e.contains(t) || e.mapOne(t, e.useCMap.lookup(t)); + }); + return e; +} +async function createBuiltInCMap(e, t) { + if ("Identity-H" === e) return new IdentityCMap(!1, 2); + if ("Identity-V" === e) return new IdentityCMap(!0, 2); + if (!hi.includes(e)) throw new Error("Unknown CMap name: " + e); + if (!t) throw new Error("Built-in CMap parameters are not provided."); + const { cMapData: i, compressionType: a } = await t(e), + s = new CMap(!0); + if (a === mA.BINARY) + return new BinaryCMapReader().process(i, s, (e) => extendCMap(s, t, e)); + if (a === mA.NONE) { + const e = new Lexer(new Stream(i)); + return parseCMap(s, e, t, null); + } + throw new Error(`Invalid CMap "compressionType" value: ${a}`); +} +class CMapFactory { + static async create({ encoding: e, fetchBuiltInCMap: t, useCMap: i }) { + if (e instanceof Name) return createBuiltInCMap(e.name, t); + if (e instanceof BaseStream) { + const a = await parseCMap(new CMap(), new Lexer(e), t, i); + return a.isIdentityCMap ? createBuiltInCMap(a.name, t) : a; + } + throw new Error("Encoding required."); + } +} +const Ci = [ + ".notdef", + "space", + "exclam", + "quotedbl", + "numbersign", + "dollar", + "percent", + "ampersand", + "quoteright", + "parenleft", + "parenright", + "asterisk", + "plus", + "comma", + "hyphen", + "period", + "slash", + "zero", + "one", + "two", + "three", + "four", + "five", + "six", + "seven", + "eight", + "nine", + "colon", + "semicolon", + "less", + "equal", + "greater", + "question", + "at", + "A", + "B", + "C", + "D", + "E", + "F", + "G", + "H", + "I", + "J", + "K", + "L", + "M", + "N", + "O", + "P", + "Q", + "R", + "S", + "T", + "U", + "V", + "W", + "X", + "Y", + "Z", + "bracketleft", + "backslash", + "bracketright", + "asciicircum", + "underscore", + "quoteleft", + "a", + "b", + "c", + "d", + "e", + "f", + "g", + "h", + "i", + "j", + "k", + "l", + "m", + "n", + "o", + "p", + "q", + "r", + "s", + "t", + "u", + "v", + "w", + "x", + "y", + "z", + "braceleft", + "bar", + "braceright", + "asciitilde", + "exclamdown", + "cent", + "sterling", + "fraction", + "yen", + "florin", + "section", + "currency", + "quotesingle", + "quotedblleft", + "guillemotleft", + "guilsinglleft", + "guilsinglright", + "fi", + "fl", + "endash", + "dagger", + "daggerdbl", + "periodcentered", + "paragraph", + "bullet", + "quotesinglbase", + "quotedblbase", + "quotedblright", + "guillemotright", + "ellipsis", + "perthousand", + "questiondown", + "grave", + "acute", + "circumflex", + "tilde", + "macron", + "breve", + "dotaccent", + "dieresis", + "ring", + "cedilla", + "hungarumlaut", + "ogonek", + "caron", + "emdash", + "AE", + "ordfeminine", + "Lslash", + "Oslash", + "OE", + "ordmasculine", + "ae", + "dotlessi", + "lslash", + "oslash", + "oe", + "germandbls", + "onesuperior", + "logicalnot", + "mu", + "trademark", + "Eth", + "onehalf", + "plusminus", + "Thorn", + "onequarter", + "divide", + "brokenbar", + "degree", + "thorn", + "threequarters", + "twosuperior", + "registered", + "minus", + "eth", + "multiply", + "threesuperior", + "copyright", + "Aacute", + "Acircumflex", + "Adieresis", + "Agrave", + "Aring", + "Atilde", + "Ccedilla", + "Eacute", + "Ecircumflex", + "Edieresis", + "Egrave", + "Iacute", + "Icircumflex", + "Idieresis", + "Igrave", + "Ntilde", + "Oacute", + "Ocircumflex", + "Odieresis", + "Ograve", + "Otilde", + "Scaron", + "Uacute", + "Ucircumflex", + "Udieresis", + "Ugrave", + "Yacute", + "Ydieresis", + "Zcaron", + "aacute", + "acircumflex", + "adieresis", + "agrave", + "aring", + "atilde", + "ccedilla", + "eacute", + "ecircumflex", + "edieresis", + "egrave", + "iacute", + "icircumflex", + "idieresis", + "igrave", + "ntilde", + "oacute", + "ocircumflex", + "odieresis", + "ograve", + "otilde", + "scaron", + "uacute", + "ucircumflex", + "udieresis", + "ugrave", + "yacute", + "ydieresis", + "zcaron", + ], + Bi = [ + ".notdef", + "space", + "exclamsmall", + "Hungarumlautsmall", + "dollaroldstyle", + "dollarsuperior", + "ampersandsmall", + "Acutesmall", + "parenleftsuperior", + "parenrightsuperior", + "twodotenleader", + "onedotenleader", + "comma", + "hyphen", + "period", + "fraction", + "zerooldstyle", + "oneoldstyle", + "twooldstyle", + "threeoldstyle", + "fouroldstyle", + "fiveoldstyle", + "sixoldstyle", + "sevenoldstyle", + "eightoldstyle", + "nineoldstyle", + "colon", + "semicolon", + "commasuperior", + "threequartersemdash", + "periodsuperior", + "questionsmall", + "asuperior", + "bsuperior", + "centsuperior", + "dsuperior", + "esuperior", + "isuperior", + "lsuperior", + "msuperior", + "nsuperior", + "osuperior", + "rsuperior", + "ssuperior", + "tsuperior", + "ff", + "fi", + "fl", + "ffi", + "ffl", + "parenleftinferior", + "parenrightinferior", + "Circumflexsmall", + "hyphensuperior", + "Gravesmall", + "Asmall", + "Bsmall", + "Csmall", + "Dsmall", + "Esmall", + "Fsmall", + "Gsmall", + "Hsmall", + "Ismall", + "Jsmall", + "Ksmall", + "Lsmall", + "Msmall", + "Nsmall", + "Osmall", + "Psmall", + "Qsmall", + "Rsmall", + "Ssmall", + "Tsmall", + "Usmall", + "Vsmall", + "Wsmall", + "Xsmall", + "Ysmall", + "Zsmall", + "colonmonetary", + "onefitted", + "rupiah", + "Tildesmall", + "exclamdownsmall", + "centoldstyle", + "Lslashsmall", + "Scaronsmall", + "Zcaronsmall", + "Dieresissmall", + "Brevesmall", + "Caronsmall", + "Dotaccentsmall", + "Macronsmall", + "figuredash", + "hypheninferior", + "Ogoneksmall", + "Ringsmall", + "Cedillasmall", + "onequarter", + "onehalf", + "threequarters", + "questiondownsmall", + "oneeighth", + "threeeighths", + "fiveeighths", + "seveneighths", + "onethird", + "twothirds", + "zerosuperior", + "onesuperior", + "twosuperior", + "threesuperior", + "foursuperior", + "fivesuperior", + "sixsuperior", + "sevensuperior", + "eightsuperior", + "ninesuperior", + "zeroinferior", + "oneinferior", + "twoinferior", + "threeinferior", + "fourinferior", + "fiveinferior", + "sixinferior", + "seveninferior", + "eightinferior", + "nineinferior", + "centinferior", + "dollarinferior", + "periodinferior", + "commainferior", + "Agravesmall", + "Aacutesmall", + "Acircumflexsmall", + "Atildesmall", + "Adieresissmall", + "Aringsmall", + "AEsmall", + "Ccedillasmall", + "Egravesmall", + "Eacutesmall", + "Ecircumflexsmall", + "Edieresissmall", + "Igravesmall", + "Iacutesmall", + "Icircumflexsmall", + "Idieresissmall", + "Ethsmall", + "Ntildesmall", + "Ogravesmall", + "Oacutesmall", + "Ocircumflexsmall", + "Otildesmall", + "Odieresissmall", + "OEsmall", + "Oslashsmall", + "Ugravesmall", + "Uacutesmall", + "Ucircumflexsmall", + "Udieresissmall", + "Yacutesmall", + "Thornsmall", + "Ydieresissmall", + ], + Qi = [ + ".notdef", + "space", + "dollaroldstyle", + "dollarsuperior", + "parenleftsuperior", + "parenrightsuperior", + "twodotenleader", + "onedotenleader", + "comma", + "hyphen", + "period", + "fraction", + "zerooldstyle", + "oneoldstyle", + "twooldstyle", + "threeoldstyle", + "fouroldstyle", + "fiveoldstyle", + "sixoldstyle", + "sevenoldstyle", + "eightoldstyle", + "nineoldstyle", + "colon", + "semicolon", + "commasuperior", + "threequartersemdash", + "periodsuperior", + "asuperior", + "bsuperior", + "centsuperior", + "dsuperior", + "esuperior", + "isuperior", + "lsuperior", + "msuperior", + "nsuperior", + "osuperior", + "rsuperior", + "ssuperior", + "tsuperior", + "ff", + "fi", + "fl", + "ffi", + "ffl", + "parenleftinferior", + "parenrightinferior", + "hyphensuperior", + "colonmonetary", + "onefitted", + "rupiah", + "centoldstyle", + "figuredash", + "hypheninferior", + "onequarter", + "onehalf", + "threequarters", + "oneeighth", + "threeeighths", + "fiveeighths", + "seveneighths", + "onethird", + "twothirds", + "zerosuperior", + "onesuperior", + "twosuperior", + "threesuperior", + "foursuperior", + "fivesuperior", + "sixsuperior", + "sevensuperior", + "eightsuperior", + "ninesuperior", + "zeroinferior", + "oneinferior", + "twoinferior", + "threeinferior", + "fourinferior", + "fiveinferior", + "sixinferior", + "seveninferior", + "eightinferior", + "nineinferior", + "centinferior", + "dollarinferior", + "periodinferior", + "commainferior", + ], + Ei = [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "space", + "exclamsmall", + "Hungarumlautsmall", + "", + "dollaroldstyle", + "dollarsuperior", + "ampersandsmall", + "Acutesmall", + "parenleftsuperior", + "parenrightsuperior", + "twodotenleader", + "onedotenleader", + "comma", + "hyphen", + "period", + "fraction", + "zerooldstyle", + "oneoldstyle", + "twooldstyle", + "threeoldstyle", + "fouroldstyle", + "fiveoldstyle", + "sixoldstyle", + "sevenoldstyle", + "eightoldstyle", + "nineoldstyle", + "colon", + "semicolon", + "commasuperior", + "threequartersemdash", + "periodsuperior", + "questionsmall", + "", + "asuperior", + "bsuperior", + "centsuperior", + "dsuperior", + "esuperior", + "", + "", + "", + "isuperior", + "", + "", + "lsuperior", + "msuperior", + "nsuperior", + "osuperior", + "", + "", + "rsuperior", + "ssuperior", + "tsuperior", + "", + "ff", + "fi", + "fl", + "ffi", + "ffl", + "parenleftinferior", + "", + "parenrightinferior", + "Circumflexsmall", + "hyphensuperior", + "Gravesmall", + "Asmall", + "Bsmall", + "Csmall", + "Dsmall", + "Esmall", + "Fsmall", + "Gsmall", + "Hsmall", + "Ismall", + "Jsmall", + "Ksmall", + "Lsmall", + "Msmall", + "Nsmall", + "Osmall", + "Psmall", + "Qsmall", + "Rsmall", + "Ssmall", + "Tsmall", + "Usmall", + "Vsmall", + "Wsmall", + "Xsmall", + "Ysmall", + "Zsmall", + "colonmonetary", + "onefitted", + "rupiah", + "Tildesmall", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "exclamdownsmall", + "centoldstyle", + "Lslashsmall", + "", + "", + "Scaronsmall", + "Zcaronsmall", + "Dieresissmall", + "Brevesmall", + "Caronsmall", + "", + "Dotaccentsmall", + "", + "", + "Macronsmall", + "", + "", + "figuredash", + "hypheninferior", + "", + "", + "Ogoneksmall", + "Ringsmall", + "Cedillasmall", + "", + "", + "", + "onequarter", + "onehalf", + "threequarters", + "questiondownsmall", + "oneeighth", + "threeeighths", + "fiveeighths", + "seveneighths", + "onethird", + "twothirds", + "", + "", + "zerosuperior", + "onesuperior", + "twosuperior", + "threesuperior", + "foursuperior", + "fivesuperior", + "sixsuperior", + "sevensuperior", + "eightsuperior", + "ninesuperior", + "zeroinferior", + "oneinferior", + "twoinferior", + "threeinferior", + "fourinferior", + "fiveinferior", + "sixinferior", + "seveninferior", + "eightinferior", + "nineinferior", + "centinferior", + "dollarinferior", + "periodinferior", + "commainferior", + "Agravesmall", + "Aacutesmall", + "Acircumflexsmall", + "Atildesmall", + "Adieresissmall", + "Aringsmall", + "AEsmall", + "Ccedillasmall", + "Egravesmall", + "Eacutesmall", + "Ecircumflexsmall", + "Edieresissmall", + "Igravesmall", + "Iacutesmall", + "Icircumflexsmall", + "Idieresissmall", + "Ethsmall", + "Ntildesmall", + "Ogravesmall", + "Oacutesmall", + "Ocircumflexsmall", + "Otildesmall", + "Odieresissmall", + "OEsmall", + "Oslashsmall", + "Ugravesmall", + "Uacutesmall", + "Ucircumflexsmall", + "Udieresissmall", + "Yacutesmall", + "Thornsmall", + "Ydieresissmall", + ], + ui = [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "space", + "exclamsmall", + "Hungarumlautsmall", + "centoldstyle", + "dollaroldstyle", + "dollarsuperior", + "ampersandsmall", + "Acutesmall", + "parenleftsuperior", + "parenrightsuperior", + "twodotenleader", + "onedotenleader", + "comma", + "hyphen", + "period", + "fraction", + "zerooldstyle", + "oneoldstyle", + "twooldstyle", + "threeoldstyle", + "fouroldstyle", + "fiveoldstyle", + "sixoldstyle", + "sevenoldstyle", + "eightoldstyle", + "nineoldstyle", + "colon", + "semicolon", + "", + "threequartersemdash", + "", + "questionsmall", + "", + "", + "", + "", + "Ethsmall", + "", + "", + "onequarter", + "onehalf", + "threequarters", + "oneeighth", + "threeeighths", + "fiveeighths", + "seveneighths", + "onethird", + "twothirds", + "", + "", + "", + "", + "", + "", + "ff", + "fi", + "fl", + "ffi", + "ffl", + "parenleftinferior", + "", + "parenrightinferior", + "Circumflexsmall", + "hypheninferior", + "Gravesmall", + "Asmall", + "Bsmall", + "Csmall", + "Dsmall", + "Esmall", + "Fsmall", + "Gsmall", + "Hsmall", + "Ismall", + "Jsmall", + "Ksmall", + "Lsmall", + "Msmall", + "Nsmall", + "Osmall", + "Psmall", + "Qsmall", + "Rsmall", + "Ssmall", + "Tsmall", + "Usmall", + "Vsmall", + "Wsmall", + "Xsmall", + "Ysmall", + "Zsmall", + "colonmonetary", + "onefitted", + "rupiah", + "Tildesmall", + "", + "", + "asuperior", + "centsuperior", + "", + "", + "", + "", + "Aacutesmall", + "Agravesmall", + "Acircumflexsmall", + "Adieresissmall", + "Atildesmall", + "Aringsmall", + "Ccedillasmall", + "Eacutesmall", + "Egravesmall", + "Ecircumflexsmall", + "Edieresissmall", + "Iacutesmall", + "Igravesmall", + "Icircumflexsmall", + "Idieresissmall", + "Ntildesmall", + "Oacutesmall", + "Ogravesmall", + "Ocircumflexsmall", + "Odieresissmall", + "Otildesmall", + "Uacutesmall", + "Ugravesmall", + "Ucircumflexsmall", + "Udieresissmall", + "", + "eightsuperior", + "fourinferior", + "threeinferior", + "sixinferior", + "eightinferior", + "seveninferior", + "Scaronsmall", + "", + "centinferior", + "twoinferior", + "", + "Dieresissmall", + "", + "Caronsmall", + "osuperior", + "fiveinferior", + "", + "commainferior", + "periodinferior", + "Yacutesmall", + "", + "dollarinferior", + "", + "", + "Thornsmall", + "", + "nineinferior", + "zeroinferior", + "Zcaronsmall", + "AEsmall", + "Oslashsmall", + "questiondownsmall", + "oneinferior", + "Lslashsmall", + "", + "", + "", + "", + "", + "", + "Cedillasmall", + "", + "", + "", + "", + "", + "OEsmall", + "figuredash", + "hyphensuperior", + "", + "", + "", + "", + "exclamdownsmall", + "", + "Ydieresissmall", + "", + "onesuperior", + "twosuperior", + "threesuperior", + "foursuperior", + "fivesuperior", + "sixsuperior", + "sevensuperior", + "ninesuperior", + "zerosuperior", + "", + "esuperior", + "rsuperior", + "tsuperior", + "", + "", + "isuperior", + "ssuperior", + "dsuperior", + "", + "", + "", + "", + "", + "lsuperior", + "Ogoneksmall", + "Brevesmall", + "Macronsmall", + "bsuperior", + "nsuperior", + "msuperior", + "commasuperior", + "periodsuperior", + "Dotaccentsmall", + "Ringsmall", + "", + "", + "", + "", + ], + di = [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "space", + "exclam", + "quotedbl", + "numbersign", + "dollar", + "percent", + "ampersand", + "quotesingle", + "parenleft", + "parenright", + "asterisk", + "plus", + "comma", + "hyphen", + "period", + "slash", + "zero", + "one", + "two", + "three", + "four", + "five", + "six", + "seven", + "eight", + "nine", + "colon", + "semicolon", + "less", + "equal", + "greater", + "question", + "at", + "A", + "B", + "C", + "D", + "E", + "F", + "G", + "H", + "I", + "J", + "K", + "L", + "M", + "N", + "O", + "P", + "Q", + "R", + "S", + "T", + "U", + "V", + "W", + "X", + "Y", + "Z", + "bracketleft", + "backslash", + "bracketright", + "asciicircum", + "underscore", + "grave", + "a", + "b", + "c", + "d", + "e", + "f", + "g", + "h", + "i", + "j", + "k", + "l", + "m", + "n", + "o", + "p", + "q", + "r", + "s", + "t", + "u", + "v", + "w", + "x", + "y", + "z", + "braceleft", + "bar", + "braceright", + "asciitilde", + "", + "Adieresis", + "Aring", + "Ccedilla", + "Eacute", + "Ntilde", + "Odieresis", + "Udieresis", + "aacute", + "agrave", + "acircumflex", + "adieresis", + "atilde", + "aring", + "ccedilla", + "eacute", + "egrave", + "ecircumflex", + "edieresis", + "iacute", + "igrave", + "icircumflex", + "idieresis", + "ntilde", + "oacute", + "ograve", + "ocircumflex", + "odieresis", + "otilde", + "uacute", + "ugrave", + "ucircumflex", + "udieresis", + "dagger", + "degree", + "cent", + "sterling", + "section", + "bullet", + "paragraph", + "germandbls", + "registered", + "copyright", + "trademark", + "acute", + "dieresis", + "notequal", + "AE", + "Oslash", + "infinity", + "plusminus", + "lessequal", + "greaterequal", + "yen", + "mu", + "partialdiff", + "summation", + "product", + "pi", + "integral", + "ordfeminine", + "ordmasculine", + "Omega", + "ae", + "oslash", + "questiondown", + "exclamdown", + "logicalnot", + "radical", + "florin", + "approxequal", + "Delta", + "guillemotleft", + "guillemotright", + "ellipsis", + "space", + "Agrave", + "Atilde", + "Otilde", + "OE", + "oe", + "endash", + "emdash", + "quotedblleft", + "quotedblright", + "quoteleft", + "quoteright", + "divide", + "lozenge", + "ydieresis", + "Ydieresis", + "fraction", + "currency", + "guilsinglleft", + "guilsinglright", + "fi", + "fl", + "daggerdbl", + "periodcentered", + "quotesinglbase", + "quotedblbase", + "perthousand", + "Acircumflex", + "Ecircumflex", + "Aacute", + "Edieresis", + "Egrave", + "Iacute", + "Icircumflex", + "Idieresis", + "Igrave", + "Oacute", + "Ocircumflex", + "apple", + "Ograve", + "Uacute", + "Ucircumflex", + "Ugrave", + "dotlessi", + "circumflex", + "tilde", + "macron", + "breve", + "dotaccent", + "ring", + "cedilla", + "hungarumlaut", + "ogonek", + "caron", + ], + fi = [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "space", + "exclam", + "quotedbl", + "numbersign", + "dollar", + "percent", + "ampersand", + "quoteright", + "parenleft", + "parenright", + "asterisk", + "plus", + "comma", + "hyphen", + "period", + "slash", + "zero", + "one", + "two", + "three", + "four", + "five", + "six", + "seven", + "eight", + "nine", + "colon", + "semicolon", + "less", + "equal", + "greater", + "question", + "at", + "A", + "B", + "C", + "D", + "E", + "F", + "G", + "H", + "I", + "J", + "K", + "L", + "M", + "N", + "O", + "P", + "Q", + "R", + "S", + "T", + "U", + "V", + "W", + "X", + "Y", + "Z", + "bracketleft", + "backslash", + "bracketright", + "asciicircum", + "underscore", + "quoteleft", + "a", + "b", + "c", + "d", + "e", + "f", + "g", + "h", + "i", + "j", + "k", + "l", + "m", + "n", + "o", + "p", + "q", + "r", + "s", + "t", + "u", + "v", + "w", + "x", + "y", + "z", + "braceleft", + "bar", + "braceright", + "asciitilde", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "exclamdown", + "cent", + "sterling", + "fraction", + "yen", + "florin", + "section", + "currency", + "quotesingle", + "quotedblleft", + "guillemotleft", + "guilsinglleft", + "guilsinglright", + "fi", + "fl", + "", + "endash", + "dagger", + "daggerdbl", + "periodcentered", + "", + "paragraph", + "bullet", + "quotesinglbase", + "quotedblbase", + "quotedblright", + "guillemotright", + "ellipsis", + "perthousand", + "", + "questiondown", + "", + "grave", + "acute", + "circumflex", + "tilde", + "macron", + "breve", + "dotaccent", + "dieresis", + "", + "ring", + "cedilla", + "", + "hungarumlaut", + "ogonek", + "caron", + "emdash", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "AE", + "", + "ordfeminine", + "", + "", + "", + "", + "Lslash", + "Oslash", + "OE", + "ordmasculine", + "", + "", + "", + "", + "", + "ae", + "", + "", + "", + "dotlessi", + "", + "", + "lslash", + "oslash", + "oe", + "germandbls", + "", + "", + "", + "", + ], + pi = [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "space", + "exclam", + "quotedbl", + "numbersign", + "dollar", + "percent", + "ampersand", + "quotesingle", + "parenleft", + "parenright", + "asterisk", + "plus", + "comma", + "hyphen", + "period", + "slash", + "zero", + "one", + "two", + "three", + "four", + "five", + "six", + "seven", + "eight", + "nine", + "colon", + "semicolon", + "less", + "equal", + "greater", + "question", + "at", + "A", + "B", + "C", + "D", + "E", + "F", + "G", + "H", + "I", + "J", + "K", + "L", + "M", + "N", + "O", + "P", + "Q", + "R", + "S", + "T", + "U", + "V", + "W", + "X", + "Y", + "Z", + "bracketleft", + "backslash", + "bracketright", + "asciicircum", + "underscore", + "grave", + "a", + "b", + "c", + "d", + "e", + "f", + "g", + "h", + "i", + "j", + "k", + "l", + "m", + "n", + "o", + "p", + "q", + "r", + "s", + "t", + "u", + "v", + "w", + "x", + "y", + "z", + "braceleft", + "bar", + "braceright", + "asciitilde", + "bullet", + "Euro", + "bullet", + "quotesinglbase", + "florin", + "quotedblbase", + "ellipsis", + "dagger", + "daggerdbl", + "circumflex", + "perthousand", + "Scaron", + "guilsinglleft", + "OE", + "bullet", + "Zcaron", + "bullet", + "bullet", + "quoteleft", + "quoteright", + "quotedblleft", + "quotedblright", + "bullet", + "endash", + "emdash", + "tilde", + "trademark", + "scaron", + "guilsinglright", + "oe", + "bullet", + "zcaron", + "Ydieresis", + "space", + "exclamdown", + "cent", + "sterling", + "currency", + "yen", + "brokenbar", + "section", + "dieresis", + "copyright", + "ordfeminine", + "guillemotleft", + "logicalnot", + "hyphen", + "registered", + "macron", + "degree", + "plusminus", + "twosuperior", + "threesuperior", + "acute", + "mu", + "paragraph", + "periodcentered", + "cedilla", + "onesuperior", + "ordmasculine", + "guillemotright", + "onequarter", + "onehalf", + "threequarters", + "questiondown", + "Agrave", + "Aacute", + "Acircumflex", + "Atilde", + "Adieresis", + "Aring", + "AE", + "Ccedilla", + "Egrave", + "Eacute", + "Ecircumflex", + "Edieresis", + "Igrave", + "Iacute", + "Icircumflex", + "Idieresis", + "Eth", + "Ntilde", + "Ograve", + "Oacute", + "Ocircumflex", + "Otilde", + "Odieresis", + "multiply", + "Oslash", + "Ugrave", + "Uacute", + "Ucircumflex", + "Udieresis", + "Yacute", + "Thorn", + "germandbls", + "agrave", + "aacute", + "acircumflex", + "atilde", + "adieresis", + "aring", + "ae", + "ccedilla", + "egrave", + "eacute", + "ecircumflex", + "edieresis", + "igrave", + "iacute", + "icircumflex", + "idieresis", + "eth", + "ntilde", + "ograve", + "oacute", + "ocircumflex", + "otilde", + "odieresis", + "divide", + "oslash", + "ugrave", + "uacute", + "ucircumflex", + "udieresis", + "yacute", + "thorn", + "ydieresis", + ], + mi = [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "space", + "exclam", + "universal", + "numbersign", + "existential", + "percent", + "ampersand", + "suchthat", + "parenleft", + "parenright", + "asteriskmath", + "plus", + "comma", + "minus", + "period", + "slash", + "zero", + "one", + "two", + "three", + "four", + "five", + "six", + "seven", + "eight", + "nine", + "colon", + "semicolon", + "less", + "equal", + "greater", + "question", + "congruent", + "Alpha", + "Beta", + "Chi", + "Delta", + "Epsilon", + "Phi", + "Gamma", + "Eta", + "Iota", + "theta1", + "Kappa", + "Lambda", + "Mu", + "Nu", + "Omicron", + "Pi", + "Theta", + "Rho", + "Sigma", + "Tau", + "Upsilon", + "sigma1", + "Omega", + "Xi", + "Psi", + "Zeta", + "bracketleft", + "therefore", + "bracketright", + "perpendicular", + "underscore", + "radicalex", + "alpha", + "beta", + "chi", + "delta", + "epsilon", + "phi", + "gamma", + "eta", + "iota", + "phi1", + "kappa", + "lambda", + "mu", + "nu", + "omicron", + "pi", + "theta", + "rho", + "sigma", + "tau", + "upsilon", + "omega1", + "omega", + "xi", + "psi", + "zeta", + "braceleft", + "bar", + "braceright", + "similar", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Euro", + "Upsilon1", + "minute", + "lessequal", + "fraction", + "infinity", + "florin", + "club", + "diamond", + "heart", + "spade", + "arrowboth", + "arrowleft", + "arrowup", + "arrowright", + "arrowdown", + "degree", + "plusminus", + "second", + "greaterequal", + "multiply", + "proportional", + "partialdiff", + "bullet", + "divide", + "notequal", + "equivalence", + "approxequal", + "ellipsis", + "arrowvertex", + "arrowhorizex", + "carriagereturn", + "aleph", + "Ifraktur", + "Rfraktur", + "weierstrass", + "circlemultiply", + "circleplus", + "emptyset", + "intersection", + "union", + "propersuperset", + "reflexsuperset", + "notsubset", + "propersubset", + "reflexsubset", + "element", + "notelement", + "angle", + "gradient", + "registerserif", + "copyrightserif", + "trademarkserif", + "product", + "radical", + "dotmath", + "logicalnot", + "logicaland", + "logicalor", + "arrowdblboth", + "arrowdblleft", + "arrowdblup", + "arrowdblright", + "arrowdbldown", + "lozenge", + "angleleft", + "registersans", + "copyrightsans", + "trademarksans", + "summation", + "parenlefttp", + "parenleftex", + "parenleftbt", + "bracketlefttp", + "bracketleftex", + "bracketleftbt", + "bracelefttp", + "braceleftmid", + "braceleftbt", + "braceex", + "", + "angleright", + "integral", + "integraltp", + "integralex", + "integralbt", + "parenrighttp", + "parenrightex", + "parenrightbt", + "bracketrighttp", + "bracketrightex", + "bracketrightbt", + "bracerighttp", + "bracerightmid", + "bracerightbt", + "", + ], + yi = [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "space", + "a1", + "a2", + "a202", + "a3", + "a4", + "a5", + "a119", + "a118", + "a117", + "a11", + "a12", + "a13", + "a14", + "a15", + "a16", + "a105", + "a17", + "a18", + "a19", + "a20", + "a21", + "a22", + "a23", + "a24", + "a25", + "a26", + "a27", + "a28", + "a6", + "a7", + "a8", + "a9", + "a10", + "a29", + "a30", + "a31", + "a32", + "a33", + "a34", + "a35", + "a36", + "a37", + "a38", + "a39", + "a40", + "a41", + "a42", + "a43", + "a44", + "a45", + "a46", + "a47", + "a48", + "a49", + "a50", + "a51", + "a52", + "a53", + "a54", + "a55", + "a56", + "a57", + "a58", + "a59", + "a60", + "a61", + "a62", + "a63", + "a64", + "a65", + "a66", + "a67", + "a68", + "a69", + "a70", + "a71", + "a72", + "a73", + "a74", + "a203", + "a75", + "a204", + "a76", + "a77", + "a78", + "a79", + "a81", + "a82", + "a83", + "a84", + "a97", + "a98", + "a99", + "a100", + "", + "a89", + "a90", + "a93", + "a94", + "a91", + "a92", + "a205", + "a85", + "a206", + "a86", + "a87", + "a88", + "a95", + "a96", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "a101", + "a102", + "a103", + "a104", + "a106", + "a107", + "a108", + "a112", + "a111", + "a110", + "a109", + "a120", + "a121", + "a122", + "a123", + "a124", + "a125", + "a126", + "a127", + "a128", + "a129", + "a130", + "a131", + "a132", + "a133", + "a134", + "a135", + "a136", + "a137", + "a138", + "a139", + "a140", + "a141", + "a142", + "a143", + "a144", + "a145", + "a146", + "a147", + "a148", + "a149", + "a150", + "a151", + "a152", + "a153", + "a154", + "a155", + "a156", + "a157", + "a158", + "a159", + "a160", + "a161", + "a163", + "a164", + "a196", + "a165", + "a192", + "a166", + "a167", + "a168", + "a169", + "a170", + "a171", + "a172", + "a173", + "a162", + "a174", + "a175", + "a176", + "a177", + "a178", + "a179", + "a193", + "a180", + "a199", + "a181", + "a200", + "a182", + "", + "a201", + "a183", + "a184", + "a197", + "a185", + "a194", + "a198", + "a186", + "a195", + "a187", + "a188", + "a189", + "a190", + "a191", + "", + ]; +function getEncoding(e) { + switch (e) { + case "WinAnsiEncoding": + return pi; + case "StandardEncoding": + return fi; + case "MacRomanEncoding": + return di; + case "SymbolSetEncoding": + return mi; + case "ZapfDingbatsEncoding": + return yi; + case "ExpertEncoding": + return Ei; + case "MacExpertEncoding": + return ui; + default: + return null; + } +} +const wi = [ + ".notdef", + "space", + "exclam", + "quotedbl", + "numbersign", + "dollar", + "percent", + "ampersand", + "quoteright", + "parenleft", + "parenright", + "asterisk", + "plus", + "comma", + "hyphen", + "period", + "slash", + "zero", + "one", + "two", + "three", + "four", + "five", + "six", + "seven", + "eight", + "nine", + "colon", + "semicolon", + "less", + "equal", + "greater", + "question", + "at", + "A", + "B", + "C", + "D", + "E", + "F", + "G", + "H", + "I", + "J", + "K", + "L", + "M", + "N", + "O", + "P", + "Q", + "R", + "S", + "T", + "U", + "V", + "W", + "X", + "Y", + "Z", + "bracketleft", + "backslash", + "bracketright", + "asciicircum", + "underscore", + "quoteleft", + "a", + "b", + "c", + "d", + "e", + "f", + "g", + "h", + "i", + "j", + "k", + "l", + "m", + "n", + "o", + "p", + "q", + "r", + "s", + "t", + "u", + "v", + "w", + "x", + "y", + "z", + "braceleft", + "bar", + "braceright", + "asciitilde", + "exclamdown", + "cent", + "sterling", + "fraction", + "yen", + "florin", + "section", + "currency", + "quotesingle", + "quotedblleft", + "guillemotleft", + "guilsinglleft", + "guilsinglright", + "fi", + "fl", + "endash", + "dagger", + "daggerdbl", + "periodcentered", + "paragraph", + "bullet", + "quotesinglbase", + "quotedblbase", + "quotedblright", + "guillemotright", + "ellipsis", + "perthousand", + "questiondown", + "grave", + "acute", + "circumflex", + "tilde", + "macron", + "breve", + "dotaccent", + "dieresis", + "ring", + "cedilla", + "hungarumlaut", + "ogonek", + "caron", + "emdash", + "AE", + "ordfeminine", + "Lslash", + "Oslash", + "OE", + "ordmasculine", + "ae", + "dotlessi", + "lslash", + "oslash", + "oe", + "germandbls", + "onesuperior", + "logicalnot", + "mu", + "trademark", + "Eth", + "onehalf", + "plusminus", + "Thorn", + "onequarter", + "divide", + "brokenbar", + "degree", + "thorn", + "threequarters", + "twosuperior", + "registered", + "minus", + "eth", + "multiply", + "threesuperior", + "copyright", + "Aacute", + "Acircumflex", + "Adieresis", + "Agrave", + "Aring", + "Atilde", + "Ccedilla", + "Eacute", + "Ecircumflex", + "Edieresis", + "Egrave", + "Iacute", + "Icircumflex", + "Idieresis", + "Igrave", + "Ntilde", + "Oacute", + "Ocircumflex", + "Odieresis", + "Ograve", + "Otilde", + "Scaron", + "Uacute", + "Ucircumflex", + "Udieresis", + "Ugrave", + "Yacute", + "Ydieresis", + "Zcaron", + "aacute", + "acircumflex", + "adieresis", + "agrave", + "aring", + "atilde", + "ccedilla", + "eacute", + "ecircumflex", + "edieresis", + "egrave", + "iacute", + "icircumflex", + "idieresis", + "igrave", + "ntilde", + "oacute", + "ocircumflex", + "odieresis", + "ograve", + "otilde", + "scaron", + "uacute", + "ucircumflex", + "udieresis", + "ugrave", + "yacute", + "ydieresis", + "zcaron", + "exclamsmall", + "Hungarumlautsmall", + "dollaroldstyle", + "dollarsuperior", + "ampersandsmall", + "Acutesmall", + "parenleftsuperior", + "parenrightsuperior", + "twodotenleader", + "onedotenleader", + "zerooldstyle", + "oneoldstyle", + "twooldstyle", + "threeoldstyle", + "fouroldstyle", + "fiveoldstyle", + "sixoldstyle", + "sevenoldstyle", + "eightoldstyle", + "nineoldstyle", + "commasuperior", + "threequartersemdash", + "periodsuperior", + "questionsmall", + "asuperior", + "bsuperior", + "centsuperior", + "dsuperior", + "esuperior", + "isuperior", + "lsuperior", + "msuperior", + "nsuperior", + "osuperior", + "rsuperior", + "ssuperior", + "tsuperior", + "ff", + "ffi", + "ffl", + "parenleftinferior", + "parenrightinferior", + "Circumflexsmall", + "hyphensuperior", + "Gravesmall", + "Asmall", + "Bsmall", + "Csmall", + "Dsmall", + "Esmall", + "Fsmall", + "Gsmall", + "Hsmall", + "Ismall", + "Jsmall", + "Ksmall", + "Lsmall", + "Msmall", + "Nsmall", + "Osmall", + "Psmall", + "Qsmall", + "Rsmall", + "Ssmall", + "Tsmall", + "Usmall", + "Vsmall", + "Wsmall", + "Xsmall", + "Ysmall", + "Zsmall", + "colonmonetary", + "onefitted", + "rupiah", + "Tildesmall", + "exclamdownsmall", + "centoldstyle", + "Lslashsmall", + "Scaronsmall", + "Zcaronsmall", + "Dieresissmall", + "Brevesmall", + "Caronsmall", + "Dotaccentsmall", + "Macronsmall", + "figuredash", + "hypheninferior", + "Ogoneksmall", + "Ringsmall", + "Cedillasmall", + "questiondownsmall", + "oneeighth", + "threeeighths", + "fiveeighths", + "seveneighths", + "onethird", + "twothirds", + "zerosuperior", + "foursuperior", + "fivesuperior", + "sixsuperior", + "sevensuperior", + "eightsuperior", + "ninesuperior", + "zeroinferior", + "oneinferior", + "twoinferior", + "threeinferior", + "fourinferior", + "fiveinferior", + "sixinferior", + "seveninferior", + "eightinferior", + "nineinferior", + "centinferior", + "dollarinferior", + "periodinferior", + "commainferior", + "Agravesmall", + "Aacutesmall", + "Acircumflexsmall", + "Atildesmall", + "Adieresissmall", + "Aringsmall", + "AEsmall", + "Ccedillasmall", + "Egravesmall", + "Eacutesmall", + "Ecircumflexsmall", + "Edieresissmall", + "Igravesmall", + "Iacutesmall", + "Icircumflexsmall", + "Idieresissmall", + "Ethsmall", + "Ntildesmall", + "Ogravesmall", + "Oacutesmall", + "Ocircumflexsmall", + "Otildesmall", + "Odieresissmall", + "OEsmall", + "Oslashsmall", + "Ugravesmall", + "Uacutesmall", + "Ucircumflexsmall", + "Udieresissmall", + "Yacutesmall", + "Thornsmall", + "Ydieresissmall", + "001.000", + "001.001", + "001.002", + "001.003", + "Black", + "Bold", + "Book", + "Light", + "Medium", + "Regular", + "Roman", + "Semibold", + ], + bi = 391, + Di = [ + null, + { id: "hstem", min: 2, stackClearing: !0, stem: !0 }, + null, + { id: "vstem", min: 2, stackClearing: !0, stem: !0 }, + { id: "vmoveto", min: 1, stackClearing: !0 }, + { id: "rlineto", min: 2, resetStack: !0 }, + { id: "hlineto", min: 1, resetStack: !0 }, + { id: "vlineto", min: 1, resetStack: !0 }, + { id: "rrcurveto", min: 6, resetStack: !0 }, + null, + { id: "callsubr", min: 1, undefStack: !0 }, + { id: "return", min: 0, undefStack: !0 }, + null, + null, + { id: "endchar", min: 0, stackClearing: !0 }, + null, + null, + null, + { id: "hstemhm", min: 2, stackClearing: !0, stem: !0 }, + { id: "hintmask", min: 0, stackClearing: !0 }, + { id: "cntrmask", min: 0, stackClearing: !0 }, + { id: "rmoveto", min: 2, stackClearing: !0 }, + { id: "hmoveto", min: 1, stackClearing: !0 }, + { id: "vstemhm", min: 2, stackClearing: !0, stem: !0 }, + { id: "rcurveline", min: 8, resetStack: !0 }, + { id: "rlinecurve", min: 8, resetStack: !0 }, + { id: "vvcurveto", min: 4, resetStack: !0 }, + { id: "hhcurveto", min: 4, resetStack: !0 }, + null, + { id: "callgsubr", min: 1, undefStack: !0 }, + { id: "vhcurveto", min: 4, resetStack: !0 }, + { id: "hvcurveto", min: 4, resetStack: !0 }, + ], + Fi = [ + null, + null, + null, + { id: "and", min: 2, stackDelta: -1 }, + { id: "or", min: 2, stackDelta: -1 }, + { id: "not", min: 1, stackDelta: 0 }, + null, + null, + null, + { id: "abs", min: 1, stackDelta: 0 }, + { + id: "add", + min: 2, + stackDelta: -1, + stackFn(e, t) { + e[t - 2] = e[t - 2] + e[t - 1]; + }, + }, + { + id: "sub", + min: 2, + stackDelta: -1, + stackFn(e, t) { + e[t - 2] = e[t - 2] - e[t - 1]; + }, + }, + { + id: "div", + min: 2, + stackDelta: -1, + stackFn(e, t) { + e[t - 2] = e[t - 2] / e[t - 1]; + }, + }, + null, + { + id: "neg", + min: 1, + stackDelta: 0, + stackFn(e, t) { + e[t - 1] = -e[t - 1]; + }, + }, + { id: "eq", min: 2, stackDelta: -1 }, + null, + null, + { id: "drop", min: 1, stackDelta: -1 }, + null, + { id: "put", min: 2, stackDelta: -2 }, + { id: "get", min: 1, stackDelta: 0 }, + { id: "ifelse", min: 4, stackDelta: -3 }, + { id: "random", min: 0, stackDelta: 1 }, + { + id: "mul", + min: 2, + stackDelta: -1, + stackFn(e, t) { + e[t - 2] = e[t - 2] * e[t - 1]; + }, + }, + null, + { id: "sqrt", min: 1, stackDelta: 0 }, + { id: "dup", min: 1, stackDelta: 1 }, + { id: "exch", min: 2, stackDelta: 0 }, + { id: "index", min: 2, stackDelta: 0 }, + { id: "roll", min: 3, stackDelta: -2 }, + null, + null, + null, + { id: "hflex", min: 7, resetStack: !0 }, + { id: "flex", min: 13, resetStack: !0 }, + { id: "hflex1", min: 9, resetStack: !0 }, + { id: "flex1", min: 11, resetStack: !0 }, + ]; +class CFFParser { + constructor(e, t, i) { + this.bytes = e.getBytes(); + this.properties = t; + this.seacAnalysisEnabled = !!i; + } + parse() { + const e = this.properties, + t = new CFF(); + this.cff = t; + const i = this.parseHeader(), + a = this.parseIndex(i.endPos), + s = this.parseIndex(a.endPos), + r = this.parseIndex(s.endPos), + n = this.parseIndex(r.endPos), + o = this.parseDict(s.obj.get(0)), + g = this.createDict(CFFTopDict, o, t.strings); + t.header = i.obj; + t.names = this.parseNameIndex(a.obj); + t.strings = this.parseStringIndex(r.obj); + t.topDict = g; + t.globalSubrIndex = n.obj; + this.parsePrivateDict(t.topDict); + t.isCIDFont = g.hasName("ROS"); + const c = g.getByName("CharStrings"), + h = this.parseIndex(c).obj, + l = g.getByName("FontMatrix"); + l && (e.fontMatrix = l); + const C = g.getByName("FontBBox"); + if (C) { + e.ascent = Math.max(C[3], C[1]); + e.descent = Math.min(C[1], C[3]); + e.ascentScaled = !0; + } + let Q, E; + if (t.isCIDFont) { + const e = this.parseIndex(g.getByName("FDArray")).obj; + for (let i = 0, a = e.count; i < a; ++i) { + const a = e.get(i), + s = this.createDict(CFFTopDict, this.parseDict(a), t.strings); + this.parsePrivateDict(s); + t.fdArray.push(s); + } + E = null; + Q = this.parseCharsets(g.getByName("charset"), h.count, t.strings, !0); + t.fdSelect = this.parseFDSelect(g.getByName("FDSelect"), h.count); + } else { + Q = this.parseCharsets(g.getByName("charset"), h.count, t.strings, !1); + E = this.parseEncoding(g.getByName("Encoding"), e, t.strings, Q.charset); + } + t.charset = Q; + t.encoding = E; + const u = this.parseCharStrings({ + charStrings: h, + localSubrIndex: g.privateDict.subrsIndex, + globalSubrIndex: n.obj, + fdSelect: t.fdSelect, + fdArray: t.fdArray, + privateDict: g.privateDict, + }); + t.charStrings = u.charStrings; + t.seacs = u.seacs; + t.widths = u.widths; + return t; + } + parseHeader() { + let e = this.bytes; + const t = e.length; + let i = 0; + for (; i < t && 1 !== e[i]; ) ++i; + if (i >= t) throw new FormatError("Invalid CFF header"); + if (0 !== i) { + info("cff data is shifted"); + e = e.subarray(i); + this.bytes = e; + } + const a = e[0], + s = e[1], + r = e[2], + n = e[3]; + return { obj: new CFFHeader(a, s, r, n), endPos: r }; + } + parseDict(e) { + let t = 0; + function parseOperand() { + let i = e[t++]; + if (30 === i) + return (function parseFloatOperand() { + let i = ""; + const a = 15, + s = [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + ".", + "E", + "E-", + null, + "-", + ], + r = e.length; + for (; t < r; ) { + const r = e[t++], + n = r >> 4, + o = 15 & r; + if (n === a) break; + i += s[n]; + if (o === a) break; + i += s[o]; + } + return parseFloat(i); + })(); + if (28 === i) { + i = e[t++]; + i = ((i << 24) | (e[t++] << 16)) >> 16; + return i; + } + if (29 === i) { + i = e[t++]; + i = (i << 8) | e[t++]; + i = (i << 8) | e[t++]; + i = (i << 8) | e[t++]; + return i; + } + if (i >= 32 && i <= 246) return i - 139; + if (i >= 247 && i <= 250) return 256 * (i - 247) + e[t++] + 108; + if (i >= 251 && i <= 254) return -256 * (i - 251) - e[t++] - 108; + warn('CFFParser_parseDict: "' + i + '" is a reserved command.'); + return NaN; + } + let i = []; + const a = []; + t = 0; + const s = e.length; + for (; t < s; ) { + let s = e[t]; + if (s <= 21) { + 12 === s && (s = (s << 8) | e[++t]); + a.push([s, i]); + i = []; + ++t; + } else i.push(parseOperand()); + } + return a; + } + parseIndex(e) { + const t = new CFFIndex(), + i = this.bytes, + a = (i[e++] << 8) | i[e++], + s = []; + let r, + n, + o = e; + if (0 !== a) { + const t = i[e++], + g = e + (a + 1) * t - 1; + for (r = 0, n = a + 1; r < n; ++r) { + let a = 0; + for (let s = 0; s < t; ++s) { + a <<= 8; + a += i[e++]; + } + s.push(g + a); + } + o = s[a]; + } + for (r = 0, n = s.length - 1; r < n; ++r) { + const e = s[r], + a = s[r + 1]; + t.add(i.subarray(e, a)); + } + return { obj: t, endPos: o }; + } + parseNameIndex(e) { + const t = []; + for (let i = 0, a = e.count; i < a; ++i) { + const a = e.get(i); + t.push(bytesToString(a)); + } + return t; + } + parseStringIndex(e) { + const t = new CFFStrings(); + for (let i = 0, a = e.count; i < a; ++i) { + const a = e.get(i); + t.add(bytesToString(a)); + } + return t; + } + createDict(e, t, i) { + const a = new e(i); + for (const [e, i] of t) a.setByKey(e, i); + return a; + } + parseCharString(e, t, i, a) { + if (!t || e.callDepth > 10) return !1; + let s = e.stackSize; + const r = e.stack; + let n = t.length; + for (let o = 0; o < n; ) { + const g = t[o++]; + let c = null; + if (12 === g) { + const e = t[o++]; + if (0 === e) { + t[o - 2] = 139; + t[o - 1] = 22; + s = 0; + } else c = Fi[e]; + } else if (28 === g) { + r[s] = ((t[o] << 24) | (t[o + 1] << 16)) >> 16; + o += 2; + s++; + } else if (14 === g) { + if (s >= 4) { + s -= 4; + if (this.seacAnalysisEnabled) { + e.seac = r.slice(s, s + 4); + return !1; + } + } + c = Di[g]; + } else if (g >= 32 && g <= 246) { + r[s] = g - 139; + s++; + } else if (g >= 247 && g <= 254) { + r[s] = + g < 251 + ? ((g - 247) << 8) + t[o] + 108 + : -((g - 251) << 8) - t[o] - 108; + o++; + s++; + } else if (255 === g) { + r[s] = + ((t[o] << 24) | (t[o + 1] << 16) | (t[o + 2] << 8) | t[o + 3]) / + 65536; + o += 4; + s++; + } else if (19 === g || 20 === g) { + e.hints += s >> 1; + if (0 === e.hints) { + t.copyWithin(o - 1, o, -1); + o -= 1; + n -= 1; + continue; + } + o += (e.hints + 7) >> 3; + s %= 2; + c = Di[g]; + } else { + if (10 === g || 29 === g) { + const t = 10 === g ? i : a; + if (!t) { + c = Di[g]; + warn("Missing subrsIndex for " + c.id); + return !1; + } + let n = 32768; + t.count < 1240 ? (n = 107) : t.count < 33900 && (n = 1131); + const o = r[--s] + n; + if (o < 0 || o >= t.count || isNaN(o)) { + c = Di[g]; + warn("Out of bounds subrIndex for " + c.id); + return !1; + } + e.stackSize = s; + e.callDepth++; + if (!this.parseCharString(e, t.get(o), i, a)) return !1; + e.callDepth--; + s = e.stackSize; + continue; + } + if (11 === g) { + e.stackSize = s; + return !0; + } + if (0 === g && o === t.length) { + t[o - 1] = 14; + c = Di[14]; + } else { + if (9 === g) { + t.copyWithin(o - 1, o, -1); + o -= 1; + n -= 1; + continue; + } + c = Di[g]; + } + } + if (c) { + if (c.stem) { + e.hints += s >> 1; + if (3 === g || 23 === g) e.hasVStems = !0; + else if (e.hasVStems && (1 === g || 18 === g)) { + warn("CFF stem hints are in wrong order"); + t[o - 1] = 1 === g ? 3 : 23; + } + } + if ("min" in c && !e.undefStack && s < c.min) { + warn( + "Not enough parameters for " + + c.id + + "; actual: " + + s + + ", expected: " + + c.min, + ); + if (0 === s) { + t[o - 1] = 14; + return !0; + } + return !1; + } + if (e.firstStackClearing && c.stackClearing) { + e.firstStackClearing = !1; + s -= c.min; + s >= 2 && c.stem + ? (s %= 2) + : s > 1 && + warn("Found too many parameters for stack-clearing command"); + s > 0 && (e.width = r[s - 1]); + } + if ("stackDelta" in c) { + "stackFn" in c && c.stackFn(r, s); + s += c.stackDelta; + } else if (c.stackClearing) s = 0; + else if (c.resetStack) { + s = 0; + e.undefStack = !1; + } else if (c.undefStack) { + s = 0; + e.undefStack = !0; + e.firstStackClearing = !1; + } + } + } + n < t.length && t.fill(14, n); + e.stackSize = s; + return !0; + } + parseCharStrings({ + charStrings: e, + localSubrIndex: t, + globalSubrIndex: i, + fdSelect: a, + fdArray: s, + privateDict: r, + }) { + const n = [], + o = [], + g = e.count; + for (let c = 0; c < g; c++) { + const g = e.get(c), + h = { + callDepth: 0, + stackSize: 0, + stack: [], + undefStack: !0, + hints: 0, + firstStackClearing: !0, + seac: null, + width: null, + hasVStems: !1, + }; + let l = !0, + C = null, + Q = r; + if (a && s.length) { + const e = a.getFDIndex(c); + if (-1 === e) { + warn("Glyph index is not in fd select."); + l = !1; + } + if (e >= s.length) { + warn("Invalid fd index for glyph index."); + l = !1; + } + if (l) { + Q = s[e].privateDict; + C = Q.subrsIndex; + } + } else t && (C = t); + l && (l = this.parseCharString(h, g, C, i)); + if (null !== h.width) { + const e = Q.getByName("nominalWidthX"); + o[c] = e + h.width; + } else { + const e = Q.getByName("defaultWidthX"); + o[c] = e; + } + null !== h.seac && (n[c] = h.seac); + l || e.set(c, new Uint8Array([14])); + } + return { charStrings: e, seacs: n, widths: o }; + } + emptyPrivateDictionary(e) { + const t = this.createDict(CFFPrivateDict, [], e.strings); + e.setByKey(18, [0, 0]); + e.privateDict = t; + } + parsePrivateDict(e) { + if (!e.hasName("Private")) { + this.emptyPrivateDictionary(e); + return; + } + const t = e.getByName("Private"); + if (!Array.isArray(t) || 2 !== t.length) { + e.removeByName("Private"); + return; + } + const i = t[0], + a = t[1]; + if (0 === i || a >= this.bytes.length) { + this.emptyPrivateDictionary(e); + return; + } + const s = a + i, + r = this.bytes.subarray(a, s), + n = this.parseDict(r), + o = this.createDict(CFFPrivateDict, n, e.strings); + e.privateDict = o; + 0 === o.getByName("ExpansionFactor") && + o.setByName("ExpansionFactor", 0.06); + if (!o.getByName("Subrs")) return; + const g = o.getByName("Subrs"), + c = a + g; + if (0 === g || c >= this.bytes.length) { + this.emptyPrivateDictionary(e); + return; + } + const h = this.parseIndex(c); + o.subrsIndex = h.obj; + } + parseCharsets(e, t, i, a) { + if (0 === e) return new CFFCharset(!0, Ri.ISO_ADOBE, Ci); + if (1 === e) return new CFFCharset(!0, Ri.EXPERT, Bi); + if (2 === e) return new CFFCharset(!0, Ri.EXPERT_SUBSET, Qi); + const s = this.bytes, + r = e, + n = s[e++], + o = [a ? 0 : ".notdef"]; + let g, c, h; + t -= 1; + switch (n) { + case 0: + for (h = 0; h < t; h++) { + g = (s[e++] << 8) | s[e++]; + o.push(a ? g : i.get(g)); + } + break; + case 1: + for (; o.length <= t; ) { + g = (s[e++] << 8) | s[e++]; + c = s[e++]; + for (h = 0; h <= c; h++) o.push(a ? g++ : i.get(g++)); + } + break; + case 2: + for (; o.length <= t; ) { + g = (s[e++] << 8) | s[e++]; + c = (s[e++] << 8) | s[e++]; + for (h = 0; h <= c; h++) o.push(a ? g++ : i.get(g++)); + } + break; + default: + throw new FormatError("Unknown charset format"); + } + const l = e, + C = s.subarray(r, l); + return new CFFCharset(!1, n, o, C); + } + parseEncoding(e, t, i, a) { + const s = Object.create(null), + r = this.bytes; + let n, + o, + g, + c = !1, + h = null; + if (0 === e || 1 === e) { + c = !0; + n = e; + const t = e ? Ei : fi; + for (o = 0, g = a.length; o < g; o++) { + const e = t.indexOf(a[o]); + -1 !== e && (s[e] = o); + } + } else { + const t = e; + n = r[e++]; + switch (127 & n) { + case 0: + const t = r[e++]; + for (o = 1; o <= t; o++) s[r[e++]] = o; + break; + case 1: + const i = r[e++]; + let a = 1; + for (o = 0; o < i; o++) { + const t = r[e++], + i = r[e++]; + for (let e = t; e <= t + i; e++) s[e] = a++; + } + break; + default: + throw new FormatError(`Unknown encoding format: ${n} in CFF`); + } + const g = e; + if (128 & n) { + r[t] &= 127; + !(function readSupplement() { + const t = r[e++]; + for (o = 0; o < t; o++) { + const t = r[e++], + n = (r[e++] << 8) + (255 & r[e++]); + s[t] = a.indexOf(i.get(n)); + } + })(); + } + h = r.subarray(t, g); + } + n &= 127; + return new CFFEncoding(c, n, s, h); + } + parseFDSelect(e, t) { + const i = this.bytes, + a = i[e++], + s = []; + let r; + switch (a) { + case 0: + for (r = 0; r < t; ++r) { + const t = i[e++]; + s.push(t); + } + break; + case 3: + const n = (i[e++] << 8) | i[e++]; + for (r = 0; r < n; ++r) { + let t = (i[e++] << 8) | i[e++]; + if (0 === r && 0 !== t) { + warn( + "parseFDSelect: The first range must have a first GID of 0 -- trying to recover.", + ); + t = 0; + } + const a = i[e++], + n = (i[e] << 8) | i[e + 1]; + for (let e = t; e < n; ++e) s.push(a); + } + e += 2; + break; + default: + throw new FormatError(`parseFDSelect: Unknown format "${a}".`); + } + if (s.length !== t) + throw new FormatError("parseFDSelect: Invalid font data."); + return new CFFFDSelect(a, s); + } +} +class CFF { + constructor() { + this.header = null; + this.names = []; + this.topDict = null; + this.strings = new CFFStrings(); + this.globalSubrIndex = null; + this.encoding = null; + this.charset = null; + this.charStrings = null; + this.fdArray = []; + this.fdSelect = null; + this.isCIDFont = !1; + } + duplicateFirstGlyph() { + if (this.charStrings.count >= 65535) { + warn("Not enough space in charstrings to duplicate first glyph."); + return; + } + const e = this.charStrings.get(0); + this.charStrings.add(e); + this.isCIDFont && this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0]); + } + hasGlyphId(e) { + if (e < 0 || e >= this.charStrings.count) return !1; + return this.charStrings.get(e).length > 0; + } +} +class CFFHeader { + constructor(e, t, i, a) { + this.major = e; + this.minor = t; + this.hdrSize = i; + this.offSize = a; + } +} +class CFFStrings { + constructor() { + this.strings = []; + } + get(e) { + return e >= 0 && e <= 390 + ? wi[e] + : e - bi <= this.strings.length + ? this.strings[e - bi] + : wi[0]; + } + getSID(e) { + let t = wi.indexOf(e); + if (-1 !== t) return t; + t = this.strings.indexOf(e); + return -1 !== t ? t + bi : -1; + } + add(e) { + this.strings.push(e); + } + get count() { + return this.strings.length; + } +} +class CFFIndex { + constructor() { + this.objects = []; + this.length = 0; + } + add(e) { + this.length += e.length; + this.objects.push(e); + } + set(e, t) { + this.length += t.length - this.objects[e].length; + this.objects[e] = t; + } + get(e) { + return this.objects[e]; + } + get count() { + return this.objects.length; + } +} +class CFFDict { + constructor(e, t) { + this.keyToNameMap = e.keyToNameMap; + this.nameToKeyMap = e.nameToKeyMap; + this.defaults = e.defaults; + this.types = e.types; + this.opcodes = e.opcodes; + this.order = e.order; + this.strings = t; + this.values = Object.create(null); + } + setByKey(e, t) { + if (!(e in this.keyToNameMap)) return !1; + if (0 === t.length) return !0; + for (const i of t) + if (isNaN(i)) { + warn(`Invalid CFFDict value: "${t}" for key "${e}".`); + return !0; + } + const i = this.types[e]; + ("num" !== i && "sid" !== i && "offset" !== i) || (t = t[0]); + this.values[e] = t; + return !0; + } + setByName(e, t) { + if (!(e in this.nameToKeyMap)) + throw new FormatError(`Invalid dictionary name "${e}"`); + this.values[this.nameToKeyMap[e]] = t; + } + hasName(e) { + return this.nameToKeyMap[e] in this.values; + } + getByName(e) { + if (!(e in this.nameToKeyMap)) + throw new FormatError(`Invalid dictionary name ${e}"`); + const t = this.nameToKeyMap[e]; + return t in this.values ? this.values[t] : this.defaults[t]; + } + removeByName(e) { + delete this.values[this.nameToKeyMap[e]]; + } + static createTables(e) { + const t = { + keyToNameMap: {}, + nameToKeyMap: {}, + defaults: {}, + types: {}, + opcodes: {}, + order: [], + }; + for (const i of e) { + const e = Array.isArray(i[0]) ? (i[0][0] << 8) + i[0][1] : i[0]; + t.keyToNameMap[e] = i[1]; + t.nameToKeyMap[i[1]] = e; + t.types[e] = i[2]; + t.defaults[e] = i[3]; + t.opcodes[e] = Array.isArray(i[0]) ? i[0] : [i[0]]; + t.order.push(e); + } + return t; + } +} +const Si = [ + [[12, 30], "ROS", ["sid", "sid", "num"], null], + [[12, 20], "SyntheticBase", "num", null], + [0, "version", "sid", null], + [1, "Notice", "sid", null], + [[12, 0], "Copyright", "sid", null], + [2, "FullName", "sid", null], + [3, "FamilyName", "sid", null], + [4, "Weight", "sid", null], + [[12, 1], "isFixedPitch", "num", 0], + [[12, 2], "ItalicAngle", "num", 0], + [[12, 3], "UnderlinePosition", "num", -100], + [[12, 4], "UnderlineThickness", "num", 50], + [[12, 5], "PaintType", "num", 0], + [[12, 6], "CharstringType", "num", 2], + [ + [12, 7], + "FontMatrix", + ["num", "num", "num", "num", "num", "num"], + [0.001, 0, 0, 0.001, 0, 0], + ], + [13, "UniqueID", "num", null], + [5, "FontBBox", ["num", "num", "num", "num"], [0, 0, 0, 0]], + [[12, 8], "StrokeWidth", "num", 0], + [14, "XUID", "array", null], + [15, "charset", "offset", 0], + [16, "Encoding", "offset", 0], + [17, "CharStrings", "offset", 0], + [18, "Private", ["offset", "offset"], null], + [[12, 21], "PostScript", "sid", null], + [[12, 22], "BaseFontName", "sid", null], + [[12, 23], "BaseFontBlend", "delta", null], + [[12, 31], "CIDFontVersion", "num", 0], + [[12, 32], "CIDFontRevision", "num", 0], + [[12, 33], "CIDFontType", "num", 0], + [[12, 34], "CIDCount", "num", 8720], + [[12, 35], "UIDBase", "num", null], + [[12, 37], "FDSelect", "offset", null], + [[12, 36], "FDArray", "offset", null], + [[12, 38], "FontName", "sid", null], +]; +class CFFTopDict extends CFFDict { + static get tables() { + return shadow(this, "tables", this.createTables(Si)); + } + constructor(e) { + super(CFFTopDict.tables, e); + this.privateDict = null; + } +} +const ki = [ + [6, "BlueValues", "delta", null], + [7, "OtherBlues", "delta", null], + [8, "FamilyBlues", "delta", null], + [9, "FamilyOtherBlues", "delta", null], + [[12, 9], "BlueScale", "num", 0.039625], + [[12, 10], "BlueShift", "num", 7], + [[12, 11], "BlueFuzz", "num", 1], + [10, "StdHW", "num", null], + [11, "StdVW", "num", null], + [[12, 12], "StemSnapH", "delta", null], + [[12, 13], "StemSnapV", "delta", null], + [[12, 14], "ForceBold", "num", 0], + [[12, 17], "LanguageGroup", "num", 0], + [[12, 18], "ExpansionFactor", "num", 0.06], + [[12, 19], "initialRandomSeed", "num", 0], + [20, "defaultWidthX", "num", 0], + [21, "nominalWidthX", "num", 0], + [19, "Subrs", "offset", null], +]; +class CFFPrivateDict extends CFFDict { + static get tables() { + return shadow(this, "tables", this.createTables(ki)); + } + constructor(e) { + super(CFFPrivateDict.tables, e); + this.subrsIndex = null; + } +} +const Ri = { ISO_ADOBE: 0, EXPERT: 1, EXPERT_SUBSET: 2 }; +class CFFCharset { + constructor(e, t, i, a) { + this.predefined = e; + this.format = t; + this.charset = i; + this.raw = a; + } +} +class CFFEncoding { + constructor(e, t, i, a) { + this.predefined = e; + this.format = t; + this.encoding = i; + this.raw = a; + } +} +class CFFFDSelect { + constructor(e, t) { + this.format = e; + this.fdSelect = t; + } + getFDIndex(e) { + return e < 0 || e >= this.fdSelect.length ? -1 : this.fdSelect[e]; + } +} +class CFFOffsetTracker { + constructor() { + this.offsets = Object.create(null); + } + isTracking(e) { + return e in this.offsets; + } + track(e, t) { + if (e in this.offsets) + throw new FormatError(`Already tracking location of ${e}`); + this.offsets[e] = t; + } + offset(e) { + for (const t in this.offsets) this.offsets[t] += e; + } + setEntryLocation(e, t, i) { + if (!(e in this.offsets)) + throw new FormatError(`Not tracking location of ${e}`); + const a = i.data, + s = this.offsets[e]; + for (let e = 0, i = t.length; e < i; ++e) { + const i = 5 * e + s, + r = i + 1, + n = i + 2, + o = i + 3, + g = i + 4; + if (29 !== a[i] || 0 !== a[r] || 0 !== a[n] || 0 !== a[o] || 0 !== a[g]) + throw new FormatError("writing to an offset that is not empty"); + const c = t[e]; + a[i] = 29; + a[r] = (c >> 24) & 255; + a[n] = (c >> 16) & 255; + a[o] = (c >> 8) & 255; + a[g] = 255 & c; + } + } +} +class CFFCompiler { + constructor(e) { + this.cff = e; + } + compile() { + const e = this.cff, + t = { + data: [], + length: 0, + add(e) { + try { + this.data.push(...e); + } catch { + this.data = this.data.concat(e); + } + this.length = this.data.length; + }, + }, + i = this.compileHeader(e.header); + t.add(i); + const a = this.compileNameIndex(e.names); + t.add(a); + if (e.isCIDFont && e.topDict.hasName("FontMatrix")) { + const t = e.topDict.getByName("FontMatrix"); + e.topDict.removeByName("FontMatrix"); + for (const i of e.fdArray) { + let e = t.slice(0); + i.hasName("FontMatrix") && + (e = Util.transform(e, i.getByName("FontMatrix"))); + i.setByName("FontMatrix", e); + } + } + const s = e.topDict.getByName("XUID"); + s?.length > 16 && e.topDict.removeByName("XUID"); + e.topDict.setByName("charset", 0); + let r = this.compileTopDicts([e.topDict], t.length, e.isCIDFont); + t.add(r.output); + const n = r.trackers[0], + o = this.compileStringIndex(e.strings.strings); + t.add(o); + const g = this.compileIndex(e.globalSubrIndex); + t.add(g); + if (e.encoding && e.topDict.hasName("Encoding")) + if (e.encoding.predefined) + n.setEntryLocation("Encoding", [e.encoding.format], t); + else { + const i = this.compileEncoding(e.encoding); + n.setEntryLocation("Encoding", [t.length], t); + t.add(i); + } + const c = this.compileCharset( + e.charset, + e.charStrings.count, + e.strings, + e.isCIDFont, + ); + n.setEntryLocation("charset", [t.length], t); + t.add(c); + const h = this.compileCharStrings(e.charStrings); + n.setEntryLocation("CharStrings", [t.length], t); + t.add(h); + if (e.isCIDFont) { + n.setEntryLocation("FDSelect", [t.length], t); + const i = this.compileFDSelect(e.fdSelect); + t.add(i); + r = this.compileTopDicts(e.fdArray, t.length, !0); + n.setEntryLocation("FDArray", [t.length], t); + t.add(r.output); + const a = r.trackers; + this.compilePrivateDicts(e.fdArray, a, t); + } + this.compilePrivateDicts([e.topDict], [n], t); + t.add([0]); + return t.data; + } + encodeNumber(e) { + return Number.isInteger(e) ? this.encodeInteger(e) : this.encodeFloat(e); + } + static get EncodeFloatRegExp() { + return shadow( + this, + "EncodeFloatRegExp", + /\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/, + ); + } + encodeFloat(e) { + let t = e.toString(); + const i = CFFCompiler.EncodeFloatRegExp.exec(t); + if (i) { + const a = parseFloat("1e" + ((i[2] ? +i[2] : 0) + i[1].length)); + t = (Math.round(e * a) / a).toString(); + } + let a, + s, + r = ""; + for (a = 0, s = t.length; a < s; ++a) { + const e = t[a]; + r += + "e" === e + ? "-" === t[++a] + ? "c" + : "b" + : "." === e + ? "a" + : "-" === e + ? "e" + : e; + } + r += 1 & r.length ? "f" : "ff"; + const n = [30]; + for (a = 0, s = r.length; a < s; a += 2) + n.push(parseInt(r.substring(a, a + 2), 16)); + return n; + } + encodeInteger(e) { + let t; + t = + e >= -107 && e <= 107 + ? [e + 139] + : e >= 108 && e <= 1131 + ? [247 + ((e -= 108) >> 8), 255 & e] + : e >= -1131 && e <= -108 + ? [251 + ((e = -e - 108) >> 8), 255 & e] + : e >= -32768 && e <= 32767 + ? [28, (e >> 8) & 255, 255 & e] + : [29, (e >> 24) & 255, (e >> 16) & 255, (e >> 8) & 255, 255 & e]; + return t; + } + compileHeader(e) { + return [e.major, e.minor, 4, e.offSize]; + } + compileNameIndex(e) { + const t = new CFFIndex(); + for (const i of e) { + const e = Math.min(i.length, 127); + let a = new Array(e); + for (let t = 0; t < e; t++) { + let e = i[t]; + (e < "!" || + e > "~" || + "[" === e || + "]" === e || + "(" === e || + ")" === e || + "{" === e || + "}" === e || + "<" === e || + ">" === e || + "/" === e || + "%" === e) && + (e = "_"); + a[t] = e; + } + a = a.join(""); + "" === a && (a = "Bad_Font_Name"); + t.add(stringToBytes(a)); + } + return this.compileIndex(t); + } + compileTopDicts(e, t, i) { + const a = []; + let s = new CFFIndex(); + for (const r of e) { + if (i) { + r.removeByName("CIDFontVersion"); + r.removeByName("CIDFontRevision"); + r.removeByName("CIDFontType"); + r.removeByName("CIDCount"); + r.removeByName("UIDBase"); + } + const e = new CFFOffsetTracker(), + n = this.compileDict(r, e); + a.push(e); + s.add(n); + e.offset(t); + } + s = this.compileIndex(s, a); + return { trackers: a, output: s }; + } + compilePrivateDicts(e, t, i) { + for (let a = 0, s = e.length; a < s; ++a) { + const s = e[a], + r = s.privateDict; + if (!r || !s.hasName("Private")) + throw new FormatError("There must be a private dictionary."); + const n = new CFFOffsetTracker(), + o = this.compileDict(r, n); + let g = i.length; + n.offset(g); + o.length || (g = 0); + t[a].setEntryLocation("Private", [o.length, g], i); + i.add(o); + if (r.subrsIndex && r.hasName("Subrs")) { + const e = this.compileIndex(r.subrsIndex); + n.setEntryLocation("Subrs", [o.length], i); + i.add(e); + } + } + } + compileDict(e, t) { + const i = []; + for (const a of e.order) { + if (!(a in e.values)) continue; + let s = e.values[a], + r = e.types[a]; + Array.isArray(r) || (r = [r]); + Array.isArray(s) || (s = [s]); + if (0 !== s.length) { + for (let n = 0, o = r.length; n < o; ++n) { + const o = r[n], + g = s[n]; + switch (o) { + case "num": + case "sid": + i.push(...this.encodeNumber(g)); + break; + case "offset": + const r = e.keyToNameMap[a]; + t.isTracking(r) || t.track(r, i.length); + i.push(29, 0, 0, 0, 0); + break; + case "array": + case "delta": + i.push(...this.encodeNumber(g)); + for (let e = 1, t = s.length; e < t; ++e) + i.push(...this.encodeNumber(s[e])); + break; + default: + throw new FormatError(`Unknown data type of ${o}`); + } + } + i.push(...e.opcodes[a]); + } + } + return i; + } + compileStringIndex(e) { + const t = new CFFIndex(); + for (const i of e) t.add(stringToBytes(i)); + return this.compileIndex(t); + } + compileCharStrings(e) { + const t = new CFFIndex(); + for (let i = 0; i < e.count; i++) { + const a = e.get(i); + 0 !== a.length ? t.add(a) : t.add(new Uint8Array([139, 14])); + } + return this.compileIndex(t); + } + compileCharset(e, t, i, a) { + let s; + const r = t - 1; + if (a) s = new Uint8Array([2, 0, 0, (r >> 8) & 255, 255 & r]); + else { + s = new Uint8Array(1 + 2 * r); + s[0] = 0; + let t = 0; + const a = e.charset.length; + let n = !1; + for (let r = 1; r < s.length; r += 2) { + let o = 0; + if (t < a) { + const a = e.charset[t++]; + o = i.getSID(a); + if (-1 === o) { + o = 0; + if (!n) { + n = !0; + warn(`Couldn't find ${a} in CFF strings`); + } + } + } + s[r] = (o >> 8) & 255; + s[r + 1] = 255 & o; + } + } + return this.compileTypedArray(s); + } + compileEncoding(e) { + return this.compileTypedArray(e.raw); + } + compileFDSelect(e) { + const t = e.format; + let i, a; + switch (t) { + case 0: + i = new Uint8Array(1 + e.fdSelect.length); + i[0] = t; + for (a = 0; a < e.fdSelect.length; a++) i[a + 1] = e.fdSelect[a]; + break; + case 3: + const s = 0; + let r = e.fdSelect[0]; + const n = [t, 0, 0, (s >> 8) & 255, 255 & s, r]; + for (a = 1; a < e.fdSelect.length; a++) { + const t = e.fdSelect[a]; + if (t !== r) { + n.push((a >> 8) & 255, 255 & a, t); + r = t; + } + } + const o = (n.length - 3) / 3; + n[1] = (o >> 8) & 255; + n[2] = 255 & o; + n.push((a >> 8) & 255, 255 & a); + i = new Uint8Array(n); + } + return this.compileTypedArray(i); + } + compileTypedArray(e) { + return Array.from(e); + } + compileIndex(e, t = []) { + const i = e.objects, + a = i.length; + if (0 === a) return [0, 0]; + const s = [(a >> 8) & 255, 255 & a]; + let r, + n, + o = 1; + for (r = 0; r < a; ++r) o += i[r].length; + n = o < 256 ? 1 : o < 65536 ? 2 : o < 16777216 ? 3 : 4; + s.push(n); + let g = 1; + for (r = 0; r < a + 1; r++) { + 1 === n + ? s.push(255 & g) + : 2 === n + ? s.push((g >> 8) & 255, 255 & g) + : 3 === n + ? s.push((g >> 16) & 255, (g >> 8) & 255, 255 & g) + : s.push( + (g >>> 24) & 255, + (g >> 16) & 255, + (g >> 8) & 255, + 255 & g, + ); + i[r] && (g += i[r].length); + } + for (r = 0; r < a; r++) { + t[r] && t[r].offset(s.length); + s.push(...i[r]); + } + return s; + } +} +const Ni = getLookupTableFactory(function (e) { + e.A = 65; + e.AE = 198; + e.AEacute = 508; + e.AEmacron = 482; + e.AEsmall = 63462; + e.Aacute = 193; + e.Aacutesmall = 63457; + e.Abreve = 258; + e.Abreveacute = 7854; + e.Abrevecyrillic = 1232; + e.Abrevedotbelow = 7862; + e.Abrevegrave = 7856; + e.Abrevehookabove = 7858; + e.Abrevetilde = 7860; + e.Acaron = 461; + e.Acircle = 9398; + e.Acircumflex = 194; + e.Acircumflexacute = 7844; + e.Acircumflexdotbelow = 7852; + e.Acircumflexgrave = 7846; + e.Acircumflexhookabove = 7848; + e.Acircumflexsmall = 63458; + e.Acircumflextilde = 7850; + e.Acute = 63177; + e.Acutesmall = 63412; + e.Acyrillic = 1040; + e.Adblgrave = 512; + e.Adieresis = 196; + e.Adieresiscyrillic = 1234; + e.Adieresismacron = 478; + e.Adieresissmall = 63460; + e.Adotbelow = 7840; + e.Adotmacron = 480; + e.Agrave = 192; + e.Agravesmall = 63456; + e.Ahookabove = 7842; + e.Aiecyrillic = 1236; + e.Ainvertedbreve = 514; + e.Alpha = 913; + e.Alphatonos = 902; + e.Amacron = 256; + e.Amonospace = 65313; + e.Aogonek = 260; + e.Aring = 197; + e.Aringacute = 506; + e.Aringbelow = 7680; + e.Aringsmall = 63461; + e.Asmall = 63329; + e.Atilde = 195; + e.Atildesmall = 63459; + e.Aybarmenian = 1329; + e.B = 66; + e.Bcircle = 9399; + e.Bdotaccent = 7682; + e.Bdotbelow = 7684; + e.Becyrillic = 1041; + e.Benarmenian = 1330; + e.Beta = 914; + e.Bhook = 385; + e.Blinebelow = 7686; + e.Bmonospace = 65314; + e.Brevesmall = 63220; + e.Bsmall = 63330; + e.Btopbar = 386; + e.C = 67; + e.Caarmenian = 1342; + e.Cacute = 262; + e.Caron = 63178; + e.Caronsmall = 63221; + e.Ccaron = 268; + e.Ccedilla = 199; + e.Ccedillaacute = 7688; + e.Ccedillasmall = 63463; + e.Ccircle = 9400; + e.Ccircumflex = 264; + e.Cdot = 266; + e.Cdotaccent = 266; + e.Cedillasmall = 63416; + e.Chaarmenian = 1353; + e.Cheabkhasiancyrillic = 1212; + e.Checyrillic = 1063; + e.Chedescenderabkhasiancyrillic = 1214; + e.Chedescendercyrillic = 1206; + e.Chedieresiscyrillic = 1268; + e.Cheharmenian = 1347; + e.Chekhakassiancyrillic = 1227; + e.Cheverticalstrokecyrillic = 1208; + e.Chi = 935; + e.Chook = 391; + e.Circumflexsmall = 63222; + e.Cmonospace = 65315; + e.Coarmenian = 1361; + e.Csmall = 63331; + e.D = 68; + e.DZ = 497; + e.DZcaron = 452; + e.Daarmenian = 1332; + e.Dafrican = 393; + e.Dcaron = 270; + e.Dcedilla = 7696; + e.Dcircle = 9401; + e.Dcircumflexbelow = 7698; + e.Dcroat = 272; + e.Ddotaccent = 7690; + e.Ddotbelow = 7692; + e.Decyrillic = 1044; + e.Deicoptic = 1006; + e.Delta = 8710; + e.Deltagreek = 916; + e.Dhook = 394; + e.Dieresis = 63179; + e.DieresisAcute = 63180; + e.DieresisGrave = 63181; + e.Dieresissmall = 63400; + e.Digammagreek = 988; + e.Djecyrillic = 1026; + e.Dlinebelow = 7694; + e.Dmonospace = 65316; + e.Dotaccentsmall = 63223; + e.Dslash = 272; + e.Dsmall = 63332; + e.Dtopbar = 395; + e.Dz = 498; + e.Dzcaron = 453; + e.Dzeabkhasiancyrillic = 1248; + e.Dzecyrillic = 1029; + e.Dzhecyrillic = 1039; + e.E = 69; + e.Eacute = 201; + e.Eacutesmall = 63465; + e.Ebreve = 276; + e.Ecaron = 282; + e.Ecedillabreve = 7708; + e.Echarmenian = 1333; + e.Ecircle = 9402; + e.Ecircumflex = 202; + e.Ecircumflexacute = 7870; + e.Ecircumflexbelow = 7704; + e.Ecircumflexdotbelow = 7878; + e.Ecircumflexgrave = 7872; + e.Ecircumflexhookabove = 7874; + e.Ecircumflexsmall = 63466; + e.Ecircumflextilde = 7876; + e.Ecyrillic = 1028; + e.Edblgrave = 516; + e.Edieresis = 203; + e.Edieresissmall = 63467; + e.Edot = 278; + e.Edotaccent = 278; + e.Edotbelow = 7864; + e.Efcyrillic = 1060; + e.Egrave = 200; + e.Egravesmall = 63464; + e.Eharmenian = 1335; + e.Ehookabove = 7866; + e.Eightroman = 8551; + e.Einvertedbreve = 518; + e.Eiotifiedcyrillic = 1124; + e.Elcyrillic = 1051; + e.Elevenroman = 8554; + e.Emacron = 274; + e.Emacronacute = 7702; + e.Emacrongrave = 7700; + e.Emcyrillic = 1052; + e.Emonospace = 65317; + e.Encyrillic = 1053; + e.Endescendercyrillic = 1186; + e.Eng = 330; + e.Enghecyrillic = 1188; + e.Enhookcyrillic = 1223; + e.Eogonek = 280; + e.Eopen = 400; + e.Epsilon = 917; + e.Epsilontonos = 904; + e.Ercyrillic = 1056; + e.Ereversed = 398; + e.Ereversedcyrillic = 1069; + e.Escyrillic = 1057; + e.Esdescendercyrillic = 1194; + e.Esh = 425; + e.Esmall = 63333; + e.Eta = 919; + e.Etarmenian = 1336; + e.Etatonos = 905; + e.Eth = 208; + e.Ethsmall = 63472; + e.Etilde = 7868; + e.Etildebelow = 7706; + e.Euro = 8364; + e.Ezh = 439; + e.Ezhcaron = 494; + e.Ezhreversed = 440; + e.F = 70; + e.Fcircle = 9403; + e.Fdotaccent = 7710; + e.Feharmenian = 1366; + e.Feicoptic = 996; + e.Fhook = 401; + e.Fitacyrillic = 1138; + e.Fiveroman = 8548; + e.Fmonospace = 65318; + e.Fourroman = 8547; + e.Fsmall = 63334; + e.G = 71; + e.GBsquare = 13191; + e.Gacute = 500; + e.Gamma = 915; + e.Gammaafrican = 404; + e.Gangiacoptic = 1002; + e.Gbreve = 286; + e.Gcaron = 486; + e.Gcedilla = 290; + e.Gcircle = 9404; + e.Gcircumflex = 284; + e.Gcommaaccent = 290; + e.Gdot = 288; + e.Gdotaccent = 288; + e.Gecyrillic = 1043; + e.Ghadarmenian = 1346; + e.Ghemiddlehookcyrillic = 1172; + e.Ghestrokecyrillic = 1170; + e.Gheupturncyrillic = 1168; + e.Ghook = 403; + e.Gimarmenian = 1331; + e.Gjecyrillic = 1027; + e.Gmacron = 7712; + e.Gmonospace = 65319; + e.Grave = 63182; + e.Gravesmall = 63328; + e.Gsmall = 63335; + e.Gsmallhook = 667; + e.Gstroke = 484; + e.H = 72; + e.H18533 = 9679; + e.H18543 = 9642; + e.H18551 = 9643; + e.H22073 = 9633; + e.HPsquare = 13259; + e.Haabkhasiancyrillic = 1192; + e.Hadescendercyrillic = 1202; + e.Hardsigncyrillic = 1066; + e.Hbar = 294; + e.Hbrevebelow = 7722; + e.Hcedilla = 7720; + e.Hcircle = 9405; + e.Hcircumflex = 292; + e.Hdieresis = 7718; + e.Hdotaccent = 7714; + e.Hdotbelow = 7716; + e.Hmonospace = 65320; + e.Hoarmenian = 1344; + e.Horicoptic = 1e3; + e.Hsmall = 63336; + e.Hungarumlaut = 63183; + e.Hungarumlautsmall = 63224; + e.Hzsquare = 13200; + e.I = 73; + e.IAcyrillic = 1071; + e.IJ = 306; + e.IUcyrillic = 1070; + e.Iacute = 205; + e.Iacutesmall = 63469; + e.Ibreve = 300; + e.Icaron = 463; + e.Icircle = 9406; + e.Icircumflex = 206; + e.Icircumflexsmall = 63470; + e.Icyrillic = 1030; + e.Idblgrave = 520; + e.Idieresis = 207; + e.Idieresisacute = 7726; + e.Idieresiscyrillic = 1252; + e.Idieresissmall = 63471; + e.Idot = 304; + e.Idotaccent = 304; + e.Idotbelow = 7882; + e.Iebrevecyrillic = 1238; + e.Iecyrillic = 1045; + e.Ifraktur = 8465; + e.Igrave = 204; + e.Igravesmall = 63468; + e.Ihookabove = 7880; + e.Iicyrillic = 1048; + e.Iinvertedbreve = 522; + e.Iishortcyrillic = 1049; + e.Imacron = 298; + e.Imacroncyrillic = 1250; + e.Imonospace = 65321; + e.Iniarmenian = 1339; + e.Iocyrillic = 1025; + e.Iogonek = 302; + e.Iota = 921; + e.Iotaafrican = 406; + e.Iotadieresis = 938; + e.Iotatonos = 906; + e.Ismall = 63337; + e.Istroke = 407; + e.Itilde = 296; + e.Itildebelow = 7724; + e.Izhitsacyrillic = 1140; + e.Izhitsadblgravecyrillic = 1142; + e.J = 74; + e.Jaarmenian = 1345; + e.Jcircle = 9407; + e.Jcircumflex = 308; + e.Jecyrillic = 1032; + e.Jheharmenian = 1355; + e.Jmonospace = 65322; + e.Jsmall = 63338; + e.K = 75; + e.KBsquare = 13189; + e.KKsquare = 13261; + e.Kabashkircyrillic = 1184; + e.Kacute = 7728; + e.Kacyrillic = 1050; + e.Kadescendercyrillic = 1178; + e.Kahookcyrillic = 1219; + e.Kappa = 922; + e.Kastrokecyrillic = 1182; + e.Kaverticalstrokecyrillic = 1180; + e.Kcaron = 488; + e.Kcedilla = 310; + e.Kcircle = 9408; + e.Kcommaaccent = 310; + e.Kdotbelow = 7730; + e.Keharmenian = 1364; + e.Kenarmenian = 1343; + e.Khacyrillic = 1061; + e.Kheicoptic = 998; + e.Khook = 408; + e.Kjecyrillic = 1036; + e.Klinebelow = 7732; + e.Kmonospace = 65323; + e.Koppacyrillic = 1152; + e.Koppagreek = 990; + e.Ksicyrillic = 1134; + e.Ksmall = 63339; + e.L = 76; + e.LJ = 455; + e.LL = 63167; + e.Lacute = 313; + e.Lambda = 923; + e.Lcaron = 317; + e.Lcedilla = 315; + e.Lcircle = 9409; + e.Lcircumflexbelow = 7740; + e.Lcommaaccent = 315; + e.Ldot = 319; + e.Ldotaccent = 319; + e.Ldotbelow = 7734; + e.Ldotbelowmacron = 7736; + e.Liwnarmenian = 1340; + e.Lj = 456; + e.Ljecyrillic = 1033; + e.Llinebelow = 7738; + e.Lmonospace = 65324; + e.Lslash = 321; + e.Lslashsmall = 63225; + e.Lsmall = 63340; + e.M = 77; + e.MBsquare = 13190; + e.Macron = 63184; + e.Macronsmall = 63407; + e.Macute = 7742; + e.Mcircle = 9410; + e.Mdotaccent = 7744; + e.Mdotbelow = 7746; + e.Menarmenian = 1348; + e.Mmonospace = 65325; + e.Msmall = 63341; + e.Mturned = 412; + e.Mu = 924; + e.N = 78; + e.NJ = 458; + e.Nacute = 323; + e.Ncaron = 327; + e.Ncedilla = 325; + e.Ncircle = 9411; + e.Ncircumflexbelow = 7754; + e.Ncommaaccent = 325; + e.Ndotaccent = 7748; + e.Ndotbelow = 7750; + e.Nhookleft = 413; + e.Nineroman = 8552; + e.Nj = 459; + e.Njecyrillic = 1034; + e.Nlinebelow = 7752; + e.Nmonospace = 65326; + e.Nowarmenian = 1350; + e.Nsmall = 63342; + e.Ntilde = 209; + e.Ntildesmall = 63473; + e.Nu = 925; + e.O = 79; + e.OE = 338; + e.OEsmall = 63226; + e.Oacute = 211; + e.Oacutesmall = 63475; + e.Obarredcyrillic = 1256; + e.Obarreddieresiscyrillic = 1258; + e.Obreve = 334; + e.Ocaron = 465; + e.Ocenteredtilde = 415; + e.Ocircle = 9412; + e.Ocircumflex = 212; + e.Ocircumflexacute = 7888; + e.Ocircumflexdotbelow = 7896; + e.Ocircumflexgrave = 7890; + e.Ocircumflexhookabove = 7892; + e.Ocircumflexsmall = 63476; + e.Ocircumflextilde = 7894; + e.Ocyrillic = 1054; + e.Odblacute = 336; + e.Odblgrave = 524; + e.Odieresis = 214; + e.Odieresiscyrillic = 1254; + e.Odieresissmall = 63478; + e.Odotbelow = 7884; + e.Ogoneksmall = 63227; + e.Ograve = 210; + e.Ogravesmall = 63474; + e.Oharmenian = 1365; + e.Ohm = 8486; + e.Ohookabove = 7886; + e.Ohorn = 416; + e.Ohornacute = 7898; + e.Ohorndotbelow = 7906; + e.Ohorngrave = 7900; + e.Ohornhookabove = 7902; + e.Ohorntilde = 7904; + e.Ohungarumlaut = 336; + e.Oi = 418; + e.Oinvertedbreve = 526; + e.Omacron = 332; + e.Omacronacute = 7762; + e.Omacrongrave = 7760; + e.Omega = 8486; + e.Omegacyrillic = 1120; + e.Omegagreek = 937; + e.Omegaroundcyrillic = 1146; + e.Omegatitlocyrillic = 1148; + e.Omegatonos = 911; + e.Omicron = 927; + e.Omicrontonos = 908; + e.Omonospace = 65327; + e.Oneroman = 8544; + e.Oogonek = 490; + e.Oogonekmacron = 492; + e.Oopen = 390; + e.Oslash = 216; + e.Oslashacute = 510; + e.Oslashsmall = 63480; + e.Osmall = 63343; + e.Ostrokeacute = 510; + e.Otcyrillic = 1150; + e.Otilde = 213; + e.Otildeacute = 7756; + e.Otildedieresis = 7758; + e.Otildesmall = 63477; + e.P = 80; + e.Pacute = 7764; + e.Pcircle = 9413; + e.Pdotaccent = 7766; + e.Pecyrillic = 1055; + e.Peharmenian = 1354; + e.Pemiddlehookcyrillic = 1190; + e.Phi = 934; + e.Phook = 420; + e.Pi = 928; + e.Piwrarmenian = 1363; + e.Pmonospace = 65328; + e.Psi = 936; + e.Psicyrillic = 1136; + e.Psmall = 63344; + e.Q = 81; + e.Qcircle = 9414; + e.Qmonospace = 65329; + e.Qsmall = 63345; + e.R = 82; + e.Raarmenian = 1356; + e.Racute = 340; + e.Rcaron = 344; + e.Rcedilla = 342; + e.Rcircle = 9415; + e.Rcommaaccent = 342; + e.Rdblgrave = 528; + e.Rdotaccent = 7768; + e.Rdotbelow = 7770; + e.Rdotbelowmacron = 7772; + e.Reharmenian = 1360; + e.Rfraktur = 8476; + e.Rho = 929; + e.Ringsmall = 63228; + e.Rinvertedbreve = 530; + e.Rlinebelow = 7774; + e.Rmonospace = 65330; + e.Rsmall = 63346; + e.Rsmallinverted = 641; + e.Rsmallinvertedsuperior = 694; + e.S = 83; + e.SF010000 = 9484; + e.SF020000 = 9492; + e.SF030000 = 9488; + e.SF040000 = 9496; + e.SF050000 = 9532; + e.SF060000 = 9516; + e.SF070000 = 9524; + e.SF080000 = 9500; + e.SF090000 = 9508; + e.SF100000 = 9472; + e.SF110000 = 9474; + e.SF190000 = 9569; + e.SF200000 = 9570; + e.SF210000 = 9558; + e.SF220000 = 9557; + e.SF230000 = 9571; + e.SF240000 = 9553; + e.SF250000 = 9559; + e.SF260000 = 9565; + e.SF270000 = 9564; + e.SF280000 = 9563; + e.SF360000 = 9566; + e.SF370000 = 9567; + e.SF380000 = 9562; + e.SF390000 = 9556; + e.SF400000 = 9577; + e.SF410000 = 9574; + e.SF420000 = 9568; + e.SF430000 = 9552; + e.SF440000 = 9580; + e.SF450000 = 9575; + e.SF460000 = 9576; + e.SF470000 = 9572; + e.SF480000 = 9573; + e.SF490000 = 9561; + e.SF500000 = 9560; + e.SF510000 = 9554; + e.SF520000 = 9555; + e.SF530000 = 9579; + e.SF540000 = 9578; + e.Sacute = 346; + e.Sacutedotaccent = 7780; + e.Sampigreek = 992; + e.Scaron = 352; + e.Scarondotaccent = 7782; + e.Scaronsmall = 63229; + e.Scedilla = 350; + e.Schwa = 399; + e.Schwacyrillic = 1240; + e.Schwadieresiscyrillic = 1242; + e.Scircle = 9416; + e.Scircumflex = 348; + e.Scommaaccent = 536; + e.Sdotaccent = 7776; + e.Sdotbelow = 7778; + e.Sdotbelowdotaccent = 7784; + e.Seharmenian = 1357; + e.Sevenroman = 8550; + e.Shaarmenian = 1351; + e.Shacyrillic = 1064; + e.Shchacyrillic = 1065; + e.Sheicoptic = 994; + e.Shhacyrillic = 1210; + e.Shimacoptic = 1004; + e.Sigma = 931; + e.Sixroman = 8549; + e.Smonospace = 65331; + e.Softsigncyrillic = 1068; + e.Ssmall = 63347; + e.Stigmagreek = 986; + e.T = 84; + e.Tau = 932; + e.Tbar = 358; + e.Tcaron = 356; + e.Tcedilla = 354; + e.Tcircle = 9417; + e.Tcircumflexbelow = 7792; + e.Tcommaaccent = 354; + e.Tdotaccent = 7786; + e.Tdotbelow = 7788; + e.Tecyrillic = 1058; + e.Tedescendercyrillic = 1196; + e.Tenroman = 8553; + e.Tetsecyrillic = 1204; + e.Theta = 920; + e.Thook = 428; + e.Thorn = 222; + e.Thornsmall = 63486; + e.Threeroman = 8546; + e.Tildesmall = 63230; + e.Tiwnarmenian = 1359; + e.Tlinebelow = 7790; + e.Tmonospace = 65332; + e.Toarmenian = 1337; + e.Tonefive = 444; + e.Tonesix = 388; + e.Tonetwo = 423; + e.Tretroflexhook = 430; + e.Tsecyrillic = 1062; + e.Tshecyrillic = 1035; + e.Tsmall = 63348; + e.Twelveroman = 8555; + e.Tworoman = 8545; + e.U = 85; + e.Uacute = 218; + e.Uacutesmall = 63482; + e.Ubreve = 364; + e.Ucaron = 467; + e.Ucircle = 9418; + e.Ucircumflex = 219; + e.Ucircumflexbelow = 7798; + e.Ucircumflexsmall = 63483; + e.Ucyrillic = 1059; + e.Udblacute = 368; + e.Udblgrave = 532; + e.Udieresis = 220; + e.Udieresisacute = 471; + e.Udieresisbelow = 7794; + e.Udieresiscaron = 473; + e.Udieresiscyrillic = 1264; + e.Udieresisgrave = 475; + e.Udieresismacron = 469; + e.Udieresissmall = 63484; + e.Udotbelow = 7908; + e.Ugrave = 217; + e.Ugravesmall = 63481; + e.Uhookabove = 7910; + e.Uhorn = 431; + e.Uhornacute = 7912; + e.Uhorndotbelow = 7920; + e.Uhorngrave = 7914; + e.Uhornhookabove = 7916; + e.Uhorntilde = 7918; + e.Uhungarumlaut = 368; + e.Uhungarumlautcyrillic = 1266; + e.Uinvertedbreve = 534; + e.Ukcyrillic = 1144; + e.Umacron = 362; + e.Umacroncyrillic = 1262; + e.Umacrondieresis = 7802; + e.Umonospace = 65333; + e.Uogonek = 370; + e.Upsilon = 933; + e.Upsilon1 = 978; + e.Upsilonacutehooksymbolgreek = 979; + e.Upsilonafrican = 433; + e.Upsilondieresis = 939; + e.Upsilondieresishooksymbolgreek = 980; + e.Upsilonhooksymbol = 978; + e.Upsilontonos = 910; + e.Uring = 366; + e.Ushortcyrillic = 1038; + e.Usmall = 63349; + e.Ustraightcyrillic = 1198; + e.Ustraightstrokecyrillic = 1200; + e.Utilde = 360; + e.Utildeacute = 7800; + e.Utildebelow = 7796; + e.V = 86; + e.Vcircle = 9419; + e.Vdotbelow = 7806; + e.Vecyrillic = 1042; + e.Vewarmenian = 1358; + e.Vhook = 434; + e.Vmonospace = 65334; + e.Voarmenian = 1352; + e.Vsmall = 63350; + e.Vtilde = 7804; + e.W = 87; + e.Wacute = 7810; + e.Wcircle = 9420; + e.Wcircumflex = 372; + e.Wdieresis = 7812; + e.Wdotaccent = 7814; + e.Wdotbelow = 7816; + e.Wgrave = 7808; + e.Wmonospace = 65335; + e.Wsmall = 63351; + e.X = 88; + e.Xcircle = 9421; + e.Xdieresis = 7820; + e.Xdotaccent = 7818; + e.Xeharmenian = 1341; + e.Xi = 926; + e.Xmonospace = 65336; + e.Xsmall = 63352; + e.Y = 89; + e.Yacute = 221; + e.Yacutesmall = 63485; + e.Yatcyrillic = 1122; + e.Ycircle = 9422; + e.Ycircumflex = 374; + e.Ydieresis = 376; + e.Ydieresissmall = 63487; + e.Ydotaccent = 7822; + e.Ydotbelow = 7924; + e.Yericyrillic = 1067; + e.Yerudieresiscyrillic = 1272; + e.Ygrave = 7922; + e.Yhook = 435; + e.Yhookabove = 7926; + e.Yiarmenian = 1349; + e.Yicyrillic = 1031; + e.Yiwnarmenian = 1362; + e.Ymonospace = 65337; + e.Ysmall = 63353; + e.Ytilde = 7928; + e.Yusbigcyrillic = 1130; + e.Yusbigiotifiedcyrillic = 1132; + e.Yuslittlecyrillic = 1126; + e.Yuslittleiotifiedcyrillic = 1128; + e.Z = 90; + e.Zaarmenian = 1334; + e.Zacute = 377; + e.Zcaron = 381; + e.Zcaronsmall = 63231; + e.Zcircle = 9423; + e.Zcircumflex = 7824; + e.Zdot = 379; + e.Zdotaccent = 379; + e.Zdotbelow = 7826; + e.Zecyrillic = 1047; + e.Zedescendercyrillic = 1176; + e.Zedieresiscyrillic = 1246; + e.Zeta = 918; + e.Zhearmenian = 1338; + e.Zhebrevecyrillic = 1217; + e.Zhecyrillic = 1046; + e.Zhedescendercyrillic = 1174; + e.Zhedieresiscyrillic = 1244; + e.Zlinebelow = 7828; + e.Zmonospace = 65338; + e.Zsmall = 63354; + e.Zstroke = 437; + e.a = 97; + e.aabengali = 2438; + e.aacute = 225; + e.aadeva = 2310; + e.aagujarati = 2694; + e.aagurmukhi = 2566; + e.aamatragurmukhi = 2622; + e.aarusquare = 13059; + e.aavowelsignbengali = 2494; + e.aavowelsigndeva = 2366; + e.aavowelsigngujarati = 2750; + e.abbreviationmarkarmenian = 1375; + e.abbreviationsigndeva = 2416; + e.abengali = 2437; + e.abopomofo = 12570; + e.abreve = 259; + e.abreveacute = 7855; + e.abrevecyrillic = 1233; + e.abrevedotbelow = 7863; + e.abrevegrave = 7857; + e.abrevehookabove = 7859; + e.abrevetilde = 7861; + e.acaron = 462; + e.acircle = 9424; + e.acircumflex = 226; + e.acircumflexacute = 7845; + e.acircumflexdotbelow = 7853; + e.acircumflexgrave = 7847; + e.acircumflexhookabove = 7849; + e.acircumflextilde = 7851; + e.acute = 180; + e.acutebelowcmb = 791; + e.acutecmb = 769; + e.acutecomb = 769; + e.acutedeva = 2388; + e.acutelowmod = 719; + e.acutetonecmb = 833; + e.acyrillic = 1072; + e.adblgrave = 513; + e.addakgurmukhi = 2673; + e.adeva = 2309; + e.adieresis = 228; + e.adieresiscyrillic = 1235; + e.adieresismacron = 479; + e.adotbelow = 7841; + e.adotmacron = 481; + e.ae = 230; + e.aeacute = 509; + e.aekorean = 12624; + e.aemacron = 483; + e.afii00208 = 8213; + e.afii08941 = 8356; + e.afii10017 = 1040; + e.afii10018 = 1041; + e.afii10019 = 1042; + e.afii10020 = 1043; + e.afii10021 = 1044; + e.afii10022 = 1045; + e.afii10023 = 1025; + e.afii10024 = 1046; + e.afii10025 = 1047; + e.afii10026 = 1048; + e.afii10027 = 1049; + e.afii10028 = 1050; + e.afii10029 = 1051; + e.afii10030 = 1052; + e.afii10031 = 1053; + e.afii10032 = 1054; + e.afii10033 = 1055; + e.afii10034 = 1056; + e.afii10035 = 1057; + e.afii10036 = 1058; + e.afii10037 = 1059; + e.afii10038 = 1060; + e.afii10039 = 1061; + e.afii10040 = 1062; + e.afii10041 = 1063; + e.afii10042 = 1064; + e.afii10043 = 1065; + e.afii10044 = 1066; + e.afii10045 = 1067; + e.afii10046 = 1068; + e.afii10047 = 1069; + e.afii10048 = 1070; + e.afii10049 = 1071; + e.afii10050 = 1168; + e.afii10051 = 1026; + e.afii10052 = 1027; + e.afii10053 = 1028; + e.afii10054 = 1029; + e.afii10055 = 1030; + e.afii10056 = 1031; + e.afii10057 = 1032; + e.afii10058 = 1033; + e.afii10059 = 1034; + e.afii10060 = 1035; + e.afii10061 = 1036; + e.afii10062 = 1038; + e.afii10063 = 63172; + e.afii10064 = 63173; + e.afii10065 = 1072; + e.afii10066 = 1073; + e.afii10067 = 1074; + e.afii10068 = 1075; + e.afii10069 = 1076; + e.afii10070 = 1077; + e.afii10071 = 1105; + e.afii10072 = 1078; + e.afii10073 = 1079; + e.afii10074 = 1080; + e.afii10075 = 1081; + e.afii10076 = 1082; + e.afii10077 = 1083; + e.afii10078 = 1084; + e.afii10079 = 1085; + e.afii10080 = 1086; + e.afii10081 = 1087; + e.afii10082 = 1088; + e.afii10083 = 1089; + e.afii10084 = 1090; + e.afii10085 = 1091; + e.afii10086 = 1092; + e.afii10087 = 1093; + e.afii10088 = 1094; + e.afii10089 = 1095; + e.afii10090 = 1096; + e.afii10091 = 1097; + e.afii10092 = 1098; + e.afii10093 = 1099; + e.afii10094 = 1100; + e.afii10095 = 1101; + e.afii10096 = 1102; + e.afii10097 = 1103; + e.afii10098 = 1169; + e.afii10099 = 1106; + e.afii10100 = 1107; + e.afii10101 = 1108; + e.afii10102 = 1109; + e.afii10103 = 1110; + e.afii10104 = 1111; + e.afii10105 = 1112; + e.afii10106 = 1113; + e.afii10107 = 1114; + e.afii10108 = 1115; + e.afii10109 = 1116; + e.afii10110 = 1118; + e.afii10145 = 1039; + e.afii10146 = 1122; + e.afii10147 = 1138; + e.afii10148 = 1140; + e.afii10192 = 63174; + e.afii10193 = 1119; + e.afii10194 = 1123; + e.afii10195 = 1139; + e.afii10196 = 1141; + e.afii10831 = 63175; + e.afii10832 = 63176; + e.afii10846 = 1241; + e.afii299 = 8206; + e.afii300 = 8207; + e.afii301 = 8205; + e.afii57381 = 1642; + e.afii57388 = 1548; + e.afii57392 = 1632; + e.afii57393 = 1633; + e.afii57394 = 1634; + e.afii57395 = 1635; + e.afii57396 = 1636; + e.afii57397 = 1637; + e.afii57398 = 1638; + e.afii57399 = 1639; + e.afii57400 = 1640; + e.afii57401 = 1641; + e.afii57403 = 1563; + e.afii57407 = 1567; + e.afii57409 = 1569; + e.afii57410 = 1570; + e.afii57411 = 1571; + e.afii57412 = 1572; + e.afii57413 = 1573; + e.afii57414 = 1574; + e.afii57415 = 1575; + e.afii57416 = 1576; + e.afii57417 = 1577; + e.afii57418 = 1578; + e.afii57419 = 1579; + e.afii57420 = 1580; + e.afii57421 = 1581; + e.afii57422 = 1582; + e.afii57423 = 1583; + e.afii57424 = 1584; + e.afii57425 = 1585; + e.afii57426 = 1586; + e.afii57427 = 1587; + e.afii57428 = 1588; + e.afii57429 = 1589; + e.afii57430 = 1590; + e.afii57431 = 1591; + e.afii57432 = 1592; + e.afii57433 = 1593; + e.afii57434 = 1594; + e.afii57440 = 1600; + e.afii57441 = 1601; + e.afii57442 = 1602; + e.afii57443 = 1603; + e.afii57444 = 1604; + e.afii57445 = 1605; + e.afii57446 = 1606; + e.afii57448 = 1608; + e.afii57449 = 1609; + e.afii57450 = 1610; + e.afii57451 = 1611; + e.afii57452 = 1612; + e.afii57453 = 1613; + e.afii57454 = 1614; + e.afii57455 = 1615; + e.afii57456 = 1616; + e.afii57457 = 1617; + e.afii57458 = 1618; + e.afii57470 = 1607; + e.afii57505 = 1700; + e.afii57506 = 1662; + e.afii57507 = 1670; + e.afii57508 = 1688; + e.afii57509 = 1711; + e.afii57511 = 1657; + e.afii57512 = 1672; + e.afii57513 = 1681; + e.afii57514 = 1722; + e.afii57519 = 1746; + e.afii57534 = 1749; + e.afii57636 = 8362; + e.afii57645 = 1470; + e.afii57658 = 1475; + e.afii57664 = 1488; + e.afii57665 = 1489; + e.afii57666 = 1490; + e.afii57667 = 1491; + e.afii57668 = 1492; + e.afii57669 = 1493; + e.afii57670 = 1494; + e.afii57671 = 1495; + e.afii57672 = 1496; + e.afii57673 = 1497; + e.afii57674 = 1498; + e.afii57675 = 1499; + e.afii57676 = 1500; + e.afii57677 = 1501; + e.afii57678 = 1502; + e.afii57679 = 1503; + e.afii57680 = 1504; + e.afii57681 = 1505; + e.afii57682 = 1506; + e.afii57683 = 1507; + e.afii57684 = 1508; + e.afii57685 = 1509; + e.afii57686 = 1510; + e.afii57687 = 1511; + e.afii57688 = 1512; + e.afii57689 = 1513; + e.afii57690 = 1514; + e.afii57694 = 64298; + e.afii57695 = 64299; + e.afii57700 = 64331; + e.afii57705 = 64287; + e.afii57716 = 1520; + e.afii57717 = 1521; + e.afii57718 = 1522; + e.afii57723 = 64309; + e.afii57793 = 1460; + e.afii57794 = 1461; + e.afii57795 = 1462; + e.afii57796 = 1467; + e.afii57797 = 1464; + e.afii57798 = 1463; + e.afii57799 = 1456; + e.afii57800 = 1458; + e.afii57801 = 1457; + e.afii57802 = 1459; + e.afii57803 = 1474; + e.afii57804 = 1473; + e.afii57806 = 1465; + e.afii57807 = 1468; + e.afii57839 = 1469; + e.afii57841 = 1471; + e.afii57842 = 1472; + e.afii57929 = 700; + e.afii61248 = 8453; + e.afii61289 = 8467; + e.afii61352 = 8470; + e.afii61573 = 8236; + e.afii61574 = 8237; + e.afii61575 = 8238; + e.afii61664 = 8204; + e.afii63167 = 1645; + e.afii64937 = 701; + e.agrave = 224; + e.agujarati = 2693; + e.agurmukhi = 2565; + e.ahiragana = 12354; + e.ahookabove = 7843; + e.aibengali = 2448; + e.aibopomofo = 12574; + e.aideva = 2320; + e.aiecyrillic = 1237; + e.aigujarati = 2704; + e.aigurmukhi = 2576; + e.aimatragurmukhi = 2632; + e.ainarabic = 1593; + e.ainfinalarabic = 65226; + e.aininitialarabic = 65227; + e.ainmedialarabic = 65228; + e.ainvertedbreve = 515; + e.aivowelsignbengali = 2504; + e.aivowelsigndeva = 2376; + e.aivowelsigngujarati = 2760; + e.akatakana = 12450; + e.akatakanahalfwidth = 65393; + e.akorean = 12623; + e.alef = 1488; + e.alefarabic = 1575; + e.alefdageshhebrew = 64304; + e.aleffinalarabic = 65166; + e.alefhamzaabovearabic = 1571; + e.alefhamzaabovefinalarabic = 65156; + e.alefhamzabelowarabic = 1573; + e.alefhamzabelowfinalarabic = 65160; + e.alefhebrew = 1488; + e.aleflamedhebrew = 64335; + e.alefmaddaabovearabic = 1570; + e.alefmaddaabovefinalarabic = 65154; + e.alefmaksuraarabic = 1609; + e.alefmaksurafinalarabic = 65264; + e.alefmaksurainitialarabic = 65267; + e.alefmaksuramedialarabic = 65268; + e.alefpatahhebrew = 64302; + e.alefqamatshebrew = 64303; + e.aleph = 8501; + e.allequal = 8780; + e.alpha = 945; + e.alphatonos = 940; + e.amacron = 257; + e.amonospace = 65345; + e.ampersand = 38; + e.ampersandmonospace = 65286; + e.ampersandsmall = 63270; + e.amsquare = 13250; + e.anbopomofo = 12578; + e.angbopomofo = 12580; + e.angbracketleft = 12296; + e.angbracketright = 12297; + e.angkhankhuthai = 3674; + e.angle = 8736; + e.anglebracketleft = 12296; + e.anglebracketleftvertical = 65087; + e.anglebracketright = 12297; + e.anglebracketrightvertical = 65088; + e.angleleft = 9001; + e.angleright = 9002; + e.angstrom = 8491; + e.anoteleia = 903; + e.anudattadeva = 2386; + e.anusvarabengali = 2434; + e.anusvaradeva = 2306; + e.anusvaragujarati = 2690; + e.aogonek = 261; + e.apaatosquare = 13056; + e.aparen = 9372; + e.apostrophearmenian = 1370; + e.apostrophemod = 700; + e.apple = 63743; + e.approaches = 8784; + e.approxequal = 8776; + e.approxequalorimage = 8786; + e.approximatelyequal = 8773; + e.araeaekorean = 12686; + e.araeakorean = 12685; + e.arc = 8978; + e.arighthalfring = 7834; + e.aring = 229; + e.aringacute = 507; + e.aringbelow = 7681; + e.arrowboth = 8596; + e.arrowdashdown = 8675; + e.arrowdashleft = 8672; + e.arrowdashright = 8674; + e.arrowdashup = 8673; + e.arrowdblboth = 8660; + e.arrowdbldown = 8659; + e.arrowdblleft = 8656; + e.arrowdblright = 8658; + e.arrowdblup = 8657; + e.arrowdown = 8595; + e.arrowdownleft = 8601; + e.arrowdownright = 8600; + e.arrowdownwhite = 8681; + e.arrowheaddownmod = 709; + e.arrowheadleftmod = 706; + e.arrowheadrightmod = 707; + e.arrowheadupmod = 708; + e.arrowhorizex = 63719; + e.arrowleft = 8592; + e.arrowleftdbl = 8656; + e.arrowleftdblstroke = 8653; + e.arrowleftoverright = 8646; + e.arrowleftwhite = 8678; + e.arrowright = 8594; + e.arrowrightdblstroke = 8655; + e.arrowrightheavy = 10142; + e.arrowrightoverleft = 8644; + e.arrowrightwhite = 8680; + e.arrowtableft = 8676; + e.arrowtabright = 8677; + e.arrowup = 8593; + e.arrowupdn = 8597; + e.arrowupdnbse = 8616; + e.arrowupdownbase = 8616; + e.arrowupleft = 8598; + e.arrowupleftofdown = 8645; + e.arrowupright = 8599; + e.arrowupwhite = 8679; + e.arrowvertex = 63718; + e.asciicircum = 94; + e.asciicircummonospace = 65342; + e.asciitilde = 126; + e.asciitildemonospace = 65374; + e.ascript = 593; + e.ascriptturned = 594; + e.asmallhiragana = 12353; + e.asmallkatakana = 12449; + e.asmallkatakanahalfwidth = 65383; + e.asterisk = 42; + e.asteriskaltonearabic = 1645; + e.asteriskarabic = 1645; + e.asteriskmath = 8727; + e.asteriskmonospace = 65290; + e.asterisksmall = 65121; + e.asterism = 8258; + e.asuperior = 63209; + e.asymptoticallyequal = 8771; + e.at = 64; + e.atilde = 227; + e.atmonospace = 65312; + e.atsmall = 65131; + e.aturned = 592; + e.aubengali = 2452; + e.aubopomofo = 12576; + e.audeva = 2324; + e.augujarati = 2708; + e.augurmukhi = 2580; + e.aulengthmarkbengali = 2519; + e.aumatragurmukhi = 2636; + e.auvowelsignbengali = 2508; + e.auvowelsigndeva = 2380; + e.auvowelsigngujarati = 2764; + e.avagrahadeva = 2365; + e.aybarmenian = 1377; + e.ayin = 1506; + e.ayinaltonehebrew = 64288; + e.ayinhebrew = 1506; + e.b = 98; + e.babengali = 2476; + e.backslash = 92; + e.backslashmonospace = 65340; + e.badeva = 2348; + e.bagujarati = 2732; + e.bagurmukhi = 2604; + e.bahiragana = 12400; + e.bahtthai = 3647; + e.bakatakana = 12496; + e.bar = 124; + e.barmonospace = 65372; + e.bbopomofo = 12549; + e.bcircle = 9425; + e.bdotaccent = 7683; + e.bdotbelow = 7685; + e.beamedsixteenthnotes = 9836; + e.because = 8757; + e.becyrillic = 1073; + e.beharabic = 1576; + e.behfinalarabic = 65168; + e.behinitialarabic = 65169; + e.behiragana = 12409; + e.behmedialarabic = 65170; + e.behmeeminitialarabic = 64671; + e.behmeemisolatedarabic = 64520; + e.behnoonfinalarabic = 64621; + e.bekatakana = 12505; + e.benarmenian = 1378; + e.bet = 1489; + e.beta = 946; + e.betasymbolgreek = 976; + e.betdagesh = 64305; + e.betdageshhebrew = 64305; + e.bethebrew = 1489; + e.betrafehebrew = 64332; + e.bhabengali = 2477; + e.bhadeva = 2349; + e.bhagujarati = 2733; + e.bhagurmukhi = 2605; + e.bhook = 595; + e.bihiragana = 12403; + e.bikatakana = 12499; + e.bilabialclick = 664; + e.bindigurmukhi = 2562; + e.birusquare = 13105; + e.blackcircle = 9679; + e.blackdiamond = 9670; + e.blackdownpointingtriangle = 9660; + e.blackleftpointingpointer = 9668; + e.blackleftpointingtriangle = 9664; + e.blacklenticularbracketleft = 12304; + e.blacklenticularbracketleftvertical = 65083; + e.blacklenticularbracketright = 12305; + e.blacklenticularbracketrightvertical = 65084; + e.blacklowerlefttriangle = 9699; + e.blacklowerrighttriangle = 9698; + e.blackrectangle = 9644; + e.blackrightpointingpointer = 9658; + e.blackrightpointingtriangle = 9654; + e.blacksmallsquare = 9642; + e.blacksmilingface = 9787; + e.blacksquare = 9632; + e.blackstar = 9733; + e.blackupperlefttriangle = 9700; + e.blackupperrighttriangle = 9701; + e.blackuppointingsmalltriangle = 9652; + e.blackuppointingtriangle = 9650; + e.blank = 9251; + e.blinebelow = 7687; + e.block = 9608; + e.bmonospace = 65346; + e.bobaimaithai = 3610; + e.bohiragana = 12412; + e.bokatakana = 12508; + e.bparen = 9373; + e.bqsquare = 13251; + e.braceex = 63732; + e.braceleft = 123; + e.braceleftbt = 63731; + e.braceleftmid = 63730; + e.braceleftmonospace = 65371; + e.braceleftsmall = 65115; + e.bracelefttp = 63729; + e.braceleftvertical = 65079; + e.braceright = 125; + e.bracerightbt = 63742; + e.bracerightmid = 63741; + e.bracerightmonospace = 65373; + e.bracerightsmall = 65116; + e.bracerighttp = 63740; + e.bracerightvertical = 65080; + e.bracketleft = 91; + e.bracketleftbt = 63728; + e.bracketleftex = 63727; + e.bracketleftmonospace = 65339; + e.bracketlefttp = 63726; + e.bracketright = 93; + e.bracketrightbt = 63739; + e.bracketrightex = 63738; + e.bracketrightmonospace = 65341; + e.bracketrighttp = 63737; + e.breve = 728; + e.brevebelowcmb = 814; + e.brevecmb = 774; + e.breveinvertedbelowcmb = 815; + e.breveinvertedcmb = 785; + e.breveinverteddoublecmb = 865; + e.bridgebelowcmb = 810; + e.bridgeinvertedbelowcmb = 826; + e.brokenbar = 166; + e.bstroke = 384; + e.bsuperior = 63210; + e.btopbar = 387; + e.buhiragana = 12406; + e.bukatakana = 12502; + e.bullet = 8226; + e.bulletinverse = 9688; + e.bulletoperator = 8729; + e.bullseye = 9678; + e.c = 99; + e.caarmenian = 1390; + e.cabengali = 2458; + e.cacute = 263; + e.cadeva = 2330; + e.cagujarati = 2714; + e.cagurmukhi = 2586; + e.calsquare = 13192; + e.candrabindubengali = 2433; + e.candrabinducmb = 784; + e.candrabindudeva = 2305; + e.candrabindugujarati = 2689; + e.capslock = 8682; + e.careof = 8453; + e.caron = 711; + e.caronbelowcmb = 812; + e.caroncmb = 780; + e.carriagereturn = 8629; + e.cbopomofo = 12568; + e.ccaron = 269; + e.ccedilla = 231; + e.ccedillaacute = 7689; + e.ccircle = 9426; + e.ccircumflex = 265; + e.ccurl = 597; + e.cdot = 267; + e.cdotaccent = 267; + e.cdsquare = 13253; + e.cedilla = 184; + e.cedillacmb = 807; + e.cent = 162; + e.centigrade = 8451; + e.centinferior = 63199; + e.centmonospace = 65504; + e.centoldstyle = 63394; + e.centsuperior = 63200; + e.chaarmenian = 1401; + e.chabengali = 2459; + e.chadeva = 2331; + e.chagujarati = 2715; + e.chagurmukhi = 2587; + e.chbopomofo = 12564; + e.cheabkhasiancyrillic = 1213; + e.checkmark = 10003; + e.checyrillic = 1095; + e.chedescenderabkhasiancyrillic = 1215; + e.chedescendercyrillic = 1207; + e.chedieresiscyrillic = 1269; + e.cheharmenian = 1395; + e.chekhakassiancyrillic = 1228; + e.cheverticalstrokecyrillic = 1209; + e.chi = 967; + e.chieuchacirclekorean = 12919; + e.chieuchaparenkorean = 12823; + e.chieuchcirclekorean = 12905; + e.chieuchkorean = 12618; + e.chieuchparenkorean = 12809; + e.chochangthai = 3594; + e.chochanthai = 3592; + e.chochingthai = 3593; + e.chochoethai = 3596; + e.chook = 392; + e.cieucacirclekorean = 12918; + e.cieucaparenkorean = 12822; + e.cieuccirclekorean = 12904; + e.cieuckorean = 12616; + e.cieucparenkorean = 12808; + e.cieucuparenkorean = 12828; + e.circle = 9675; + e.circlecopyrt = 169; + e.circlemultiply = 8855; + e.circleot = 8857; + e.circleplus = 8853; + e.circlepostalmark = 12342; + e.circlewithlefthalfblack = 9680; + e.circlewithrighthalfblack = 9681; + e.circumflex = 710; + e.circumflexbelowcmb = 813; + e.circumflexcmb = 770; + e.clear = 8999; + e.clickalveolar = 450; + e.clickdental = 448; + e.clicklateral = 449; + e.clickretroflex = 451; + e.club = 9827; + e.clubsuitblack = 9827; + e.clubsuitwhite = 9831; + e.cmcubedsquare = 13220; + e.cmonospace = 65347; + e.cmsquaredsquare = 13216; + e.coarmenian = 1409; + e.colon = 58; + e.colonmonetary = 8353; + e.colonmonospace = 65306; + e.colonsign = 8353; + e.colonsmall = 65109; + e.colontriangularhalfmod = 721; + e.colontriangularmod = 720; + e.comma = 44; + e.commaabovecmb = 787; + e.commaaboverightcmb = 789; + e.commaaccent = 63171; + e.commaarabic = 1548; + e.commaarmenian = 1373; + e.commainferior = 63201; + e.commamonospace = 65292; + e.commareversedabovecmb = 788; + e.commareversedmod = 701; + e.commasmall = 65104; + e.commasuperior = 63202; + e.commaturnedabovecmb = 786; + e.commaturnedmod = 699; + e.compass = 9788; + e.congruent = 8773; + e.contourintegral = 8750; + e.control = 8963; + e.controlACK = 6; + e.controlBEL = 7; + e.controlBS = 8; + e.controlCAN = 24; + e.controlCR = 13; + e.controlDC1 = 17; + e.controlDC2 = 18; + e.controlDC3 = 19; + e.controlDC4 = 20; + e.controlDEL = 127; + e.controlDLE = 16; + e.controlEM = 25; + e.controlENQ = 5; + e.controlEOT = 4; + e.controlESC = 27; + e.controlETB = 23; + e.controlETX = 3; + e.controlFF = 12; + e.controlFS = 28; + e.controlGS = 29; + e.controlHT = 9; + e.controlLF = 10; + e.controlNAK = 21; + e.controlNULL = 0; + e.controlRS = 30; + e.controlSI = 15; + e.controlSO = 14; + e.controlSOT = 2; + e.controlSTX = 1; + e.controlSUB = 26; + e.controlSYN = 22; + e.controlUS = 31; + e.controlVT = 11; + e.copyright = 169; + e.copyrightsans = 63721; + e.copyrightserif = 63193; + e.cornerbracketleft = 12300; + e.cornerbracketlefthalfwidth = 65378; + e.cornerbracketleftvertical = 65089; + e.cornerbracketright = 12301; + e.cornerbracketrighthalfwidth = 65379; + e.cornerbracketrightvertical = 65090; + e.corporationsquare = 13183; + e.cosquare = 13255; + e.coverkgsquare = 13254; + e.cparen = 9374; + e.cruzeiro = 8354; + e.cstretched = 663; + e.curlyand = 8911; + e.curlyor = 8910; + e.currency = 164; + e.cyrBreve = 63185; + e.cyrFlex = 63186; + e.cyrbreve = 63188; + e.cyrflex = 63189; + e.d = 100; + e.daarmenian = 1380; + e.dabengali = 2470; + e.dadarabic = 1590; + e.dadeva = 2342; + e.dadfinalarabic = 65214; + e.dadinitialarabic = 65215; + e.dadmedialarabic = 65216; + e.dagesh = 1468; + e.dageshhebrew = 1468; + e.dagger = 8224; + e.daggerdbl = 8225; + e.dagujarati = 2726; + e.dagurmukhi = 2598; + e.dahiragana = 12384; + e.dakatakana = 12480; + e.dalarabic = 1583; + e.dalet = 1491; + e.daletdagesh = 64307; + e.daletdageshhebrew = 64307; + e.dalethebrew = 1491; + e.dalfinalarabic = 65194; + e.dammaarabic = 1615; + e.dammalowarabic = 1615; + e.dammatanaltonearabic = 1612; + e.dammatanarabic = 1612; + e.danda = 2404; + e.dargahebrew = 1447; + e.dargalefthebrew = 1447; + e.dasiapneumatacyrilliccmb = 1157; + e.dblGrave = 63187; + e.dblanglebracketleft = 12298; + e.dblanglebracketleftvertical = 65085; + e.dblanglebracketright = 12299; + e.dblanglebracketrightvertical = 65086; + e.dblarchinvertedbelowcmb = 811; + e.dblarrowleft = 8660; + e.dblarrowright = 8658; + e.dbldanda = 2405; + e.dblgrave = 63190; + e.dblgravecmb = 783; + e.dblintegral = 8748; + e.dbllowline = 8215; + e.dbllowlinecmb = 819; + e.dbloverlinecmb = 831; + e.dblprimemod = 698; + e.dblverticalbar = 8214; + e.dblverticallineabovecmb = 782; + e.dbopomofo = 12553; + e.dbsquare = 13256; + e.dcaron = 271; + e.dcedilla = 7697; + e.dcircle = 9427; + e.dcircumflexbelow = 7699; + e.dcroat = 273; + e.ddabengali = 2465; + e.ddadeva = 2337; + e.ddagujarati = 2721; + e.ddagurmukhi = 2593; + e.ddalarabic = 1672; + e.ddalfinalarabic = 64393; + e.dddhadeva = 2396; + e.ddhabengali = 2466; + e.ddhadeva = 2338; + e.ddhagujarati = 2722; + e.ddhagurmukhi = 2594; + e.ddotaccent = 7691; + e.ddotbelow = 7693; + e.decimalseparatorarabic = 1643; + e.decimalseparatorpersian = 1643; + e.decyrillic = 1076; + e.degree = 176; + e.dehihebrew = 1453; + e.dehiragana = 12391; + e.deicoptic = 1007; + e.dekatakana = 12487; + e.deleteleft = 9003; + e.deleteright = 8998; + e.delta = 948; + e.deltaturned = 397; + e.denominatorminusonenumeratorbengali = 2552; + e.dezh = 676; + e.dhabengali = 2471; + e.dhadeva = 2343; + e.dhagujarati = 2727; + e.dhagurmukhi = 2599; + e.dhook = 599; + e.dialytikatonos = 901; + e.dialytikatonoscmb = 836; + e.diamond = 9830; + e.diamondsuitwhite = 9826; + e.dieresis = 168; + e.dieresisacute = 63191; + e.dieresisbelowcmb = 804; + e.dieresiscmb = 776; + e.dieresisgrave = 63192; + e.dieresistonos = 901; + e.dihiragana = 12386; + e.dikatakana = 12482; + e.dittomark = 12291; + e.divide = 247; + e.divides = 8739; + e.divisionslash = 8725; + e.djecyrillic = 1106; + e.dkshade = 9619; + e.dlinebelow = 7695; + e.dlsquare = 13207; + e.dmacron = 273; + e.dmonospace = 65348; + e.dnblock = 9604; + e.dochadathai = 3598; + e.dodekthai = 3604; + e.dohiragana = 12393; + e.dokatakana = 12489; + e.dollar = 36; + e.dollarinferior = 63203; + e.dollarmonospace = 65284; + e.dollaroldstyle = 63268; + e.dollarsmall = 65129; + e.dollarsuperior = 63204; + e.dong = 8363; + e.dorusquare = 13094; + e.dotaccent = 729; + e.dotaccentcmb = 775; + e.dotbelowcmb = 803; + e.dotbelowcomb = 803; + e.dotkatakana = 12539; + e.dotlessi = 305; + e.dotlessj = 63166; + e.dotlessjstrokehook = 644; + e.dotmath = 8901; + e.dottedcircle = 9676; + e.doubleyodpatah = 64287; + e.doubleyodpatahhebrew = 64287; + e.downtackbelowcmb = 798; + e.downtackmod = 725; + e.dparen = 9375; + e.dsuperior = 63211; + e.dtail = 598; + e.dtopbar = 396; + e.duhiragana = 12389; + e.dukatakana = 12485; + e.dz = 499; + e.dzaltone = 675; + e.dzcaron = 454; + e.dzcurl = 677; + e.dzeabkhasiancyrillic = 1249; + e.dzecyrillic = 1109; + e.dzhecyrillic = 1119; + e.e = 101; + e.eacute = 233; + e.earth = 9793; + e.ebengali = 2447; + e.ebopomofo = 12572; + e.ebreve = 277; + e.ecandradeva = 2317; + e.ecandragujarati = 2701; + e.ecandravowelsigndeva = 2373; + e.ecandravowelsigngujarati = 2757; + e.ecaron = 283; + e.ecedillabreve = 7709; + e.echarmenian = 1381; + e.echyiwnarmenian = 1415; + e.ecircle = 9428; + e.ecircumflex = 234; + e.ecircumflexacute = 7871; + e.ecircumflexbelow = 7705; + e.ecircumflexdotbelow = 7879; + e.ecircumflexgrave = 7873; + e.ecircumflexhookabove = 7875; + e.ecircumflextilde = 7877; + e.ecyrillic = 1108; + e.edblgrave = 517; + e.edeva = 2319; + e.edieresis = 235; + e.edot = 279; + e.edotaccent = 279; + e.edotbelow = 7865; + e.eegurmukhi = 2575; + e.eematragurmukhi = 2631; + e.efcyrillic = 1092; + e.egrave = 232; + e.egujarati = 2703; + e.eharmenian = 1383; + e.ehbopomofo = 12573; + e.ehiragana = 12360; + e.ehookabove = 7867; + e.eibopomofo = 12575; + e.eight = 56; + e.eightarabic = 1640; + e.eightbengali = 2542; + e.eightcircle = 9319; + e.eightcircleinversesansserif = 10129; + e.eightdeva = 2414; + e.eighteencircle = 9329; + e.eighteenparen = 9349; + e.eighteenperiod = 9369; + e.eightgujarati = 2798; + e.eightgurmukhi = 2670; + e.eighthackarabic = 1640; + e.eighthangzhou = 12328; + e.eighthnotebeamed = 9835; + e.eightideographicparen = 12839; + e.eightinferior = 8328; + e.eightmonospace = 65304; + e.eightoldstyle = 63288; + e.eightparen = 9339; + e.eightperiod = 9359; + e.eightpersian = 1784; + e.eightroman = 8567; + e.eightsuperior = 8312; + e.eightthai = 3672; + e.einvertedbreve = 519; + e.eiotifiedcyrillic = 1125; + e.ekatakana = 12456; + e.ekatakanahalfwidth = 65396; + e.ekonkargurmukhi = 2676; + e.ekorean = 12628; + e.elcyrillic = 1083; + e.element = 8712; + e.elevencircle = 9322; + e.elevenparen = 9342; + e.elevenperiod = 9362; + e.elevenroman = 8570; + e.ellipsis = 8230; + e.ellipsisvertical = 8942; + e.emacron = 275; + e.emacronacute = 7703; + e.emacrongrave = 7701; + e.emcyrillic = 1084; + e.emdash = 8212; + e.emdashvertical = 65073; + e.emonospace = 65349; + e.emphasismarkarmenian = 1371; + e.emptyset = 8709; + e.enbopomofo = 12579; + e.encyrillic = 1085; + e.endash = 8211; + e.endashvertical = 65074; + e.endescendercyrillic = 1187; + e.eng = 331; + e.engbopomofo = 12581; + e.enghecyrillic = 1189; + e.enhookcyrillic = 1224; + e.enspace = 8194; + e.eogonek = 281; + e.eokorean = 12627; + e.eopen = 603; + e.eopenclosed = 666; + e.eopenreversed = 604; + e.eopenreversedclosed = 606; + e.eopenreversedhook = 605; + e.eparen = 9376; + e.epsilon = 949; + e.epsilontonos = 941; + e.equal = 61; + e.equalmonospace = 65309; + e.equalsmall = 65126; + e.equalsuperior = 8316; + e.equivalence = 8801; + e.erbopomofo = 12582; + e.ercyrillic = 1088; + e.ereversed = 600; + e.ereversedcyrillic = 1101; + e.escyrillic = 1089; + e.esdescendercyrillic = 1195; + e.esh = 643; + e.eshcurl = 646; + e.eshortdeva = 2318; + e.eshortvowelsigndeva = 2374; + e.eshreversedloop = 426; + e.eshsquatreversed = 645; + e.esmallhiragana = 12359; + e.esmallkatakana = 12455; + e.esmallkatakanahalfwidth = 65386; + e.estimated = 8494; + e.esuperior = 63212; + e.eta = 951; + e.etarmenian = 1384; + e.etatonos = 942; + e.eth = 240; + e.etilde = 7869; + e.etildebelow = 7707; + e.etnahtafoukhhebrew = 1425; + e.etnahtafoukhlefthebrew = 1425; + e.etnahtahebrew = 1425; + e.etnahtalefthebrew = 1425; + e.eturned = 477; + e.eukorean = 12641; + e.euro = 8364; + e.evowelsignbengali = 2503; + e.evowelsigndeva = 2375; + e.evowelsigngujarati = 2759; + e.exclam = 33; + e.exclamarmenian = 1372; + e.exclamdbl = 8252; + e.exclamdown = 161; + e.exclamdownsmall = 63393; + e.exclammonospace = 65281; + e.exclamsmall = 63265; + e.existential = 8707; + e.ezh = 658; + e.ezhcaron = 495; + e.ezhcurl = 659; + e.ezhreversed = 441; + e.ezhtail = 442; + e.f = 102; + e.fadeva = 2398; + e.fagurmukhi = 2654; + e.fahrenheit = 8457; + e.fathaarabic = 1614; + e.fathalowarabic = 1614; + e.fathatanarabic = 1611; + e.fbopomofo = 12552; + e.fcircle = 9429; + e.fdotaccent = 7711; + e.feharabic = 1601; + e.feharmenian = 1414; + e.fehfinalarabic = 65234; + e.fehinitialarabic = 65235; + e.fehmedialarabic = 65236; + e.feicoptic = 997; + e.female = 9792; + e.ff = 64256; + e.f_f = 64256; + e.ffi = 64259; + e.f_f_i = 64259; + e.ffl = 64260; + e.f_f_l = 64260; + e.fi = 64257; + e.f_i = 64257; + e.fifteencircle = 9326; + e.fifteenparen = 9346; + e.fifteenperiod = 9366; + e.figuredash = 8210; + e.filledbox = 9632; + e.filledrect = 9644; + e.finalkaf = 1498; + e.finalkafdagesh = 64314; + e.finalkafdageshhebrew = 64314; + e.finalkafhebrew = 1498; + e.finalmem = 1501; + e.finalmemhebrew = 1501; + e.finalnun = 1503; + e.finalnunhebrew = 1503; + e.finalpe = 1507; + e.finalpehebrew = 1507; + e.finaltsadi = 1509; + e.finaltsadihebrew = 1509; + e.firsttonechinese = 713; + e.fisheye = 9673; + e.fitacyrillic = 1139; + e.five = 53; + e.fivearabic = 1637; + e.fivebengali = 2539; + e.fivecircle = 9316; + e.fivecircleinversesansserif = 10126; + e.fivedeva = 2411; + e.fiveeighths = 8541; + e.fivegujarati = 2795; + e.fivegurmukhi = 2667; + e.fivehackarabic = 1637; + e.fivehangzhou = 12325; + e.fiveideographicparen = 12836; + e.fiveinferior = 8325; + e.fivemonospace = 65301; + e.fiveoldstyle = 63285; + e.fiveparen = 9336; + e.fiveperiod = 9356; + e.fivepersian = 1781; + e.fiveroman = 8564; + e.fivesuperior = 8309; + e.fivethai = 3669; + e.fl = 64258; + e.f_l = 64258; + e.florin = 402; + e.fmonospace = 65350; + e.fmsquare = 13209; + e.fofanthai = 3615; + e.fofathai = 3613; + e.fongmanthai = 3663; + e.forall = 8704; + e.four = 52; + e.fourarabic = 1636; + e.fourbengali = 2538; + e.fourcircle = 9315; + e.fourcircleinversesansserif = 10125; + e.fourdeva = 2410; + e.fourgujarati = 2794; + e.fourgurmukhi = 2666; + e.fourhackarabic = 1636; + e.fourhangzhou = 12324; + e.fourideographicparen = 12835; + e.fourinferior = 8324; + e.fourmonospace = 65300; + e.fournumeratorbengali = 2551; + e.fouroldstyle = 63284; + e.fourparen = 9335; + e.fourperiod = 9355; + e.fourpersian = 1780; + e.fourroman = 8563; + e.foursuperior = 8308; + e.fourteencircle = 9325; + e.fourteenparen = 9345; + e.fourteenperiod = 9365; + e.fourthai = 3668; + e.fourthtonechinese = 715; + e.fparen = 9377; + e.fraction = 8260; + e.franc = 8355; + e.g = 103; + e.gabengali = 2455; + e.gacute = 501; + e.gadeva = 2327; + e.gafarabic = 1711; + e.gaffinalarabic = 64403; + e.gafinitialarabic = 64404; + e.gafmedialarabic = 64405; + e.gagujarati = 2711; + e.gagurmukhi = 2583; + e.gahiragana = 12364; + e.gakatakana = 12460; + e.gamma = 947; + e.gammalatinsmall = 611; + e.gammasuperior = 736; + e.gangiacoptic = 1003; + e.gbopomofo = 12557; + e.gbreve = 287; + e.gcaron = 487; + e.gcedilla = 291; + e.gcircle = 9430; + e.gcircumflex = 285; + e.gcommaaccent = 291; + e.gdot = 289; + e.gdotaccent = 289; + e.gecyrillic = 1075; + e.gehiragana = 12370; + e.gekatakana = 12466; + e.geometricallyequal = 8785; + e.gereshaccenthebrew = 1436; + e.gereshhebrew = 1523; + e.gereshmuqdamhebrew = 1437; + e.germandbls = 223; + e.gershayimaccenthebrew = 1438; + e.gershayimhebrew = 1524; + e.getamark = 12307; + e.ghabengali = 2456; + e.ghadarmenian = 1394; + e.ghadeva = 2328; + e.ghagujarati = 2712; + e.ghagurmukhi = 2584; + e.ghainarabic = 1594; + e.ghainfinalarabic = 65230; + e.ghaininitialarabic = 65231; + e.ghainmedialarabic = 65232; + e.ghemiddlehookcyrillic = 1173; + e.ghestrokecyrillic = 1171; + e.gheupturncyrillic = 1169; + e.ghhadeva = 2394; + e.ghhagurmukhi = 2650; + e.ghook = 608; + e.ghzsquare = 13203; + e.gihiragana = 12366; + e.gikatakana = 12462; + e.gimarmenian = 1379; + e.gimel = 1490; + e.gimeldagesh = 64306; + e.gimeldageshhebrew = 64306; + e.gimelhebrew = 1490; + e.gjecyrillic = 1107; + e.glottalinvertedstroke = 446; + e.glottalstop = 660; + e.glottalstopinverted = 662; + e.glottalstopmod = 704; + e.glottalstopreversed = 661; + e.glottalstopreversedmod = 705; + e.glottalstopreversedsuperior = 740; + e.glottalstopstroke = 673; + e.glottalstopstrokereversed = 674; + e.gmacron = 7713; + e.gmonospace = 65351; + e.gohiragana = 12372; + e.gokatakana = 12468; + e.gparen = 9378; + e.gpasquare = 13228; + e.gradient = 8711; + e.grave = 96; + e.gravebelowcmb = 790; + e.gravecmb = 768; + e.gravecomb = 768; + e.gravedeva = 2387; + e.gravelowmod = 718; + e.gravemonospace = 65344; + e.gravetonecmb = 832; + e.greater = 62; + e.greaterequal = 8805; + e.greaterequalorless = 8923; + e.greatermonospace = 65310; + e.greaterorequivalent = 8819; + e.greaterorless = 8823; + e.greateroverequal = 8807; + e.greatersmall = 65125; + e.gscript = 609; + e.gstroke = 485; + e.guhiragana = 12368; + e.guillemotleft = 171; + e.guillemotright = 187; + e.guilsinglleft = 8249; + e.guilsinglright = 8250; + e.gukatakana = 12464; + e.guramusquare = 13080; + e.gysquare = 13257; + e.h = 104; + e.haabkhasiancyrillic = 1193; + e.haaltonearabic = 1729; + e.habengali = 2489; + e.hadescendercyrillic = 1203; + e.hadeva = 2361; + e.hagujarati = 2745; + e.hagurmukhi = 2617; + e.haharabic = 1581; + e.hahfinalarabic = 65186; + e.hahinitialarabic = 65187; + e.hahiragana = 12399; + e.hahmedialarabic = 65188; + e.haitusquare = 13098; + e.hakatakana = 12495; + e.hakatakanahalfwidth = 65418; + e.halantgurmukhi = 2637; + e.hamzaarabic = 1569; + e.hamzalowarabic = 1569; + e.hangulfiller = 12644; + e.hardsigncyrillic = 1098; + e.harpoonleftbarbup = 8636; + e.harpoonrightbarbup = 8640; + e.hasquare = 13258; + e.hatafpatah = 1458; + e.hatafpatah16 = 1458; + e.hatafpatah23 = 1458; + e.hatafpatah2f = 1458; + e.hatafpatahhebrew = 1458; + e.hatafpatahnarrowhebrew = 1458; + e.hatafpatahquarterhebrew = 1458; + e.hatafpatahwidehebrew = 1458; + e.hatafqamats = 1459; + e.hatafqamats1b = 1459; + e.hatafqamats28 = 1459; + e.hatafqamats34 = 1459; + e.hatafqamatshebrew = 1459; + e.hatafqamatsnarrowhebrew = 1459; + e.hatafqamatsquarterhebrew = 1459; + e.hatafqamatswidehebrew = 1459; + e.hatafsegol = 1457; + e.hatafsegol17 = 1457; + e.hatafsegol24 = 1457; + e.hatafsegol30 = 1457; + e.hatafsegolhebrew = 1457; + e.hatafsegolnarrowhebrew = 1457; + e.hatafsegolquarterhebrew = 1457; + e.hatafsegolwidehebrew = 1457; + e.hbar = 295; + e.hbopomofo = 12559; + e.hbrevebelow = 7723; + e.hcedilla = 7721; + e.hcircle = 9431; + e.hcircumflex = 293; + e.hdieresis = 7719; + e.hdotaccent = 7715; + e.hdotbelow = 7717; + e.he = 1492; + e.heart = 9829; + e.heartsuitblack = 9829; + e.heartsuitwhite = 9825; + e.hedagesh = 64308; + e.hedageshhebrew = 64308; + e.hehaltonearabic = 1729; + e.heharabic = 1607; + e.hehebrew = 1492; + e.hehfinalaltonearabic = 64423; + e.hehfinalalttwoarabic = 65258; + e.hehfinalarabic = 65258; + e.hehhamzaabovefinalarabic = 64421; + e.hehhamzaaboveisolatedarabic = 64420; + e.hehinitialaltonearabic = 64424; + e.hehinitialarabic = 65259; + e.hehiragana = 12408; + e.hehmedialaltonearabic = 64425; + e.hehmedialarabic = 65260; + e.heiseierasquare = 13179; + e.hekatakana = 12504; + e.hekatakanahalfwidth = 65421; + e.hekutaarusquare = 13110; + e.henghook = 615; + e.herutusquare = 13113; + e.het = 1495; + e.hethebrew = 1495; + e.hhook = 614; + e.hhooksuperior = 689; + e.hieuhacirclekorean = 12923; + e.hieuhaparenkorean = 12827; + e.hieuhcirclekorean = 12909; + e.hieuhkorean = 12622; + e.hieuhparenkorean = 12813; + e.hihiragana = 12402; + e.hikatakana = 12498; + e.hikatakanahalfwidth = 65419; + e.hiriq = 1460; + e.hiriq14 = 1460; + e.hiriq21 = 1460; + e.hiriq2d = 1460; + e.hiriqhebrew = 1460; + e.hiriqnarrowhebrew = 1460; + e.hiriqquarterhebrew = 1460; + e.hiriqwidehebrew = 1460; + e.hlinebelow = 7830; + e.hmonospace = 65352; + e.hoarmenian = 1392; + e.hohipthai = 3627; + e.hohiragana = 12411; + e.hokatakana = 12507; + e.hokatakanahalfwidth = 65422; + e.holam = 1465; + e.holam19 = 1465; + e.holam26 = 1465; + e.holam32 = 1465; + e.holamhebrew = 1465; + e.holamnarrowhebrew = 1465; + e.holamquarterhebrew = 1465; + e.holamwidehebrew = 1465; + e.honokhukthai = 3630; + e.hookabovecomb = 777; + e.hookcmb = 777; + e.hookpalatalizedbelowcmb = 801; + e.hookretroflexbelowcmb = 802; + e.hoonsquare = 13122; + e.horicoptic = 1001; + e.horizontalbar = 8213; + e.horncmb = 795; + e.hotsprings = 9832; + e.house = 8962; + e.hparen = 9379; + e.hsuperior = 688; + e.hturned = 613; + e.huhiragana = 12405; + e.huiitosquare = 13107; + e.hukatakana = 12501; + e.hukatakanahalfwidth = 65420; + e.hungarumlaut = 733; + e.hungarumlautcmb = 779; + e.hv = 405; + e.hyphen = 45; + e.hypheninferior = 63205; + e.hyphenmonospace = 65293; + e.hyphensmall = 65123; + e.hyphensuperior = 63206; + e.hyphentwo = 8208; + e.i = 105; + e.iacute = 237; + e.iacyrillic = 1103; + e.ibengali = 2439; + e.ibopomofo = 12583; + e.ibreve = 301; + e.icaron = 464; + e.icircle = 9432; + e.icircumflex = 238; + e.icyrillic = 1110; + e.idblgrave = 521; + e.ideographearthcircle = 12943; + e.ideographfirecircle = 12939; + e.ideographicallianceparen = 12863; + e.ideographiccallparen = 12858; + e.ideographiccentrecircle = 12965; + e.ideographicclose = 12294; + e.ideographiccomma = 12289; + e.ideographiccommaleft = 65380; + e.ideographiccongratulationparen = 12855; + e.ideographiccorrectcircle = 12963; + e.ideographicearthparen = 12847; + e.ideographicenterpriseparen = 12861; + e.ideographicexcellentcircle = 12957; + e.ideographicfestivalparen = 12864; + e.ideographicfinancialcircle = 12950; + e.ideographicfinancialparen = 12854; + e.ideographicfireparen = 12843; + e.ideographichaveparen = 12850; + e.ideographichighcircle = 12964; + e.ideographiciterationmark = 12293; + e.ideographiclaborcircle = 12952; + e.ideographiclaborparen = 12856; + e.ideographicleftcircle = 12967; + e.ideographiclowcircle = 12966; + e.ideographicmedicinecircle = 12969; + e.ideographicmetalparen = 12846; + e.ideographicmoonparen = 12842; + e.ideographicnameparen = 12852; + e.ideographicperiod = 12290; + e.ideographicprintcircle = 12958; + e.ideographicreachparen = 12867; + e.ideographicrepresentparen = 12857; + e.ideographicresourceparen = 12862; + e.ideographicrightcircle = 12968; + e.ideographicsecretcircle = 12953; + e.ideographicselfparen = 12866; + e.ideographicsocietyparen = 12851; + e.ideographicspace = 12288; + e.ideographicspecialparen = 12853; + e.ideographicstockparen = 12849; + e.ideographicstudyparen = 12859; + e.ideographicsunparen = 12848; + e.ideographicsuperviseparen = 12860; + e.ideographicwaterparen = 12844; + e.ideographicwoodparen = 12845; + e.ideographiczero = 12295; + e.ideographmetalcircle = 12942; + e.ideographmooncircle = 12938; + e.ideographnamecircle = 12948; + e.ideographsuncircle = 12944; + e.ideographwatercircle = 12940; + e.ideographwoodcircle = 12941; + e.ideva = 2311; + e.idieresis = 239; + e.idieresisacute = 7727; + e.idieresiscyrillic = 1253; + e.idotbelow = 7883; + e.iebrevecyrillic = 1239; + e.iecyrillic = 1077; + e.ieungacirclekorean = 12917; + e.ieungaparenkorean = 12821; + e.ieungcirclekorean = 12903; + e.ieungkorean = 12615; + e.ieungparenkorean = 12807; + e.igrave = 236; + e.igujarati = 2695; + e.igurmukhi = 2567; + e.ihiragana = 12356; + e.ihookabove = 7881; + e.iibengali = 2440; + e.iicyrillic = 1080; + e.iideva = 2312; + e.iigujarati = 2696; + e.iigurmukhi = 2568; + e.iimatragurmukhi = 2624; + e.iinvertedbreve = 523; + e.iishortcyrillic = 1081; + e.iivowelsignbengali = 2496; + e.iivowelsigndeva = 2368; + e.iivowelsigngujarati = 2752; + e.ij = 307; + e.ikatakana = 12452; + e.ikatakanahalfwidth = 65394; + e.ikorean = 12643; + e.ilde = 732; + e.iluyhebrew = 1452; + e.imacron = 299; + e.imacroncyrillic = 1251; + e.imageorapproximatelyequal = 8787; + e.imatragurmukhi = 2623; + e.imonospace = 65353; + e.increment = 8710; + e.infinity = 8734; + e.iniarmenian = 1387; + e.integral = 8747; + e.integralbottom = 8993; + e.integralbt = 8993; + e.integralex = 63733; + e.integraltop = 8992; + e.integraltp = 8992; + e.intersection = 8745; + e.intisquare = 13061; + e.invbullet = 9688; + e.invcircle = 9689; + e.invsmileface = 9787; + e.iocyrillic = 1105; + e.iogonek = 303; + e.iota = 953; + e.iotadieresis = 970; + e.iotadieresistonos = 912; + e.iotalatin = 617; + e.iotatonos = 943; + e.iparen = 9380; + e.irigurmukhi = 2674; + e.ismallhiragana = 12355; + e.ismallkatakana = 12451; + e.ismallkatakanahalfwidth = 65384; + e.issharbengali = 2554; + e.istroke = 616; + e.isuperior = 63213; + e.iterationhiragana = 12445; + e.iterationkatakana = 12541; + e.itilde = 297; + e.itildebelow = 7725; + e.iubopomofo = 12585; + e.iucyrillic = 1102; + e.ivowelsignbengali = 2495; + e.ivowelsigndeva = 2367; + e.ivowelsigngujarati = 2751; + e.izhitsacyrillic = 1141; + e.izhitsadblgravecyrillic = 1143; + e.j = 106; + e.jaarmenian = 1393; + e.jabengali = 2460; + e.jadeva = 2332; + e.jagujarati = 2716; + e.jagurmukhi = 2588; + e.jbopomofo = 12560; + e.jcaron = 496; + e.jcircle = 9433; + e.jcircumflex = 309; + e.jcrossedtail = 669; + e.jdotlessstroke = 607; + e.jecyrillic = 1112; + e.jeemarabic = 1580; + e.jeemfinalarabic = 65182; + e.jeeminitialarabic = 65183; + e.jeemmedialarabic = 65184; + e.jeharabic = 1688; + e.jehfinalarabic = 64395; + e.jhabengali = 2461; + e.jhadeva = 2333; + e.jhagujarati = 2717; + e.jhagurmukhi = 2589; + e.jheharmenian = 1403; + e.jis = 12292; + e.jmonospace = 65354; + e.jparen = 9381; + e.jsuperior = 690; + e.k = 107; + e.kabashkircyrillic = 1185; + e.kabengali = 2453; + e.kacute = 7729; + e.kacyrillic = 1082; + e.kadescendercyrillic = 1179; + e.kadeva = 2325; + e.kaf = 1499; + e.kafarabic = 1603; + e.kafdagesh = 64315; + e.kafdageshhebrew = 64315; + e.kaffinalarabic = 65242; + e.kafhebrew = 1499; + e.kafinitialarabic = 65243; + e.kafmedialarabic = 65244; + e.kafrafehebrew = 64333; + e.kagujarati = 2709; + e.kagurmukhi = 2581; + e.kahiragana = 12363; + e.kahookcyrillic = 1220; + e.kakatakana = 12459; + e.kakatakanahalfwidth = 65398; + e.kappa = 954; + e.kappasymbolgreek = 1008; + e.kapyeounmieumkorean = 12657; + e.kapyeounphieuphkorean = 12676; + e.kapyeounpieupkorean = 12664; + e.kapyeounssangpieupkorean = 12665; + e.karoriisquare = 13069; + e.kashidaautoarabic = 1600; + e.kashidaautonosidebearingarabic = 1600; + e.kasmallkatakana = 12533; + e.kasquare = 13188; + e.kasraarabic = 1616; + e.kasratanarabic = 1613; + e.kastrokecyrillic = 1183; + e.katahiraprolongmarkhalfwidth = 65392; + e.kaverticalstrokecyrillic = 1181; + e.kbopomofo = 12558; + e.kcalsquare = 13193; + e.kcaron = 489; + e.kcedilla = 311; + e.kcircle = 9434; + e.kcommaaccent = 311; + e.kdotbelow = 7731; + e.keharmenian = 1412; + e.kehiragana = 12369; + e.kekatakana = 12465; + e.kekatakanahalfwidth = 65401; + e.kenarmenian = 1391; + e.kesmallkatakana = 12534; + e.kgreenlandic = 312; + e.khabengali = 2454; + e.khacyrillic = 1093; + e.khadeva = 2326; + e.khagujarati = 2710; + e.khagurmukhi = 2582; + e.khaharabic = 1582; + e.khahfinalarabic = 65190; + e.khahinitialarabic = 65191; + e.khahmedialarabic = 65192; + e.kheicoptic = 999; + e.khhadeva = 2393; + e.khhagurmukhi = 2649; + e.khieukhacirclekorean = 12920; + e.khieukhaparenkorean = 12824; + e.khieukhcirclekorean = 12906; + e.khieukhkorean = 12619; + e.khieukhparenkorean = 12810; + e.khokhaithai = 3586; + e.khokhonthai = 3589; + e.khokhuatthai = 3587; + e.khokhwaithai = 3588; + e.khomutthai = 3675; + e.khook = 409; + e.khorakhangthai = 3590; + e.khzsquare = 13201; + e.kihiragana = 12365; + e.kikatakana = 12461; + e.kikatakanahalfwidth = 65399; + e.kiroguramusquare = 13077; + e.kiromeetorusquare = 13078; + e.kirosquare = 13076; + e.kiyeokacirclekorean = 12910; + e.kiyeokaparenkorean = 12814; + e.kiyeokcirclekorean = 12896; + e.kiyeokkorean = 12593; + e.kiyeokparenkorean = 12800; + e.kiyeoksioskorean = 12595; + e.kjecyrillic = 1116; + e.klinebelow = 7733; + e.klsquare = 13208; + e.kmcubedsquare = 13222; + e.kmonospace = 65355; + e.kmsquaredsquare = 13218; + e.kohiragana = 12371; + e.kohmsquare = 13248; + e.kokaithai = 3585; + e.kokatakana = 12467; + e.kokatakanahalfwidth = 65402; + e.kooposquare = 13086; + e.koppacyrillic = 1153; + e.koreanstandardsymbol = 12927; + e.koroniscmb = 835; + e.kparen = 9382; + e.kpasquare = 13226; + e.ksicyrillic = 1135; + e.ktsquare = 13263; + e.kturned = 670; + e.kuhiragana = 12367; + e.kukatakana = 12463; + e.kukatakanahalfwidth = 65400; + e.kvsquare = 13240; + e.kwsquare = 13246; + e.l = 108; + e.labengali = 2482; + e.lacute = 314; + e.ladeva = 2354; + e.lagujarati = 2738; + e.lagurmukhi = 2610; + e.lakkhangyaothai = 3653; + e.lamaleffinalarabic = 65276; + e.lamalefhamzaabovefinalarabic = 65272; + e.lamalefhamzaaboveisolatedarabic = 65271; + e.lamalefhamzabelowfinalarabic = 65274; + e.lamalefhamzabelowisolatedarabic = 65273; + e.lamalefisolatedarabic = 65275; + e.lamalefmaddaabovefinalarabic = 65270; + e.lamalefmaddaaboveisolatedarabic = 65269; + e.lamarabic = 1604; + e.lambda = 955; + e.lambdastroke = 411; + e.lamed = 1500; + e.lameddagesh = 64316; + e.lameddageshhebrew = 64316; + e.lamedhebrew = 1500; + e.lamfinalarabic = 65246; + e.lamhahinitialarabic = 64714; + e.laminitialarabic = 65247; + e.lamjeeminitialarabic = 64713; + e.lamkhahinitialarabic = 64715; + e.lamlamhehisolatedarabic = 65010; + e.lammedialarabic = 65248; + e.lammeemhahinitialarabic = 64904; + e.lammeeminitialarabic = 64716; + e.largecircle = 9711; + e.lbar = 410; + e.lbelt = 620; + e.lbopomofo = 12556; + e.lcaron = 318; + e.lcedilla = 316; + e.lcircle = 9435; + e.lcircumflexbelow = 7741; + e.lcommaaccent = 316; + e.ldot = 320; + e.ldotaccent = 320; + e.ldotbelow = 7735; + e.ldotbelowmacron = 7737; + e.leftangleabovecmb = 794; + e.lefttackbelowcmb = 792; + e.less = 60; + e.lessequal = 8804; + e.lessequalorgreater = 8922; + e.lessmonospace = 65308; + e.lessorequivalent = 8818; + e.lessorgreater = 8822; + e.lessoverequal = 8806; + e.lesssmall = 65124; + e.lezh = 622; + e.lfblock = 9612; + e.lhookretroflex = 621; + e.lira = 8356; + e.liwnarmenian = 1388; + e.lj = 457; + e.ljecyrillic = 1113; + e.ll = 63168; + e.lladeva = 2355; + e.llagujarati = 2739; + e.llinebelow = 7739; + e.llladeva = 2356; + e.llvocalicbengali = 2529; + e.llvocalicdeva = 2401; + e.llvocalicvowelsignbengali = 2531; + e.llvocalicvowelsigndeva = 2403; + e.lmiddletilde = 619; + e.lmonospace = 65356; + e.lmsquare = 13264; + e.lochulathai = 3628; + e.logicaland = 8743; + e.logicalnot = 172; + e.logicalnotreversed = 8976; + e.logicalor = 8744; + e.lolingthai = 3621; + e.longs = 383; + e.lowlinecenterline = 65102; + e.lowlinecmb = 818; + e.lowlinedashed = 65101; + e.lozenge = 9674; + e.lparen = 9383; + e.lslash = 322; + e.lsquare = 8467; + e.lsuperior = 63214; + e.ltshade = 9617; + e.luthai = 3622; + e.lvocalicbengali = 2444; + e.lvocalicdeva = 2316; + e.lvocalicvowelsignbengali = 2530; + e.lvocalicvowelsigndeva = 2402; + e.lxsquare = 13267; + e.m = 109; + e.mabengali = 2478; + e.macron = 175; + e.macronbelowcmb = 817; + e.macroncmb = 772; + e.macronlowmod = 717; + e.macronmonospace = 65507; + e.macute = 7743; + e.madeva = 2350; + e.magujarati = 2734; + e.magurmukhi = 2606; + e.mahapakhhebrew = 1444; + e.mahapakhlefthebrew = 1444; + e.mahiragana = 12414; + e.maichattawalowleftthai = 63637; + e.maichattawalowrightthai = 63636; + e.maichattawathai = 3659; + e.maichattawaupperleftthai = 63635; + e.maieklowleftthai = 63628; + e.maieklowrightthai = 63627; + e.maiekthai = 3656; + e.maiekupperleftthai = 63626; + e.maihanakatleftthai = 63620; + e.maihanakatthai = 3633; + e.maitaikhuleftthai = 63625; + e.maitaikhuthai = 3655; + e.maitholowleftthai = 63631; + e.maitholowrightthai = 63630; + e.maithothai = 3657; + e.maithoupperleftthai = 63629; + e.maitrilowleftthai = 63634; + e.maitrilowrightthai = 63633; + e.maitrithai = 3658; + e.maitriupperleftthai = 63632; + e.maiyamokthai = 3654; + e.makatakana = 12510; + e.makatakanahalfwidth = 65423; + e.male = 9794; + e.mansyonsquare = 13127; + e.maqafhebrew = 1470; + e.mars = 9794; + e.masoracirclehebrew = 1455; + e.masquare = 13187; + e.mbopomofo = 12551; + e.mbsquare = 13268; + e.mcircle = 9436; + e.mcubedsquare = 13221; + e.mdotaccent = 7745; + e.mdotbelow = 7747; + e.meemarabic = 1605; + e.meemfinalarabic = 65250; + e.meeminitialarabic = 65251; + e.meemmedialarabic = 65252; + e.meemmeeminitialarabic = 64721; + e.meemmeemisolatedarabic = 64584; + e.meetorusquare = 13133; + e.mehiragana = 12417; + e.meizierasquare = 13182; + e.mekatakana = 12513; + e.mekatakanahalfwidth = 65426; + e.mem = 1502; + e.memdagesh = 64318; + e.memdageshhebrew = 64318; + e.memhebrew = 1502; + e.menarmenian = 1396; + e.merkhahebrew = 1445; + e.merkhakefulahebrew = 1446; + e.merkhakefulalefthebrew = 1446; + e.merkhalefthebrew = 1445; + e.mhook = 625; + e.mhzsquare = 13202; + e.middledotkatakanahalfwidth = 65381; + e.middot = 183; + e.mieumacirclekorean = 12914; + e.mieumaparenkorean = 12818; + e.mieumcirclekorean = 12900; + e.mieumkorean = 12609; + e.mieumpansioskorean = 12656; + e.mieumparenkorean = 12804; + e.mieumpieupkorean = 12654; + e.mieumsioskorean = 12655; + e.mihiragana = 12415; + e.mikatakana = 12511; + e.mikatakanahalfwidth = 65424; + e.minus = 8722; + e.minusbelowcmb = 800; + e.minuscircle = 8854; + e.minusmod = 727; + e.minusplus = 8723; + e.minute = 8242; + e.miribaarusquare = 13130; + e.mirisquare = 13129; + e.mlonglegturned = 624; + e.mlsquare = 13206; + e.mmcubedsquare = 13219; + e.mmonospace = 65357; + e.mmsquaredsquare = 13215; + e.mohiragana = 12418; + e.mohmsquare = 13249; + e.mokatakana = 12514; + e.mokatakanahalfwidth = 65427; + e.molsquare = 13270; + e.momathai = 3617; + e.moverssquare = 13223; + e.moverssquaredsquare = 13224; + e.mparen = 9384; + e.mpasquare = 13227; + e.mssquare = 13235; + e.msuperior = 63215; + e.mturned = 623; + e.mu = 181; + e.mu1 = 181; + e.muasquare = 13186; + e.muchgreater = 8811; + e.muchless = 8810; + e.mufsquare = 13196; + e.mugreek = 956; + e.mugsquare = 13197; + e.muhiragana = 12416; + e.mukatakana = 12512; + e.mukatakanahalfwidth = 65425; + e.mulsquare = 13205; + e.multiply = 215; + e.mumsquare = 13211; + e.munahhebrew = 1443; + e.munahlefthebrew = 1443; + e.musicalnote = 9834; + e.musicalnotedbl = 9835; + e.musicflatsign = 9837; + e.musicsharpsign = 9839; + e.mussquare = 13234; + e.muvsquare = 13238; + e.muwsquare = 13244; + e.mvmegasquare = 13241; + e.mvsquare = 13239; + e.mwmegasquare = 13247; + e.mwsquare = 13245; + e.n = 110; + e.nabengali = 2472; + e.nabla = 8711; + e.nacute = 324; + e.nadeva = 2344; + e.nagujarati = 2728; + e.nagurmukhi = 2600; + e.nahiragana = 12394; + e.nakatakana = 12490; + e.nakatakanahalfwidth = 65413; + e.napostrophe = 329; + e.nasquare = 13185; + e.nbopomofo = 12555; + e.nbspace = 160; + e.ncaron = 328; + e.ncedilla = 326; + e.ncircle = 9437; + e.ncircumflexbelow = 7755; + e.ncommaaccent = 326; + e.ndotaccent = 7749; + e.ndotbelow = 7751; + e.nehiragana = 12397; + e.nekatakana = 12493; + e.nekatakanahalfwidth = 65416; + e.newsheqelsign = 8362; + e.nfsquare = 13195; + e.ngabengali = 2457; + e.ngadeva = 2329; + e.ngagujarati = 2713; + e.ngagurmukhi = 2585; + e.ngonguthai = 3591; + e.nhiragana = 12435; + e.nhookleft = 626; + e.nhookretroflex = 627; + e.nieunacirclekorean = 12911; + e.nieunaparenkorean = 12815; + e.nieuncieuckorean = 12597; + e.nieuncirclekorean = 12897; + e.nieunhieuhkorean = 12598; + e.nieunkorean = 12596; + e.nieunpansioskorean = 12648; + e.nieunparenkorean = 12801; + e.nieunsioskorean = 12647; + e.nieuntikeutkorean = 12646; + e.nihiragana = 12395; + e.nikatakana = 12491; + e.nikatakanahalfwidth = 65414; + e.nikhahitleftthai = 63641; + e.nikhahitthai = 3661; + e.nine = 57; + e.ninearabic = 1641; + e.ninebengali = 2543; + e.ninecircle = 9320; + e.ninecircleinversesansserif = 10130; + e.ninedeva = 2415; + e.ninegujarati = 2799; + e.ninegurmukhi = 2671; + e.ninehackarabic = 1641; + e.ninehangzhou = 12329; + e.nineideographicparen = 12840; + e.nineinferior = 8329; + e.ninemonospace = 65305; + e.nineoldstyle = 63289; + e.nineparen = 9340; + e.nineperiod = 9360; + e.ninepersian = 1785; + e.nineroman = 8568; + e.ninesuperior = 8313; + e.nineteencircle = 9330; + e.nineteenparen = 9350; + e.nineteenperiod = 9370; + e.ninethai = 3673; + e.nj = 460; + e.njecyrillic = 1114; + e.nkatakana = 12531; + e.nkatakanahalfwidth = 65437; + e.nlegrightlong = 414; + e.nlinebelow = 7753; + e.nmonospace = 65358; + e.nmsquare = 13210; + e.nnabengali = 2467; + e.nnadeva = 2339; + e.nnagujarati = 2723; + e.nnagurmukhi = 2595; + e.nnnadeva = 2345; + e.nohiragana = 12398; + e.nokatakana = 12494; + e.nokatakanahalfwidth = 65417; + e.nonbreakingspace = 160; + e.nonenthai = 3603; + e.nonuthai = 3609; + e.noonarabic = 1606; + e.noonfinalarabic = 65254; + e.noonghunnaarabic = 1722; + e.noonghunnafinalarabic = 64415; + e.nooninitialarabic = 65255; + e.noonjeeminitialarabic = 64722; + e.noonjeemisolatedarabic = 64587; + e.noonmedialarabic = 65256; + e.noonmeeminitialarabic = 64725; + e.noonmeemisolatedarabic = 64590; + e.noonnoonfinalarabic = 64653; + e.notcontains = 8716; + e.notelement = 8713; + e.notelementof = 8713; + e.notequal = 8800; + e.notgreater = 8815; + e.notgreaternorequal = 8817; + e.notgreaternorless = 8825; + e.notidentical = 8802; + e.notless = 8814; + e.notlessnorequal = 8816; + e.notparallel = 8742; + e.notprecedes = 8832; + e.notsubset = 8836; + e.notsucceeds = 8833; + e.notsuperset = 8837; + e.nowarmenian = 1398; + e.nparen = 9385; + e.nssquare = 13233; + e.nsuperior = 8319; + e.ntilde = 241; + e.nu = 957; + e.nuhiragana = 12396; + e.nukatakana = 12492; + e.nukatakanahalfwidth = 65415; + e.nuktabengali = 2492; + e.nuktadeva = 2364; + e.nuktagujarati = 2748; + e.nuktagurmukhi = 2620; + e.numbersign = 35; + e.numbersignmonospace = 65283; + e.numbersignsmall = 65119; + e.numeralsigngreek = 884; + e.numeralsignlowergreek = 885; + e.numero = 8470; + e.nun = 1504; + e.nundagesh = 64320; + e.nundageshhebrew = 64320; + e.nunhebrew = 1504; + e.nvsquare = 13237; + e.nwsquare = 13243; + e.nyabengali = 2462; + e.nyadeva = 2334; + e.nyagujarati = 2718; + e.nyagurmukhi = 2590; + e.o = 111; + e.oacute = 243; + e.oangthai = 3629; + e.obarred = 629; + e.obarredcyrillic = 1257; + e.obarreddieresiscyrillic = 1259; + e.obengali = 2451; + e.obopomofo = 12571; + e.obreve = 335; + e.ocandradeva = 2321; + e.ocandragujarati = 2705; + e.ocandravowelsigndeva = 2377; + e.ocandravowelsigngujarati = 2761; + e.ocaron = 466; + e.ocircle = 9438; + e.ocircumflex = 244; + e.ocircumflexacute = 7889; + e.ocircumflexdotbelow = 7897; + e.ocircumflexgrave = 7891; + e.ocircumflexhookabove = 7893; + e.ocircumflextilde = 7895; + e.ocyrillic = 1086; + e.odblacute = 337; + e.odblgrave = 525; + e.odeva = 2323; + e.odieresis = 246; + e.odieresiscyrillic = 1255; + e.odotbelow = 7885; + e.oe = 339; + e.oekorean = 12634; + e.ogonek = 731; + e.ogonekcmb = 808; + e.ograve = 242; + e.ogujarati = 2707; + e.oharmenian = 1413; + e.ohiragana = 12362; + e.ohookabove = 7887; + e.ohorn = 417; + e.ohornacute = 7899; + e.ohorndotbelow = 7907; + e.ohorngrave = 7901; + e.ohornhookabove = 7903; + e.ohorntilde = 7905; + e.ohungarumlaut = 337; + e.oi = 419; + e.oinvertedbreve = 527; + e.okatakana = 12458; + e.okatakanahalfwidth = 65397; + e.okorean = 12631; + e.olehebrew = 1451; + e.omacron = 333; + e.omacronacute = 7763; + e.omacrongrave = 7761; + e.omdeva = 2384; + e.omega = 969; + e.omega1 = 982; + e.omegacyrillic = 1121; + e.omegalatinclosed = 631; + e.omegaroundcyrillic = 1147; + e.omegatitlocyrillic = 1149; + e.omegatonos = 974; + e.omgujarati = 2768; + e.omicron = 959; + e.omicrontonos = 972; + e.omonospace = 65359; + e.one = 49; + e.onearabic = 1633; + e.onebengali = 2535; + e.onecircle = 9312; + e.onecircleinversesansserif = 10122; + e.onedeva = 2407; + e.onedotenleader = 8228; + e.oneeighth = 8539; + e.onefitted = 63196; + e.onegujarati = 2791; + e.onegurmukhi = 2663; + e.onehackarabic = 1633; + e.onehalf = 189; + e.onehangzhou = 12321; + e.oneideographicparen = 12832; + e.oneinferior = 8321; + e.onemonospace = 65297; + e.onenumeratorbengali = 2548; + e.oneoldstyle = 63281; + e.oneparen = 9332; + e.oneperiod = 9352; + e.onepersian = 1777; + e.onequarter = 188; + e.oneroman = 8560; + e.onesuperior = 185; + e.onethai = 3665; + e.onethird = 8531; + e.oogonek = 491; + e.oogonekmacron = 493; + e.oogurmukhi = 2579; + e.oomatragurmukhi = 2635; + e.oopen = 596; + e.oparen = 9386; + e.openbullet = 9702; + e.option = 8997; + e.ordfeminine = 170; + e.ordmasculine = 186; + e.orthogonal = 8735; + e.oshortdeva = 2322; + e.oshortvowelsigndeva = 2378; + e.oslash = 248; + e.oslashacute = 511; + e.osmallhiragana = 12361; + e.osmallkatakana = 12457; + e.osmallkatakanahalfwidth = 65387; + e.ostrokeacute = 511; + e.osuperior = 63216; + e.otcyrillic = 1151; + e.otilde = 245; + e.otildeacute = 7757; + e.otildedieresis = 7759; + e.oubopomofo = 12577; + e.overline = 8254; + e.overlinecenterline = 65098; + e.overlinecmb = 773; + e.overlinedashed = 65097; + e.overlinedblwavy = 65100; + e.overlinewavy = 65099; + e.overscore = 175; + e.ovowelsignbengali = 2507; + e.ovowelsigndeva = 2379; + e.ovowelsigngujarati = 2763; + e.p = 112; + e.paampssquare = 13184; + e.paasentosquare = 13099; + e.pabengali = 2474; + e.pacute = 7765; + e.padeva = 2346; + e.pagedown = 8671; + e.pageup = 8670; + e.pagujarati = 2730; + e.pagurmukhi = 2602; + e.pahiragana = 12401; + e.paiyannoithai = 3631; + e.pakatakana = 12497; + e.palatalizationcyrilliccmb = 1156; + e.palochkacyrillic = 1216; + e.pansioskorean = 12671; + e.paragraph = 182; + e.parallel = 8741; + e.parenleft = 40; + e.parenleftaltonearabic = 64830; + e.parenleftbt = 63725; + e.parenleftex = 63724; + e.parenleftinferior = 8333; + e.parenleftmonospace = 65288; + e.parenleftsmall = 65113; + e.parenleftsuperior = 8317; + e.parenlefttp = 63723; + e.parenleftvertical = 65077; + e.parenright = 41; + e.parenrightaltonearabic = 64831; + e.parenrightbt = 63736; + e.parenrightex = 63735; + e.parenrightinferior = 8334; + e.parenrightmonospace = 65289; + e.parenrightsmall = 65114; + e.parenrightsuperior = 8318; + e.parenrighttp = 63734; + e.parenrightvertical = 65078; + e.partialdiff = 8706; + e.paseqhebrew = 1472; + e.pashtahebrew = 1433; + e.pasquare = 13225; + e.patah = 1463; + e.patah11 = 1463; + e.patah1d = 1463; + e.patah2a = 1463; + e.patahhebrew = 1463; + e.patahnarrowhebrew = 1463; + e.patahquarterhebrew = 1463; + e.patahwidehebrew = 1463; + e.pazerhebrew = 1441; + e.pbopomofo = 12550; + e.pcircle = 9439; + e.pdotaccent = 7767; + e.pe = 1508; + e.pecyrillic = 1087; + e.pedagesh = 64324; + e.pedageshhebrew = 64324; + e.peezisquare = 13115; + e.pefinaldageshhebrew = 64323; + e.peharabic = 1662; + e.peharmenian = 1402; + e.pehebrew = 1508; + e.pehfinalarabic = 64343; + e.pehinitialarabic = 64344; + e.pehiragana = 12410; + e.pehmedialarabic = 64345; + e.pekatakana = 12506; + e.pemiddlehookcyrillic = 1191; + e.perafehebrew = 64334; + e.percent = 37; + e.percentarabic = 1642; + e.percentmonospace = 65285; + e.percentsmall = 65130; + e.period = 46; + e.periodarmenian = 1417; + e.periodcentered = 183; + e.periodhalfwidth = 65377; + e.periodinferior = 63207; + e.periodmonospace = 65294; + e.periodsmall = 65106; + e.periodsuperior = 63208; + e.perispomenigreekcmb = 834; + e.perpendicular = 8869; + e.perthousand = 8240; + e.peseta = 8359; + e.pfsquare = 13194; + e.phabengali = 2475; + e.phadeva = 2347; + e.phagujarati = 2731; + e.phagurmukhi = 2603; + e.phi = 966; + e.phi1 = 981; + e.phieuphacirclekorean = 12922; + e.phieuphaparenkorean = 12826; + e.phieuphcirclekorean = 12908; + e.phieuphkorean = 12621; + e.phieuphparenkorean = 12812; + e.philatin = 632; + e.phinthuthai = 3642; + e.phisymbolgreek = 981; + e.phook = 421; + e.phophanthai = 3614; + e.phophungthai = 3612; + e.phosamphaothai = 3616; + e.pi = 960; + e.pieupacirclekorean = 12915; + e.pieupaparenkorean = 12819; + e.pieupcieuckorean = 12662; + e.pieupcirclekorean = 12901; + e.pieupkiyeokkorean = 12658; + e.pieupkorean = 12610; + e.pieupparenkorean = 12805; + e.pieupsioskiyeokkorean = 12660; + e.pieupsioskorean = 12612; + e.pieupsiostikeutkorean = 12661; + e.pieupthieuthkorean = 12663; + e.pieuptikeutkorean = 12659; + e.pihiragana = 12404; + e.pikatakana = 12500; + e.pisymbolgreek = 982; + e.piwrarmenian = 1411; + e.planckover2pi = 8463; + e.planckover2pi1 = 8463; + e.plus = 43; + e.plusbelowcmb = 799; + e.pluscircle = 8853; + e.plusminus = 177; + e.plusmod = 726; + e.plusmonospace = 65291; + e.plussmall = 65122; + e.plussuperior = 8314; + e.pmonospace = 65360; + e.pmsquare = 13272; + e.pohiragana = 12413; + e.pointingindexdownwhite = 9759; + e.pointingindexleftwhite = 9756; + e.pointingindexrightwhite = 9758; + e.pointingindexupwhite = 9757; + e.pokatakana = 12509; + e.poplathai = 3611; + e.postalmark = 12306; + e.postalmarkface = 12320; + e.pparen = 9387; + e.precedes = 8826; + e.prescription = 8478; + e.primemod = 697; + e.primereversed = 8245; + e.product = 8719; + e.projective = 8965; + e.prolongedkana = 12540; + e.propellor = 8984; + e.propersubset = 8834; + e.propersuperset = 8835; + e.proportion = 8759; + e.proportional = 8733; + e.psi = 968; + e.psicyrillic = 1137; + e.psilipneumatacyrilliccmb = 1158; + e.pssquare = 13232; + e.puhiragana = 12407; + e.pukatakana = 12503; + e.pvsquare = 13236; + e.pwsquare = 13242; + e.q = 113; + e.qadeva = 2392; + e.qadmahebrew = 1448; + e.qafarabic = 1602; + e.qaffinalarabic = 65238; + e.qafinitialarabic = 65239; + e.qafmedialarabic = 65240; + e.qamats = 1464; + e.qamats10 = 1464; + e.qamats1a = 1464; + e.qamats1c = 1464; + e.qamats27 = 1464; + e.qamats29 = 1464; + e.qamats33 = 1464; + e.qamatsde = 1464; + e.qamatshebrew = 1464; + e.qamatsnarrowhebrew = 1464; + e.qamatsqatanhebrew = 1464; + e.qamatsqatannarrowhebrew = 1464; + e.qamatsqatanquarterhebrew = 1464; + e.qamatsqatanwidehebrew = 1464; + e.qamatsquarterhebrew = 1464; + e.qamatswidehebrew = 1464; + e.qarneyparahebrew = 1439; + e.qbopomofo = 12561; + e.qcircle = 9440; + e.qhook = 672; + e.qmonospace = 65361; + e.qof = 1511; + e.qofdagesh = 64327; + e.qofdageshhebrew = 64327; + e.qofhebrew = 1511; + e.qparen = 9388; + e.quarternote = 9833; + e.qubuts = 1467; + e.qubuts18 = 1467; + e.qubuts25 = 1467; + e.qubuts31 = 1467; + e.qubutshebrew = 1467; + e.qubutsnarrowhebrew = 1467; + e.qubutsquarterhebrew = 1467; + e.qubutswidehebrew = 1467; + e.question = 63; + e.questionarabic = 1567; + e.questionarmenian = 1374; + e.questiondown = 191; + e.questiondownsmall = 63423; + e.questiongreek = 894; + e.questionmonospace = 65311; + e.questionsmall = 63295; + e.quotedbl = 34; + e.quotedblbase = 8222; + e.quotedblleft = 8220; + e.quotedblmonospace = 65282; + e.quotedblprime = 12318; + e.quotedblprimereversed = 12317; + e.quotedblright = 8221; + e.quoteleft = 8216; + e.quoteleftreversed = 8219; + e.quotereversed = 8219; + e.quoteright = 8217; + e.quoterightn = 329; + e.quotesinglbase = 8218; + e.quotesingle = 39; + e.quotesinglemonospace = 65287; + e.r = 114; + e.raarmenian = 1404; + e.rabengali = 2480; + e.racute = 341; + e.radeva = 2352; + e.radical = 8730; + e.radicalex = 63717; + e.radoverssquare = 13230; + e.radoverssquaredsquare = 13231; + e.radsquare = 13229; + e.rafe = 1471; + e.rafehebrew = 1471; + e.ragujarati = 2736; + e.ragurmukhi = 2608; + e.rahiragana = 12425; + e.rakatakana = 12521; + e.rakatakanahalfwidth = 65431; + e.ralowerdiagonalbengali = 2545; + e.ramiddlediagonalbengali = 2544; + e.ramshorn = 612; + e.ratio = 8758; + e.rbopomofo = 12566; + e.rcaron = 345; + e.rcedilla = 343; + e.rcircle = 9441; + e.rcommaaccent = 343; + e.rdblgrave = 529; + e.rdotaccent = 7769; + e.rdotbelow = 7771; + e.rdotbelowmacron = 7773; + e.referencemark = 8251; + e.reflexsubset = 8838; + e.reflexsuperset = 8839; + e.registered = 174; + e.registersans = 63720; + e.registerserif = 63194; + e.reharabic = 1585; + e.reharmenian = 1408; + e.rehfinalarabic = 65198; + e.rehiragana = 12428; + e.rekatakana = 12524; + e.rekatakanahalfwidth = 65434; + e.resh = 1512; + e.reshdageshhebrew = 64328; + e.reshhebrew = 1512; + e.reversedtilde = 8765; + e.reviahebrew = 1431; + e.reviamugrashhebrew = 1431; + e.revlogicalnot = 8976; + e.rfishhook = 638; + e.rfishhookreversed = 639; + e.rhabengali = 2525; + e.rhadeva = 2397; + e.rho = 961; + e.rhook = 637; + e.rhookturned = 635; + e.rhookturnedsuperior = 693; + e.rhosymbolgreek = 1009; + e.rhotichookmod = 734; + e.rieulacirclekorean = 12913; + e.rieulaparenkorean = 12817; + e.rieulcirclekorean = 12899; + e.rieulhieuhkorean = 12608; + e.rieulkiyeokkorean = 12602; + e.rieulkiyeoksioskorean = 12649; + e.rieulkorean = 12601; + e.rieulmieumkorean = 12603; + e.rieulpansioskorean = 12652; + e.rieulparenkorean = 12803; + e.rieulphieuphkorean = 12607; + e.rieulpieupkorean = 12604; + e.rieulpieupsioskorean = 12651; + e.rieulsioskorean = 12605; + e.rieulthieuthkorean = 12606; + e.rieultikeutkorean = 12650; + e.rieulyeorinhieuhkorean = 12653; + e.rightangle = 8735; + e.righttackbelowcmb = 793; + e.righttriangle = 8895; + e.rihiragana = 12426; + e.rikatakana = 12522; + e.rikatakanahalfwidth = 65432; + e.ring = 730; + e.ringbelowcmb = 805; + e.ringcmb = 778; + e.ringhalfleft = 703; + e.ringhalfleftarmenian = 1369; + e.ringhalfleftbelowcmb = 796; + e.ringhalfleftcentered = 723; + e.ringhalfright = 702; + e.ringhalfrightbelowcmb = 825; + e.ringhalfrightcentered = 722; + e.rinvertedbreve = 531; + e.rittorusquare = 13137; + e.rlinebelow = 7775; + e.rlongleg = 636; + e.rlonglegturned = 634; + e.rmonospace = 65362; + e.rohiragana = 12429; + e.rokatakana = 12525; + e.rokatakanahalfwidth = 65435; + e.roruathai = 3619; + e.rparen = 9389; + e.rrabengali = 2524; + e.rradeva = 2353; + e.rragurmukhi = 2652; + e.rreharabic = 1681; + e.rrehfinalarabic = 64397; + e.rrvocalicbengali = 2528; + e.rrvocalicdeva = 2400; + e.rrvocalicgujarati = 2784; + e.rrvocalicvowelsignbengali = 2500; + e.rrvocalicvowelsigndeva = 2372; + e.rrvocalicvowelsigngujarati = 2756; + e.rsuperior = 63217; + e.rtblock = 9616; + e.rturned = 633; + e.rturnedsuperior = 692; + e.ruhiragana = 12427; + e.rukatakana = 12523; + e.rukatakanahalfwidth = 65433; + e.rupeemarkbengali = 2546; + e.rupeesignbengali = 2547; + e.rupiah = 63197; + e.ruthai = 3620; + e.rvocalicbengali = 2443; + e.rvocalicdeva = 2315; + e.rvocalicgujarati = 2699; + e.rvocalicvowelsignbengali = 2499; + e.rvocalicvowelsigndeva = 2371; + e.rvocalicvowelsigngujarati = 2755; + e.s = 115; + e.sabengali = 2488; + e.sacute = 347; + e.sacutedotaccent = 7781; + e.sadarabic = 1589; + e.sadeva = 2360; + e.sadfinalarabic = 65210; + e.sadinitialarabic = 65211; + e.sadmedialarabic = 65212; + e.sagujarati = 2744; + e.sagurmukhi = 2616; + e.sahiragana = 12373; + e.sakatakana = 12469; + e.sakatakanahalfwidth = 65403; + e.sallallahoualayhewasallamarabic = 65018; + e.samekh = 1505; + e.samekhdagesh = 64321; + e.samekhdageshhebrew = 64321; + e.samekhhebrew = 1505; + e.saraaathai = 3634; + e.saraaethai = 3649; + e.saraaimaimalaithai = 3652; + e.saraaimaimuanthai = 3651; + e.saraamthai = 3635; + e.saraathai = 3632; + e.saraethai = 3648; + e.saraiileftthai = 63622; + e.saraiithai = 3637; + e.saraileftthai = 63621; + e.saraithai = 3636; + e.saraothai = 3650; + e.saraueeleftthai = 63624; + e.saraueethai = 3639; + e.saraueleftthai = 63623; + e.sarauethai = 3638; + e.sarauthai = 3640; + e.sarauuthai = 3641; + e.sbopomofo = 12569; + e.scaron = 353; + e.scarondotaccent = 7783; + e.scedilla = 351; + e.schwa = 601; + e.schwacyrillic = 1241; + e.schwadieresiscyrillic = 1243; + e.schwahook = 602; + e.scircle = 9442; + e.scircumflex = 349; + e.scommaaccent = 537; + e.sdotaccent = 7777; + e.sdotbelow = 7779; + e.sdotbelowdotaccent = 7785; + e.seagullbelowcmb = 828; + e.second = 8243; + e.secondtonechinese = 714; + e.section = 167; + e.seenarabic = 1587; + e.seenfinalarabic = 65202; + e.seeninitialarabic = 65203; + e.seenmedialarabic = 65204; + e.segol = 1462; + e.segol13 = 1462; + e.segol1f = 1462; + e.segol2c = 1462; + e.segolhebrew = 1462; + e.segolnarrowhebrew = 1462; + e.segolquarterhebrew = 1462; + e.segoltahebrew = 1426; + e.segolwidehebrew = 1462; + e.seharmenian = 1405; + e.sehiragana = 12379; + e.sekatakana = 12475; + e.sekatakanahalfwidth = 65406; + e.semicolon = 59; + e.semicolonarabic = 1563; + e.semicolonmonospace = 65307; + e.semicolonsmall = 65108; + e.semivoicedmarkkana = 12444; + e.semivoicedmarkkanahalfwidth = 65439; + e.sentisquare = 13090; + e.sentosquare = 13091; + e.seven = 55; + e.sevenarabic = 1639; + e.sevenbengali = 2541; + e.sevencircle = 9318; + e.sevencircleinversesansserif = 10128; + e.sevendeva = 2413; + e.seveneighths = 8542; + e.sevengujarati = 2797; + e.sevengurmukhi = 2669; + e.sevenhackarabic = 1639; + e.sevenhangzhou = 12327; + e.sevenideographicparen = 12838; + e.seveninferior = 8327; + e.sevenmonospace = 65303; + e.sevenoldstyle = 63287; + e.sevenparen = 9338; + e.sevenperiod = 9358; + e.sevenpersian = 1783; + e.sevenroman = 8566; + e.sevensuperior = 8311; + e.seventeencircle = 9328; + e.seventeenparen = 9348; + e.seventeenperiod = 9368; + e.seventhai = 3671; + e.sfthyphen = 173; + e.shaarmenian = 1399; + e.shabengali = 2486; + e.shacyrillic = 1096; + e.shaddaarabic = 1617; + e.shaddadammaarabic = 64609; + e.shaddadammatanarabic = 64606; + e.shaddafathaarabic = 64608; + e.shaddakasraarabic = 64610; + e.shaddakasratanarabic = 64607; + e.shade = 9618; + e.shadedark = 9619; + e.shadelight = 9617; + e.shademedium = 9618; + e.shadeva = 2358; + e.shagujarati = 2742; + e.shagurmukhi = 2614; + e.shalshelethebrew = 1427; + e.shbopomofo = 12565; + e.shchacyrillic = 1097; + e.sheenarabic = 1588; + e.sheenfinalarabic = 65206; + e.sheeninitialarabic = 65207; + e.sheenmedialarabic = 65208; + e.sheicoptic = 995; + e.sheqel = 8362; + e.sheqelhebrew = 8362; + e.sheva = 1456; + e.sheva115 = 1456; + e.sheva15 = 1456; + e.sheva22 = 1456; + e.sheva2e = 1456; + e.shevahebrew = 1456; + e.shevanarrowhebrew = 1456; + e.shevaquarterhebrew = 1456; + e.shevawidehebrew = 1456; + e.shhacyrillic = 1211; + e.shimacoptic = 1005; + e.shin = 1513; + e.shindagesh = 64329; + e.shindageshhebrew = 64329; + e.shindageshshindot = 64300; + e.shindageshshindothebrew = 64300; + e.shindageshsindot = 64301; + e.shindageshsindothebrew = 64301; + e.shindothebrew = 1473; + e.shinhebrew = 1513; + e.shinshindot = 64298; + e.shinshindothebrew = 64298; + e.shinsindot = 64299; + e.shinsindothebrew = 64299; + e.shook = 642; + e.sigma = 963; + e.sigma1 = 962; + e.sigmafinal = 962; + e.sigmalunatesymbolgreek = 1010; + e.sihiragana = 12375; + e.sikatakana = 12471; + e.sikatakanahalfwidth = 65404; + e.siluqhebrew = 1469; + e.siluqlefthebrew = 1469; + e.similar = 8764; + e.sindothebrew = 1474; + e.siosacirclekorean = 12916; + e.siosaparenkorean = 12820; + e.sioscieuckorean = 12670; + e.sioscirclekorean = 12902; + e.sioskiyeokkorean = 12666; + e.sioskorean = 12613; + e.siosnieunkorean = 12667; + e.siosparenkorean = 12806; + e.siospieupkorean = 12669; + e.siostikeutkorean = 12668; + e.six = 54; + e.sixarabic = 1638; + e.sixbengali = 2540; + e.sixcircle = 9317; + e.sixcircleinversesansserif = 10127; + e.sixdeva = 2412; + e.sixgujarati = 2796; + e.sixgurmukhi = 2668; + e.sixhackarabic = 1638; + e.sixhangzhou = 12326; + e.sixideographicparen = 12837; + e.sixinferior = 8326; + e.sixmonospace = 65302; + e.sixoldstyle = 63286; + e.sixparen = 9337; + e.sixperiod = 9357; + e.sixpersian = 1782; + e.sixroman = 8565; + e.sixsuperior = 8310; + e.sixteencircle = 9327; + e.sixteencurrencydenominatorbengali = 2553; + e.sixteenparen = 9347; + e.sixteenperiod = 9367; + e.sixthai = 3670; + e.slash = 47; + e.slashmonospace = 65295; + e.slong = 383; + e.slongdotaccent = 7835; + e.smileface = 9786; + e.smonospace = 65363; + e.sofpasuqhebrew = 1475; + e.softhyphen = 173; + e.softsigncyrillic = 1100; + e.sohiragana = 12381; + e.sokatakana = 12477; + e.sokatakanahalfwidth = 65407; + e.soliduslongoverlaycmb = 824; + e.solidusshortoverlaycmb = 823; + e.sorusithai = 3625; + e.sosalathai = 3624; + e.sosothai = 3595; + e.sosuathai = 3626; + e.space = 32; + e.spacehackarabic = 32; + e.spade = 9824; + e.spadesuitblack = 9824; + e.spadesuitwhite = 9828; + e.sparen = 9390; + e.squarebelowcmb = 827; + e.squarecc = 13252; + e.squarecm = 13213; + e.squarediagonalcrosshatchfill = 9641; + e.squarehorizontalfill = 9636; + e.squarekg = 13199; + e.squarekm = 13214; + e.squarekmcapital = 13262; + e.squareln = 13265; + e.squarelog = 13266; + e.squaremg = 13198; + e.squaremil = 13269; + e.squaremm = 13212; + e.squaremsquared = 13217; + e.squareorthogonalcrosshatchfill = 9638; + e.squareupperlefttolowerrightfill = 9639; + e.squareupperrighttolowerleftfill = 9640; + e.squareverticalfill = 9637; + e.squarewhitewithsmallblack = 9635; + e.srsquare = 13275; + e.ssabengali = 2487; + e.ssadeva = 2359; + e.ssagujarati = 2743; + e.ssangcieuckorean = 12617; + e.ssanghieuhkorean = 12677; + e.ssangieungkorean = 12672; + e.ssangkiyeokkorean = 12594; + e.ssangnieunkorean = 12645; + e.ssangpieupkorean = 12611; + e.ssangsioskorean = 12614; + e.ssangtikeutkorean = 12600; + e.ssuperior = 63218; + e.sterling = 163; + e.sterlingmonospace = 65505; + e.strokelongoverlaycmb = 822; + e.strokeshortoverlaycmb = 821; + e.subset = 8834; + e.subsetnotequal = 8842; + e.subsetorequal = 8838; + e.succeeds = 8827; + e.suchthat = 8715; + e.suhiragana = 12377; + e.sukatakana = 12473; + e.sukatakanahalfwidth = 65405; + e.sukunarabic = 1618; + e.summation = 8721; + e.sun = 9788; + e.superset = 8835; + e.supersetnotequal = 8843; + e.supersetorequal = 8839; + e.svsquare = 13276; + e.syouwaerasquare = 13180; + e.t = 116; + e.tabengali = 2468; + e.tackdown = 8868; + e.tackleft = 8867; + e.tadeva = 2340; + e.tagujarati = 2724; + e.tagurmukhi = 2596; + e.taharabic = 1591; + e.tahfinalarabic = 65218; + e.tahinitialarabic = 65219; + e.tahiragana = 12383; + e.tahmedialarabic = 65220; + e.taisyouerasquare = 13181; + e.takatakana = 12479; + e.takatakanahalfwidth = 65408; + e.tatweelarabic = 1600; + e.tau = 964; + e.tav = 1514; + e.tavdages = 64330; + e.tavdagesh = 64330; + e.tavdageshhebrew = 64330; + e.tavhebrew = 1514; + e.tbar = 359; + e.tbopomofo = 12554; + e.tcaron = 357; + e.tccurl = 680; + e.tcedilla = 355; + e.tcheharabic = 1670; + e.tchehfinalarabic = 64379; + e.tchehinitialarabic = 64380; + e.tchehmedialarabic = 64381; + e.tcircle = 9443; + e.tcircumflexbelow = 7793; + e.tcommaaccent = 355; + e.tdieresis = 7831; + e.tdotaccent = 7787; + e.tdotbelow = 7789; + e.tecyrillic = 1090; + e.tedescendercyrillic = 1197; + e.teharabic = 1578; + e.tehfinalarabic = 65174; + e.tehhahinitialarabic = 64674; + e.tehhahisolatedarabic = 64524; + e.tehinitialarabic = 65175; + e.tehiragana = 12390; + e.tehjeeminitialarabic = 64673; + e.tehjeemisolatedarabic = 64523; + e.tehmarbutaarabic = 1577; + e.tehmarbutafinalarabic = 65172; + e.tehmedialarabic = 65176; + e.tehmeeminitialarabic = 64676; + e.tehmeemisolatedarabic = 64526; + e.tehnoonfinalarabic = 64627; + e.tekatakana = 12486; + e.tekatakanahalfwidth = 65411; + e.telephone = 8481; + e.telephoneblack = 9742; + e.telishagedolahebrew = 1440; + e.telishaqetanahebrew = 1449; + e.tencircle = 9321; + e.tenideographicparen = 12841; + e.tenparen = 9341; + e.tenperiod = 9361; + e.tenroman = 8569; + e.tesh = 679; + e.tet = 1496; + e.tetdagesh = 64312; + e.tetdageshhebrew = 64312; + e.tethebrew = 1496; + e.tetsecyrillic = 1205; + e.tevirhebrew = 1435; + e.tevirlefthebrew = 1435; + e.thabengali = 2469; + e.thadeva = 2341; + e.thagujarati = 2725; + e.thagurmukhi = 2597; + e.thalarabic = 1584; + e.thalfinalarabic = 65196; + e.thanthakhatlowleftthai = 63640; + e.thanthakhatlowrightthai = 63639; + e.thanthakhatthai = 3660; + e.thanthakhatupperleftthai = 63638; + e.theharabic = 1579; + e.thehfinalarabic = 65178; + e.thehinitialarabic = 65179; + e.thehmedialarabic = 65180; + e.thereexists = 8707; + e.therefore = 8756; + e.theta = 952; + e.theta1 = 977; + e.thetasymbolgreek = 977; + e.thieuthacirclekorean = 12921; + e.thieuthaparenkorean = 12825; + e.thieuthcirclekorean = 12907; + e.thieuthkorean = 12620; + e.thieuthparenkorean = 12811; + e.thirteencircle = 9324; + e.thirteenparen = 9344; + e.thirteenperiod = 9364; + e.thonangmonthothai = 3601; + e.thook = 429; + e.thophuthaothai = 3602; + e.thorn = 254; + e.thothahanthai = 3607; + e.thothanthai = 3600; + e.thothongthai = 3608; + e.thothungthai = 3606; + e.thousandcyrillic = 1154; + e.thousandsseparatorarabic = 1644; + e.thousandsseparatorpersian = 1644; + e.three = 51; + e.threearabic = 1635; + e.threebengali = 2537; + e.threecircle = 9314; + e.threecircleinversesansserif = 10124; + e.threedeva = 2409; + e.threeeighths = 8540; + e.threegujarati = 2793; + e.threegurmukhi = 2665; + e.threehackarabic = 1635; + e.threehangzhou = 12323; + e.threeideographicparen = 12834; + e.threeinferior = 8323; + e.threemonospace = 65299; + e.threenumeratorbengali = 2550; + e.threeoldstyle = 63283; + e.threeparen = 9334; + e.threeperiod = 9354; + e.threepersian = 1779; + e.threequarters = 190; + e.threequartersemdash = 63198; + e.threeroman = 8562; + e.threesuperior = 179; + e.threethai = 3667; + e.thzsquare = 13204; + e.tihiragana = 12385; + e.tikatakana = 12481; + e.tikatakanahalfwidth = 65409; + e.tikeutacirclekorean = 12912; + e.tikeutaparenkorean = 12816; + e.tikeutcirclekorean = 12898; + e.tikeutkorean = 12599; + e.tikeutparenkorean = 12802; + e.tilde = 732; + e.tildebelowcmb = 816; + e.tildecmb = 771; + e.tildecomb = 771; + e.tildedoublecmb = 864; + e.tildeoperator = 8764; + e.tildeoverlaycmb = 820; + e.tildeverticalcmb = 830; + e.timescircle = 8855; + e.tipehahebrew = 1430; + e.tipehalefthebrew = 1430; + e.tippigurmukhi = 2672; + e.titlocyrilliccmb = 1155; + e.tiwnarmenian = 1407; + e.tlinebelow = 7791; + e.tmonospace = 65364; + e.toarmenian = 1385; + e.tohiragana = 12392; + e.tokatakana = 12488; + e.tokatakanahalfwidth = 65412; + e.tonebarextrahighmod = 741; + e.tonebarextralowmod = 745; + e.tonebarhighmod = 742; + e.tonebarlowmod = 744; + e.tonebarmidmod = 743; + e.tonefive = 445; + e.tonesix = 389; + e.tonetwo = 424; + e.tonos = 900; + e.tonsquare = 13095; + e.topatakthai = 3599; + e.tortoiseshellbracketleft = 12308; + e.tortoiseshellbracketleftsmall = 65117; + e.tortoiseshellbracketleftvertical = 65081; + e.tortoiseshellbracketright = 12309; + e.tortoiseshellbracketrightsmall = 65118; + e.tortoiseshellbracketrightvertical = 65082; + e.totaothai = 3605; + e.tpalatalhook = 427; + e.tparen = 9391; + e.trademark = 8482; + e.trademarksans = 63722; + e.trademarkserif = 63195; + e.tretroflexhook = 648; + e.triagdn = 9660; + e.triaglf = 9668; + e.triagrt = 9658; + e.triagup = 9650; + e.ts = 678; + e.tsadi = 1510; + e.tsadidagesh = 64326; + e.tsadidageshhebrew = 64326; + e.tsadihebrew = 1510; + e.tsecyrillic = 1094; + e.tsere = 1461; + e.tsere12 = 1461; + e.tsere1e = 1461; + e.tsere2b = 1461; + e.tserehebrew = 1461; + e.tserenarrowhebrew = 1461; + e.tserequarterhebrew = 1461; + e.tserewidehebrew = 1461; + e.tshecyrillic = 1115; + e.tsuperior = 63219; + e.ttabengali = 2463; + e.ttadeva = 2335; + e.ttagujarati = 2719; + e.ttagurmukhi = 2591; + e.tteharabic = 1657; + e.ttehfinalarabic = 64359; + e.ttehinitialarabic = 64360; + e.ttehmedialarabic = 64361; + e.tthabengali = 2464; + e.tthadeva = 2336; + e.tthagujarati = 2720; + e.tthagurmukhi = 2592; + e.tturned = 647; + e.tuhiragana = 12388; + e.tukatakana = 12484; + e.tukatakanahalfwidth = 65410; + e.tusmallhiragana = 12387; + e.tusmallkatakana = 12483; + e.tusmallkatakanahalfwidth = 65391; + e.twelvecircle = 9323; + e.twelveparen = 9343; + e.twelveperiod = 9363; + e.twelveroman = 8571; + e.twentycircle = 9331; + e.twentyhangzhou = 21316; + e.twentyparen = 9351; + e.twentyperiod = 9371; + e.two = 50; + e.twoarabic = 1634; + e.twobengali = 2536; + e.twocircle = 9313; + e.twocircleinversesansserif = 10123; + e.twodeva = 2408; + e.twodotenleader = 8229; + e.twodotleader = 8229; + e.twodotleadervertical = 65072; + e.twogujarati = 2792; + e.twogurmukhi = 2664; + e.twohackarabic = 1634; + e.twohangzhou = 12322; + e.twoideographicparen = 12833; + e.twoinferior = 8322; + e.twomonospace = 65298; + e.twonumeratorbengali = 2549; + e.twooldstyle = 63282; + e.twoparen = 9333; + e.twoperiod = 9353; + e.twopersian = 1778; + e.tworoman = 8561; + e.twostroke = 443; + e.twosuperior = 178; + e.twothai = 3666; + e.twothirds = 8532; + e.u = 117; + e.uacute = 250; + e.ubar = 649; + e.ubengali = 2441; + e.ubopomofo = 12584; + e.ubreve = 365; + e.ucaron = 468; + e.ucircle = 9444; + e.ucircumflex = 251; + e.ucircumflexbelow = 7799; + e.ucyrillic = 1091; + e.udattadeva = 2385; + e.udblacute = 369; + e.udblgrave = 533; + e.udeva = 2313; + e.udieresis = 252; + e.udieresisacute = 472; + e.udieresisbelow = 7795; + e.udieresiscaron = 474; + e.udieresiscyrillic = 1265; + e.udieresisgrave = 476; + e.udieresismacron = 470; + e.udotbelow = 7909; + e.ugrave = 249; + e.ugujarati = 2697; + e.ugurmukhi = 2569; + e.uhiragana = 12358; + e.uhookabove = 7911; + e.uhorn = 432; + e.uhornacute = 7913; + e.uhorndotbelow = 7921; + e.uhorngrave = 7915; + e.uhornhookabove = 7917; + e.uhorntilde = 7919; + e.uhungarumlaut = 369; + e.uhungarumlautcyrillic = 1267; + e.uinvertedbreve = 535; + e.ukatakana = 12454; + e.ukatakanahalfwidth = 65395; + e.ukcyrillic = 1145; + e.ukorean = 12636; + e.umacron = 363; + e.umacroncyrillic = 1263; + e.umacrondieresis = 7803; + e.umatragurmukhi = 2625; + e.umonospace = 65365; + e.underscore = 95; + e.underscoredbl = 8215; + e.underscoremonospace = 65343; + e.underscorevertical = 65075; + e.underscorewavy = 65103; + e.union = 8746; + e.universal = 8704; + e.uogonek = 371; + e.uparen = 9392; + e.upblock = 9600; + e.upperdothebrew = 1476; + e.upsilon = 965; + e.upsilondieresis = 971; + e.upsilondieresistonos = 944; + e.upsilonlatin = 650; + e.upsilontonos = 973; + e.uptackbelowcmb = 797; + e.uptackmod = 724; + e.uragurmukhi = 2675; + e.uring = 367; + e.ushortcyrillic = 1118; + e.usmallhiragana = 12357; + e.usmallkatakana = 12453; + e.usmallkatakanahalfwidth = 65385; + e.ustraightcyrillic = 1199; + e.ustraightstrokecyrillic = 1201; + e.utilde = 361; + e.utildeacute = 7801; + e.utildebelow = 7797; + e.uubengali = 2442; + e.uudeva = 2314; + e.uugujarati = 2698; + e.uugurmukhi = 2570; + e.uumatragurmukhi = 2626; + e.uuvowelsignbengali = 2498; + e.uuvowelsigndeva = 2370; + e.uuvowelsigngujarati = 2754; + e.uvowelsignbengali = 2497; + e.uvowelsigndeva = 2369; + e.uvowelsigngujarati = 2753; + e.v = 118; + e.vadeva = 2357; + e.vagujarati = 2741; + e.vagurmukhi = 2613; + e.vakatakana = 12535; + e.vav = 1493; + e.vavdagesh = 64309; + e.vavdagesh65 = 64309; + e.vavdageshhebrew = 64309; + e.vavhebrew = 1493; + e.vavholam = 64331; + e.vavholamhebrew = 64331; + e.vavvavhebrew = 1520; + e.vavyodhebrew = 1521; + e.vcircle = 9445; + e.vdotbelow = 7807; + e.vecyrillic = 1074; + e.veharabic = 1700; + e.vehfinalarabic = 64363; + e.vehinitialarabic = 64364; + e.vehmedialarabic = 64365; + e.vekatakana = 12537; + e.venus = 9792; + e.verticalbar = 124; + e.verticallineabovecmb = 781; + e.verticallinebelowcmb = 809; + e.verticallinelowmod = 716; + e.verticallinemod = 712; + e.vewarmenian = 1406; + e.vhook = 651; + e.vikatakana = 12536; + e.viramabengali = 2509; + e.viramadeva = 2381; + e.viramagujarati = 2765; + e.visargabengali = 2435; + e.visargadeva = 2307; + e.visargagujarati = 2691; + e.vmonospace = 65366; + e.voarmenian = 1400; + e.voicediterationhiragana = 12446; + e.voicediterationkatakana = 12542; + e.voicedmarkkana = 12443; + e.voicedmarkkanahalfwidth = 65438; + e.vokatakana = 12538; + e.vparen = 9393; + e.vtilde = 7805; + e.vturned = 652; + e.vuhiragana = 12436; + e.vukatakana = 12532; + e.w = 119; + e.wacute = 7811; + e.waekorean = 12633; + e.wahiragana = 12431; + e.wakatakana = 12527; + e.wakatakanahalfwidth = 65436; + e.wakorean = 12632; + e.wasmallhiragana = 12430; + e.wasmallkatakana = 12526; + e.wattosquare = 13143; + e.wavedash = 12316; + e.wavyunderscorevertical = 65076; + e.wawarabic = 1608; + e.wawfinalarabic = 65262; + e.wawhamzaabovearabic = 1572; + e.wawhamzaabovefinalarabic = 65158; + e.wbsquare = 13277; + e.wcircle = 9446; + e.wcircumflex = 373; + e.wdieresis = 7813; + e.wdotaccent = 7815; + e.wdotbelow = 7817; + e.wehiragana = 12433; + e.weierstrass = 8472; + e.wekatakana = 12529; + e.wekorean = 12638; + e.weokorean = 12637; + e.wgrave = 7809; + e.whitebullet = 9702; + e.whitecircle = 9675; + e.whitecircleinverse = 9689; + e.whitecornerbracketleft = 12302; + e.whitecornerbracketleftvertical = 65091; + e.whitecornerbracketright = 12303; + e.whitecornerbracketrightvertical = 65092; + e.whitediamond = 9671; + e.whitediamondcontainingblacksmalldiamond = 9672; + e.whitedownpointingsmalltriangle = 9663; + e.whitedownpointingtriangle = 9661; + e.whiteleftpointingsmalltriangle = 9667; + e.whiteleftpointingtriangle = 9665; + e.whitelenticularbracketleft = 12310; + e.whitelenticularbracketright = 12311; + e.whiterightpointingsmalltriangle = 9657; + e.whiterightpointingtriangle = 9655; + e.whitesmallsquare = 9643; + e.whitesmilingface = 9786; + e.whitesquare = 9633; + e.whitestar = 9734; + e.whitetelephone = 9743; + e.whitetortoiseshellbracketleft = 12312; + e.whitetortoiseshellbracketright = 12313; + e.whiteuppointingsmalltriangle = 9653; + e.whiteuppointingtriangle = 9651; + e.wihiragana = 12432; + e.wikatakana = 12528; + e.wikorean = 12639; + e.wmonospace = 65367; + e.wohiragana = 12434; + e.wokatakana = 12530; + e.wokatakanahalfwidth = 65382; + e.won = 8361; + e.wonmonospace = 65510; + e.wowaenthai = 3623; + e.wparen = 9394; + e.wring = 7832; + e.wsuperior = 695; + e.wturned = 653; + e.wynn = 447; + e.x = 120; + e.xabovecmb = 829; + e.xbopomofo = 12562; + e.xcircle = 9447; + e.xdieresis = 7821; + e.xdotaccent = 7819; + e.xeharmenian = 1389; + e.xi = 958; + e.xmonospace = 65368; + e.xparen = 9395; + e.xsuperior = 739; + e.y = 121; + e.yaadosquare = 13134; + e.yabengali = 2479; + e.yacute = 253; + e.yadeva = 2351; + e.yaekorean = 12626; + e.yagujarati = 2735; + e.yagurmukhi = 2607; + e.yahiragana = 12420; + e.yakatakana = 12516; + e.yakatakanahalfwidth = 65428; + e.yakorean = 12625; + e.yamakkanthai = 3662; + e.yasmallhiragana = 12419; + e.yasmallkatakana = 12515; + e.yasmallkatakanahalfwidth = 65388; + e.yatcyrillic = 1123; + e.ycircle = 9448; + e.ycircumflex = 375; + e.ydieresis = 255; + e.ydotaccent = 7823; + e.ydotbelow = 7925; + e.yeharabic = 1610; + e.yehbarreearabic = 1746; + e.yehbarreefinalarabic = 64431; + e.yehfinalarabic = 65266; + e.yehhamzaabovearabic = 1574; + e.yehhamzaabovefinalarabic = 65162; + e.yehhamzaaboveinitialarabic = 65163; + e.yehhamzaabovemedialarabic = 65164; + e.yehinitialarabic = 65267; + e.yehmedialarabic = 65268; + e.yehmeeminitialarabic = 64733; + e.yehmeemisolatedarabic = 64600; + e.yehnoonfinalarabic = 64660; + e.yehthreedotsbelowarabic = 1745; + e.yekorean = 12630; + e.yen = 165; + e.yenmonospace = 65509; + e.yeokorean = 12629; + e.yeorinhieuhkorean = 12678; + e.yerahbenyomohebrew = 1450; + e.yerahbenyomolefthebrew = 1450; + e.yericyrillic = 1099; + e.yerudieresiscyrillic = 1273; + e.yesieungkorean = 12673; + e.yesieungpansioskorean = 12675; + e.yesieungsioskorean = 12674; + e.yetivhebrew = 1434; + e.ygrave = 7923; + e.yhook = 436; + e.yhookabove = 7927; + e.yiarmenian = 1397; + e.yicyrillic = 1111; + e.yikorean = 12642; + e.yinyang = 9775; + e.yiwnarmenian = 1410; + e.ymonospace = 65369; + e.yod = 1497; + e.yoddagesh = 64313; + e.yoddageshhebrew = 64313; + e.yodhebrew = 1497; + e.yodyodhebrew = 1522; + e.yodyodpatahhebrew = 64287; + e.yohiragana = 12424; + e.yoikorean = 12681; + e.yokatakana = 12520; + e.yokatakanahalfwidth = 65430; + e.yokorean = 12635; + e.yosmallhiragana = 12423; + e.yosmallkatakana = 12519; + e.yosmallkatakanahalfwidth = 65390; + e.yotgreek = 1011; + e.yoyaekorean = 12680; + e.yoyakorean = 12679; + e.yoyakthai = 3618; + e.yoyingthai = 3597; + e.yparen = 9396; + e.ypogegrammeni = 890; + e.ypogegrammenigreekcmb = 837; + e.yr = 422; + e.yring = 7833; + e.ysuperior = 696; + e.ytilde = 7929; + e.yturned = 654; + e.yuhiragana = 12422; + e.yuikorean = 12684; + e.yukatakana = 12518; + e.yukatakanahalfwidth = 65429; + e.yukorean = 12640; + e.yusbigcyrillic = 1131; + e.yusbigiotifiedcyrillic = 1133; + e.yuslittlecyrillic = 1127; + e.yuslittleiotifiedcyrillic = 1129; + e.yusmallhiragana = 12421; + e.yusmallkatakana = 12517; + e.yusmallkatakanahalfwidth = 65389; + e.yuyekorean = 12683; + e.yuyeokorean = 12682; + e.yyabengali = 2527; + e.yyadeva = 2399; + e.z = 122; + e.zaarmenian = 1382; + e.zacute = 378; + e.zadeva = 2395; + e.zagurmukhi = 2651; + e.zaharabic = 1592; + e.zahfinalarabic = 65222; + e.zahinitialarabic = 65223; + e.zahiragana = 12374; + e.zahmedialarabic = 65224; + e.zainarabic = 1586; + e.zainfinalarabic = 65200; + e.zakatakana = 12470; + e.zaqefgadolhebrew = 1429; + e.zaqefqatanhebrew = 1428; + e.zarqahebrew = 1432; + e.zayin = 1494; + e.zayindagesh = 64310; + e.zayindageshhebrew = 64310; + e.zayinhebrew = 1494; + e.zbopomofo = 12567; + e.zcaron = 382; + e.zcircle = 9449; + e.zcircumflex = 7825; + e.zcurl = 657; + e.zdot = 380; + e.zdotaccent = 380; + e.zdotbelow = 7827; + e.zecyrillic = 1079; + e.zedescendercyrillic = 1177; + e.zedieresiscyrillic = 1247; + e.zehiragana = 12380; + e.zekatakana = 12476; + e.zero = 48; + e.zeroarabic = 1632; + e.zerobengali = 2534; + e.zerodeva = 2406; + e.zerogujarati = 2790; + e.zerogurmukhi = 2662; + e.zerohackarabic = 1632; + e.zeroinferior = 8320; + e.zeromonospace = 65296; + e.zerooldstyle = 63280; + e.zeropersian = 1776; + e.zerosuperior = 8304; + e.zerothai = 3664; + e.zerowidthjoiner = 65279; + e.zerowidthnonjoiner = 8204; + e.zerowidthspace = 8203; + e.zeta = 950; + e.zhbopomofo = 12563; + e.zhearmenian = 1386; + e.zhebrevecyrillic = 1218; + e.zhecyrillic = 1078; + e.zhedescendercyrillic = 1175; + e.zhedieresiscyrillic = 1245; + e.zihiragana = 12376; + e.zikatakana = 12472; + e.zinorhebrew = 1454; + e.zlinebelow = 7829; + e.zmonospace = 65370; + e.zohiragana = 12382; + e.zokatakana = 12478; + e.zparen = 9397; + e.zretroflexhook = 656; + e.zstroke = 438; + e.zuhiragana = 12378; + e.zukatakana = 12474; + e[".notdef"] = 0; + e.angbracketleftbig = 9001; + e.angbracketleftBig = 9001; + e.angbracketleftbigg = 9001; + e.angbracketleftBigg = 9001; + e.angbracketrightBig = 9002; + e.angbracketrightbig = 9002; + e.angbracketrightBigg = 9002; + e.angbracketrightbigg = 9002; + e.arrowhookleft = 8618; + e.arrowhookright = 8617; + e.arrowlefttophalf = 8636; + e.arrowleftbothalf = 8637; + e.arrownortheast = 8599; + e.arrownorthwest = 8598; + e.arrowrighttophalf = 8640; + e.arrowrightbothalf = 8641; + e.arrowsoutheast = 8600; + e.arrowsouthwest = 8601; + e.backslashbig = 8726; + e.backslashBig = 8726; + e.backslashBigg = 8726; + e.backslashbigg = 8726; + e.bardbl = 8214; + e.bracehtipdownleft = 65079; + e.bracehtipdownright = 65079; + e.bracehtipupleft = 65080; + e.bracehtipupright = 65080; + e.braceleftBig = 123; + e.braceleftbig = 123; + e.braceleftbigg = 123; + e.braceleftBigg = 123; + e.bracerightBig = 125; + e.bracerightbig = 125; + e.bracerightbigg = 125; + e.bracerightBigg = 125; + e.bracketleftbig = 91; + e.bracketleftBig = 91; + e.bracketleftbigg = 91; + e.bracketleftBigg = 91; + e.bracketrightBig = 93; + e.bracketrightbig = 93; + e.bracketrightbigg = 93; + e.bracketrightBigg = 93; + e.ceilingleftbig = 8968; + e.ceilingleftBig = 8968; + e.ceilingleftBigg = 8968; + e.ceilingleftbigg = 8968; + e.ceilingrightbig = 8969; + e.ceilingrightBig = 8969; + e.ceilingrightbigg = 8969; + e.ceilingrightBigg = 8969; + e.circledotdisplay = 8857; + e.circledottext = 8857; + e.circlemultiplydisplay = 8855; + e.circlemultiplytext = 8855; + e.circleplusdisplay = 8853; + e.circleplustext = 8853; + e.contintegraldisplay = 8750; + e.contintegraltext = 8750; + e.coproductdisplay = 8720; + e.coproducttext = 8720; + e.floorleftBig = 8970; + e.floorleftbig = 8970; + e.floorleftbigg = 8970; + e.floorleftBigg = 8970; + e.floorrightbig = 8971; + e.floorrightBig = 8971; + e.floorrightBigg = 8971; + e.floorrightbigg = 8971; + e.hatwide = 770; + e.hatwider = 770; + e.hatwidest = 770; + e.intercal = 7488; + e.integraldisplay = 8747; + e.integraltext = 8747; + e.intersectiondisplay = 8898; + e.intersectiontext = 8898; + e.logicalanddisplay = 8743; + e.logicalandtext = 8743; + e.logicalordisplay = 8744; + e.logicalortext = 8744; + e.parenleftBig = 40; + e.parenleftbig = 40; + e.parenleftBigg = 40; + e.parenleftbigg = 40; + e.parenrightBig = 41; + e.parenrightbig = 41; + e.parenrightBigg = 41; + e.parenrightbigg = 41; + e.prime = 8242; + e.productdisplay = 8719; + e.producttext = 8719; + e.radicalbig = 8730; + e.radicalBig = 8730; + e.radicalBigg = 8730; + e.radicalbigg = 8730; + e.radicalbt = 8730; + e.radicaltp = 8730; + e.radicalvertex = 8730; + e.slashbig = 47; + e.slashBig = 47; + e.slashBigg = 47; + e.slashbigg = 47; + e.summationdisplay = 8721; + e.summationtext = 8721; + e.tildewide = 732; + e.tildewider = 732; + e.tildewidest = 732; + e.uniondisplay = 8899; + e.unionmultidisplay = 8846; + e.unionmultitext = 8846; + e.unionsqdisplay = 8852; + e.unionsqtext = 8852; + e.uniontext = 8899; + e.vextenddouble = 8741; + e.vextendsingle = 8739; + }), + Gi = getLookupTableFactory(function (e) { + e.space = 32; + e.a1 = 9985; + e.a2 = 9986; + e.a202 = 9987; + e.a3 = 9988; + e.a4 = 9742; + e.a5 = 9990; + e.a119 = 9991; + e.a118 = 9992; + e.a117 = 9993; + e.a11 = 9755; + e.a12 = 9758; + e.a13 = 9996; + e.a14 = 9997; + e.a15 = 9998; + e.a16 = 9999; + e.a105 = 1e4; + e.a17 = 10001; + e.a18 = 10002; + e.a19 = 10003; + e.a20 = 10004; + e.a21 = 10005; + e.a22 = 10006; + e.a23 = 10007; + e.a24 = 10008; + e.a25 = 10009; + e.a26 = 10010; + e.a27 = 10011; + e.a28 = 10012; + e.a6 = 10013; + e.a7 = 10014; + e.a8 = 10015; + e.a9 = 10016; + e.a10 = 10017; + e.a29 = 10018; + e.a30 = 10019; + e.a31 = 10020; + e.a32 = 10021; + e.a33 = 10022; + e.a34 = 10023; + e.a35 = 9733; + e.a36 = 10025; + e.a37 = 10026; + e.a38 = 10027; + e.a39 = 10028; + e.a40 = 10029; + e.a41 = 10030; + e.a42 = 10031; + e.a43 = 10032; + e.a44 = 10033; + e.a45 = 10034; + e.a46 = 10035; + e.a47 = 10036; + e.a48 = 10037; + e.a49 = 10038; + e.a50 = 10039; + e.a51 = 10040; + e.a52 = 10041; + e.a53 = 10042; + e.a54 = 10043; + e.a55 = 10044; + e.a56 = 10045; + e.a57 = 10046; + e.a58 = 10047; + e.a59 = 10048; + e.a60 = 10049; + e.a61 = 10050; + e.a62 = 10051; + e.a63 = 10052; + e.a64 = 10053; + e.a65 = 10054; + e.a66 = 10055; + e.a67 = 10056; + e.a68 = 10057; + e.a69 = 10058; + e.a70 = 10059; + e.a71 = 9679; + e.a72 = 10061; + e.a73 = 9632; + e.a74 = 10063; + e.a203 = 10064; + e.a75 = 10065; + e.a204 = 10066; + e.a76 = 9650; + e.a77 = 9660; + e.a78 = 9670; + e.a79 = 10070; + e.a81 = 9687; + e.a82 = 10072; + e.a83 = 10073; + e.a84 = 10074; + e.a97 = 10075; + e.a98 = 10076; + e.a99 = 10077; + e.a100 = 10078; + e.a101 = 10081; + e.a102 = 10082; + e.a103 = 10083; + e.a104 = 10084; + e.a106 = 10085; + e.a107 = 10086; + e.a108 = 10087; + e.a112 = 9827; + e.a111 = 9830; + e.a110 = 9829; + e.a109 = 9824; + e.a120 = 9312; + e.a121 = 9313; + e.a122 = 9314; + e.a123 = 9315; + e.a124 = 9316; + e.a125 = 9317; + e.a126 = 9318; + e.a127 = 9319; + e.a128 = 9320; + e.a129 = 9321; + e.a130 = 10102; + e.a131 = 10103; + e.a132 = 10104; + e.a133 = 10105; + e.a134 = 10106; + e.a135 = 10107; + e.a136 = 10108; + e.a137 = 10109; + e.a138 = 10110; + e.a139 = 10111; + e.a140 = 10112; + e.a141 = 10113; + e.a142 = 10114; + e.a143 = 10115; + e.a144 = 10116; + e.a145 = 10117; + e.a146 = 10118; + e.a147 = 10119; + e.a148 = 10120; + e.a149 = 10121; + e.a150 = 10122; + e.a151 = 10123; + e.a152 = 10124; + e.a153 = 10125; + e.a154 = 10126; + e.a155 = 10127; + e.a156 = 10128; + e.a157 = 10129; + e.a158 = 10130; + e.a159 = 10131; + e.a160 = 10132; + e.a161 = 8594; + e.a163 = 8596; + e.a164 = 8597; + e.a196 = 10136; + e.a165 = 10137; + e.a192 = 10138; + e.a166 = 10139; + e.a167 = 10140; + e.a168 = 10141; + e.a169 = 10142; + e.a170 = 10143; + e.a171 = 10144; + e.a172 = 10145; + e.a173 = 10146; + e.a162 = 10147; + e.a174 = 10148; + e.a175 = 10149; + e.a176 = 10150; + e.a177 = 10151; + e.a178 = 10152; + e.a179 = 10153; + e.a193 = 10154; + e.a180 = 10155; + e.a199 = 10156; + e.a181 = 10157; + e.a200 = 10158; + e.a182 = 10159; + e.a201 = 10161; + e.a183 = 10162; + e.a184 = 10163; + e.a197 = 10164; + e.a185 = 10165; + e.a194 = 10166; + e.a198 = 10167; + e.a186 = 10168; + e.a195 = 10169; + e.a187 = 10170; + e.a188 = 10171; + e.a189 = 10172; + e.a190 = 10173; + e.a191 = 10174; + e.a89 = 10088; + e.a90 = 10089; + e.a93 = 10090; + e.a94 = 10091; + e.a91 = 10092; + e.a92 = 10093; + e.a205 = 10094; + e.a85 = 10095; + e.a206 = 10096; + e.a86 = 10097; + e.a87 = 10098; + e.a88 = 10099; + e.a95 = 10100; + e.a96 = 10101; + e[".notdef"] = 0; + }), + xi = getLookupTableFactory(function (e) { + e[63721] = 169; + e[63193] = 169; + e[63720] = 174; + e[63194] = 174; + e[63722] = 8482; + e[63195] = 8482; + e[63729] = 9127; + e[63730] = 9128; + e[63731] = 9129; + e[63740] = 9131; + e[63741] = 9132; + e[63742] = 9133; + e[63726] = 9121; + e[63727] = 9122; + e[63728] = 9123; + e[63737] = 9124; + e[63738] = 9125; + e[63739] = 9126; + e[63723] = 9115; + e[63724] = 9116; + e[63725] = 9117; + e[63734] = 9118; + e[63735] = 9119; + e[63736] = 9120; + }); +function getUnicodeForGlyph(e, t) { + let i = t[e]; + if (void 0 !== i) return i; + if (!e) return -1; + if ("u" === e[0]) { + const t = e.length; + let a; + if (7 === t && "n" === e[1] && "i" === e[2]) a = e.substring(3); + else { + if (!(t >= 5 && t <= 7)) return -1; + a = e.substring(1); + } + if (a === a.toUpperCase()) { + i = parseInt(a, 16); + if (i >= 0) return i; + } + } + return -1; +} +const Mi = [ + [0, 127], + [128, 255], + [256, 383], + [384, 591], + [592, 687, 7424, 7551, 7552, 7615], + [688, 767, 42752, 42783], + [768, 879, 7616, 7679], + [880, 1023], + [11392, 11519], + [1024, 1279, 1280, 1327, 11744, 11775, 42560, 42655], + [1328, 1423], + [1424, 1535], + [42240, 42559], + [1536, 1791, 1872, 1919], + [1984, 2047], + [2304, 2431], + [2432, 2559], + [2560, 2687], + [2688, 2815], + [2816, 2943], + [2944, 3071], + [3072, 3199], + [3200, 3327], + [3328, 3455], + [3584, 3711], + [3712, 3839], + [4256, 4351, 11520, 11567], + [6912, 7039], + [4352, 4607], + [7680, 7935, 11360, 11391, 42784, 43007], + [7936, 8191], + [8192, 8303, 11776, 11903], + [8304, 8351], + [8352, 8399], + [8400, 8447], + [8448, 8527], + [8528, 8591], + [8592, 8703, 10224, 10239, 10496, 10623, 11008, 11263], + [8704, 8959, 10752, 11007, 10176, 10223, 10624, 10751], + [8960, 9215], + [9216, 9279], + [9280, 9311], + [9312, 9471], + [9472, 9599], + [9600, 9631], + [9632, 9727], + [9728, 9983], + [9984, 10175], + [12288, 12351], + [12352, 12447], + [12448, 12543, 12784, 12799], + [12544, 12591, 12704, 12735], + [12592, 12687], + [43072, 43135], + [12800, 13055], + [13056, 13311], + [44032, 55215], + [55296, 57343], + [67840, 67871], + [ + 19968, 40959, 11904, 12031, 12032, 12255, 12272, 12287, 13312, 19903, + 131072, 173791, 12688, 12703, + ], + [57344, 63743], + [12736, 12783, 63744, 64255, 194560, 195103], + [64256, 64335], + [64336, 65023], + [65056, 65071], + [65040, 65055], + [65104, 65135], + [65136, 65279], + [65280, 65519], + [65520, 65535], + [3840, 4095], + [1792, 1871], + [1920, 1983], + [3456, 3583], + [4096, 4255], + [4608, 4991, 4992, 5023, 11648, 11743], + [5024, 5119], + [5120, 5759], + [5760, 5791], + [5792, 5887], + [6016, 6143], + [6144, 6319], + [10240, 10495], + [40960, 42127], + [5888, 5919, 5920, 5951, 5952, 5983, 5984, 6015], + [66304, 66351], + [66352, 66383], + [66560, 66639], + [118784, 119039, 119040, 119295, 119296, 119375], + [119808, 120831], + [1044480, 1048573], + [65024, 65039, 917760, 917999], + [917504, 917631], + [6400, 6479], + [6480, 6527], + [6528, 6623], + [6656, 6687], + [11264, 11359], + [11568, 11647], + [19904, 19967], + [43008, 43055], + [65536, 65663, 65664, 65791, 65792, 65855], + [65856, 65935], + [66432, 66463], + [66464, 66527], + [66640, 66687], + [66688, 66735], + [67584, 67647], + [68096, 68191], + [119552, 119647], + [73728, 74751, 74752, 74879], + [119648, 119679], + [7040, 7103], + [7168, 7247], + [7248, 7295], + [43136, 43231], + [43264, 43311], + [43312, 43359], + [43520, 43615], + [65936, 65999], + [66e3, 66047], + [66208, 66271, 66176, 66207, 67872, 67903], + [127024, 127135, 126976, 127023], +]; +function getUnicodeRangeFor(e, t = -1) { + if (-1 !== t) { + const i = Mi[t]; + for (let a = 0, s = i.length; a < s; a += 2) + if (e >= i[a] && e <= i[a + 1]) return t; + } + for (let t = 0, i = Mi.length; t < i; t++) { + const i = Mi[t]; + for (let a = 0, s = i.length; a < s; a += 2) + if (e >= i[a] && e <= i[a + 1]) return t; + } + return -1; +} +const Ji = new RegExp("^(\\s)|(\\p{Mn})|(\\p{Cf})$", "u"), + Hi = new Map(); +const Yi = !0, + vi = 1, + Ki = 2, + Ti = 4, + qi = 32, + Oi = [ + ".notdef", + ".null", + "nonmarkingreturn", + "space", + "exclam", + "quotedbl", + "numbersign", + "dollar", + "percent", + "ampersand", + "quotesingle", + "parenleft", + "parenright", + "asterisk", + "plus", + "comma", + "hyphen", + "period", + "slash", + "zero", + "one", + "two", + "three", + "four", + "five", + "six", + "seven", + "eight", + "nine", + "colon", + "semicolon", + "less", + "equal", + "greater", + "question", + "at", + "A", + "B", + "C", + "D", + "E", + "F", + "G", + "H", + "I", + "J", + "K", + "L", + "M", + "N", + "O", + "P", + "Q", + "R", + "S", + "T", + "U", + "V", + "W", + "X", + "Y", + "Z", + "bracketleft", + "backslash", + "bracketright", + "asciicircum", + "underscore", + "grave", + "a", + "b", + "c", + "d", + "e", + "f", + "g", + "h", + "i", + "j", + "k", + "l", + "m", + "n", + "o", + "p", + "q", + "r", + "s", + "t", + "u", + "v", + "w", + "x", + "y", + "z", + "braceleft", + "bar", + "braceright", + "asciitilde", + "Adieresis", + "Aring", + "Ccedilla", + "Eacute", + "Ntilde", + "Odieresis", + "Udieresis", + "aacute", + "agrave", + "acircumflex", + "adieresis", + "atilde", + "aring", + "ccedilla", + "eacute", + "egrave", + "ecircumflex", + "edieresis", + "iacute", + "igrave", + "icircumflex", + "idieresis", + "ntilde", + "oacute", + "ograve", + "ocircumflex", + "odieresis", + "otilde", + "uacute", + "ugrave", + "ucircumflex", + "udieresis", + "dagger", + "degree", + "cent", + "sterling", + "section", + "bullet", + "paragraph", + "germandbls", + "registered", + "copyright", + "trademark", + "acute", + "dieresis", + "notequal", + "AE", + "Oslash", + "infinity", + "plusminus", + "lessequal", + "greaterequal", + "yen", + "mu", + "partialdiff", + "summation", + "product", + "pi", + "integral", + "ordfeminine", + "ordmasculine", + "Omega", + "ae", + "oslash", + "questiondown", + "exclamdown", + "logicalnot", + "radical", + "florin", + "approxequal", + "Delta", + "guillemotleft", + "guillemotright", + "ellipsis", + "nonbreakingspace", + "Agrave", + "Atilde", + "Otilde", + "OE", + "oe", + "endash", + "emdash", + "quotedblleft", + "quotedblright", + "quoteleft", + "quoteright", + "divide", + "lozenge", + "ydieresis", + "Ydieresis", + "fraction", + "currency", + "guilsinglleft", + "guilsinglright", + "fi", + "fl", + "daggerdbl", + "periodcentered", + "quotesinglbase", + "quotedblbase", + "perthousand", + "Acircumflex", + "Ecircumflex", + "Aacute", + "Edieresis", + "Egrave", + "Iacute", + "Icircumflex", + "Idieresis", + "Igrave", + "Oacute", + "Ocircumflex", + "apple", + "Ograve", + "Uacute", + "Ucircumflex", + "Ugrave", + "dotlessi", + "circumflex", + "tilde", + "macron", + "breve", + "dotaccent", + "ring", + "cedilla", + "hungarumlaut", + "ogonek", + "caron", + "Lslash", + "lslash", + "Scaron", + "scaron", + "Zcaron", + "zcaron", + "brokenbar", + "Eth", + "eth", + "Yacute", + "yacute", + "Thorn", + "thorn", + "minus", + "multiply", + "onesuperior", + "twosuperior", + "threesuperior", + "onehalf", + "onequarter", + "threequarters", + "franc", + "Gbreve", + "gbreve", + "Idotaccent", + "Scedilla", + "scedilla", + "Cacute", + "cacute", + "Ccaron", + "ccaron", + "dcroat", + ]; +function recoverGlyphName(e, t) { + if (void 0 !== t[e]) return e; + const i = getUnicodeForGlyph(e, t); + if (-1 !== i) for (const e in t) if (t[e] === i) return e; + info("Unable to recover a standard glyph name for: " + e); + return e; +} +function type1FontGlyphMapping(e, t, i) { + const a = Object.create(null); + let s, r, n; + const o = !!(e.flags & Ti); + if (e.isInternalFont) { + n = t; + for (r = 0; r < n.length; r++) { + s = i.indexOf(n[r]); + a[r] = s >= 0 ? s : 0; + } + } else if (e.baseEncodingName) { + n = getEncoding(e.baseEncodingName); + for (r = 0; r < n.length; r++) { + s = i.indexOf(n[r]); + a[r] = s >= 0 ? s : 0; + } + } else if (o) for (r in t) a[r] = t[r]; + else { + n = fi; + for (r = 0; r < n.length; r++) { + s = i.indexOf(n[r]); + a[r] = s >= 0 ? s : 0; + } + } + const g = e.differences; + let c; + if (g) + for (r in g) { + const e = g[r]; + s = i.indexOf(e); + if (-1 === s) { + c || (c = Ni()); + const t = recoverGlyphName(e, c); + t !== e && (s = i.indexOf(t)); + } + a[r] = s >= 0 ? s : 0; + } + return a; +} +function normalizeFontName(e) { + return e.replaceAll(/[,_]/g, "-").replaceAll(/\s/g, ""); +} +const Pi = getLookupTableFactory(function (e) { + e["Times-Roman"] = "Times-Roman"; + e.Helvetica = "Helvetica"; + e.Courier = "Courier"; + e.Symbol = "Symbol"; + e["Times-Bold"] = "Times-Bold"; + e["Helvetica-Bold"] = "Helvetica-Bold"; + e["Courier-Bold"] = "Courier-Bold"; + e.ZapfDingbats = "ZapfDingbats"; + e["Times-Italic"] = "Times-Italic"; + e["Helvetica-Oblique"] = "Helvetica-Oblique"; + e["Courier-Oblique"] = "Courier-Oblique"; + e["Times-BoldItalic"] = "Times-BoldItalic"; + e["Helvetica-BoldOblique"] = "Helvetica-BoldOblique"; + e["Courier-BoldOblique"] = "Courier-BoldOblique"; + e.ArialNarrow = "Helvetica"; + e["ArialNarrow-Bold"] = "Helvetica-Bold"; + e["ArialNarrow-BoldItalic"] = "Helvetica-BoldOblique"; + e["ArialNarrow-Italic"] = "Helvetica-Oblique"; + e.ArialBlack = "Helvetica"; + e["ArialBlack-Bold"] = "Helvetica-Bold"; + e["ArialBlack-BoldItalic"] = "Helvetica-BoldOblique"; + e["ArialBlack-Italic"] = "Helvetica-Oblique"; + e["Arial-Black"] = "Helvetica"; + e["Arial-Black-Bold"] = "Helvetica-Bold"; + e["Arial-Black-BoldItalic"] = "Helvetica-BoldOblique"; + e["Arial-Black-Italic"] = "Helvetica-Oblique"; + e.Arial = "Helvetica"; + e["Arial-Bold"] = "Helvetica-Bold"; + e["Arial-BoldItalic"] = "Helvetica-BoldOblique"; + e["Arial-Italic"] = "Helvetica-Oblique"; + e.ArialMT = "Helvetica"; + e["Arial-BoldItalicMT"] = "Helvetica-BoldOblique"; + e["Arial-BoldMT"] = "Helvetica-Bold"; + e["Arial-ItalicMT"] = "Helvetica-Oblique"; + e["Arial-BoldItalicMT-BoldItalic"] = "Helvetica-BoldOblique"; + e["Arial-BoldMT-Bold"] = "Helvetica-Bold"; + e["Arial-ItalicMT-Italic"] = "Helvetica-Oblique"; + e.ArialUnicodeMS = "Helvetica"; + e["ArialUnicodeMS-Bold"] = "Helvetica-Bold"; + e["ArialUnicodeMS-BoldItalic"] = "Helvetica-BoldOblique"; + e["ArialUnicodeMS-Italic"] = "Helvetica-Oblique"; + e["Courier-BoldItalic"] = "Courier-BoldOblique"; + e["Courier-Italic"] = "Courier-Oblique"; + e.CourierNew = "Courier"; + e["CourierNew-Bold"] = "Courier-Bold"; + e["CourierNew-BoldItalic"] = "Courier-BoldOblique"; + e["CourierNew-Italic"] = "Courier-Oblique"; + e["CourierNewPS-BoldItalicMT"] = "Courier-BoldOblique"; + e["CourierNewPS-BoldMT"] = "Courier-Bold"; + e["CourierNewPS-ItalicMT"] = "Courier-Oblique"; + e.CourierNewPSMT = "Courier"; + e["Helvetica-BoldItalic"] = "Helvetica-BoldOblique"; + e["Helvetica-Italic"] = "Helvetica-Oblique"; + e["Symbol-Bold"] = "Symbol"; + e["Symbol-BoldItalic"] = "Symbol"; + e["Symbol-Italic"] = "Symbol"; + e.TimesNewRoman = "Times-Roman"; + e["TimesNewRoman-Bold"] = "Times-Bold"; + e["TimesNewRoman-BoldItalic"] = "Times-BoldItalic"; + e["TimesNewRoman-Italic"] = "Times-Italic"; + e.TimesNewRomanPS = "Times-Roman"; + e["TimesNewRomanPS-Bold"] = "Times-Bold"; + e["TimesNewRomanPS-BoldItalic"] = "Times-BoldItalic"; + e["TimesNewRomanPS-BoldItalicMT"] = "Times-BoldItalic"; + e["TimesNewRomanPS-BoldMT"] = "Times-Bold"; + e["TimesNewRomanPS-Italic"] = "Times-Italic"; + e["TimesNewRomanPS-ItalicMT"] = "Times-Italic"; + e.TimesNewRomanPSMT = "Times-Roman"; + e["TimesNewRomanPSMT-Bold"] = "Times-Bold"; + e["TimesNewRomanPSMT-BoldItalic"] = "Times-BoldItalic"; + e["TimesNewRomanPSMT-Italic"] = "Times-Italic"; + }), + Wi = getLookupTableFactory(function (e) { + e.Courier = "FoxitFixed.pfb"; + e["Courier-Bold"] = "FoxitFixedBold.pfb"; + e["Courier-BoldOblique"] = "FoxitFixedBoldItalic.pfb"; + e["Courier-Oblique"] = "FoxitFixedItalic.pfb"; + e.Helvetica = "LiberationSans-Regular.ttf"; + e["Helvetica-Bold"] = "LiberationSans-Bold.ttf"; + e["Helvetica-BoldOblique"] = "LiberationSans-BoldItalic.ttf"; + e["Helvetica-Oblique"] = "LiberationSans-Italic.ttf"; + e["Times-Roman"] = "FoxitSerif.pfb"; + e["Times-Bold"] = "FoxitSerifBold.pfb"; + e["Times-BoldItalic"] = "FoxitSerifBoldItalic.pfb"; + e["Times-Italic"] = "FoxitSerifItalic.pfb"; + e.Symbol = "FoxitSymbol.pfb"; + e.ZapfDingbats = "FoxitDingbats.pfb"; + e["LiberationSans-Regular"] = "LiberationSans-Regular.ttf"; + e["LiberationSans-Bold"] = "LiberationSans-Bold.ttf"; + e["LiberationSans-Italic"] = "LiberationSans-Italic.ttf"; + e["LiberationSans-BoldItalic"] = "LiberationSans-BoldItalic.ttf"; + }), + Xi = getLookupTableFactory(function (e) { + e.Calibri = "Helvetica"; + e["Calibri-Bold"] = "Helvetica-Bold"; + e["Calibri-BoldItalic"] = "Helvetica-BoldOblique"; + e["Calibri-Italic"] = "Helvetica-Oblique"; + e.CenturyGothic = "Helvetica"; + e["CenturyGothic-Bold"] = "Helvetica-Bold"; + e["CenturyGothic-BoldItalic"] = "Helvetica-BoldOblique"; + e["CenturyGothic-Italic"] = "Helvetica-Oblique"; + e.ComicSansMS = "Comic Sans MS"; + e["ComicSansMS-Bold"] = "Comic Sans MS-Bold"; + e["ComicSansMS-BoldItalic"] = "Comic Sans MS-BoldItalic"; + e["ComicSansMS-Italic"] = "Comic Sans MS-Italic"; + e.Impact = "Helvetica"; + e["ItcSymbol-Bold"] = "Helvetica-Bold"; + e["ItcSymbol-BoldItalic"] = "Helvetica-BoldOblique"; + e["ItcSymbol-Book"] = "Helvetica"; + e["ItcSymbol-BookItalic"] = "Helvetica-Oblique"; + e["ItcSymbol-Medium"] = "Helvetica"; + e["ItcSymbol-MediumItalic"] = "Helvetica-Oblique"; + e.LucidaConsole = "Courier"; + e["LucidaConsole-Bold"] = "Courier-Bold"; + e["LucidaConsole-BoldItalic"] = "Courier-BoldOblique"; + e["LucidaConsole-Italic"] = "Courier-Oblique"; + e["LucidaSans-Demi"] = "Helvetica-Bold"; + e["MS-Gothic"] = "MS Gothic"; + e["MS-Gothic-Bold"] = "MS Gothic-Bold"; + e["MS-Gothic-BoldItalic"] = "MS Gothic-BoldItalic"; + e["MS-Gothic-Italic"] = "MS Gothic-Italic"; + e["MS-Mincho"] = "MS Mincho"; + e["MS-Mincho-Bold"] = "MS Mincho-Bold"; + e["MS-Mincho-BoldItalic"] = "MS Mincho-BoldItalic"; + e["MS-Mincho-Italic"] = "MS Mincho-Italic"; + e["MS-PGothic"] = "MS PGothic"; + e["MS-PGothic-Bold"] = "MS PGothic-Bold"; + e["MS-PGothic-BoldItalic"] = "MS PGothic-BoldItalic"; + e["MS-PGothic-Italic"] = "MS PGothic-Italic"; + e["MS-PMincho"] = "MS PMincho"; + e["MS-PMincho-Bold"] = "MS PMincho-Bold"; + e["MS-PMincho-BoldItalic"] = "MS PMincho-BoldItalic"; + e["MS-PMincho-Italic"] = "MS PMincho-Italic"; + e.NuptialScript = "Times-Italic"; + e.SegoeUISymbol = "Helvetica"; + }), + ji = getLookupTableFactory(function (e) { + e["Adobe Jenson"] = !0; + e["Adobe Text"] = !0; + e.Albertus = !0; + e.Aldus = !0; + e.Alexandria = !0; + e.Algerian = !0; + e["American Typewriter"] = !0; + e.Antiqua = !0; + e.Apex = !0; + e.Arno = !0; + e.Aster = !0; + e.Aurora = !0; + e.Baskerville = !0; + e.Bell = !0; + e.Bembo = !0; + e["Bembo Schoolbook"] = !0; + e.Benguiat = !0; + e["Berkeley Old Style"] = !0; + e["Bernhard Modern"] = !0; + e["Berthold City"] = !0; + e.Bodoni = !0; + e["Bauer Bodoni"] = !0; + e["Book Antiqua"] = !0; + e.Bookman = !0; + e["Bordeaux Roman"] = !0; + e["Californian FB"] = !0; + e.Calisto = !0; + e.Calvert = !0; + e.Capitals = !0; + e.Cambria = !0; + e.Cartier = !0; + e.Caslon = !0; + e.Catull = !0; + e.Centaur = !0; + e["Century Old Style"] = !0; + e["Century Schoolbook"] = !0; + e.Chaparral = !0; + e["Charis SIL"] = !0; + e.Cheltenham = !0; + e["Cholla Slab"] = !0; + e.Clarendon = !0; + e.Clearface = !0; + e.Cochin = !0; + e.Colonna = !0; + e["Computer Modern"] = !0; + e["Concrete Roman"] = !0; + e.Constantia = !0; + e["Cooper Black"] = !0; + e.Corona = !0; + e.Ecotype = !0; + e.Egyptienne = !0; + e.Elephant = !0; + e.Excelsior = !0; + e.Fairfield = !0; + e["FF Scala"] = !0; + e.Folkard = !0; + e.Footlight = !0; + e.FreeSerif = !0; + e["Friz Quadrata"] = !0; + e.Garamond = !0; + e.Gentium = !0; + e.Georgia = !0; + e.Gloucester = !0; + e["Goudy Old Style"] = !0; + e["Goudy Schoolbook"] = !0; + e["Goudy Pro Font"] = !0; + e.Granjon = !0; + e["Guardian Egyptian"] = !0; + e.Heather = !0; + e.Hercules = !0; + e["High Tower Text"] = !0; + e.Hiroshige = !0; + e["Hoefler Text"] = !0; + e["Humana Serif"] = !0; + e.Imprint = !0; + e["Ionic No. 5"] = !0; + e.Janson = !0; + e.Joanna = !0; + e.Korinna = !0; + e.Lexicon = !0; + e.LiberationSerif = !0; + e["Liberation Serif"] = !0; + e["Linux Libertine"] = !0; + e.Literaturnaya = !0; + e.Lucida = !0; + e["Lucida Bright"] = !0; + e.Melior = !0; + e.Memphis = !0; + e.Miller = !0; + e.Minion = !0; + e.Modern = !0; + e["Mona Lisa"] = !0; + e["Mrs Eaves"] = !0; + e["MS Serif"] = !0; + e["Museo Slab"] = !0; + e["New York"] = !0; + e["Nimbus Roman"] = !0; + e["NPS Rawlinson Roadway"] = !0; + e.NuptialScript = !0; + e.Palatino = !0; + e.Perpetua = !0; + e.Plantin = !0; + e["Plantin Schoolbook"] = !0; + e.Playbill = !0; + e["Poor Richard"] = !0; + e["Rawlinson Roadway"] = !0; + e.Renault = !0; + e.Requiem = !0; + e.Rockwell = !0; + e.Roman = !0; + e["Rotis Serif"] = !0; + e.Sabon = !0; + e.Scala = !0; + e.Seagull = !0; + e.Sistina = !0; + e.Souvenir = !0; + e.STIX = !0; + e["Stone Informal"] = !0; + e["Stone Serif"] = !0; + e.Sylfaen = !0; + e.Times = !0; + e.Trajan = !0; + e["Trinité"] = !0; + e["Trump Mediaeval"] = !0; + e.Utopia = !0; + e["Vale Type"] = !0; + e["Bitstream Vera"] = !0; + e["Vera Serif"] = !0; + e.Versailles = !0; + e.Wanted = !0; + e.Weiss = !0; + e["Wide Latin"] = !0; + e.Windsor = !0; + e.XITS = !0; + }), + Zi = getLookupTableFactory(function (e) { + e.Dingbats = !0; + e.Symbol = !0; + e.ZapfDingbats = !0; + e.Wingdings = !0; + e["Wingdings-Bold"] = !0; + e["Wingdings-Regular"] = !0; + }), + Vi = getLookupTableFactory(function (e) { + e[2] = 10; + e[3] = 32; + e[4] = 33; + e[5] = 34; + e[6] = 35; + e[7] = 36; + e[8] = 37; + e[9] = 38; + e[10] = 39; + e[11] = 40; + e[12] = 41; + e[13] = 42; + e[14] = 43; + e[15] = 44; + e[16] = 45; + e[17] = 46; + e[18] = 47; + e[19] = 48; + e[20] = 49; + e[21] = 50; + e[22] = 51; + e[23] = 52; + e[24] = 53; + e[25] = 54; + e[26] = 55; + e[27] = 56; + e[28] = 57; + e[29] = 58; + e[30] = 894; + e[31] = 60; + e[32] = 61; + e[33] = 62; + e[34] = 63; + e[35] = 64; + e[36] = 65; + e[37] = 66; + e[38] = 67; + e[39] = 68; + e[40] = 69; + e[41] = 70; + e[42] = 71; + e[43] = 72; + e[44] = 73; + e[45] = 74; + e[46] = 75; + e[47] = 76; + e[48] = 77; + e[49] = 78; + e[50] = 79; + e[51] = 80; + e[52] = 81; + e[53] = 82; + e[54] = 83; + e[55] = 84; + e[56] = 85; + e[57] = 86; + e[58] = 87; + e[59] = 88; + e[60] = 89; + e[61] = 90; + e[62] = 91; + e[63] = 92; + e[64] = 93; + e[65] = 94; + e[66] = 95; + e[67] = 96; + e[68] = 97; + e[69] = 98; + e[70] = 99; + e[71] = 100; + e[72] = 101; + e[73] = 102; + e[74] = 103; + e[75] = 104; + e[76] = 105; + e[77] = 106; + e[78] = 107; + e[79] = 108; + e[80] = 109; + e[81] = 110; + e[82] = 111; + e[83] = 112; + e[84] = 113; + e[85] = 114; + e[86] = 115; + e[87] = 116; + e[88] = 117; + e[89] = 118; + e[90] = 119; + e[91] = 120; + e[92] = 121; + e[93] = 122; + e[94] = 123; + e[95] = 124; + e[96] = 125; + e[97] = 126; + e[98] = 196; + e[99] = 197; + e[100] = 199; + e[101] = 201; + e[102] = 209; + e[103] = 214; + e[104] = 220; + e[105] = 225; + e[106] = 224; + e[107] = 226; + e[108] = 228; + e[109] = 227; + e[110] = 229; + e[111] = 231; + e[112] = 233; + e[113] = 232; + e[114] = 234; + e[115] = 235; + e[116] = 237; + e[117] = 236; + e[118] = 238; + e[119] = 239; + e[120] = 241; + e[121] = 243; + e[122] = 242; + e[123] = 244; + e[124] = 246; + e[125] = 245; + e[126] = 250; + e[127] = 249; + e[128] = 251; + e[129] = 252; + e[130] = 8224; + e[131] = 176; + e[132] = 162; + e[133] = 163; + e[134] = 167; + e[135] = 8226; + e[136] = 182; + e[137] = 223; + e[138] = 174; + e[139] = 169; + e[140] = 8482; + e[141] = 180; + e[142] = 168; + e[143] = 8800; + e[144] = 198; + e[145] = 216; + e[146] = 8734; + e[147] = 177; + e[148] = 8804; + e[149] = 8805; + e[150] = 165; + e[151] = 181; + e[152] = 8706; + e[153] = 8721; + e[154] = 8719; + e[156] = 8747; + e[157] = 170; + e[158] = 186; + e[159] = 8486; + e[160] = 230; + e[161] = 248; + e[162] = 191; + e[163] = 161; + e[164] = 172; + e[165] = 8730; + e[166] = 402; + e[167] = 8776; + e[168] = 8710; + e[169] = 171; + e[170] = 187; + e[171] = 8230; + e[179] = 8220; + e[180] = 8221; + e[181] = 8216; + e[182] = 8217; + e[200] = 193; + e[203] = 205; + e[207] = 211; + e[210] = 218; + e[223] = 711; + e[224] = 321; + e[225] = 322; + e[226] = 352; + e[227] = 353; + e[228] = 381; + e[229] = 382; + e[233] = 221; + e[234] = 253; + e[252] = 263; + e[253] = 268; + e[254] = 269; + e[258] = 258; + e[260] = 260; + e[261] = 261; + e[265] = 280; + e[266] = 281; + e[267] = 282; + e[268] = 283; + e[269] = 313; + e[275] = 323; + e[276] = 324; + e[278] = 328; + e[283] = 344; + e[284] = 345; + e[285] = 346; + e[286] = 347; + e[292] = 367; + e[295] = 377; + e[296] = 378; + e[298] = 380; + e[305] = 963; + e[306] = 964; + e[307] = 966; + e[308] = 8215; + e[309] = 8252; + e[310] = 8319; + e[311] = 8359; + e[312] = 8592; + e[313] = 8593; + e[337] = 9552; + e[493] = 1039; + e[494] = 1040; + e[672] = 1488; + e[673] = 1489; + e[674] = 1490; + e[675] = 1491; + e[676] = 1492; + e[677] = 1493; + e[678] = 1494; + e[679] = 1495; + e[680] = 1496; + e[681] = 1497; + e[682] = 1498; + e[683] = 1499; + e[684] = 1500; + e[685] = 1501; + e[686] = 1502; + e[687] = 1503; + e[688] = 1504; + e[689] = 1505; + e[690] = 1506; + e[691] = 1507; + e[692] = 1508; + e[693] = 1509; + e[694] = 1510; + e[695] = 1511; + e[696] = 1512; + e[697] = 1513; + e[698] = 1514; + e[705] = 1524; + e[706] = 8362; + e[710] = 64288; + e[711] = 64298; + e[759] = 1617; + e[761] = 1776; + e[763] = 1778; + e[775] = 1652; + e[777] = 1764; + e[778] = 1780; + e[779] = 1781; + e[780] = 1782; + e[782] = 771; + e[783] = 64726; + e[786] = 8363; + e[788] = 8532; + e[790] = 768; + e[791] = 769; + e[792] = 768; + e[795] = 803; + e[797] = 64336; + e[798] = 64337; + e[799] = 64342; + e[800] = 64343; + e[801] = 64344; + e[802] = 64345; + e[803] = 64362; + e[804] = 64363; + e[805] = 64364; + e[2424] = 7821; + e[2425] = 7822; + e[2426] = 7823; + e[2427] = 7824; + e[2428] = 7825; + e[2429] = 7826; + e[2430] = 7827; + e[2433] = 7682; + e[2678] = 8045; + e[2679] = 8046; + e[2830] = 1552; + e[2838] = 686; + e[2840] = 751; + e[2842] = 753; + e[2843] = 754; + e[2844] = 755; + e[2846] = 757; + e[2856] = 767; + e[2857] = 848; + e[2858] = 849; + e[2862] = 853; + e[2863] = 854; + e[2864] = 855; + e[2865] = 861; + e[2866] = 862; + e[2906] = 7460; + e[2908] = 7462; + e[2909] = 7463; + e[2910] = 7464; + e[2912] = 7466; + e[2913] = 7467; + e[2914] = 7468; + e[2916] = 7470; + e[2917] = 7471; + e[2918] = 7472; + e[2920] = 7474; + e[2921] = 7475; + e[2922] = 7476; + e[2924] = 7478; + e[2925] = 7479; + e[2926] = 7480; + e[2928] = 7482; + e[2929] = 7483; + e[2930] = 7484; + e[2932] = 7486; + e[2933] = 7487; + e[2934] = 7488; + e[2936] = 7490; + e[2937] = 7491; + e[2938] = 7492; + e[2940] = 7494; + e[2941] = 7495; + e[2942] = 7496; + e[2944] = 7498; + e[2946] = 7500; + e[2948] = 7502; + e[2950] = 7504; + e[2951] = 7505; + e[2952] = 7506; + e[2954] = 7508; + e[2955] = 7509; + e[2956] = 7510; + e[2958] = 7512; + e[2959] = 7513; + e[2960] = 7514; + e[2962] = 7516; + e[2963] = 7517; + e[2964] = 7518; + e[2966] = 7520; + e[2967] = 7521; + e[2968] = 7522; + e[2970] = 7524; + e[2971] = 7525; + e[2972] = 7526; + e[2974] = 7528; + e[2975] = 7529; + e[2976] = 7530; + e[2978] = 1537; + e[2979] = 1538; + e[2980] = 1539; + e[2982] = 1549; + e[2983] = 1551; + e[2984] = 1552; + e[2986] = 1554; + e[2987] = 1555; + e[2988] = 1556; + e[2990] = 1623; + e[2991] = 1624; + e[2995] = 1775; + e[2999] = 1791; + e[3002] = 64290; + e[3003] = 64291; + e[3004] = 64292; + e[3006] = 64294; + e[3007] = 64295; + e[3008] = 64296; + e[3011] = 1900; + e[3014] = 8223; + e[3015] = 8244; + e[3017] = 7532; + e[3018] = 7533; + e[3019] = 7534; + e[3075] = 7590; + e[3076] = 7591; + e[3079] = 7594; + e[3080] = 7595; + e[3083] = 7598; + e[3084] = 7599; + e[3087] = 7602; + e[3088] = 7603; + e[3091] = 7606; + e[3092] = 7607; + e[3095] = 7610; + e[3096] = 7611; + e[3099] = 7614; + e[3100] = 7615; + e[3103] = 7618; + e[3104] = 7619; + e[3107] = 8337; + e[3108] = 8338; + e[3116] = 1884; + e[3119] = 1885; + e[3120] = 1885; + e[3123] = 1886; + e[3124] = 1886; + e[3127] = 1887; + e[3128] = 1887; + e[3131] = 1888; + e[3132] = 1888; + e[3135] = 1889; + e[3136] = 1889; + e[3139] = 1890; + e[3140] = 1890; + e[3143] = 1891; + e[3144] = 1891; + e[3147] = 1892; + e[3148] = 1892; + e[3153] = 580; + e[3154] = 581; + e[3157] = 584; + e[3158] = 585; + e[3161] = 588; + e[3162] = 589; + e[3165] = 891; + e[3166] = 892; + e[3169] = 1274; + e[3170] = 1275; + e[3173] = 1278; + e[3174] = 1279; + e[3181] = 7622; + e[3182] = 7623; + e[3282] = 11799; + e[3316] = 578; + e[3379] = 42785; + e[3393] = 1159; + e[3416] = 8377; + }), + zi = getLookupTableFactory(function (e) { + e[227] = 322; + e[264] = 261; + e[291] = 346; + }), + _i = getLookupTableFactory(function (e) { + e[1] = 32; + e[4] = 65; + e[5] = 192; + e[6] = 193; + e[9] = 196; + e[17] = 66; + e[18] = 67; + e[21] = 268; + e[24] = 68; + e[28] = 69; + e[29] = 200; + e[30] = 201; + e[32] = 282; + e[38] = 70; + e[39] = 71; + e[44] = 72; + e[47] = 73; + e[48] = 204; + e[49] = 205; + e[58] = 74; + e[60] = 75; + e[62] = 76; + e[68] = 77; + e[69] = 78; + e[75] = 79; + e[76] = 210; + e[80] = 214; + e[87] = 80; + e[89] = 81; + e[90] = 82; + e[92] = 344; + e[94] = 83; + e[97] = 352; + e[100] = 84; + e[104] = 85; + e[109] = 220; + e[115] = 86; + e[116] = 87; + e[121] = 88; + e[122] = 89; + e[124] = 221; + e[127] = 90; + e[129] = 381; + e[258] = 97; + e[259] = 224; + e[260] = 225; + e[263] = 228; + e[268] = 261; + e[271] = 98; + e[272] = 99; + e[273] = 263; + e[275] = 269; + e[282] = 100; + e[286] = 101; + e[287] = 232; + e[288] = 233; + e[290] = 283; + e[295] = 281; + e[296] = 102; + e[336] = 103; + e[346] = 104; + e[349] = 105; + e[350] = 236; + e[351] = 237; + e[361] = 106; + e[364] = 107; + e[367] = 108; + e[371] = 322; + e[373] = 109; + e[374] = 110; + e[381] = 111; + e[382] = 242; + e[383] = 243; + e[386] = 246; + e[393] = 112; + e[395] = 113; + e[396] = 114; + e[398] = 345; + e[400] = 115; + e[401] = 347; + e[403] = 353; + e[410] = 116; + e[437] = 117; + e[442] = 252; + e[448] = 118; + e[449] = 119; + e[454] = 120; + e[455] = 121; + e[457] = 253; + e[460] = 122; + e[462] = 382; + e[463] = 380; + e[853] = 44; + e[855] = 58; + e[856] = 46; + e[876] = 47; + e[878] = 45; + e[882] = 45; + e[894] = 40; + e[895] = 41; + e[896] = 91; + e[897] = 93; + e[923] = 64; + e[1004] = 48; + e[1005] = 49; + e[1006] = 50; + e[1007] = 51; + e[1008] = 52; + e[1009] = 53; + e[1010] = 54; + e[1011] = 55; + e[1012] = 56; + e[1013] = 57; + e[1081] = 37; + e[1085] = 43; + e[1086] = 45; + }); +function getStandardFontName(e) { + const t = normalizeFontName(e); + return Pi()[t]; +} +function isKnownFontName(e) { + const t = normalizeFontName(e); + return !!(Pi()[t] || Xi()[t] || ji()[t] || Zi()[t]); +} +class ToUnicodeMap { + constructor(e = []) { + this._map = e; + } + get length() { + return this._map.length; + } + forEach(e) { + for (const t in this._map) e(t, this._map[t].charCodeAt(0)); + } + has(e) { + return void 0 !== this._map[e]; + } + get(e) { + return this._map[e]; + } + charCodeOf(e) { + const t = this._map; + if (t.length <= 65536) return t.indexOf(e); + for (const i in t) if (t[i] === e) return 0 | i; + return -1; + } + amend(e) { + for (const t in e) this._map[t] = e[t]; + } +} +class IdentityToUnicodeMap { + constructor(e, t) { + this.firstChar = e; + this.lastChar = t; + } + get length() { + return this.lastChar + 1 - this.firstChar; + } + forEach(e) { + for (let t = this.firstChar, i = this.lastChar; t <= i; t++) e(t, t); + } + has(e) { + return this.firstChar <= e && e <= this.lastChar; + } + get(e) { + if (this.firstChar <= e && e <= this.lastChar) + return String.fromCharCode(e); + } + charCodeOf(e) { + return Number.isInteger(e) && e >= this.firstChar && e <= this.lastChar + ? e + : -1; + } + amend(e) { + unreachable("Should not call amend()"); + } +} +class CFFFont { + constructor(e, t) { + this.properties = t; + const i = new CFFParser(e, t, Yi); + this.cff = i.parse(); + this.cff.duplicateFirstGlyph(); + const a = new CFFCompiler(this.cff); + this.seacs = this.cff.seacs; + try { + this.data = a.compile(); + } catch { + warn("Failed to compile font " + t.loadedName); + this.data = e; + } + this._createBuiltInEncoding(); + } + get numGlyphs() { + return this.cff.charStrings.count; + } + getCharset() { + return this.cff.charset.charset; + } + getGlyphMapping() { + const e = this.cff, + t = this.properties, + { cidToGidMap: i, cMap: a } = t, + s = e.charset.charset; + let r, n; + if (t.composite) { + let t, o; + if (i?.length > 0) { + t = Object.create(null); + for (let e = 0, a = i.length; e < a; e++) { + const a = i[e]; + void 0 !== a && (t[a] = e); + } + } + r = Object.create(null); + if (e.isCIDFont) + for (n = 0; n < s.length; n++) { + const e = s[n]; + o = a.charCodeOf(e); + void 0 !== t?.[o] && (o = t[o]); + r[o] = n; + } + else + for (n = 0; n < e.charStrings.count; n++) { + o = a.charCodeOf(n); + r[o] = n; + } + return r; + } + let o = e.encoding ? e.encoding.encoding : null; + t.isInternalFont && (o = t.defaultEncoding); + r = type1FontGlyphMapping(t, o, s); + return r; + } + hasGlyphId(e) { + return this.cff.hasGlyphId(e); + } + _createBuiltInEncoding() { + const { charset: e, encoding: t } = this.cff; + if (!e || !t) return; + const i = e.charset, + a = t.encoding, + s = []; + for (const e in a) { + const t = a[e]; + if (t >= 0) { + const a = i[t]; + a && (s[e] = a); + } + } + s.length > 0 && (this.properties.builtInEncoding = s); + } +} +function getUint32(e, t) { + return ((e[t] << 24) | (e[t + 1] << 16) | (e[t + 2] << 8) | e[t + 3]) >>> 0; +} +function getUint16(e, t) { + return (e[t] << 8) | e[t + 1]; +} +function getInt16(e, t) { + return ((e[t] << 24) | (e[t + 1] << 16)) >> 16; +} +function getInt8(e, t) { + return (e[t] << 24) >> 24; +} +function getFloat214(e, t) { + return getInt16(e, t) / 16384; +} +function getSubroutineBias(e) { + const t = e.length; + let i = 32768; + t < 1240 ? (i = 107) : t < 33900 && (i = 1131); + return i; +} +function parseCmap(e, t, i) { + const a = + 1 === getUint16(e, t + 2) ? getUint32(e, t + 8) : getUint32(e, t + 16), + s = getUint16(e, t + a); + let r, n, o; + if (4 === s) { + getUint16(e, t + a + 2); + const i = getUint16(e, t + a + 6) >> 1; + n = t + a + 14; + r = []; + for (o = 0; o < i; o++, n += 2) r[o] = { end: getUint16(e, n) }; + n += 2; + for (o = 0; o < i; o++, n += 2) r[o].start = getUint16(e, n); + for (o = 0; o < i; o++, n += 2) r[o].idDelta = getUint16(e, n); + for (o = 0; o < i; o++, n += 2) { + let t = getUint16(e, n); + if (0 !== t) { + r[o].ids = []; + for (let i = 0, a = r[o].end - r[o].start + 1; i < a; i++) { + r[o].ids[i] = getUint16(e, n + t); + t += 2; + } + } + } + return r; + } + if (12 === s) { + const i = getUint32(e, t + a + 12); + n = t + a + 16; + r = []; + for (o = 0; o < i; o++) { + t = getUint32(e, n); + r.push({ + start: t, + end: getUint32(e, n + 4), + idDelta: getUint32(e, n + 8) - t, + }); + n += 12; + } + return r; + } + throw new FormatError(`unsupported cmap: ${s}`); +} +function parseCff(e, t, i, a) { + const s = new CFFParser(new Stream(e, t, i - t), {}, a).parse(); + return { + glyphs: s.charStrings.objects, + subrs: s.topDict.privateDict?.subrsIndex?.objects, + gsubrs: s.globalSubrIndex?.objects, + isCFFCIDFont: s.isCIDFont, + fdSelect: s.fdSelect, + fdArray: s.fdArray, + }; +} +function lookupCmap(e, t) { + const i = t.codePointAt(0); + let a = 0, + s = 0, + r = e.length - 1; + for (; s < r; ) { + const t = (s + r + 1) >> 1; + i < e[t].start ? (r = t - 1) : (s = t); + } + e[s].start <= i && + i <= e[s].end && + (a = (e[s].idDelta + (e[s].ids ? e[s].ids[i - e[s].start] : i)) & 65535); + return { charCode: i, glyphId: a }; +} +function compileGlyf(e, t, i) { + function moveTo(e, i) { + t.add(ht, [e, i]); + } + function lineTo(e, i) { + t.add(lt, [e, i]); + } + function quadraticCurveTo(e, i, a, s) { + t.add(Ct, [e, i, a, s]); + } + let a = 0; + const s = getInt16(e, a); + let r, + n = 0, + o = 0; + a += 10; + if (s < 0) + do { + r = getUint16(e, a); + const s = getUint16(e, a + 2); + a += 4; + let g, c; + if (1 & r) { + if (2 & r) { + g = getInt16(e, a); + c = getInt16(e, a + 2); + } else { + g = getUint16(e, a); + c = getUint16(e, a + 2); + } + a += 4; + } else if (2 & r) { + g = getInt8(e, a++); + c = getInt8(e, a++); + } else { + g = e[a++]; + c = e[a++]; + } + if (2 & r) { + n = g; + o = c; + } else { + n = 0; + o = 0; + } + let h = 1, + l = 1, + C = 0, + Q = 0; + if (8 & r) { + h = l = getFloat214(e, a); + a += 2; + } else if (64 & r) { + h = getFloat214(e, a); + l = getFloat214(e, a + 2); + a += 4; + } else if (128 & r) { + h = getFloat214(e, a); + C = getFloat214(e, a + 2); + Q = getFloat214(e, a + 4); + l = getFloat214(e, a + 6); + a += 8; + } + const E = i.glyphs[s]; + if (E) { + t.add(Qt); + t.add(ut, [h, C, Q, l, n, o]); + compileGlyf(E, t, i); + t.add(Bt); + } + } while (32 & r); + else { + const t = []; + let i, g; + for (i = 0; i < s; i++) { + t.push(getUint16(e, a)); + a += 2; + } + a += 2 + getUint16(e, a); + const c = t.at(-1) + 1, + h = []; + for (; h.length < c; ) { + r = e[a++]; + let t = 1; + 8 & r && (t += e[a++]); + for (; t-- > 0; ) h.push({ flags: r }); + } + for (i = 0; i < c; i++) { + switch (18 & h[i].flags) { + case 0: + n += getInt16(e, a); + a += 2; + break; + case 2: + n -= e[a++]; + break; + case 18: + n += e[a++]; + } + h[i].x = n; + } + for (i = 0; i < c; i++) { + switch (36 & h[i].flags) { + case 0: + o += getInt16(e, a); + a += 2; + break; + case 4: + o -= e[a++]; + break; + case 36: + o += e[a++]; + } + h[i].y = o; + } + let l = 0; + for (a = 0; a < s; a++) { + const e = t[a], + s = h.slice(l, e + 1); + if (1 & s[0].flags) s.push(s[0]); + else if (1 & s.at(-1).flags) s.unshift(s.at(-1)); + else { + const e = { + flags: 1, + x: (s[0].x + s.at(-1).x) / 2, + y: (s[0].y + s.at(-1).y) / 2, + }; + s.unshift(e); + s.push(e); + } + moveTo(s[0].x, s[0].y); + for (i = 1, g = s.length; i < g; i++) + if (1 & s[i].flags) lineTo(s[i].x, s[i].y); + else if (1 & s[i + 1].flags) { + quadraticCurveTo(s[i].x, s[i].y, s[i + 1].x, s[i + 1].y); + i++; + } else + quadraticCurveTo( + s[i].x, + s[i].y, + (s[i].x + s[i + 1].x) / 2, + (s[i].y + s[i + 1].y) / 2, + ); + l = e + 1; + } + } +} +function compileCharString(e, t, i, a) { + function moveTo(e, i) { + t.add(ht, [e, i]); + } + function lineTo(e, i) { + t.add(lt, [e, i]); + } + function bezierCurveTo(e, i, a, s, r, n) { + t.add(ct, [e, i, a, s, r, n]); + } + const s = []; + let r = 0, + n = 0, + o = 0; + !(function parse(e) { + let g = 0; + for (; g < e.length; ) { + let c, + h, + l, + C, + Q, + E, + u, + d, + f, + p = !1, + m = e[g++]; + switch (m) { + case 1: + case 3: + case 18: + case 23: + o += s.length >> 1; + p = !0; + break; + case 4: + n += s.pop(); + moveTo(r, n); + p = !0; + break; + case 5: + for (; s.length > 0; ) { + r += s.shift(); + n += s.shift(); + lineTo(r, n); + } + break; + case 6: + for (; s.length > 0; ) { + r += s.shift(); + lineTo(r, n); + if (0 === s.length) break; + n += s.shift(); + lineTo(r, n); + } + break; + case 7: + for (; s.length > 0; ) { + n += s.shift(); + lineTo(r, n); + if (0 === s.length) break; + r += s.shift(); + lineTo(r, n); + } + break; + case 8: + for (; s.length > 0; ) { + c = r + s.shift(); + l = n + s.shift(); + h = c + s.shift(); + C = l + s.shift(); + r = h + s.shift(); + n = C + s.shift(); + bezierCurveTo(c, l, h, C, r, n); + } + break; + case 10: + d = s.pop(); + f = null; + if (i.isCFFCIDFont) { + const e = i.fdSelect.getFDIndex(a); + if (e >= 0 && e < i.fdArray.length) { + const t = i.fdArray[e]; + let a; + t.privateDict?.subrsIndex && + (a = t.privateDict.subrsIndex.objects); + if (a) { + d += getSubroutineBias(a); + f = a[d]; + } + } else warn("Invalid fd index for glyph index."); + } else f = i.subrs[d + i.subrsBias]; + f && parse(f); + break; + case 11: + return; + case 12: + m = e[g++]; + switch (m) { + case 34: + c = r + s.shift(); + h = c + s.shift(); + Q = n + s.shift(); + r = h + s.shift(); + bezierCurveTo(c, n, h, Q, r, Q); + c = r + s.shift(); + h = c + s.shift(); + r = h + s.shift(); + bezierCurveTo(c, Q, h, n, r, n); + break; + case 35: + c = r + s.shift(); + l = n + s.shift(); + h = c + s.shift(); + C = l + s.shift(); + r = h + s.shift(); + n = C + s.shift(); + bezierCurveTo(c, l, h, C, r, n); + c = r + s.shift(); + l = n + s.shift(); + h = c + s.shift(); + C = l + s.shift(); + r = h + s.shift(); + n = C + s.shift(); + bezierCurveTo(c, l, h, C, r, n); + s.pop(); + break; + case 36: + c = r + s.shift(); + Q = n + s.shift(); + h = c + s.shift(); + E = Q + s.shift(); + r = h + s.shift(); + bezierCurveTo(c, Q, h, E, r, E); + c = r + s.shift(); + h = c + s.shift(); + u = E + s.shift(); + r = h + s.shift(); + bezierCurveTo(c, E, h, u, r, n); + break; + case 37: + const e = r, + t = n; + c = r + s.shift(); + l = n + s.shift(); + h = c + s.shift(); + C = l + s.shift(); + r = h + s.shift(); + n = C + s.shift(); + bezierCurveTo(c, l, h, C, r, n); + c = r + s.shift(); + l = n + s.shift(); + h = c + s.shift(); + C = l + s.shift(); + r = h; + n = C; + Math.abs(r - e) > Math.abs(n - t) + ? (r += s.shift()) + : (n += s.shift()); + bezierCurveTo(c, l, h, C, r, n); + break; + default: + throw new FormatError(`unknown operator: 12 ${m}`); + } + break; + case 14: + if (s.length >= 4) { + const e = s.pop(), + a = s.pop(); + n = s.pop(); + r = s.pop(); + t.add(Qt); + t.add(dt, [r, n]); + let o = lookupCmap( + i.cmap, + String.fromCharCode(i.glyphNameMap[fi[e]]), + ); + compileCharString(i.glyphs[o.glyphId], t, i, o.glyphId); + t.add(Bt); + o = lookupCmap(i.cmap, String.fromCharCode(i.glyphNameMap[fi[a]])); + compileCharString(i.glyphs[o.glyphId], t, i, o.glyphId); + } + return; + case 19: + case 20: + o += s.length >> 1; + g += (o + 7) >> 3; + p = !0; + break; + case 21: + n += s.pop(); + r += s.pop(); + moveTo(r, n); + p = !0; + break; + case 22: + r += s.pop(); + moveTo(r, n); + p = !0; + break; + case 24: + for (; s.length > 2; ) { + c = r + s.shift(); + l = n + s.shift(); + h = c + s.shift(); + C = l + s.shift(); + r = h + s.shift(); + n = C + s.shift(); + bezierCurveTo(c, l, h, C, r, n); + } + r += s.shift(); + n += s.shift(); + lineTo(r, n); + break; + case 25: + for (; s.length > 6; ) { + r += s.shift(); + n += s.shift(); + lineTo(r, n); + } + c = r + s.shift(); + l = n + s.shift(); + h = c + s.shift(); + C = l + s.shift(); + r = h + s.shift(); + n = C + s.shift(); + bezierCurveTo(c, l, h, C, r, n); + break; + case 26: + s.length % 2 && (r += s.shift()); + for (; s.length > 0; ) { + c = r; + l = n + s.shift(); + h = c + s.shift(); + C = l + s.shift(); + r = h; + n = C + s.shift(); + bezierCurveTo(c, l, h, C, r, n); + } + break; + case 27: + s.length % 2 && (n += s.shift()); + for (; s.length > 0; ) { + c = r + s.shift(); + l = n; + h = c + s.shift(); + C = l + s.shift(); + r = h + s.shift(); + n = C; + bezierCurveTo(c, l, h, C, r, n); + } + break; + case 28: + s.push(((e[g] << 24) | (e[g + 1] << 16)) >> 16); + g += 2; + break; + case 29: + d = s.pop() + i.gsubrsBias; + f = i.gsubrs[d]; + f && parse(f); + break; + case 30: + for (; s.length > 0; ) { + c = r; + l = n + s.shift(); + h = c + s.shift(); + C = l + s.shift(); + r = h + s.shift(); + n = C + (1 === s.length ? s.shift() : 0); + bezierCurveTo(c, l, h, C, r, n); + if (0 === s.length) break; + c = r + s.shift(); + l = n; + h = c + s.shift(); + C = l + s.shift(); + n = C + s.shift(); + r = h + (1 === s.length ? s.shift() : 0); + bezierCurveTo(c, l, h, C, r, n); + } + break; + case 31: + for (; s.length > 0; ) { + c = r + s.shift(); + l = n; + h = c + s.shift(); + C = l + s.shift(); + n = C + s.shift(); + r = h + (1 === s.length ? s.shift() : 0); + bezierCurveTo(c, l, h, C, r, n); + if (0 === s.length) break; + c = r; + l = n + s.shift(); + h = c + s.shift(); + C = l + s.shift(); + r = h + s.shift(); + n = C + (1 === s.length ? s.shift() : 0); + bezierCurveTo(c, l, h, C, r, n); + } + break; + default: + if (m < 32) throw new FormatError(`unknown operator: ${m}`); + if (m < 247) s.push(m - 139); + else if (m < 251) s.push(256 * (m - 247) + e[g++] + 108); + else if (m < 255) s.push(256 * -(m - 251) - e[g++] - 108); + else { + s.push( + ((e[g] << 24) | (e[g + 1] << 16) | (e[g + 2] << 8) | e[g + 3]) / + 65536, + ); + g += 4; + } + } + p && (s.length = 0); + } + })(e); +} +const $i = []; +class Commands { + cmds = []; + add(e, t) { + if (t) + if (isNumberArray(t, null)) this.cmds.push(e, ...t); + else { + warn(`Commands.add - "${e}" has at least one non-number arg: "${t}".`); + const i = t.map((e) => ("number" == typeof e ? e : 0)); + this.cmds.push(e, ...i); + } + else this.cmds.push(e); + } +} +class CompiledFont { + constructor(e) { + this.constructor === CompiledFont && + unreachable("Cannot initialize CompiledFont."); + this.fontMatrix = e; + this.compiledGlyphs = Object.create(null); + this.compiledCharCodeToGlyphId = Object.create(null); + } + getPathJs(e) { + const { charCode: t, glyphId: i } = lookupCmap(this.cmap, e); + let a, + s = this.compiledGlyphs[i]; + if (!s) { + try { + s = this.compileGlyph(this.glyphs[i], i); + } catch (e) { + s = $i; + a = e; + } + this.compiledGlyphs[i] = s; + } + this.compiledCharCodeToGlyphId[t] ??= i; + if (a) throw a; + return s; + } + compileGlyph(e, t) { + if (!e || 0 === e.length || 14 === e[0]) return $i; + let i = this.fontMatrix; + if (this.isCFFCIDFont) { + const e = this.fdSelect.getFDIndex(t); + if (e >= 0 && e < this.fdArray.length) { + i = this.fdArray[e].getByName("FontMatrix") || a; + } else warn("Invalid fd index for glyph index."); + } + const s = new Commands(); + s.add(Qt); + s.add(ut, i.slice()); + s.add(Et); + this.compileGlyphImpl(e, s, t); + s.add(Bt); + return s.cmds; + } + compileGlyphImpl() { + unreachable("Children classes should implement this."); + } + hasBuiltPath(e) { + const { charCode: t, glyphId: i } = lookupCmap(this.cmap, e); + return ( + void 0 !== this.compiledGlyphs[i] && + void 0 !== this.compiledCharCodeToGlyphId[t] + ); + } +} +class TrueTypeCompiled extends CompiledFont { + constructor(e, t, i) { + super(i || [488e-6, 0, 0, 488e-6, 0, 0]); + this.glyphs = e; + this.cmap = t; + } + compileGlyphImpl(e, t) { + compileGlyf(e, t, this); + } +} +class Type2Compiled extends CompiledFont { + constructor(e, t, i, a) { + super(i || [0.001, 0, 0, 0.001, 0, 0]); + this.glyphs = e.glyphs; + this.gsubrs = e.gsubrs || []; + this.subrs = e.subrs || []; + this.cmap = t; + this.glyphNameMap = a || Ni(); + this.gsubrsBias = getSubroutineBias(this.gsubrs); + this.subrsBias = getSubroutineBias(this.subrs); + this.isCFFCIDFont = e.isCFFCIDFont; + this.fdSelect = e.fdSelect; + this.fdArray = e.fdArray; + } + compileGlyphImpl(e, t, i) { + compileCharString(e, t, this, i); + } +} +class FontRendererFactory { + static create(e, t) { + const i = new Uint8Array(e.data); + let a, s, r, n, o, g; + const c = getUint16(i, 4); + for (let e = 0, h = 12; e < c; e++, h += 16) { + const e = bytesToString(i.subarray(h, h + 4)), + c = getUint32(i, h + 8), + l = getUint32(i, h + 12); + switch (e) { + case "cmap": + a = parseCmap(i, c); + break; + case "glyf": + s = i.subarray(c, c + l); + break; + case "loca": + r = i.subarray(c, c + l); + break; + case "head": + g = getUint16(i, c + 18); + o = getUint16(i, c + 50); + break; + case "CFF ": + n = parseCff(i, c, c + l, t); + } + } + if (s) { + const t = g ? [1 / g, 0, 0, 1 / g, 0, 0] : e.fontMatrix; + return new TrueTypeCompiled( + (function parseGlyfTable(e, t, i) { + let a, s; + if (i) { + a = 4; + s = getUint32; + } else { + a = 2; + s = (e, t) => 2 * getUint16(e, t); + } + const r = []; + let n = s(t, 0); + for (let i = a; i < t.length; i += a) { + const a = s(t, i); + r.push(e.subarray(n, a)); + n = a; + } + return r; + })(s, r, o), + a, + t, + ); + } + return new Type2Compiled(n, a, e.fontMatrix, e.glyphNameMap); + } +} +const Aa = getLookupTableFactory(function (e) { + e.Courier = 600; + e["Courier-Bold"] = 600; + e["Courier-BoldOblique"] = 600; + e["Courier-Oblique"] = 600; + e.Helvetica = getLookupTableFactory(function (e) { + e.space = 278; + e.exclam = 278; + e.quotedbl = 355; + e.numbersign = 556; + e.dollar = 556; + e.percent = 889; + e.ampersand = 667; + e.quoteright = 222; + e.parenleft = 333; + e.parenright = 333; + e.asterisk = 389; + e.plus = 584; + e.comma = 278; + e.hyphen = 333; + e.period = 278; + e.slash = 278; + e.zero = 556; + e.one = 556; + e.two = 556; + e.three = 556; + e.four = 556; + e.five = 556; + e.six = 556; + e.seven = 556; + e.eight = 556; + e.nine = 556; + e.colon = 278; + e.semicolon = 278; + e.less = 584; + e.equal = 584; + e.greater = 584; + e.question = 556; + e.at = 1015; + e.A = 667; + e.B = 667; + e.C = 722; + e.D = 722; + e.E = 667; + e.F = 611; + e.G = 778; + e.H = 722; + e.I = 278; + e.J = 500; + e.K = 667; + e.L = 556; + e.M = 833; + e.N = 722; + e.O = 778; + e.P = 667; + e.Q = 778; + e.R = 722; + e.S = 667; + e.T = 611; + e.U = 722; + e.V = 667; + e.W = 944; + e.X = 667; + e.Y = 667; + e.Z = 611; + e.bracketleft = 278; + e.backslash = 278; + e.bracketright = 278; + e.asciicircum = 469; + e.underscore = 556; + e.quoteleft = 222; + e.a = 556; + e.b = 556; + e.c = 500; + e.d = 556; + e.e = 556; + e.f = 278; + e.g = 556; + e.h = 556; + e.i = 222; + e.j = 222; + e.k = 500; + e.l = 222; + e.m = 833; + e.n = 556; + e.o = 556; + e.p = 556; + e.q = 556; + e.r = 333; + e.s = 500; + e.t = 278; + e.u = 556; + e.v = 500; + e.w = 722; + e.x = 500; + e.y = 500; + e.z = 500; + e.braceleft = 334; + e.bar = 260; + e.braceright = 334; + e.asciitilde = 584; + e.exclamdown = 333; + e.cent = 556; + e.sterling = 556; + e.fraction = 167; + e.yen = 556; + e.florin = 556; + e.section = 556; + e.currency = 556; + e.quotesingle = 191; + e.quotedblleft = 333; + e.guillemotleft = 556; + e.guilsinglleft = 333; + e.guilsinglright = 333; + e.fi = 500; + e.fl = 500; + e.endash = 556; + e.dagger = 556; + e.daggerdbl = 556; + e.periodcentered = 278; + e.paragraph = 537; + e.bullet = 350; + e.quotesinglbase = 222; + e.quotedblbase = 333; + e.quotedblright = 333; + e.guillemotright = 556; + e.ellipsis = 1e3; + e.perthousand = 1e3; + e.questiondown = 611; + e.grave = 333; + e.acute = 333; + e.circumflex = 333; + e.tilde = 333; + e.macron = 333; + e.breve = 333; + e.dotaccent = 333; + e.dieresis = 333; + e.ring = 333; + e.cedilla = 333; + e.hungarumlaut = 333; + e.ogonek = 333; + e.caron = 333; + e.emdash = 1e3; + e.AE = 1e3; + e.ordfeminine = 370; + e.Lslash = 556; + e.Oslash = 778; + e.OE = 1e3; + e.ordmasculine = 365; + e.ae = 889; + e.dotlessi = 278; + e.lslash = 222; + e.oslash = 611; + e.oe = 944; + e.germandbls = 611; + e.Idieresis = 278; + e.eacute = 556; + e.abreve = 556; + e.uhungarumlaut = 556; + e.ecaron = 556; + e.Ydieresis = 667; + e.divide = 584; + e.Yacute = 667; + e.Acircumflex = 667; + e.aacute = 556; + e.Ucircumflex = 722; + e.yacute = 500; + e.scommaaccent = 500; + e.ecircumflex = 556; + e.Uring = 722; + e.Udieresis = 722; + e.aogonek = 556; + e.Uacute = 722; + e.uogonek = 556; + e.Edieresis = 667; + e.Dcroat = 722; + e.commaaccent = 250; + e.copyright = 737; + e.Emacron = 667; + e.ccaron = 500; + e.aring = 556; + e.Ncommaaccent = 722; + e.lacute = 222; + e.agrave = 556; + e.Tcommaaccent = 611; + e.Cacute = 722; + e.atilde = 556; + e.Edotaccent = 667; + e.scaron = 500; + e.scedilla = 500; + e.iacute = 278; + e.lozenge = 471; + e.Rcaron = 722; + e.Gcommaaccent = 778; + e.ucircumflex = 556; + e.acircumflex = 556; + e.Amacron = 667; + e.rcaron = 333; + e.ccedilla = 500; + e.Zdotaccent = 611; + e.Thorn = 667; + e.Omacron = 778; + e.Racute = 722; + e.Sacute = 667; + e.dcaron = 643; + e.Umacron = 722; + e.uring = 556; + e.threesuperior = 333; + e.Ograve = 778; + e.Agrave = 667; + e.Abreve = 667; + e.multiply = 584; + e.uacute = 556; + e.Tcaron = 611; + e.partialdiff = 476; + e.ydieresis = 500; + e.Nacute = 722; + e.icircumflex = 278; + e.Ecircumflex = 667; + e.adieresis = 556; + e.edieresis = 556; + e.cacute = 500; + e.nacute = 556; + e.umacron = 556; + e.Ncaron = 722; + e.Iacute = 278; + e.plusminus = 584; + e.brokenbar = 260; + e.registered = 737; + e.Gbreve = 778; + e.Idotaccent = 278; + e.summation = 600; + e.Egrave = 667; + e.racute = 333; + e.omacron = 556; + e.Zacute = 611; + e.Zcaron = 611; + e.greaterequal = 549; + e.Eth = 722; + e.Ccedilla = 722; + e.lcommaaccent = 222; + e.tcaron = 317; + e.eogonek = 556; + e.Uogonek = 722; + e.Aacute = 667; + e.Adieresis = 667; + e.egrave = 556; + e.zacute = 500; + e.iogonek = 222; + e.Oacute = 778; + e.oacute = 556; + e.amacron = 556; + e.sacute = 500; + e.idieresis = 278; + e.Ocircumflex = 778; + e.Ugrave = 722; + e.Delta = 612; + e.thorn = 556; + e.twosuperior = 333; + e.Odieresis = 778; + e.mu = 556; + e.igrave = 278; + e.ohungarumlaut = 556; + e.Eogonek = 667; + e.dcroat = 556; + e.threequarters = 834; + e.Scedilla = 667; + e.lcaron = 299; + e.Kcommaaccent = 667; + e.Lacute = 556; + e.trademark = 1e3; + e.edotaccent = 556; + e.Igrave = 278; + e.Imacron = 278; + e.Lcaron = 556; + e.onehalf = 834; + e.lessequal = 549; + e.ocircumflex = 556; + e.ntilde = 556; + e.Uhungarumlaut = 722; + e.Eacute = 667; + e.emacron = 556; + e.gbreve = 556; + e.onequarter = 834; + e.Scaron = 667; + e.Scommaaccent = 667; + e.Ohungarumlaut = 778; + e.degree = 400; + e.ograve = 556; + e.Ccaron = 722; + e.ugrave = 556; + e.radical = 453; + e.Dcaron = 722; + e.rcommaaccent = 333; + e.Ntilde = 722; + e.otilde = 556; + e.Rcommaaccent = 722; + e.Lcommaaccent = 556; + e.Atilde = 667; + e.Aogonek = 667; + e.Aring = 667; + e.Otilde = 778; + e.zdotaccent = 500; + e.Ecaron = 667; + e.Iogonek = 278; + e.kcommaaccent = 500; + e.minus = 584; + e.Icircumflex = 278; + e.ncaron = 556; + e.tcommaaccent = 278; + e.logicalnot = 584; + e.odieresis = 556; + e.udieresis = 556; + e.notequal = 549; + e.gcommaaccent = 556; + e.eth = 556; + e.zcaron = 500; + e.ncommaaccent = 556; + e.onesuperior = 333; + e.imacron = 278; + e.Euro = 556; + }); + e["Helvetica-Bold"] = getLookupTableFactory(function (e) { + e.space = 278; + e.exclam = 333; + e.quotedbl = 474; + e.numbersign = 556; + e.dollar = 556; + e.percent = 889; + e.ampersand = 722; + e.quoteright = 278; + e.parenleft = 333; + e.parenright = 333; + e.asterisk = 389; + e.plus = 584; + e.comma = 278; + e.hyphen = 333; + e.period = 278; + e.slash = 278; + e.zero = 556; + e.one = 556; + e.two = 556; + e.three = 556; + e.four = 556; + e.five = 556; + e.six = 556; + e.seven = 556; + e.eight = 556; + e.nine = 556; + e.colon = 333; + e.semicolon = 333; + e.less = 584; + e.equal = 584; + e.greater = 584; + e.question = 611; + e.at = 975; + e.A = 722; + e.B = 722; + e.C = 722; + e.D = 722; + e.E = 667; + e.F = 611; + e.G = 778; + e.H = 722; + e.I = 278; + e.J = 556; + e.K = 722; + e.L = 611; + e.M = 833; + e.N = 722; + e.O = 778; + e.P = 667; + e.Q = 778; + e.R = 722; + e.S = 667; + e.T = 611; + e.U = 722; + e.V = 667; + e.W = 944; + e.X = 667; + e.Y = 667; + e.Z = 611; + e.bracketleft = 333; + e.backslash = 278; + e.bracketright = 333; + e.asciicircum = 584; + e.underscore = 556; + e.quoteleft = 278; + e.a = 556; + e.b = 611; + e.c = 556; + e.d = 611; + e.e = 556; + e.f = 333; + e.g = 611; + e.h = 611; + e.i = 278; + e.j = 278; + e.k = 556; + e.l = 278; + e.m = 889; + e.n = 611; + e.o = 611; + e.p = 611; + e.q = 611; + e.r = 389; + e.s = 556; + e.t = 333; + e.u = 611; + e.v = 556; + e.w = 778; + e.x = 556; + e.y = 556; + e.z = 500; + e.braceleft = 389; + e.bar = 280; + e.braceright = 389; + e.asciitilde = 584; + e.exclamdown = 333; + e.cent = 556; + e.sterling = 556; + e.fraction = 167; + e.yen = 556; + e.florin = 556; + e.section = 556; + e.currency = 556; + e.quotesingle = 238; + e.quotedblleft = 500; + e.guillemotleft = 556; + e.guilsinglleft = 333; + e.guilsinglright = 333; + e.fi = 611; + e.fl = 611; + e.endash = 556; + e.dagger = 556; + e.daggerdbl = 556; + e.periodcentered = 278; + e.paragraph = 556; + e.bullet = 350; + e.quotesinglbase = 278; + e.quotedblbase = 500; + e.quotedblright = 500; + e.guillemotright = 556; + e.ellipsis = 1e3; + e.perthousand = 1e3; + e.questiondown = 611; + e.grave = 333; + e.acute = 333; + e.circumflex = 333; + e.tilde = 333; + e.macron = 333; + e.breve = 333; + e.dotaccent = 333; + e.dieresis = 333; + e.ring = 333; + e.cedilla = 333; + e.hungarumlaut = 333; + e.ogonek = 333; + e.caron = 333; + e.emdash = 1e3; + e.AE = 1e3; + e.ordfeminine = 370; + e.Lslash = 611; + e.Oslash = 778; + e.OE = 1e3; + e.ordmasculine = 365; + e.ae = 889; + e.dotlessi = 278; + e.lslash = 278; + e.oslash = 611; + e.oe = 944; + e.germandbls = 611; + e.Idieresis = 278; + e.eacute = 556; + e.abreve = 556; + e.uhungarumlaut = 611; + e.ecaron = 556; + e.Ydieresis = 667; + e.divide = 584; + e.Yacute = 667; + e.Acircumflex = 722; + e.aacute = 556; + e.Ucircumflex = 722; + e.yacute = 556; + e.scommaaccent = 556; + e.ecircumflex = 556; + e.Uring = 722; + e.Udieresis = 722; + e.aogonek = 556; + e.Uacute = 722; + e.uogonek = 611; + e.Edieresis = 667; + e.Dcroat = 722; + e.commaaccent = 250; + e.copyright = 737; + e.Emacron = 667; + e.ccaron = 556; + e.aring = 556; + e.Ncommaaccent = 722; + e.lacute = 278; + e.agrave = 556; + e.Tcommaaccent = 611; + e.Cacute = 722; + e.atilde = 556; + e.Edotaccent = 667; + e.scaron = 556; + e.scedilla = 556; + e.iacute = 278; + e.lozenge = 494; + e.Rcaron = 722; + e.Gcommaaccent = 778; + e.ucircumflex = 611; + e.acircumflex = 556; + e.Amacron = 722; + e.rcaron = 389; + e.ccedilla = 556; + e.Zdotaccent = 611; + e.Thorn = 667; + e.Omacron = 778; + e.Racute = 722; + e.Sacute = 667; + e.dcaron = 743; + e.Umacron = 722; + e.uring = 611; + e.threesuperior = 333; + e.Ograve = 778; + e.Agrave = 722; + e.Abreve = 722; + e.multiply = 584; + e.uacute = 611; + e.Tcaron = 611; + e.partialdiff = 494; + e.ydieresis = 556; + e.Nacute = 722; + e.icircumflex = 278; + e.Ecircumflex = 667; + e.adieresis = 556; + e.edieresis = 556; + e.cacute = 556; + e.nacute = 611; + e.umacron = 611; + e.Ncaron = 722; + e.Iacute = 278; + e.plusminus = 584; + e.brokenbar = 280; + e.registered = 737; + e.Gbreve = 778; + e.Idotaccent = 278; + e.summation = 600; + e.Egrave = 667; + e.racute = 389; + e.omacron = 611; + e.Zacute = 611; + e.Zcaron = 611; + e.greaterequal = 549; + e.Eth = 722; + e.Ccedilla = 722; + e.lcommaaccent = 278; + e.tcaron = 389; + e.eogonek = 556; + e.Uogonek = 722; + e.Aacute = 722; + e.Adieresis = 722; + e.egrave = 556; + e.zacute = 500; + e.iogonek = 278; + e.Oacute = 778; + e.oacute = 611; + e.amacron = 556; + e.sacute = 556; + e.idieresis = 278; + e.Ocircumflex = 778; + e.Ugrave = 722; + e.Delta = 612; + e.thorn = 611; + e.twosuperior = 333; + e.Odieresis = 778; + e.mu = 611; + e.igrave = 278; + e.ohungarumlaut = 611; + e.Eogonek = 667; + e.dcroat = 611; + e.threequarters = 834; + e.Scedilla = 667; + e.lcaron = 400; + e.Kcommaaccent = 722; + e.Lacute = 611; + e.trademark = 1e3; + e.edotaccent = 556; + e.Igrave = 278; + e.Imacron = 278; + e.Lcaron = 611; + e.onehalf = 834; + e.lessequal = 549; + e.ocircumflex = 611; + e.ntilde = 611; + e.Uhungarumlaut = 722; + e.Eacute = 667; + e.emacron = 556; + e.gbreve = 611; + e.onequarter = 834; + e.Scaron = 667; + e.Scommaaccent = 667; + e.Ohungarumlaut = 778; + e.degree = 400; + e.ograve = 611; + e.Ccaron = 722; + e.ugrave = 611; + e.radical = 549; + e.Dcaron = 722; + e.rcommaaccent = 389; + e.Ntilde = 722; + e.otilde = 611; + e.Rcommaaccent = 722; + e.Lcommaaccent = 611; + e.Atilde = 722; + e.Aogonek = 722; + e.Aring = 722; + e.Otilde = 778; + e.zdotaccent = 500; + e.Ecaron = 667; + e.Iogonek = 278; + e.kcommaaccent = 556; + e.minus = 584; + e.Icircumflex = 278; + e.ncaron = 611; + e.tcommaaccent = 333; + e.logicalnot = 584; + e.odieresis = 611; + e.udieresis = 611; + e.notequal = 549; + e.gcommaaccent = 611; + e.eth = 611; + e.zcaron = 500; + e.ncommaaccent = 611; + e.onesuperior = 333; + e.imacron = 278; + e.Euro = 556; + }); + e["Helvetica-BoldOblique"] = getLookupTableFactory(function (e) { + e.space = 278; + e.exclam = 333; + e.quotedbl = 474; + e.numbersign = 556; + e.dollar = 556; + e.percent = 889; + e.ampersand = 722; + e.quoteright = 278; + e.parenleft = 333; + e.parenright = 333; + e.asterisk = 389; + e.plus = 584; + e.comma = 278; + e.hyphen = 333; + e.period = 278; + e.slash = 278; + e.zero = 556; + e.one = 556; + e.two = 556; + e.three = 556; + e.four = 556; + e.five = 556; + e.six = 556; + e.seven = 556; + e.eight = 556; + e.nine = 556; + e.colon = 333; + e.semicolon = 333; + e.less = 584; + e.equal = 584; + e.greater = 584; + e.question = 611; + e.at = 975; + e.A = 722; + e.B = 722; + e.C = 722; + e.D = 722; + e.E = 667; + e.F = 611; + e.G = 778; + e.H = 722; + e.I = 278; + e.J = 556; + e.K = 722; + e.L = 611; + e.M = 833; + e.N = 722; + e.O = 778; + e.P = 667; + e.Q = 778; + e.R = 722; + e.S = 667; + e.T = 611; + e.U = 722; + e.V = 667; + e.W = 944; + e.X = 667; + e.Y = 667; + e.Z = 611; + e.bracketleft = 333; + e.backslash = 278; + e.bracketright = 333; + e.asciicircum = 584; + e.underscore = 556; + e.quoteleft = 278; + e.a = 556; + e.b = 611; + e.c = 556; + e.d = 611; + e.e = 556; + e.f = 333; + e.g = 611; + e.h = 611; + e.i = 278; + e.j = 278; + e.k = 556; + e.l = 278; + e.m = 889; + e.n = 611; + e.o = 611; + e.p = 611; + e.q = 611; + e.r = 389; + e.s = 556; + e.t = 333; + e.u = 611; + e.v = 556; + e.w = 778; + e.x = 556; + e.y = 556; + e.z = 500; + e.braceleft = 389; + e.bar = 280; + e.braceright = 389; + e.asciitilde = 584; + e.exclamdown = 333; + e.cent = 556; + e.sterling = 556; + e.fraction = 167; + e.yen = 556; + e.florin = 556; + e.section = 556; + e.currency = 556; + e.quotesingle = 238; + e.quotedblleft = 500; + e.guillemotleft = 556; + e.guilsinglleft = 333; + e.guilsinglright = 333; + e.fi = 611; + e.fl = 611; + e.endash = 556; + e.dagger = 556; + e.daggerdbl = 556; + e.periodcentered = 278; + e.paragraph = 556; + e.bullet = 350; + e.quotesinglbase = 278; + e.quotedblbase = 500; + e.quotedblright = 500; + e.guillemotright = 556; + e.ellipsis = 1e3; + e.perthousand = 1e3; + e.questiondown = 611; + e.grave = 333; + e.acute = 333; + e.circumflex = 333; + e.tilde = 333; + e.macron = 333; + e.breve = 333; + e.dotaccent = 333; + e.dieresis = 333; + e.ring = 333; + e.cedilla = 333; + e.hungarumlaut = 333; + e.ogonek = 333; + e.caron = 333; + e.emdash = 1e3; + e.AE = 1e3; + e.ordfeminine = 370; + e.Lslash = 611; + e.Oslash = 778; + e.OE = 1e3; + e.ordmasculine = 365; + e.ae = 889; + e.dotlessi = 278; + e.lslash = 278; + e.oslash = 611; + e.oe = 944; + e.germandbls = 611; + e.Idieresis = 278; + e.eacute = 556; + e.abreve = 556; + e.uhungarumlaut = 611; + e.ecaron = 556; + e.Ydieresis = 667; + e.divide = 584; + e.Yacute = 667; + e.Acircumflex = 722; + e.aacute = 556; + e.Ucircumflex = 722; + e.yacute = 556; + e.scommaaccent = 556; + e.ecircumflex = 556; + e.Uring = 722; + e.Udieresis = 722; + e.aogonek = 556; + e.Uacute = 722; + e.uogonek = 611; + e.Edieresis = 667; + e.Dcroat = 722; + e.commaaccent = 250; + e.copyright = 737; + e.Emacron = 667; + e.ccaron = 556; + e.aring = 556; + e.Ncommaaccent = 722; + e.lacute = 278; + e.agrave = 556; + e.Tcommaaccent = 611; + e.Cacute = 722; + e.atilde = 556; + e.Edotaccent = 667; + e.scaron = 556; + e.scedilla = 556; + e.iacute = 278; + e.lozenge = 494; + e.Rcaron = 722; + e.Gcommaaccent = 778; + e.ucircumflex = 611; + e.acircumflex = 556; + e.Amacron = 722; + e.rcaron = 389; + e.ccedilla = 556; + e.Zdotaccent = 611; + e.Thorn = 667; + e.Omacron = 778; + e.Racute = 722; + e.Sacute = 667; + e.dcaron = 743; + e.Umacron = 722; + e.uring = 611; + e.threesuperior = 333; + e.Ograve = 778; + e.Agrave = 722; + e.Abreve = 722; + e.multiply = 584; + e.uacute = 611; + e.Tcaron = 611; + e.partialdiff = 494; + e.ydieresis = 556; + e.Nacute = 722; + e.icircumflex = 278; + e.Ecircumflex = 667; + e.adieresis = 556; + e.edieresis = 556; + e.cacute = 556; + e.nacute = 611; + e.umacron = 611; + e.Ncaron = 722; + e.Iacute = 278; + e.plusminus = 584; + e.brokenbar = 280; + e.registered = 737; + e.Gbreve = 778; + e.Idotaccent = 278; + e.summation = 600; + e.Egrave = 667; + e.racute = 389; + e.omacron = 611; + e.Zacute = 611; + e.Zcaron = 611; + e.greaterequal = 549; + e.Eth = 722; + e.Ccedilla = 722; + e.lcommaaccent = 278; + e.tcaron = 389; + e.eogonek = 556; + e.Uogonek = 722; + e.Aacute = 722; + e.Adieresis = 722; + e.egrave = 556; + e.zacute = 500; + e.iogonek = 278; + e.Oacute = 778; + e.oacute = 611; + e.amacron = 556; + e.sacute = 556; + e.idieresis = 278; + e.Ocircumflex = 778; + e.Ugrave = 722; + e.Delta = 612; + e.thorn = 611; + e.twosuperior = 333; + e.Odieresis = 778; + e.mu = 611; + e.igrave = 278; + e.ohungarumlaut = 611; + e.Eogonek = 667; + e.dcroat = 611; + e.threequarters = 834; + e.Scedilla = 667; + e.lcaron = 400; + e.Kcommaaccent = 722; + e.Lacute = 611; + e.trademark = 1e3; + e.edotaccent = 556; + e.Igrave = 278; + e.Imacron = 278; + e.Lcaron = 611; + e.onehalf = 834; + e.lessequal = 549; + e.ocircumflex = 611; + e.ntilde = 611; + e.Uhungarumlaut = 722; + e.Eacute = 667; + e.emacron = 556; + e.gbreve = 611; + e.onequarter = 834; + e.Scaron = 667; + e.Scommaaccent = 667; + e.Ohungarumlaut = 778; + e.degree = 400; + e.ograve = 611; + e.Ccaron = 722; + e.ugrave = 611; + e.radical = 549; + e.Dcaron = 722; + e.rcommaaccent = 389; + e.Ntilde = 722; + e.otilde = 611; + e.Rcommaaccent = 722; + e.Lcommaaccent = 611; + e.Atilde = 722; + e.Aogonek = 722; + e.Aring = 722; + e.Otilde = 778; + e.zdotaccent = 500; + e.Ecaron = 667; + e.Iogonek = 278; + e.kcommaaccent = 556; + e.minus = 584; + e.Icircumflex = 278; + e.ncaron = 611; + e.tcommaaccent = 333; + e.logicalnot = 584; + e.odieresis = 611; + e.udieresis = 611; + e.notequal = 549; + e.gcommaaccent = 611; + e.eth = 611; + e.zcaron = 500; + e.ncommaaccent = 611; + e.onesuperior = 333; + e.imacron = 278; + e.Euro = 556; + }); + e["Helvetica-Oblique"] = getLookupTableFactory(function (e) { + e.space = 278; + e.exclam = 278; + e.quotedbl = 355; + e.numbersign = 556; + e.dollar = 556; + e.percent = 889; + e.ampersand = 667; + e.quoteright = 222; + e.parenleft = 333; + e.parenright = 333; + e.asterisk = 389; + e.plus = 584; + e.comma = 278; + e.hyphen = 333; + e.period = 278; + e.slash = 278; + e.zero = 556; + e.one = 556; + e.two = 556; + e.three = 556; + e.four = 556; + e.five = 556; + e.six = 556; + e.seven = 556; + e.eight = 556; + e.nine = 556; + e.colon = 278; + e.semicolon = 278; + e.less = 584; + e.equal = 584; + e.greater = 584; + e.question = 556; + e.at = 1015; + e.A = 667; + e.B = 667; + e.C = 722; + e.D = 722; + e.E = 667; + e.F = 611; + e.G = 778; + e.H = 722; + e.I = 278; + e.J = 500; + e.K = 667; + e.L = 556; + e.M = 833; + e.N = 722; + e.O = 778; + e.P = 667; + e.Q = 778; + e.R = 722; + e.S = 667; + e.T = 611; + e.U = 722; + e.V = 667; + e.W = 944; + e.X = 667; + e.Y = 667; + e.Z = 611; + e.bracketleft = 278; + e.backslash = 278; + e.bracketright = 278; + e.asciicircum = 469; + e.underscore = 556; + e.quoteleft = 222; + e.a = 556; + e.b = 556; + e.c = 500; + e.d = 556; + e.e = 556; + e.f = 278; + e.g = 556; + e.h = 556; + e.i = 222; + e.j = 222; + e.k = 500; + e.l = 222; + e.m = 833; + e.n = 556; + e.o = 556; + e.p = 556; + e.q = 556; + e.r = 333; + e.s = 500; + e.t = 278; + e.u = 556; + e.v = 500; + e.w = 722; + e.x = 500; + e.y = 500; + e.z = 500; + e.braceleft = 334; + e.bar = 260; + e.braceright = 334; + e.asciitilde = 584; + e.exclamdown = 333; + e.cent = 556; + e.sterling = 556; + e.fraction = 167; + e.yen = 556; + e.florin = 556; + e.section = 556; + e.currency = 556; + e.quotesingle = 191; + e.quotedblleft = 333; + e.guillemotleft = 556; + e.guilsinglleft = 333; + e.guilsinglright = 333; + e.fi = 500; + e.fl = 500; + e.endash = 556; + e.dagger = 556; + e.daggerdbl = 556; + e.periodcentered = 278; + e.paragraph = 537; + e.bullet = 350; + e.quotesinglbase = 222; + e.quotedblbase = 333; + e.quotedblright = 333; + e.guillemotright = 556; + e.ellipsis = 1e3; + e.perthousand = 1e3; + e.questiondown = 611; + e.grave = 333; + e.acute = 333; + e.circumflex = 333; + e.tilde = 333; + e.macron = 333; + e.breve = 333; + e.dotaccent = 333; + e.dieresis = 333; + e.ring = 333; + e.cedilla = 333; + e.hungarumlaut = 333; + e.ogonek = 333; + e.caron = 333; + e.emdash = 1e3; + e.AE = 1e3; + e.ordfeminine = 370; + e.Lslash = 556; + e.Oslash = 778; + e.OE = 1e3; + e.ordmasculine = 365; + e.ae = 889; + e.dotlessi = 278; + e.lslash = 222; + e.oslash = 611; + e.oe = 944; + e.germandbls = 611; + e.Idieresis = 278; + e.eacute = 556; + e.abreve = 556; + e.uhungarumlaut = 556; + e.ecaron = 556; + e.Ydieresis = 667; + e.divide = 584; + e.Yacute = 667; + e.Acircumflex = 667; + e.aacute = 556; + e.Ucircumflex = 722; + e.yacute = 500; + e.scommaaccent = 500; + e.ecircumflex = 556; + e.Uring = 722; + e.Udieresis = 722; + e.aogonek = 556; + e.Uacute = 722; + e.uogonek = 556; + e.Edieresis = 667; + e.Dcroat = 722; + e.commaaccent = 250; + e.copyright = 737; + e.Emacron = 667; + e.ccaron = 500; + e.aring = 556; + e.Ncommaaccent = 722; + e.lacute = 222; + e.agrave = 556; + e.Tcommaaccent = 611; + e.Cacute = 722; + e.atilde = 556; + e.Edotaccent = 667; + e.scaron = 500; + e.scedilla = 500; + e.iacute = 278; + e.lozenge = 471; + e.Rcaron = 722; + e.Gcommaaccent = 778; + e.ucircumflex = 556; + e.acircumflex = 556; + e.Amacron = 667; + e.rcaron = 333; + e.ccedilla = 500; + e.Zdotaccent = 611; + e.Thorn = 667; + e.Omacron = 778; + e.Racute = 722; + e.Sacute = 667; + e.dcaron = 643; + e.Umacron = 722; + e.uring = 556; + e.threesuperior = 333; + e.Ograve = 778; + e.Agrave = 667; + e.Abreve = 667; + e.multiply = 584; + e.uacute = 556; + e.Tcaron = 611; + e.partialdiff = 476; + e.ydieresis = 500; + e.Nacute = 722; + e.icircumflex = 278; + e.Ecircumflex = 667; + e.adieresis = 556; + e.edieresis = 556; + e.cacute = 500; + e.nacute = 556; + e.umacron = 556; + e.Ncaron = 722; + e.Iacute = 278; + e.plusminus = 584; + e.brokenbar = 260; + e.registered = 737; + e.Gbreve = 778; + e.Idotaccent = 278; + e.summation = 600; + e.Egrave = 667; + e.racute = 333; + e.omacron = 556; + e.Zacute = 611; + e.Zcaron = 611; + e.greaterequal = 549; + e.Eth = 722; + e.Ccedilla = 722; + e.lcommaaccent = 222; + e.tcaron = 317; + e.eogonek = 556; + e.Uogonek = 722; + e.Aacute = 667; + e.Adieresis = 667; + e.egrave = 556; + e.zacute = 500; + e.iogonek = 222; + e.Oacute = 778; + e.oacute = 556; + e.amacron = 556; + e.sacute = 500; + e.idieresis = 278; + e.Ocircumflex = 778; + e.Ugrave = 722; + e.Delta = 612; + e.thorn = 556; + e.twosuperior = 333; + e.Odieresis = 778; + e.mu = 556; + e.igrave = 278; + e.ohungarumlaut = 556; + e.Eogonek = 667; + e.dcroat = 556; + e.threequarters = 834; + e.Scedilla = 667; + e.lcaron = 299; + e.Kcommaaccent = 667; + e.Lacute = 556; + e.trademark = 1e3; + e.edotaccent = 556; + e.Igrave = 278; + e.Imacron = 278; + e.Lcaron = 556; + e.onehalf = 834; + e.lessequal = 549; + e.ocircumflex = 556; + e.ntilde = 556; + e.Uhungarumlaut = 722; + e.Eacute = 667; + e.emacron = 556; + e.gbreve = 556; + e.onequarter = 834; + e.Scaron = 667; + e.Scommaaccent = 667; + e.Ohungarumlaut = 778; + e.degree = 400; + e.ograve = 556; + e.Ccaron = 722; + e.ugrave = 556; + e.radical = 453; + e.Dcaron = 722; + e.rcommaaccent = 333; + e.Ntilde = 722; + e.otilde = 556; + e.Rcommaaccent = 722; + e.Lcommaaccent = 556; + e.Atilde = 667; + e.Aogonek = 667; + e.Aring = 667; + e.Otilde = 778; + e.zdotaccent = 500; + e.Ecaron = 667; + e.Iogonek = 278; + e.kcommaaccent = 500; + e.minus = 584; + e.Icircumflex = 278; + e.ncaron = 556; + e.tcommaaccent = 278; + e.logicalnot = 584; + e.odieresis = 556; + e.udieresis = 556; + e.notequal = 549; + e.gcommaaccent = 556; + e.eth = 556; + e.zcaron = 500; + e.ncommaaccent = 556; + e.onesuperior = 333; + e.imacron = 278; + e.Euro = 556; + }); + e.Symbol = getLookupTableFactory(function (e) { + e.space = 250; + e.exclam = 333; + e.universal = 713; + e.numbersign = 500; + e.existential = 549; + e.percent = 833; + e.ampersand = 778; + e.suchthat = 439; + e.parenleft = 333; + e.parenright = 333; + e.asteriskmath = 500; + e.plus = 549; + e.comma = 250; + e.minus = 549; + e.period = 250; + e.slash = 278; + e.zero = 500; + e.one = 500; + e.two = 500; + e.three = 500; + e.four = 500; + e.five = 500; + e.six = 500; + e.seven = 500; + e.eight = 500; + e.nine = 500; + e.colon = 278; + e.semicolon = 278; + e.less = 549; + e.equal = 549; + e.greater = 549; + e.question = 444; + e.congruent = 549; + e.Alpha = 722; + e.Beta = 667; + e.Chi = 722; + e.Delta = 612; + e.Epsilon = 611; + e.Phi = 763; + e.Gamma = 603; + e.Eta = 722; + e.Iota = 333; + e.theta1 = 631; + e.Kappa = 722; + e.Lambda = 686; + e.Mu = 889; + e.Nu = 722; + e.Omicron = 722; + e.Pi = 768; + e.Theta = 741; + e.Rho = 556; + e.Sigma = 592; + e.Tau = 611; + e.Upsilon = 690; + e.sigma1 = 439; + e.Omega = 768; + e.Xi = 645; + e.Psi = 795; + e.Zeta = 611; + e.bracketleft = 333; + e.therefore = 863; + e.bracketright = 333; + e.perpendicular = 658; + e.underscore = 500; + e.radicalex = 500; + e.alpha = 631; + e.beta = 549; + e.chi = 549; + e.delta = 494; + e.epsilon = 439; + e.phi = 521; + e.gamma = 411; + e.eta = 603; + e.iota = 329; + e.phi1 = 603; + e.kappa = 549; + e.lambda = 549; + e.mu = 576; + e.nu = 521; + e.omicron = 549; + e.pi = 549; + e.theta = 521; + e.rho = 549; + e.sigma = 603; + e.tau = 439; + e.upsilon = 576; + e.omega1 = 713; + e.omega = 686; + e.xi = 493; + e.psi = 686; + e.zeta = 494; + e.braceleft = 480; + e.bar = 200; + e.braceright = 480; + e.similar = 549; + e.Euro = 750; + e.Upsilon1 = 620; + e.minute = 247; + e.lessequal = 549; + e.fraction = 167; + e.infinity = 713; + e.florin = 500; + e.club = 753; + e.diamond = 753; + e.heart = 753; + e.spade = 753; + e.arrowboth = 1042; + e.arrowleft = 987; + e.arrowup = 603; + e.arrowright = 987; + e.arrowdown = 603; + e.degree = 400; + e.plusminus = 549; + e.second = 411; + e.greaterequal = 549; + e.multiply = 549; + e.proportional = 713; + e.partialdiff = 494; + e.bullet = 460; + e.divide = 549; + e.notequal = 549; + e.equivalence = 549; + e.approxequal = 549; + e.ellipsis = 1e3; + e.arrowvertex = 603; + e.arrowhorizex = 1e3; + e.carriagereturn = 658; + e.aleph = 823; + e.Ifraktur = 686; + e.Rfraktur = 795; + e.weierstrass = 987; + e.circlemultiply = 768; + e.circleplus = 768; + e.emptyset = 823; + e.intersection = 768; + e.union = 768; + e.propersuperset = 713; + e.reflexsuperset = 713; + e.notsubset = 713; + e.propersubset = 713; + e.reflexsubset = 713; + e.element = 713; + e.notelement = 713; + e.angle = 768; + e.gradient = 713; + e.registerserif = 790; + e.copyrightserif = 790; + e.trademarkserif = 890; + e.product = 823; + e.radical = 549; + e.dotmath = 250; + e.logicalnot = 713; + e.logicaland = 603; + e.logicalor = 603; + e.arrowdblboth = 1042; + e.arrowdblleft = 987; + e.arrowdblup = 603; + e.arrowdblright = 987; + e.arrowdbldown = 603; + e.lozenge = 494; + e.angleleft = 329; + e.registersans = 790; + e.copyrightsans = 790; + e.trademarksans = 786; + e.summation = 713; + e.parenlefttp = 384; + e.parenleftex = 384; + e.parenleftbt = 384; + e.bracketlefttp = 384; + e.bracketleftex = 384; + e.bracketleftbt = 384; + e.bracelefttp = 494; + e.braceleftmid = 494; + e.braceleftbt = 494; + e.braceex = 494; + e.angleright = 329; + e.integral = 274; + e.integraltp = 686; + e.integralex = 686; + e.integralbt = 686; + e.parenrighttp = 384; + e.parenrightex = 384; + e.parenrightbt = 384; + e.bracketrighttp = 384; + e.bracketrightex = 384; + e.bracketrightbt = 384; + e.bracerighttp = 494; + e.bracerightmid = 494; + e.bracerightbt = 494; + e.apple = 790; + }); + e["Times-Roman"] = getLookupTableFactory(function (e) { + e.space = 250; + e.exclam = 333; + e.quotedbl = 408; + e.numbersign = 500; + e.dollar = 500; + e.percent = 833; + e.ampersand = 778; + e.quoteright = 333; + e.parenleft = 333; + e.parenright = 333; + e.asterisk = 500; + e.plus = 564; + e.comma = 250; + e.hyphen = 333; + e.period = 250; + e.slash = 278; + e.zero = 500; + e.one = 500; + e.two = 500; + e.three = 500; + e.four = 500; + e.five = 500; + e.six = 500; + e.seven = 500; + e.eight = 500; + e.nine = 500; + e.colon = 278; + e.semicolon = 278; + e.less = 564; + e.equal = 564; + e.greater = 564; + e.question = 444; + e.at = 921; + e.A = 722; + e.B = 667; + e.C = 667; + e.D = 722; + e.E = 611; + e.F = 556; + e.G = 722; + e.H = 722; + e.I = 333; + e.J = 389; + e.K = 722; + e.L = 611; + e.M = 889; + e.N = 722; + e.O = 722; + e.P = 556; + e.Q = 722; + e.R = 667; + e.S = 556; + e.T = 611; + e.U = 722; + e.V = 722; + e.W = 944; + e.X = 722; + e.Y = 722; + e.Z = 611; + e.bracketleft = 333; + e.backslash = 278; + e.bracketright = 333; + e.asciicircum = 469; + e.underscore = 500; + e.quoteleft = 333; + e.a = 444; + e.b = 500; + e.c = 444; + e.d = 500; + e.e = 444; + e.f = 333; + e.g = 500; + e.h = 500; + e.i = 278; + e.j = 278; + e.k = 500; + e.l = 278; + e.m = 778; + e.n = 500; + e.o = 500; + e.p = 500; + e.q = 500; + e.r = 333; + e.s = 389; + e.t = 278; + e.u = 500; + e.v = 500; + e.w = 722; + e.x = 500; + e.y = 500; + e.z = 444; + e.braceleft = 480; + e.bar = 200; + e.braceright = 480; + e.asciitilde = 541; + e.exclamdown = 333; + e.cent = 500; + e.sterling = 500; + e.fraction = 167; + e.yen = 500; + e.florin = 500; + e.section = 500; + e.currency = 500; + e.quotesingle = 180; + e.quotedblleft = 444; + e.guillemotleft = 500; + e.guilsinglleft = 333; + e.guilsinglright = 333; + e.fi = 556; + e.fl = 556; + e.endash = 500; + e.dagger = 500; + e.daggerdbl = 500; + e.periodcentered = 250; + e.paragraph = 453; + e.bullet = 350; + e.quotesinglbase = 333; + e.quotedblbase = 444; + e.quotedblright = 444; + e.guillemotright = 500; + e.ellipsis = 1e3; + e.perthousand = 1e3; + e.questiondown = 444; + e.grave = 333; + e.acute = 333; + e.circumflex = 333; + e.tilde = 333; + e.macron = 333; + e.breve = 333; + e.dotaccent = 333; + e.dieresis = 333; + e.ring = 333; + e.cedilla = 333; + e.hungarumlaut = 333; + e.ogonek = 333; + e.caron = 333; + e.emdash = 1e3; + e.AE = 889; + e.ordfeminine = 276; + e.Lslash = 611; + e.Oslash = 722; + e.OE = 889; + e.ordmasculine = 310; + e.ae = 667; + e.dotlessi = 278; + e.lslash = 278; + e.oslash = 500; + e.oe = 722; + e.germandbls = 500; + e.Idieresis = 333; + e.eacute = 444; + e.abreve = 444; + e.uhungarumlaut = 500; + e.ecaron = 444; + e.Ydieresis = 722; + e.divide = 564; + e.Yacute = 722; + e.Acircumflex = 722; + e.aacute = 444; + e.Ucircumflex = 722; + e.yacute = 500; + e.scommaaccent = 389; + e.ecircumflex = 444; + e.Uring = 722; + e.Udieresis = 722; + e.aogonek = 444; + e.Uacute = 722; + e.uogonek = 500; + e.Edieresis = 611; + e.Dcroat = 722; + e.commaaccent = 250; + e.copyright = 760; + e.Emacron = 611; + e.ccaron = 444; + e.aring = 444; + e.Ncommaaccent = 722; + e.lacute = 278; + e.agrave = 444; + e.Tcommaaccent = 611; + e.Cacute = 667; + e.atilde = 444; + e.Edotaccent = 611; + e.scaron = 389; + e.scedilla = 389; + e.iacute = 278; + e.lozenge = 471; + e.Rcaron = 667; + e.Gcommaaccent = 722; + e.ucircumflex = 500; + e.acircumflex = 444; + e.Amacron = 722; + e.rcaron = 333; + e.ccedilla = 444; + e.Zdotaccent = 611; + e.Thorn = 556; + e.Omacron = 722; + e.Racute = 667; + e.Sacute = 556; + e.dcaron = 588; + e.Umacron = 722; + e.uring = 500; + e.threesuperior = 300; + e.Ograve = 722; + e.Agrave = 722; + e.Abreve = 722; + e.multiply = 564; + e.uacute = 500; + e.Tcaron = 611; + e.partialdiff = 476; + e.ydieresis = 500; + e.Nacute = 722; + e.icircumflex = 278; + e.Ecircumflex = 611; + e.adieresis = 444; + e.edieresis = 444; + e.cacute = 444; + e.nacute = 500; + e.umacron = 500; + e.Ncaron = 722; + e.Iacute = 333; + e.plusminus = 564; + e.brokenbar = 200; + e.registered = 760; + e.Gbreve = 722; + e.Idotaccent = 333; + e.summation = 600; + e.Egrave = 611; + e.racute = 333; + e.omacron = 500; + e.Zacute = 611; + e.Zcaron = 611; + e.greaterequal = 549; + e.Eth = 722; + e.Ccedilla = 667; + e.lcommaaccent = 278; + e.tcaron = 326; + e.eogonek = 444; + e.Uogonek = 722; + e.Aacute = 722; + e.Adieresis = 722; + e.egrave = 444; + e.zacute = 444; + e.iogonek = 278; + e.Oacute = 722; + e.oacute = 500; + e.amacron = 444; + e.sacute = 389; + e.idieresis = 278; + e.Ocircumflex = 722; + e.Ugrave = 722; + e.Delta = 612; + e.thorn = 500; + e.twosuperior = 300; + e.Odieresis = 722; + e.mu = 500; + e.igrave = 278; + e.ohungarumlaut = 500; + e.Eogonek = 611; + e.dcroat = 500; + e.threequarters = 750; + e.Scedilla = 556; + e.lcaron = 344; + e.Kcommaaccent = 722; + e.Lacute = 611; + e.trademark = 980; + e.edotaccent = 444; + e.Igrave = 333; + e.Imacron = 333; + e.Lcaron = 611; + e.onehalf = 750; + e.lessequal = 549; + e.ocircumflex = 500; + e.ntilde = 500; + e.Uhungarumlaut = 722; + e.Eacute = 611; + e.emacron = 444; + e.gbreve = 500; + e.onequarter = 750; + e.Scaron = 556; + e.Scommaaccent = 556; + e.Ohungarumlaut = 722; + e.degree = 400; + e.ograve = 500; + e.Ccaron = 667; + e.ugrave = 500; + e.radical = 453; + e.Dcaron = 722; + e.rcommaaccent = 333; + e.Ntilde = 722; + e.otilde = 500; + e.Rcommaaccent = 667; + e.Lcommaaccent = 611; + e.Atilde = 722; + e.Aogonek = 722; + e.Aring = 722; + e.Otilde = 722; + e.zdotaccent = 444; + e.Ecaron = 611; + e.Iogonek = 333; + e.kcommaaccent = 500; + e.minus = 564; + e.Icircumflex = 333; + e.ncaron = 500; + e.tcommaaccent = 278; + e.logicalnot = 564; + e.odieresis = 500; + e.udieresis = 500; + e.notequal = 549; + e.gcommaaccent = 500; + e.eth = 500; + e.zcaron = 444; + e.ncommaaccent = 500; + e.onesuperior = 300; + e.imacron = 278; + e.Euro = 500; + }); + e["Times-Bold"] = getLookupTableFactory(function (e) { + e.space = 250; + e.exclam = 333; + e.quotedbl = 555; + e.numbersign = 500; + e.dollar = 500; + e.percent = 1e3; + e.ampersand = 833; + e.quoteright = 333; + e.parenleft = 333; + e.parenright = 333; + e.asterisk = 500; + e.plus = 570; + e.comma = 250; + e.hyphen = 333; + e.period = 250; + e.slash = 278; + e.zero = 500; + e.one = 500; + e.two = 500; + e.three = 500; + e.four = 500; + e.five = 500; + e.six = 500; + e.seven = 500; + e.eight = 500; + e.nine = 500; + e.colon = 333; + e.semicolon = 333; + e.less = 570; + e.equal = 570; + e.greater = 570; + e.question = 500; + e.at = 930; + e.A = 722; + e.B = 667; + e.C = 722; + e.D = 722; + e.E = 667; + e.F = 611; + e.G = 778; + e.H = 778; + e.I = 389; + e.J = 500; + e.K = 778; + e.L = 667; + e.M = 944; + e.N = 722; + e.O = 778; + e.P = 611; + e.Q = 778; + e.R = 722; + e.S = 556; + e.T = 667; + e.U = 722; + e.V = 722; + e.W = 1e3; + e.X = 722; + e.Y = 722; + e.Z = 667; + e.bracketleft = 333; + e.backslash = 278; + e.bracketright = 333; + e.asciicircum = 581; + e.underscore = 500; + e.quoteleft = 333; + e.a = 500; + e.b = 556; + e.c = 444; + e.d = 556; + e.e = 444; + e.f = 333; + e.g = 500; + e.h = 556; + e.i = 278; + e.j = 333; + e.k = 556; + e.l = 278; + e.m = 833; + e.n = 556; + e.o = 500; + e.p = 556; + e.q = 556; + e.r = 444; + e.s = 389; + e.t = 333; + e.u = 556; + e.v = 500; + e.w = 722; + e.x = 500; + e.y = 500; + e.z = 444; + e.braceleft = 394; + e.bar = 220; + e.braceright = 394; + e.asciitilde = 520; + e.exclamdown = 333; + e.cent = 500; + e.sterling = 500; + e.fraction = 167; + e.yen = 500; + e.florin = 500; + e.section = 500; + e.currency = 500; + e.quotesingle = 278; + e.quotedblleft = 500; + e.guillemotleft = 500; + e.guilsinglleft = 333; + e.guilsinglright = 333; + e.fi = 556; + e.fl = 556; + e.endash = 500; + e.dagger = 500; + e.daggerdbl = 500; + e.periodcentered = 250; + e.paragraph = 540; + e.bullet = 350; + e.quotesinglbase = 333; + e.quotedblbase = 500; + e.quotedblright = 500; + e.guillemotright = 500; + e.ellipsis = 1e3; + e.perthousand = 1e3; + e.questiondown = 500; + e.grave = 333; + e.acute = 333; + e.circumflex = 333; + e.tilde = 333; + e.macron = 333; + e.breve = 333; + e.dotaccent = 333; + e.dieresis = 333; + e.ring = 333; + e.cedilla = 333; + e.hungarumlaut = 333; + e.ogonek = 333; + e.caron = 333; + e.emdash = 1e3; + e.AE = 1e3; + e.ordfeminine = 300; + e.Lslash = 667; + e.Oslash = 778; + e.OE = 1e3; + e.ordmasculine = 330; + e.ae = 722; + e.dotlessi = 278; + e.lslash = 278; + e.oslash = 500; + e.oe = 722; + e.germandbls = 556; + e.Idieresis = 389; + e.eacute = 444; + e.abreve = 500; + e.uhungarumlaut = 556; + e.ecaron = 444; + e.Ydieresis = 722; + e.divide = 570; + e.Yacute = 722; + e.Acircumflex = 722; + e.aacute = 500; + e.Ucircumflex = 722; + e.yacute = 500; + e.scommaaccent = 389; + e.ecircumflex = 444; + e.Uring = 722; + e.Udieresis = 722; + e.aogonek = 500; + e.Uacute = 722; + e.uogonek = 556; + e.Edieresis = 667; + e.Dcroat = 722; + e.commaaccent = 250; + e.copyright = 747; + e.Emacron = 667; + e.ccaron = 444; + e.aring = 500; + e.Ncommaaccent = 722; + e.lacute = 278; + e.agrave = 500; + e.Tcommaaccent = 667; + e.Cacute = 722; + e.atilde = 500; + e.Edotaccent = 667; + e.scaron = 389; + e.scedilla = 389; + e.iacute = 278; + e.lozenge = 494; + e.Rcaron = 722; + e.Gcommaaccent = 778; + e.ucircumflex = 556; + e.acircumflex = 500; + e.Amacron = 722; + e.rcaron = 444; + e.ccedilla = 444; + e.Zdotaccent = 667; + e.Thorn = 611; + e.Omacron = 778; + e.Racute = 722; + e.Sacute = 556; + e.dcaron = 672; + e.Umacron = 722; + e.uring = 556; + e.threesuperior = 300; + e.Ograve = 778; + e.Agrave = 722; + e.Abreve = 722; + e.multiply = 570; + e.uacute = 556; + e.Tcaron = 667; + e.partialdiff = 494; + e.ydieresis = 500; + e.Nacute = 722; + e.icircumflex = 278; + e.Ecircumflex = 667; + e.adieresis = 500; + e.edieresis = 444; + e.cacute = 444; + e.nacute = 556; + e.umacron = 556; + e.Ncaron = 722; + e.Iacute = 389; + e.plusminus = 570; + e.brokenbar = 220; + e.registered = 747; + e.Gbreve = 778; + e.Idotaccent = 389; + e.summation = 600; + e.Egrave = 667; + e.racute = 444; + e.omacron = 500; + e.Zacute = 667; + e.Zcaron = 667; + e.greaterequal = 549; + e.Eth = 722; + e.Ccedilla = 722; + e.lcommaaccent = 278; + e.tcaron = 416; + e.eogonek = 444; + e.Uogonek = 722; + e.Aacute = 722; + e.Adieresis = 722; + e.egrave = 444; + e.zacute = 444; + e.iogonek = 278; + e.Oacute = 778; + e.oacute = 500; + e.amacron = 500; + e.sacute = 389; + e.idieresis = 278; + e.Ocircumflex = 778; + e.Ugrave = 722; + e.Delta = 612; + e.thorn = 556; + e.twosuperior = 300; + e.Odieresis = 778; + e.mu = 556; + e.igrave = 278; + e.ohungarumlaut = 500; + e.Eogonek = 667; + e.dcroat = 556; + e.threequarters = 750; + e.Scedilla = 556; + e.lcaron = 394; + e.Kcommaaccent = 778; + e.Lacute = 667; + e.trademark = 1e3; + e.edotaccent = 444; + e.Igrave = 389; + e.Imacron = 389; + e.Lcaron = 667; + e.onehalf = 750; + e.lessequal = 549; + e.ocircumflex = 500; + e.ntilde = 556; + e.Uhungarumlaut = 722; + e.Eacute = 667; + e.emacron = 444; + e.gbreve = 500; + e.onequarter = 750; + e.Scaron = 556; + e.Scommaaccent = 556; + e.Ohungarumlaut = 778; + e.degree = 400; + e.ograve = 500; + e.Ccaron = 722; + e.ugrave = 556; + e.radical = 549; + e.Dcaron = 722; + e.rcommaaccent = 444; + e.Ntilde = 722; + e.otilde = 500; + e.Rcommaaccent = 722; + e.Lcommaaccent = 667; + e.Atilde = 722; + e.Aogonek = 722; + e.Aring = 722; + e.Otilde = 778; + e.zdotaccent = 444; + e.Ecaron = 667; + e.Iogonek = 389; + e.kcommaaccent = 556; + e.minus = 570; + e.Icircumflex = 389; + e.ncaron = 556; + e.tcommaaccent = 333; + e.logicalnot = 570; + e.odieresis = 500; + e.udieresis = 556; + e.notequal = 549; + e.gcommaaccent = 500; + e.eth = 500; + e.zcaron = 444; + e.ncommaaccent = 556; + e.onesuperior = 300; + e.imacron = 278; + e.Euro = 500; + }); + e["Times-BoldItalic"] = getLookupTableFactory(function (e) { + e.space = 250; + e.exclam = 389; + e.quotedbl = 555; + e.numbersign = 500; + e.dollar = 500; + e.percent = 833; + e.ampersand = 778; + e.quoteright = 333; + e.parenleft = 333; + e.parenright = 333; + e.asterisk = 500; + e.plus = 570; + e.comma = 250; + e.hyphen = 333; + e.period = 250; + e.slash = 278; + e.zero = 500; + e.one = 500; + e.two = 500; + e.three = 500; + e.four = 500; + e.five = 500; + e.six = 500; + e.seven = 500; + e.eight = 500; + e.nine = 500; + e.colon = 333; + e.semicolon = 333; + e.less = 570; + e.equal = 570; + e.greater = 570; + e.question = 500; + e.at = 832; + e.A = 667; + e.B = 667; + e.C = 667; + e.D = 722; + e.E = 667; + e.F = 667; + e.G = 722; + e.H = 778; + e.I = 389; + e.J = 500; + e.K = 667; + e.L = 611; + e.M = 889; + e.N = 722; + e.O = 722; + e.P = 611; + e.Q = 722; + e.R = 667; + e.S = 556; + e.T = 611; + e.U = 722; + e.V = 667; + e.W = 889; + e.X = 667; + e.Y = 611; + e.Z = 611; + e.bracketleft = 333; + e.backslash = 278; + e.bracketright = 333; + e.asciicircum = 570; + e.underscore = 500; + e.quoteleft = 333; + e.a = 500; + e.b = 500; + e.c = 444; + e.d = 500; + e.e = 444; + e.f = 333; + e.g = 500; + e.h = 556; + e.i = 278; + e.j = 278; + e.k = 500; + e.l = 278; + e.m = 778; + e.n = 556; + e.o = 500; + e.p = 500; + e.q = 500; + e.r = 389; + e.s = 389; + e.t = 278; + e.u = 556; + e.v = 444; + e.w = 667; + e.x = 500; + e.y = 444; + e.z = 389; + e.braceleft = 348; + e.bar = 220; + e.braceright = 348; + e.asciitilde = 570; + e.exclamdown = 389; + e.cent = 500; + e.sterling = 500; + e.fraction = 167; + e.yen = 500; + e.florin = 500; + e.section = 500; + e.currency = 500; + e.quotesingle = 278; + e.quotedblleft = 500; + e.guillemotleft = 500; + e.guilsinglleft = 333; + e.guilsinglright = 333; + e.fi = 556; + e.fl = 556; + e.endash = 500; + e.dagger = 500; + e.daggerdbl = 500; + e.periodcentered = 250; + e.paragraph = 500; + e.bullet = 350; + e.quotesinglbase = 333; + e.quotedblbase = 500; + e.quotedblright = 500; + e.guillemotright = 500; + e.ellipsis = 1e3; + e.perthousand = 1e3; + e.questiondown = 500; + e.grave = 333; + e.acute = 333; + e.circumflex = 333; + e.tilde = 333; + e.macron = 333; + e.breve = 333; + e.dotaccent = 333; + e.dieresis = 333; + e.ring = 333; + e.cedilla = 333; + e.hungarumlaut = 333; + e.ogonek = 333; + e.caron = 333; + e.emdash = 1e3; + e.AE = 944; + e.ordfeminine = 266; + e.Lslash = 611; + e.Oslash = 722; + e.OE = 944; + e.ordmasculine = 300; + e.ae = 722; + e.dotlessi = 278; + e.lslash = 278; + e.oslash = 500; + e.oe = 722; + e.germandbls = 500; + e.Idieresis = 389; + e.eacute = 444; + e.abreve = 500; + e.uhungarumlaut = 556; + e.ecaron = 444; + e.Ydieresis = 611; + e.divide = 570; + e.Yacute = 611; + e.Acircumflex = 667; + e.aacute = 500; + e.Ucircumflex = 722; + e.yacute = 444; + e.scommaaccent = 389; + e.ecircumflex = 444; + e.Uring = 722; + e.Udieresis = 722; + e.aogonek = 500; + e.Uacute = 722; + e.uogonek = 556; + e.Edieresis = 667; + e.Dcroat = 722; + e.commaaccent = 250; + e.copyright = 747; + e.Emacron = 667; + e.ccaron = 444; + e.aring = 500; + e.Ncommaaccent = 722; + e.lacute = 278; + e.agrave = 500; + e.Tcommaaccent = 611; + e.Cacute = 667; + e.atilde = 500; + e.Edotaccent = 667; + e.scaron = 389; + e.scedilla = 389; + e.iacute = 278; + e.lozenge = 494; + e.Rcaron = 667; + e.Gcommaaccent = 722; + e.ucircumflex = 556; + e.acircumflex = 500; + e.Amacron = 667; + e.rcaron = 389; + e.ccedilla = 444; + e.Zdotaccent = 611; + e.Thorn = 611; + e.Omacron = 722; + e.Racute = 667; + e.Sacute = 556; + e.dcaron = 608; + e.Umacron = 722; + e.uring = 556; + e.threesuperior = 300; + e.Ograve = 722; + e.Agrave = 667; + e.Abreve = 667; + e.multiply = 570; + e.uacute = 556; + e.Tcaron = 611; + e.partialdiff = 494; + e.ydieresis = 444; + e.Nacute = 722; + e.icircumflex = 278; + e.Ecircumflex = 667; + e.adieresis = 500; + e.edieresis = 444; + e.cacute = 444; + e.nacute = 556; + e.umacron = 556; + e.Ncaron = 722; + e.Iacute = 389; + e.plusminus = 570; + e.brokenbar = 220; + e.registered = 747; + e.Gbreve = 722; + e.Idotaccent = 389; + e.summation = 600; + e.Egrave = 667; + e.racute = 389; + e.omacron = 500; + e.Zacute = 611; + e.Zcaron = 611; + e.greaterequal = 549; + e.Eth = 722; + e.Ccedilla = 667; + e.lcommaaccent = 278; + e.tcaron = 366; + e.eogonek = 444; + e.Uogonek = 722; + e.Aacute = 667; + e.Adieresis = 667; + e.egrave = 444; + e.zacute = 389; + e.iogonek = 278; + e.Oacute = 722; + e.oacute = 500; + e.amacron = 500; + e.sacute = 389; + e.idieresis = 278; + e.Ocircumflex = 722; + e.Ugrave = 722; + e.Delta = 612; + e.thorn = 500; + e.twosuperior = 300; + e.Odieresis = 722; + e.mu = 576; + e.igrave = 278; + e.ohungarumlaut = 500; + e.Eogonek = 667; + e.dcroat = 500; + e.threequarters = 750; + e.Scedilla = 556; + e.lcaron = 382; + e.Kcommaaccent = 667; + e.Lacute = 611; + e.trademark = 1e3; + e.edotaccent = 444; + e.Igrave = 389; + e.Imacron = 389; + e.Lcaron = 611; + e.onehalf = 750; + e.lessequal = 549; + e.ocircumflex = 500; + e.ntilde = 556; + e.Uhungarumlaut = 722; + e.Eacute = 667; + e.emacron = 444; + e.gbreve = 500; + e.onequarter = 750; + e.Scaron = 556; + e.Scommaaccent = 556; + e.Ohungarumlaut = 722; + e.degree = 400; + e.ograve = 500; + e.Ccaron = 667; + e.ugrave = 556; + e.radical = 549; + e.Dcaron = 722; + e.rcommaaccent = 389; + e.Ntilde = 722; + e.otilde = 500; + e.Rcommaaccent = 667; + e.Lcommaaccent = 611; + e.Atilde = 667; + e.Aogonek = 667; + e.Aring = 667; + e.Otilde = 722; + e.zdotaccent = 389; + e.Ecaron = 667; + e.Iogonek = 389; + e.kcommaaccent = 500; + e.minus = 606; + e.Icircumflex = 389; + e.ncaron = 556; + e.tcommaaccent = 278; + e.logicalnot = 606; + e.odieresis = 500; + e.udieresis = 556; + e.notequal = 549; + e.gcommaaccent = 500; + e.eth = 500; + e.zcaron = 389; + e.ncommaaccent = 556; + e.onesuperior = 300; + e.imacron = 278; + e.Euro = 500; + }); + e["Times-Italic"] = getLookupTableFactory(function (e) { + e.space = 250; + e.exclam = 333; + e.quotedbl = 420; + e.numbersign = 500; + e.dollar = 500; + e.percent = 833; + e.ampersand = 778; + e.quoteright = 333; + e.parenleft = 333; + e.parenright = 333; + e.asterisk = 500; + e.plus = 675; + e.comma = 250; + e.hyphen = 333; + e.period = 250; + e.slash = 278; + e.zero = 500; + e.one = 500; + e.two = 500; + e.three = 500; + e.four = 500; + e.five = 500; + e.six = 500; + e.seven = 500; + e.eight = 500; + e.nine = 500; + e.colon = 333; + e.semicolon = 333; + e.less = 675; + e.equal = 675; + e.greater = 675; + e.question = 500; + e.at = 920; + e.A = 611; + e.B = 611; + e.C = 667; + e.D = 722; + e.E = 611; + e.F = 611; + e.G = 722; + e.H = 722; + e.I = 333; + e.J = 444; + e.K = 667; + e.L = 556; + e.M = 833; + e.N = 667; + e.O = 722; + e.P = 611; + e.Q = 722; + e.R = 611; + e.S = 500; + e.T = 556; + e.U = 722; + e.V = 611; + e.W = 833; + e.X = 611; + e.Y = 556; + e.Z = 556; + e.bracketleft = 389; + e.backslash = 278; + e.bracketright = 389; + e.asciicircum = 422; + e.underscore = 500; + e.quoteleft = 333; + e.a = 500; + e.b = 500; + e.c = 444; + e.d = 500; + e.e = 444; + e.f = 278; + e.g = 500; + e.h = 500; + e.i = 278; + e.j = 278; + e.k = 444; + e.l = 278; + e.m = 722; + e.n = 500; + e.o = 500; + e.p = 500; + e.q = 500; + e.r = 389; + e.s = 389; + e.t = 278; + e.u = 500; + e.v = 444; + e.w = 667; + e.x = 444; + e.y = 444; + e.z = 389; + e.braceleft = 400; + e.bar = 275; + e.braceright = 400; + e.asciitilde = 541; + e.exclamdown = 389; + e.cent = 500; + e.sterling = 500; + e.fraction = 167; + e.yen = 500; + e.florin = 500; + e.section = 500; + e.currency = 500; + e.quotesingle = 214; + e.quotedblleft = 556; + e.guillemotleft = 500; + e.guilsinglleft = 333; + e.guilsinglright = 333; + e.fi = 500; + e.fl = 500; + e.endash = 500; + e.dagger = 500; + e.daggerdbl = 500; + e.periodcentered = 250; + e.paragraph = 523; + e.bullet = 350; + e.quotesinglbase = 333; + e.quotedblbase = 556; + e.quotedblright = 556; + e.guillemotright = 500; + e.ellipsis = 889; + e.perthousand = 1e3; + e.questiondown = 500; + e.grave = 333; + e.acute = 333; + e.circumflex = 333; + e.tilde = 333; + e.macron = 333; + e.breve = 333; + e.dotaccent = 333; + e.dieresis = 333; + e.ring = 333; + e.cedilla = 333; + e.hungarumlaut = 333; + e.ogonek = 333; + e.caron = 333; + e.emdash = 889; + e.AE = 889; + e.ordfeminine = 276; + e.Lslash = 556; + e.Oslash = 722; + e.OE = 944; + e.ordmasculine = 310; + e.ae = 667; + e.dotlessi = 278; + e.lslash = 278; + e.oslash = 500; + e.oe = 667; + e.germandbls = 500; + e.Idieresis = 333; + e.eacute = 444; + e.abreve = 500; + e.uhungarumlaut = 500; + e.ecaron = 444; + e.Ydieresis = 556; + e.divide = 675; + e.Yacute = 556; + e.Acircumflex = 611; + e.aacute = 500; + e.Ucircumflex = 722; + e.yacute = 444; + e.scommaaccent = 389; + e.ecircumflex = 444; + e.Uring = 722; + e.Udieresis = 722; + e.aogonek = 500; + e.Uacute = 722; + e.uogonek = 500; + e.Edieresis = 611; + e.Dcroat = 722; + e.commaaccent = 250; + e.copyright = 760; + e.Emacron = 611; + e.ccaron = 444; + e.aring = 500; + e.Ncommaaccent = 667; + e.lacute = 278; + e.agrave = 500; + e.Tcommaaccent = 556; + e.Cacute = 667; + e.atilde = 500; + e.Edotaccent = 611; + e.scaron = 389; + e.scedilla = 389; + e.iacute = 278; + e.lozenge = 471; + e.Rcaron = 611; + e.Gcommaaccent = 722; + e.ucircumflex = 500; + e.acircumflex = 500; + e.Amacron = 611; + e.rcaron = 389; + e.ccedilla = 444; + e.Zdotaccent = 556; + e.Thorn = 611; + e.Omacron = 722; + e.Racute = 611; + e.Sacute = 500; + e.dcaron = 544; + e.Umacron = 722; + e.uring = 500; + e.threesuperior = 300; + e.Ograve = 722; + e.Agrave = 611; + e.Abreve = 611; + e.multiply = 675; + e.uacute = 500; + e.Tcaron = 556; + e.partialdiff = 476; + e.ydieresis = 444; + e.Nacute = 667; + e.icircumflex = 278; + e.Ecircumflex = 611; + e.adieresis = 500; + e.edieresis = 444; + e.cacute = 444; + e.nacute = 500; + e.umacron = 500; + e.Ncaron = 667; + e.Iacute = 333; + e.plusminus = 675; + e.brokenbar = 275; + e.registered = 760; + e.Gbreve = 722; + e.Idotaccent = 333; + e.summation = 600; + e.Egrave = 611; + e.racute = 389; + e.omacron = 500; + e.Zacute = 556; + e.Zcaron = 556; + e.greaterequal = 549; + e.Eth = 722; + e.Ccedilla = 667; + e.lcommaaccent = 278; + e.tcaron = 300; + e.eogonek = 444; + e.Uogonek = 722; + e.Aacute = 611; + e.Adieresis = 611; + e.egrave = 444; + e.zacute = 389; + e.iogonek = 278; + e.Oacute = 722; + e.oacute = 500; + e.amacron = 500; + e.sacute = 389; + e.idieresis = 278; + e.Ocircumflex = 722; + e.Ugrave = 722; + e.Delta = 612; + e.thorn = 500; + e.twosuperior = 300; + e.Odieresis = 722; + e.mu = 500; + e.igrave = 278; + e.ohungarumlaut = 500; + e.Eogonek = 611; + e.dcroat = 500; + e.threequarters = 750; + e.Scedilla = 500; + e.lcaron = 300; + e.Kcommaaccent = 667; + e.Lacute = 556; + e.trademark = 980; + e.edotaccent = 444; + e.Igrave = 333; + e.Imacron = 333; + e.Lcaron = 611; + e.onehalf = 750; + e.lessequal = 549; + e.ocircumflex = 500; + e.ntilde = 500; + e.Uhungarumlaut = 722; + e.Eacute = 611; + e.emacron = 444; + e.gbreve = 500; + e.onequarter = 750; + e.Scaron = 500; + e.Scommaaccent = 500; + e.Ohungarumlaut = 722; + e.degree = 400; + e.ograve = 500; + e.Ccaron = 667; + e.ugrave = 500; + e.radical = 453; + e.Dcaron = 722; + e.rcommaaccent = 389; + e.Ntilde = 667; + e.otilde = 500; + e.Rcommaaccent = 611; + e.Lcommaaccent = 556; + e.Atilde = 611; + e.Aogonek = 611; + e.Aring = 611; + e.Otilde = 722; + e.zdotaccent = 389; + e.Ecaron = 611; + e.Iogonek = 333; + e.kcommaaccent = 444; + e.minus = 675; + e.Icircumflex = 333; + e.ncaron = 500; + e.tcommaaccent = 278; + e.logicalnot = 675; + e.odieresis = 500; + e.udieresis = 500; + e.notequal = 549; + e.gcommaaccent = 500; + e.eth = 500; + e.zcaron = 389; + e.ncommaaccent = 500; + e.onesuperior = 300; + e.imacron = 278; + e.Euro = 500; + }); + e.ZapfDingbats = getLookupTableFactory(function (e) { + e.space = 278; + e.a1 = 974; + e.a2 = 961; + e.a202 = 974; + e.a3 = 980; + e.a4 = 719; + e.a5 = 789; + e.a119 = 790; + e.a118 = 791; + e.a117 = 690; + e.a11 = 960; + e.a12 = 939; + e.a13 = 549; + e.a14 = 855; + e.a15 = 911; + e.a16 = 933; + e.a105 = 911; + e.a17 = 945; + e.a18 = 974; + e.a19 = 755; + e.a20 = 846; + e.a21 = 762; + e.a22 = 761; + e.a23 = 571; + e.a24 = 677; + e.a25 = 763; + e.a26 = 760; + e.a27 = 759; + e.a28 = 754; + e.a6 = 494; + e.a7 = 552; + e.a8 = 537; + e.a9 = 577; + e.a10 = 692; + e.a29 = 786; + e.a30 = 788; + e.a31 = 788; + e.a32 = 790; + e.a33 = 793; + e.a34 = 794; + e.a35 = 816; + e.a36 = 823; + e.a37 = 789; + e.a38 = 841; + e.a39 = 823; + e.a40 = 833; + e.a41 = 816; + e.a42 = 831; + e.a43 = 923; + e.a44 = 744; + e.a45 = 723; + e.a46 = 749; + e.a47 = 790; + e.a48 = 792; + e.a49 = 695; + e.a50 = 776; + e.a51 = 768; + e.a52 = 792; + e.a53 = 759; + e.a54 = 707; + e.a55 = 708; + e.a56 = 682; + e.a57 = 701; + e.a58 = 826; + e.a59 = 815; + e.a60 = 789; + e.a61 = 789; + e.a62 = 707; + e.a63 = 687; + e.a64 = 696; + e.a65 = 689; + e.a66 = 786; + e.a67 = 787; + e.a68 = 713; + e.a69 = 791; + e.a70 = 785; + e.a71 = 791; + e.a72 = 873; + e.a73 = 761; + e.a74 = 762; + e.a203 = 762; + e.a75 = 759; + e.a204 = 759; + e.a76 = 892; + e.a77 = 892; + e.a78 = 788; + e.a79 = 784; + e.a81 = 438; + e.a82 = 138; + e.a83 = 277; + e.a84 = 415; + e.a97 = 392; + e.a98 = 392; + e.a99 = 668; + e.a100 = 668; + e.a89 = 390; + e.a90 = 390; + e.a93 = 317; + e.a94 = 317; + e.a91 = 276; + e.a92 = 276; + e.a205 = 509; + e.a85 = 509; + e.a206 = 410; + e.a86 = 410; + e.a87 = 234; + e.a88 = 234; + e.a95 = 334; + e.a96 = 334; + e.a101 = 732; + e.a102 = 544; + e.a103 = 544; + e.a104 = 910; + e.a106 = 667; + e.a107 = 760; + e.a108 = 760; + e.a112 = 776; + e.a111 = 595; + e.a110 = 694; + e.a109 = 626; + e.a120 = 788; + e.a121 = 788; + e.a122 = 788; + e.a123 = 788; + e.a124 = 788; + e.a125 = 788; + e.a126 = 788; + e.a127 = 788; + e.a128 = 788; + e.a129 = 788; + e.a130 = 788; + e.a131 = 788; + e.a132 = 788; + e.a133 = 788; + e.a134 = 788; + e.a135 = 788; + e.a136 = 788; + e.a137 = 788; + e.a138 = 788; + e.a139 = 788; + e.a140 = 788; + e.a141 = 788; + e.a142 = 788; + e.a143 = 788; + e.a144 = 788; + e.a145 = 788; + e.a146 = 788; + e.a147 = 788; + e.a148 = 788; + e.a149 = 788; + e.a150 = 788; + e.a151 = 788; + e.a152 = 788; + e.a153 = 788; + e.a154 = 788; + e.a155 = 788; + e.a156 = 788; + e.a157 = 788; + e.a158 = 788; + e.a159 = 788; + e.a160 = 894; + e.a161 = 838; + e.a163 = 1016; + e.a164 = 458; + e.a196 = 748; + e.a165 = 924; + e.a192 = 748; + e.a166 = 918; + e.a167 = 927; + e.a168 = 928; + e.a169 = 928; + e.a170 = 834; + e.a171 = 873; + e.a172 = 828; + e.a173 = 924; + e.a162 = 924; + e.a174 = 917; + e.a175 = 930; + e.a176 = 931; + e.a177 = 463; + e.a178 = 883; + e.a179 = 836; + e.a193 = 836; + e.a180 = 867; + e.a199 = 867; + e.a181 = 696; + e.a200 = 696; + e.a182 = 874; + e.a201 = 874; + e.a183 = 760; + e.a184 = 946; + e.a197 = 771; + e.a185 = 865; + e.a194 = 771; + e.a198 = 888; + e.a186 = 967; + e.a195 = 888; + e.a187 = 831; + e.a188 = 873; + e.a189 = 927; + e.a190 = 970; + e.a191 = 918; + }); + }), + ea = getLookupTableFactory(function (e) { + e.Courier = { ascent: 629, descent: -157, capHeight: 562, xHeight: -426 }; + e["Courier-Bold"] = { + ascent: 629, + descent: -157, + capHeight: 562, + xHeight: 439, + }; + e["Courier-Oblique"] = { + ascent: 629, + descent: -157, + capHeight: 562, + xHeight: 426, + }; + e["Courier-BoldOblique"] = { + ascent: 629, + descent: -157, + capHeight: 562, + xHeight: 426, + }; + e.Helvetica = { ascent: 718, descent: -207, capHeight: 718, xHeight: 523 }; + e["Helvetica-Bold"] = { + ascent: 718, + descent: -207, + capHeight: 718, + xHeight: 532, + }; + e["Helvetica-Oblique"] = { + ascent: 718, + descent: -207, + capHeight: 718, + xHeight: 523, + }; + e["Helvetica-BoldOblique"] = { + ascent: 718, + descent: -207, + capHeight: 718, + xHeight: 532, + }; + e["Times-Roman"] = { + ascent: 683, + descent: -217, + capHeight: 662, + xHeight: 450, + }; + e["Times-Bold"] = { + ascent: 683, + descent: -217, + capHeight: 676, + xHeight: 461, + }; + e["Times-Italic"] = { + ascent: 683, + descent: -217, + capHeight: 653, + xHeight: 441, + }; + e["Times-BoldItalic"] = { + ascent: 683, + descent: -217, + capHeight: 669, + xHeight: 462, + }; + e.Symbol = { + ascent: Math.NaN, + descent: Math.NaN, + capHeight: Math.NaN, + xHeight: Math.NaN, + }; + e.ZapfDingbats = { + ascent: Math.NaN, + descent: Math.NaN, + capHeight: Math.NaN, + xHeight: Math.NaN, + }; + }); +class GlyfTable { + constructor({ + glyfTable: e, + isGlyphLocationsLong: t, + locaTable: i, + numGlyphs: a, + }) { + this.glyphs = []; + const s = new DataView(i.buffer, i.byteOffset, i.byteLength), + r = new DataView(e.buffer, e.byteOffset, e.byteLength), + n = t ? 4 : 2; + let o = t ? s.getUint32(0) : 2 * s.getUint16(0), + g = 0; + for (let e = 0; e < a; e++) { + g += n; + const e = t ? s.getUint32(g) : 2 * s.getUint16(g); + if (e === o) { + this.glyphs.push(new Glyph({})); + continue; + } + const i = Glyph.parse(o, r); + this.glyphs.push(i); + o = e; + } + } + getSize() { + return this.glyphs.reduce((e, t) => e + ((t.getSize() + 3) & -4), 0); + } + write() { + const e = this.getSize(), + t = new DataView(new ArrayBuffer(e)), + i = e > 131070, + a = i ? 4 : 2, + s = new DataView(new ArrayBuffer((this.glyphs.length + 1) * a)); + i ? s.setUint32(0, 0) : s.setUint16(0, 0); + let r = 0, + n = 0; + for (const e of this.glyphs) { + r += e.write(r, t); + r = (r + 3) & -4; + n += a; + i ? s.setUint32(n, r) : s.setUint16(n, r >> 1); + } + return { + isLocationLong: i, + loca: new Uint8Array(s.buffer), + glyf: new Uint8Array(t.buffer), + }; + } + scale(e) { + for (let t = 0, i = this.glyphs.length; t < i; t++) + this.glyphs[t].scale(e[t]); + } +} +class Glyph { + constructor({ header: e = null, simple: t = null, composites: i = null }) { + this.header = e; + this.simple = t; + this.composites = i; + } + static parse(e, t) { + const [i, a] = GlyphHeader.parse(e, t); + e += i; + if (a.numberOfContours < 0) { + const i = []; + for (;;) { + const [a, s] = CompositeGlyph.parse(e, t); + e += a; + i.push(s); + if (!(32 & s.flags)) break; + } + return new Glyph({ header: a, composites: i }); + } + const s = SimpleGlyph.parse(e, t, a.numberOfContours); + return new Glyph({ header: a, simple: s }); + } + getSize() { + if (!this.header) return 0; + const e = this.simple + ? this.simple.getSize() + : this.composites.reduce((e, t) => e + t.getSize(), 0); + return this.header.getSize() + e; + } + write(e, t) { + if (!this.header) return 0; + const i = e; + e += this.header.write(e, t); + if (this.simple) e += this.simple.write(e, t); + else for (const i of this.composites) e += i.write(e, t); + return e - i; + } + scale(e) { + if (!this.header) return; + const t = (this.header.xMin + this.header.xMax) / 2; + this.header.scale(t, e); + if (this.simple) this.simple.scale(t, e); + else for (const i of this.composites) i.scale(t, e); + } +} +class GlyphHeader { + constructor({ numberOfContours: e, xMin: t, yMin: i, xMax: a, yMax: s }) { + this.numberOfContours = e; + this.xMin = t; + this.yMin = i; + this.xMax = a; + this.yMax = s; + } + static parse(e, t) { + return [ + 10, + new GlyphHeader({ + numberOfContours: t.getInt16(e), + xMin: t.getInt16(e + 2), + yMin: t.getInt16(e + 4), + xMax: t.getInt16(e + 6), + yMax: t.getInt16(e + 8), + }), + ]; + } + getSize() { + return 10; + } + write(e, t) { + t.setInt16(e, this.numberOfContours); + t.setInt16(e + 2, this.xMin); + t.setInt16(e + 4, this.yMin); + t.setInt16(e + 6, this.xMax); + t.setInt16(e + 8, this.yMax); + return 10; + } + scale(e, t) { + this.xMin = Math.round(e + (this.xMin - e) * t); + this.xMax = Math.round(e + (this.xMax - e) * t); + } +} +class Contour { + constructor({ flags: e, xCoordinates: t, yCoordinates: i }) { + this.xCoordinates = t; + this.yCoordinates = i; + this.flags = e; + } +} +class SimpleGlyph { + constructor({ contours: e, instructions: t }) { + this.contours = e; + this.instructions = t; + } + static parse(e, t, i) { + const a = []; + for (let s = 0; s < i; s++) { + const i = t.getUint16(e); + e += 2; + a.push(i); + } + const s = a[i - 1] + 1, + r = t.getUint16(e); + e += 2; + const n = new Uint8Array(t).slice(e, e + r); + e += r; + const o = []; + for (let i = 0; i < s; e++, i++) { + let a = t.getUint8(e); + o.push(a); + if (8 & a) { + const s = t.getUint8(++e); + a ^= 8; + for (let e = 0; e < s; e++) o.push(a); + i += s; + } + } + const g = []; + let c = [], + h = [], + l = []; + const C = []; + let Q = 0, + E = 0; + for (let i = 0; i < s; i++) { + const s = o[i]; + if (2 & s) { + const i = t.getUint8(e++); + E += 16 & s ? i : -i; + c.push(E); + } else if (16 & s) c.push(E); + else { + E += t.getInt16(e); + e += 2; + c.push(E); + } + if (a[Q] === i) { + Q++; + g.push(c); + c = []; + } + } + E = 0; + Q = 0; + for (let i = 0; i < s; i++) { + const s = o[i]; + if (4 & s) { + const i = t.getUint8(e++); + E += 32 & s ? i : -i; + h.push(E); + } else if (32 & s) h.push(E); + else { + E += t.getInt16(e); + e += 2; + h.push(E); + } + l.push((1 & s) | (64 & s)); + if (a[Q] === i) { + c = g[Q]; + Q++; + C.push(new Contour({ flags: l, xCoordinates: c, yCoordinates: h })); + h = []; + l = []; + } + } + return new SimpleGlyph({ contours: C, instructions: n }); + } + getSize() { + let e = 2 * this.contours.length + 2 + this.instructions.length, + t = 0, + i = 0; + for (const a of this.contours) { + e += a.flags.length; + for (let s = 0, r = a.xCoordinates.length; s < r; s++) { + const r = a.xCoordinates[s], + n = a.yCoordinates[s]; + let o = Math.abs(r - t); + o > 255 ? (e += 2) : o > 0 && (e += 1); + t = r; + o = Math.abs(n - i); + o > 255 ? (e += 2) : o > 0 && (e += 1); + i = n; + } + } + return e; + } + write(e, t) { + const i = e, + a = [], + s = [], + r = []; + let n = 0, + o = 0; + for (const i of this.contours) { + for (let e = 0, t = i.xCoordinates.length; e < t; e++) { + let t = i.flags[e]; + const g = i.xCoordinates[e]; + let c = g - n; + if (0 === c) { + t |= 16; + a.push(0); + } else { + const e = Math.abs(c); + if (e <= 255) { + t |= c >= 0 ? 18 : 2; + a.push(e); + } else a.push(c); + } + n = g; + const h = i.yCoordinates[e]; + c = h - o; + if (0 === c) { + t |= 32; + s.push(0); + } else { + const e = Math.abs(c); + if (e <= 255) { + t |= c >= 0 ? 36 : 4; + s.push(e); + } else s.push(c); + } + o = h; + r.push(t); + } + t.setUint16(e, a.length - 1); + e += 2; + } + t.setUint16(e, this.instructions.length); + e += 2; + if (this.instructions.length) { + new Uint8Array(t.buffer, 0, t.buffer.byteLength).set( + this.instructions, + e, + ); + e += this.instructions.length; + } + for (const i of r) t.setUint8(e++, i); + for (let i = 0, s = a.length; i < s; i++) { + const s = a[i], + n = r[i]; + if (2 & n) t.setUint8(e++, s); + else if (!(16 & n)) { + t.setInt16(e, s); + e += 2; + } + } + for (let i = 0, a = s.length; i < a; i++) { + const a = s[i], + n = r[i]; + if (4 & n) t.setUint8(e++, a); + else if (!(32 & n)) { + t.setInt16(e, a); + e += 2; + } + } + return e - i; + } + scale(e, t) { + for (const i of this.contours) + if (0 !== i.xCoordinates.length) + for (let a = 0, s = i.xCoordinates.length; a < s; a++) + i.xCoordinates[a] = Math.round(e + (i.xCoordinates[a] - e) * t); + } +} +class CompositeGlyph { + constructor({ + flags: e, + glyphIndex: t, + argument1: i, + argument2: a, + transf: s, + instructions: r, + }) { + this.flags = e; + this.glyphIndex = t; + this.argument1 = i; + this.argument2 = a; + this.transf = s; + this.instructions = r; + } + static parse(e, t) { + const i = e, + a = []; + let s = t.getUint16(e); + const r = t.getUint16(e + 2); + e += 4; + let n, o; + if (1 & s) { + if (2 & s) { + n = t.getInt16(e); + o = t.getInt16(e + 2); + } else { + n = t.getUint16(e); + o = t.getUint16(e + 2); + } + e += 4; + s ^= 1; + } else { + if (2 & s) { + n = t.getInt8(e); + o = t.getInt8(e + 1); + } else { + n = t.getUint8(e); + o = t.getUint8(e + 1); + } + e += 2; + } + if (8 & s) { + a.push(t.getUint16(e)); + e += 2; + } else if (64 & s) { + a.push(t.getUint16(e), t.getUint16(e + 2)); + e += 4; + } else if (128 & s) { + a.push( + t.getUint16(e), + t.getUint16(e + 2), + t.getUint16(e + 4), + t.getUint16(e + 6), + ); + e += 8; + } + let g = null; + if (256 & s) { + const i = t.getUint16(e); + e += 2; + g = new Uint8Array(t).slice(e, e + i); + e += i; + } + return [ + e - i, + new CompositeGlyph({ + flags: s, + glyphIndex: r, + argument1: n, + argument2: o, + transf: a, + instructions: g, + }), + ]; + } + getSize() { + let e = 4 + 2 * this.transf.length; + 256 & this.flags && (e += 2 + this.instructions.length); + e += 2; + 2 & this.flags + ? (this.argument1 >= -128 && + this.argument1 <= 127 && + this.argument2 >= -128 && + this.argument2 <= 127) || + (e += 2) + : (this.argument1 >= 0 && + this.argument1 <= 255 && + this.argument2 >= 0 && + this.argument2 <= 255) || + (e += 2); + return e; + } + write(e, t) { + const i = e; + 2 & this.flags + ? (this.argument1 >= -128 && + this.argument1 <= 127 && + this.argument2 >= -128 && + this.argument2 <= 127) || + (this.flags |= 1) + : (this.argument1 >= 0 && + this.argument1 <= 255 && + this.argument2 >= 0 && + this.argument2 <= 255) || + (this.flags |= 1); + t.setUint16(e, this.flags); + t.setUint16(e + 2, this.glyphIndex); + e += 4; + if (1 & this.flags) { + if (2 & this.flags) { + t.setInt16(e, this.argument1); + t.setInt16(e + 2, this.argument2); + } else { + t.setUint16(e, this.argument1); + t.setUint16(e + 2, this.argument2); + } + e += 4; + } else { + t.setUint8(e, this.argument1); + t.setUint8(e + 1, this.argument2); + e += 2; + } + if (256 & this.flags) { + t.setUint16(e, this.instructions.length); + e += 2; + if (this.instructions.length) { + new Uint8Array(t.buffer, 0, t.buffer.byteLength).set( + this.instructions, + e, + ); + e += this.instructions.length; + } + } + return e - i; + } + scale(e, t) {} +} +function writeInt16(e, t, i) { + e[t] = (i >> 8) & 255; + e[t + 1] = 255 & i; +} +function writeInt32(e, t, i) { + e[t] = (i >> 24) & 255; + e[t + 1] = (i >> 16) & 255; + e[t + 2] = (i >> 8) & 255; + e[t + 3] = 255 & i; +} +function writeData(e, t, i) { + if (i instanceof Uint8Array) e.set(i, t); + else if ("string" == typeof i) + for (let a = 0, s = i.length; a < s; a++) e[t++] = 255 & i.charCodeAt(a); + else for (const a of i) e[t++] = 255 & a; +} +class OpenTypeFileBuilder { + constructor(e) { + this.sfnt = e; + this.tables = Object.create(null); + } + static getSearchParams(e, t) { + let i = 1, + a = 0; + for (; (i ^ e) > i; ) { + i <<= 1; + a++; + } + const s = i * t; + return { range: s, entry: a, rangeShift: t * e - s }; + } + toArray() { + let e = this.sfnt; + const t = this.tables, + i = Object.keys(t); + i.sort(); + const a = i.length; + let s, + r, + n, + o, + g, + c = 12 + 16 * a; + const h = [c]; + for (s = 0; s < a; s++) { + o = t[i[s]]; + c += ((o.length + 3) & -4) >>> 0; + h.push(c); + } + const l = new Uint8Array(c); + for (s = 0; s < a; s++) { + o = t[i[s]]; + writeData(l, h[s], o); + } + "true" === e && (e = string32(65536)); + l[0] = 255 & e.charCodeAt(0); + l[1] = 255 & e.charCodeAt(1); + l[2] = 255 & e.charCodeAt(2); + l[3] = 255 & e.charCodeAt(3); + writeInt16(l, 4, a); + const C = OpenTypeFileBuilder.getSearchParams(a, 16); + writeInt16(l, 6, C.range); + writeInt16(l, 8, C.entry); + writeInt16(l, 10, C.rangeShift); + c = 12; + for (s = 0; s < a; s++) { + g = i[s]; + l[c] = 255 & g.charCodeAt(0); + l[c + 1] = 255 & g.charCodeAt(1); + l[c + 2] = 255 & g.charCodeAt(2); + l[c + 3] = 255 & g.charCodeAt(3); + let e = 0; + for (r = h[s], n = h[s + 1]; r < n; r += 4) { + e = (e + readUint32(l, r)) >>> 0; + } + writeInt32(l, c + 4, e); + writeInt32(l, c + 8, h[s]); + writeInt32(l, c + 12, t[g].length); + c += 16; + } + return l; + } + addTable(e, t) { + if (e in this.tables) throw new Error("Table " + e + " already exists"); + this.tables[e] = t; + } +} +const ta = [4], + ia = [5], + aa = [6], + sa = [7], + ra = [8], + na = [12, 35], + oa = [14], + ga = [21], + Ia = [22], + ca = [30], + ha = [31]; +class Type1CharString { + constructor() { + this.width = 0; + this.lsb = 0; + this.flexing = !1; + this.output = []; + this.stack = []; + } + convert(e, t, i) { + const a = e.length; + let s, + r, + n, + o = !1; + for (let g = 0; g < a; g++) { + let a = e[g]; + if (a < 32) { + 12 === a && (a = (a << 8) + e[++g]); + switch (a) { + case 1: + case 3: + case 9: + case 3072: + case 3073: + case 3074: + case 3105: + this.stack = []; + break; + case 4: + if (this.flexing) { + if (this.stack.length < 1) { + o = !0; + break; + } + const e = this.stack.pop(); + this.stack.push(0, e); + break; + } + o = this.executeCommand(1, ta); + break; + case 5: + o = this.executeCommand(2, ia); + break; + case 6: + o = this.executeCommand(1, aa); + break; + case 7: + o = this.executeCommand(1, sa); + break; + case 8: + o = this.executeCommand(6, ra); + break; + case 10: + if (this.stack.length < 1) { + o = !0; + break; + } + n = this.stack.pop(); + if (!t[n]) { + o = !0; + break; + } + o = this.convert(t[n], t, i); + break; + case 11: + return o; + case 13: + if (this.stack.length < 2) { + o = !0; + break; + } + s = this.stack.pop(); + r = this.stack.pop(); + this.lsb = r; + this.width = s; + this.stack.push(s, r); + o = this.executeCommand(2, Ia); + break; + case 14: + this.output.push(oa[0]); + break; + case 21: + if (this.flexing) break; + o = this.executeCommand(2, ga); + break; + case 22: + if (this.flexing) { + this.stack.push(0); + break; + } + o = this.executeCommand(1, Ia); + break; + case 30: + o = this.executeCommand(4, ca); + break; + case 31: + o = this.executeCommand(4, ha); + break; + case 3078: + if (i) { + const e = this.stack.at(-5); + this.seac = this.stack.splice(-4, 4); + this.seac[0] += this.lsb - e; + o = this.executeCommand(0, oa); + } else o = this.executeCommand(4, oa); + break; + case 3079: + if (this.stack.length < 4) { + o = !0; + break; + } + this.stack.pop(); + s = this.stack.pop(); + const e = this.stack.pop(); + r = this.stack.pop(); + this.lsb = r; + this.width = s; + this.stack.push(s, r, e); + o = this.executeCommand(3, ga); + break; + case 3084: + if (this.stack.length < 2) { + o = !0; + break; + } + const g = this.stack.pop(), + c = this.stack.pop(); + this.stack.push(c / g); + break; + case 3088: + if (this.stack.length < 2) { + o = !0; + break; + } + n = this.stack.pop(); + const h = this.stack.pop(); + if (0 === n && 3 === h) { + const e = this.stack.splice(-17, 17); + this.stack.push( + e[2] + e[0], + e[3] + e[1], + e[4], + e[5], + e[6], + e[7], + e[8], + e[9], + e[10], + e[11], + e[12], + e[13], + e[14], + ); + o = this.executeCommand(13, na, !0); + this.flexing = !1; + this.stack.push(e[15], e[16]); + } else 1 === n && 0 === h && (this.flexing = !0); + break; + case 3089: + break; + default: + warn('Unknown type 1 charstring command of "' + a + '"'); + } + if (o) break; + } else { + a <= 246 + ? (a -= 139) + : (a = + a <= 250 + ? 256 * (a - 247) + e[++g] + 108 + : a <= 254 + ? -256 * (a - 251) - e[++g] - 108 + : ((255 & e[++g]) << 24) | + ((255 & e[++g]) << 16) | + ((255 & e[++g]) << 8) | + ((255 & e[++g]) << 0)); + this.stack.push(a); + } + } + return o; + } + executeCommand(e, t, i) { + const a = this.stack.length; + if (e > a) return !0; + const s = a - e; + for (let e = s; e < a; e++) { + let t = this.stack[e]; + if (Number.isInteger(t)) this.output.push(28, (t >> 8) & 255, 255 & t); + else { + t = (65536 * t) | 0; + this.output.push( + 255, + (t >> 24) & 255, + (t >> 16) & 255, + (t >> 8) & 255, + 255 & t, + ); + } + } + this.output.push(...t); + i ? this.stack.splice(s, e) : (this.stack.length = 0); + return !1; + } +} +function isHexDigit(e) { + return (e >= 48 && e <= 57) || (e >= 65 && e <= 70) || (e >= 97 && e <= 102); +} +function decrypt(e, t, i) { + if (i >= e.length) return new Uint8Array(0); + let a, + s, + r = 0 | t; + for (a = 0; a < i; a++) r = (52845 * (e[a] + r) + 22719) & 65535; + const n = e.length - i, + o = new Uint8Array(n); + for (a = i, s = 0; s < n; a++, s++) { + const t = e[a]; + o[s] = t ^ (r >> 8); + r = (52845 * (t + r) + 22719) & 65535; + } + return o; +} +function isSpecial(e) { + return ( + 47 === e || + 91 === e || + 93 === e || + 123 === e || + 125 === e || + 40 === e || + 41 === e + ); +} +class Type1Parser { + constructor(e, t, i) { + if (t) { + const t = e.getBytes(), + i = !( + (isHexDigit(t[0]) || isWhiteSpace(t[0])) && + isHexDigit(t[1]) && + isHexDigit(t[2]) && + isHexDigit(t[3]) && + isHexDigit(t[4]) && + isHexDigit(t[5]) && + isHexDigit(t[6]) && + isHexDigit(t[7]) + ); + e = new Stream( + i + ? decrypt(t, 55665, 4) + : (function decryptAscii(e, t, i) { + let a = 0 | t; + const s = e.length, + r = new Uint8Array(s >>> 1); + let n, o; + for (n = 0, o = 0; n < s; n++) { + const t = e[n]; + if (!isHexDigit(t)) continue; + n++; + let i; + for (; n < s && !isHexDigit((i = e[n])); ) n++; + if (n < s) { + const e = parseInt(String.fromCharCode(t, i), 16); + r[o++] = e ^ (a >> 8); + a = (52845 * (e + a) + 22719) & 65535; + } + } + return r.slice(i, o); + })(t, 55665, 4), + ); + } + this.seacAnalysisEnabled = !!i; + this.stream = e; + this.nextChar(); + } + readNumberArray() { + this.getToken(); + const e = []; + for (;;) { + const t = this.getToken(); + if (null === t || "]" === t || "}" === t) break; + e.push(parseFloat(t || 0)); + } + return e; + } + readNumber() { + const e = this.getToken(); + return parseFloat(e || 0); + } + readInt() { + const e = this.getToken(); + return 0 | parseInt(e || 0, 10); + } + readBoolean() { + return "true" === this.getToken() ? 1 : 0; + } + nextChar() { + return (this.currentChar = this.stream.getByte()); + } + prevChar() { + this.stream.skip(-2); + return (this.currentChar = this.stream.getByte()); + } + getToken() { + let e = !1, + t = this.currentChar; + for (;;) { + if (-1 === t) return null; + if (e) (10 !== t && 13 !== t) || (e = !1); + else if (37 === t) e = !0; + else if (!isWhiteSpace(t)) break; + t = this.nextChar(); + } + if (isSpecial(t)) { + this.nextChar(); + return String.fromCharCode(t); + } + let i = ""; + do { + i += String.fromCharCode(t); + t = this.nextChar(); + } while (t >= 0 && !isWhiteSpace(t) && !isSpecial(t)); + return i; + } + readCharStrings(e, t) { + return -1 === t ? e : decrypt(e, 4330, t); + } + extractFontProgram(e) { + const t = this.stream, + i = [], + a = [], + s = Object.create(null); + s.lenIV = 4; + const r = { subrs: [], charstrings: [], properties: { privateData: s } }; + let n, o, g, c; + for (; null !== (n = this.getToken()); ) + if ("/" === n) { + n = this.getToken(); + switch (n) { + case "CharStrings": + this.getToken(); + this.getToken(); + this.getToken(); + this.getToken(); + for (;;) { + n = this.getToken(); + if (null === n || "end" === n) break; + if ("/" !== n) continue; + const e = this.getToken(); + o = this.readInt(); + this.getToken(); + g = o > 0 ? t.getBytes(o) : new Uint8Array(0); + c = r.properties.privateData.lenIV; + const i = this.readCharStrings(g, c); + this.nextChar(); + n = this.getToken(); + "noaccess" === n ? this.getToken() : "/" === n && this.prevChar(); + a.push({ glyph: e, encoded: i }); + } + break; + case "Subrs": + this.readInt(); + this.getToken(); + for (; "dup" === this.getToken(); ) { + const e = this.readInt(); + o = this.readInt(); + this.getToken(); + g = o > 0 ? t.getBytes(o) : new Uint8Array(0); + c = r.properties.privateData.lenIV; + const a = this.readCharStrings(g, c); + this.nextChar(); + n = this.getToken(); + "noaccess" === n && this.getToken(); + i[e] = a; + } + break; + case "BlueValues": + case "OtherBlues": + case "FamilyBlues": + case "FamilyOtherBlues": + const e = this.readNumberArray(); + e.length > 0 && e.length, 0; + break; + case "StemSnapH": + case "StemSnapV": + r.properties.privateData[n] = this.readNumberArray(); + break; + case "StdHW": + case "StdVW": + r.properties.privateData[n] = this.readNumberArray()[0]; + break; + case "BlueShift": + case "lenIV": + case "BlueFuzz": + case "BlueScale": + case "LanguageGroup": + r.properties.privateData[n] = this.readNumber(); + break; + case "ExpansionFactor": + r.properties.privateData[n] = this.readNumber() || 0.06; + break; + case "ForceBold": + r.properties.privateData[n] = this.readBoolean(); + } + } + for (const { encoded: t, glyph: s } of a) { + const a = new Type1CharString(), + n = a.convert(t, i, this.seacAnalysisEnabled); + let o = a.output; + n && (o = [14]); + const g = { + glyphName: s, + charstring: o, + width: a.width, + lsb: a.lsb, + seac: a.seac, + }; + ".notdef" === s ? r.charstrings.unshift(g) : r.charstrings.push(g); + if (e.builtInEncoding) { + const t = e.builtInEncoding.indexOf(s); + t > -1 && + void 0 === e.widths[t] && + t >= e.firstChar && + t <= e.lastChar && + (e.widths[t] = a.width); + } + } + return r; + } + extractFontHeader(e) { + let t; + for (; null !== (t = this.getToken()); ) + if ("/" === t) { + t = this.getToken(); + switch (t) { + case "FontMatrix": + const i = this.readNumberArray(); + e.fontMatrix = i; + break; + case "Encoding": + const a = this.getToken(); + let s; + if (/^\d+$/.test(a)) { + s = []; + const e = 0 | parseInt(a, 10); + this.getToken(); + for (let i = 0; i < e; i++) { + t = this.getToken(); + for (; "dup" !== t && "def" !== t; ) { + t = this.getToken(); + if (null === t) return; + } + if ("def" === t) break; + const e = this.readInt(); + this.getToken(); + const i = this.getToken(); + s[e] = i; + this.getToken(); + } + } else s = getEncoding(a); + e.builtInEncoding = s; + break; + case "FontBBox": + const r = this.readNumberArray(); + e.ascent = Math.max(r[3], r[1]); + e.descent = Math.min(r[1], r[3]); + e.ascentScaled = !0; + } + } + } +} +function findBlock(e, t, i) { + const a = e.length, + s = t.length, + r = a - s; + let n = i, + o = !1; + for (; n < r; ) { + let i = 0; + for (; i < s && e[n + i] === t[i]; ) i++; + if (i >= s) { + n += i; + for (; n < a && isWhiteSpace(e[n]); ) n++; + o = !0; + break; + } + n++; + } + return { found: o, length: n }; +} +class Type1Font { + constructor(e, t, i) { + let a = i.length1, + s = i.length2, + r = t.peekBytes(6); + const n = 128 === r[0] && 1 === r[1]; + if (n) { + t.skip(6); + a = (r[5] << 24) | (r[4] << 16) | (r[3] << 8) | r[2]; + } + const o = (function getHeaderBlock(e, t) { + const i = [101, 101, 120, 101, 99], + a = e.pos; + let s, r, n, o; + try { + s = e.getBytes(t); + r = s.length; + } catch {} + if (r === t) { + n = findBlock(s, i, t - 2 * i.length); + if (n.found && n.length === t) + return { stream: new Stream(s), length: t }; + } + warn('Invalid "Length1" property in Type1 font -- trying to recover.'); + e.pos = a; + for (;;) { + n = findBlock(e.peekBytes(2048), i, 0); + if (0 === n.length) break; + e.pos += n.length; + if (n.found) { + o = e.pos - a; + break; + } + } + e.pos = a; + if (o) return { stream: new Stream(e.getBytes(o)), length: o }; + warn( + 'Unable to recover "Length1" property in Type1 font -- using as is.', + ); + return { stream: new Stream(e.getBytes(t)), length: t }; + })(t, a); + new Type1Parser(o.stream, !1, Yi).extractFontHeader(i); + if (n) { + r = t.getBytes(6); + s = (r[5] << 24) | (r[4] << 16) | (r[3] << 8) | r[2]; + } + const g = (function getEexecBlock(e, t) { + const i = e.getBytes(); + if (0 === i.length) + throw new FormatError("getEexecBlock - no font program found."); + return { stream: new Stream(i), length: i.length }; + })(t), + c = new Type1Parser(g.stream, !0, Yi).extractFontProgram(i); + for (const e in c.properties) i[e] = c.properties[e]; + const h = c.charstrings, + l = this.getType2Charstrings(h), + C = this.getType2Subrs(c.subrs); + this.charstrings = h; + this.data = this.wrap(e, l, this.charstrings, C, i); + this.seacs = this.getSeacs(c.charstrings); + } + get numGlyphs() { + return this.charstrings.length + 1; + } + getCharset() { + const e = [".notdef"]; + for (const { glyphName: t } of this.charstrings) e.push(t); + return e; + } + getGlyphMapping(e) { + const t = this.charstrings; + if (e.composite) { + const i = Object.create(null); + for (let a = 0, s = t.length; a < s; a++) { + i[e.cMap.charCodeOf(a)] = a + 1; + } + return i; + } + const i = [".notdef"]; + let a, s; + for (s = 0; s < t.length; s++) i.push(t[s].glyphName); + const r = e.builtInEncoding; + if (r) { + a = Object.create(null); + for (const e in r) { + s = i.indexOf(r[e]); + s >= 0 && (a[e] = s); + } + } + return type1FontGlyphMapping(e, a, i); + } + hasGlyphId(e) { + if (e < 0 || e >= this.numGlyphs) return !1; + if (0 === e) return !0; + return this.charstrings[e - 1].charstring.length > 0; + } + getSeacs(e) { + const t = []; + for (let i = 0, a = e.length; i < a; i++) { + const a = e[i]; + a.seac && (t[i + 1] = a.seac); + } + return t; + } + getType2Charstrings(e) { + const t = []; + for (const i of e) t.push(i.charstring); + return t; + } + getType2Subrs(e) { + let t = 0; + const i = e.length; + t = i < 1133 ? 107 : i < 33769 ? 1131 : 32768; + const a = []; + let s; + for (s = 0; s < t; s++) a.push([11]); + for (s = 0; s < i; s++) a.push(e[s]); + return a; + } + wrap(e, t, i, a, s) { + const r = new CFF(); + r.header = new CFFHeader(1, 0, 4, 4); + r.names = [e]; + const n = new CFFTopDict(); + n.setByName("version", 391); + n.setByName("Notice", 392); + n.setByName("FullName", 393); + n.setByName("FamilyName", 394); + n.setByName("Weight", 395); + n.setByName("Encoding", null); + n.setByName("FontMatrix", s.fontMatrix); + n.setByName("FontBBox", s.bbox); + n.setByName("charset", null); + n.setByName("CharStrings", null); + n.setByName("Private", null); + r.topDict = n; + const o = new CFFStrings(); + o.add("Version 0.11"); + o.add("See original notice"); + o.add(e); + o.add(e); + o.add("Medium"); + r.strings = o; + r.globalSubrIndex = new CFFIndex(); + const g = t.length, + c = [".notdef"]; + let h, l; + for (h = 0; h < g; h++) { + const e = i[h].glyphName; + -1 === wi.indexOf(e) && o.add(e); + c.push(e); + } + r.charset = new CFFCharset(!1, 0, c); + const C = new CFFIndex(); + C.add([139, 14]); + for (h = 0; h < g; h++) C.add(t[h]); + r.charStrings = C; + const Q = new CFFPrivateDict(); + Q.setByName("Subrs", null); + const E = [ + "BlueValues", + "OtherBlues", + "FamilyBlues", + "FamilyOtherBlues", + "StemSnapH", + "StemSnapV", + "BlueShift", + "BlueFuzz", + "BlueScale", + "LanguageGroup", + "ExpansionFactor", + "ForceBold", + "StdHW", + "StdVW", + ]; + for (h = 0, l = E.length; h < l; h++) { + const e = E[h]; + if (!(e in s.privateData)) continue; + const t = s.privateData[e]; + if (Array.isArray(t)) + for (let e = t.length - 1; e > 0; e--) t[e] -= t[e - 1]; + Q.setByName(e, t); + } + r.topDict.privateDict = Q; + const u = new CFFIndex(); + for (h = 0, l = a.length; h < l; h++) u.add(a[h]); + Q.subrsIndex = u; + return new CFFCompiler(r).compile(); + } +} +const la = [ + [57344, 63743], + [1048576, 1114109], + ], + Ca = 1e3, + Ba = [ + "ascent", + "bbox", + "black", + "bold", + "charProcOperatorList", + "composite", + "cssFontInfo", + "data", + "defaultVMetrics", + "defaultWidth", + "descent", + "fallbackName", + "fontMatrix", + "isInvalidPDFjsFont", + "isType3Font", + "italic", + "loadedName", + "mimetype", + "missingFile", + "name", + "remeasure", + "subtype", + "systemFontInfo", + "type", + "vertical", + ], + Qa = [ + "cMap", + "defaultEncoding", + "differences", + "isMonospace", + "isSerifFont", + "isSymbolicFont", + "seacMap", + "toFontChar", + "toUnicode", + "vmetrics", + "widths", + ]; +function adjustWidths(e) { + if (!e.fontMatrix) return; + if (e.fontMatrix[0] === a[0]) return; + const t = 0.001 / e.fontMatrix[0], + i = e.widths; + for (const e in i) i[e] *= t; + e.defaultWidth *= t; +} +function amendFallbackToUnicode(e) { + if (!e.fallbackToUnicode) return; + if (e.toUnicode instanceof IdentityToUnicodeMap) return; + const t = []; + for (const i in e.fallbackToUnicode) + e.toUnicode.has(i) || (t[i] = e.fallbackToUnicode[i]); + t.length > 0 && e.toUnicode.amend(t); +} +class fonts_Glyph { + constructor(e, t, i, a, s, r, n, o, g) { + this.originalCharCode = e; + this.fontChar = t; + this.unicode = i; + this.accent = a; + this.width = s; + this.vmetric = r; + this.operatorListId = n; + this.isSpace = o; + this.isInFont = g; + } + get category() { + return shadow( + this, + "category", + (function getCharUnicodeCategory(e) { + const t = Hi.get(e); + if (t) return t; + const i = e.match(Ji), + a = { + isWhitespace: !!i?.[1], + isZeroWidthDiacritic: !!i?.[2], + isInvisibleFormatMark: !!i?.[3], + }; + Hi.set(e, a); + return a; + })(this.unicode), + !0, + ); + } +} +function int16(e, t) { + return (e << 8) + t; +} +function writeSignedInt16(e, t, i) { + e[t + 1] = i; + e[t] = i >>> 8; +} +function signedInt16(e, t) { + const i = (e << 8) + t; + return 32768 & i ? i - 65536 : i; +} +function string16(e) { + return String.fromCharCode((e >> 8) & 255, 255 & e); +} +function safeString16(e) { + e > 32767 ? (e = 32767) : e < -32768 && (e = -32768); + return String.fromCharCode((e >> 8) & 255, 255 & e); +} +function isTrueTypeCollectionFile(e) { + return "ttcf" === bytesToString(e.peekBytes(4)); +} +function getFontFileType(e, { type: t, subtype: i, composite: a }) { + let s, r; + if ( + (function isTrueTypeFile(e) { + const t = e.peekBytes(4); + return 65536 === readUint32(t, 0) || "true" === bytesToString(t); + })(e) || + isTrueTypeCollectionFile(e) + ) + s = a ? "CIDFontType2" : "TrueType"; + else if ( + (function isOpenTypeFile(e) { + return "OTTO" === bytesToString(e.peekBytes(4)); + })(e) + ) + s = a ? "CIDFontType2" : "OpenType"; + else if ( + (function isType1File(e) { + const t = e.peekBytes(2); + return (37 === t[0] && 33 === t[1]) || (128 === t[0] && 1 === t[1]); + })(e) + ) + s = a ? "CIDFontType0" : "MMType1" === t ? "MMType1" : "Type1"; + else if ( + (function isCFFFile(e) { + const t = e.peekBytes(4); + return t[0] >= 1 && t[3] >= 1 && t[3] <= 4; + })(e) + ) + if (a) { + s = "CIDFontType0"; + r = "CIDFontType0C"; + } else { + s = "MMType1" === t ? "MMType1" : "Type1"; + r = "Type1C"; + } + else { + warn("getFontFileType: Unable to detect correct font file Type/Subtype."); + s = t; + r = i; + } + return [s, r]; +} +function applyStandardFontGlyphMap(e, t) { + for (const i in t) e[+i] = t[i]; +} +function buildToFontChar(e, t, i) { + const a = []; + let s; + for (let i = 0, r = e.length; i < r; i++) { + s = getUnicodeForGlyph(e[i], t); + -1 !== s && (a[i] = s); + } + for (const e in i) { + s = getUnicodeForGlyph(i[e], t); + -1 !== s && (a[+e] = s); + } + return a; +} +function isMacNameRecord(e) { + return 1 === e.platform && 0 === e.encoding && 0 === e.language; +} +function isWinNameRecord(e) { + return 3 === e.platform && 1 === e.encoding && 1033 === e.language; +} +function convertCidString(e, t, i = !1) { + switch (t.length) { + case 1: + return t.charCodeAt(0); + case 2: + return (t.charCodeAt(0) << 8) | t.charCodeAt(1); + } + const a = `Unsupported CID string (charCode ${e}): "${t}".`; + if (i) throw new FormatError(a); + warn(a); + return t; +} +function adjustMapping(e, t, i, a) { + const s = Object.create(null), + r = new Map(), + n = [], + o = new Set(); + let g = 0; + let c = la[g][0], + h = la[g][1]; + for (const C in e) { + let Q = e[C]; + if (!t(Q)) continue; + if (c > h) { + g++; + if (g >= la.length) { + warn("Ran out of space in font private use area."); + break; + } + c = la[g][0]; + h = la[g][1]; + } + const E = c++; + 0 === Q && (Q = i); + let u = a.get(C); + "string" == typeof u && (u = u.codePointAt(0)); + if ( + u && + !((l = u), + (la[0][0] <= l && l <= la[0][1]) || (la[1][0] <= l && l <= la[1][1])) && + !o.has(Q) + ) { + r.set(u, Q); + o.add(Q); + } + s[E] = Q; + n[C] = E; + } + var l; + return { + toFontChar: n, + charCodeToGlyphId: s, + toUnicodeExtraMap: r, + nextAvailableFontCharCode: c, + }; +} +function createCmapTable(e, t, i) { + const a = (function getRanges(e, t, i) { + const a = []; + for (const t in e) + e[t] >= i || a.push({ fontCharCode: 0 | t, glyphId: e[t] }); + if (t) + for (const [e, s] of t) + s >= i || a.push({ fontCharCode: e, glyphId: s }); + 0 === a.length && a.push({ fontCharCode: 0, glyphId: 0 }); + a.sort(function fontGetRangesSort(e, t) { + return e.fontCharCode - t.fontCharCode; + }); + const s = [], + r = a.length; + for (let e = 0; e < r; ) { + const t = a[e].fontCharCode, + i = [a[e].glyphId]; + ++e; + let n = t; + for (; e < r && n + 1 === a[e].fontCharCode; ) { + i.push(a[e].glyphId); + ++n; + ++e; + if (65535 === n) break; + } + s.push([t, n, i]); + } + return s; + })(e, t, i), + s = a.at(-1)[1] > 65535 ? 2 : 1; + let r, + n, + o, + g, + c = "\0\0" + string16(s) + "\0\0" + string32(4 + 8 * s); + for (r = a.length - 1; r >= 0 && !(a[r][0] <= 65535); --r); + const h = r + 1; + a[r][0] < 65535 && 65535 === a[r][1] && (a[r][1] = 65534); + const l = a[r][1] < 65535 ? 1 : 0, + C = h + l, + Q = OpenTypeFileBuilder.getSearchParams(C, 2); + let E, + u, + d, + f, + p = "", + m = "", + y = "", + w = "", + b = "", + D = 0; + for (r = 0, n = h; r < n; r++) { + E = a[r]; + u = E[0]; + d = E[1]; + p += string16(u); + m += string16(d); + f = E[2]; + let e = !0; + for (o = 1, g = f.length; o < g; ++o) + if (f[o] !== f[o - 1] + 1) { + e = !1; + break; + } + if (e) { + y += string16((f[0] - u) & 65535); + w += string16(0); + } else { + const e = 2 * (C - r) + 2 * D; + D += d - u + 1; + y += string16(0); + w += string16(e); + for (o = 0, g = f.length; o < g; ++o) b += string16(f[o]); + } + } + if (l > 0) { + m += "ÿÿ"; + p += "ÿÿ"; + y += "\0"; + w += "\0\0"; + } + const F = + "\0\0" + + string16(2 * C) + + string16(Q.range) + + string16(Q.entry) + + string16(Q.rangeShift) + + m + + "\0\0" + + p + + y + + w + + b; + let S = "", + k = ""; + if (s > 1) { + c += "\0\0\n" + string32(4 + 8 * s + 4 + F.length); + S = ""; + for (r = 0, n = a.length; r < n; r++) { + E = a[r]; + u = E[0]; + f = E[2]; + let e = f[0]; + for (o = 1, g = f.length; o < g; ++o) + if (f[o] !== f[o - 1] + 1) { + d = E[0] + o - 1; + S += string32(u) + string32(d) + string32(e); + u = d + 1; + e = f[o]; + } + S += string32(u) + string32(E[1]) + string32(e); + } + k = + "\0\f\0\0" + + string32(S.length + 16) + + "\0\0\0\0" + + string32(S.length / 12); + } + return c + "\0" + string16(F.length + 4) + F + k + S; +} +function createOS2Table(e, t, i) { + i ||= { unitsPerEm: 0, yMax: 0, yMin: 0, ascent: 0, descent: 0 }; + let s = 0, + r = 0, + n = 0, + o = 0, + g = null, + c = 0, + h = -1; + if (t) { + for (let e in t) { + e |= 0; + (g > e || !g) && (g = e); + c < e && (c = e); + h = getUnicodeRangeFor(e, h); + if (h < 32) s |= 1 << h; + else if (h < 64) r |= 1 << (h - 32); + else if (h < 96) n |= 1 << (h - 64); + else { + if (!(h < 123)) + throw new FormatError( + "Unicode ranges Bits > 123 are reserved for internal usage", + ); + o |= 1 << (h - 96); + } + } + c > 65535 && (c = 65535); + } else { + g = 0; + c = 255; + } + const l = e.bbox || [0, 0, 0, 0], + C = i.unitsPerEm || 1 / (e.fontMatrix || a)[0], + Q = e.ascentScaled ? 1 : C / Ca, + E = i.ascent || Math.round(Q * (e.ascent || l[3])); + let u = i.descent || Math.round(Q * (e.descent || l[1])); + u > 0 && e.descent > 0 && l[1] < 0 && (u = -u); + const d = i.yMax || E, + f = -i.yMin || -u; + return ( + "\0$ô\0\0\0Š»\0\0\0ŒŠ»\0\0ß\x001\0\0\0\0" + + String.fromCharCode(e.fixedPitch ? 9 : 0) + + "\0\0\0\0\0\0" + + string32(s) + + string32(r) + + string32(n) + + string32(o) + + "*21*" + + string16(e.italicAngle ? 1 : 0) + + string16(g || e.firstChar) + + string16(c || e.lastChar) + + string16(E) + + string16(u) + + "\0d" + + string16(d) + + string16(f) + + "\0\0\0\0\0\0\0\0" + + string16(e.xHeight) + + string16(e.capHeight) + + string16(0) + + string16(g || e.firstChar) + + "\0" + ); +} +function createPostTable(e) { + return ( + "\0\0\0" + + string32(Math.floor(65536 * e.italicAngle)) + + "\0\0\0\0" + + string32(e.fixedPitch ? 1 : 0) + + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + ); +} +function createPostscriptName(e) { + return e.replaceAll(/[^\x21-\x7E]|[[\](){}<>/%]/g, "").slice(0, 63); +} +function createNameTable(e, t) { + t || (t = [[], []]); + const i = [ + t[0][0] || "Original licence", + t[0][1] || e, + t[0][2] || "Unknown", + t[0][3] || "uniqueID", + t[0][4] || e, + t[0][5] || "Version 0.11", + t[0][6] || createPostscriptName(e), + t[0][7] || "Unknown", + t[0][8] || "Unknown", + t[0][9] || "Unknown", + ], + a = []; + let s, r, n, o, g; + for (s = 0, r = i.length; s < r; s++) { + g = t[1][s] || i[s]; + const e = []; + for (n = 0, o = g.length; n < o; n++) e.push(string16(g.charCodeAt(n))); + a.push(e.join("")); + } + const c = [i, a], + h = ["\0", "\0"], + l = ["\0\0", "\0"], + C = ["\0\0", "\t"], + Q = i.length * h.length; + let E = "\0\0" + string16(Q) + string16(12 * Q + 6), + u = 0; + for (s = 0, r = h.length; s < r; s++) { + const e = c[s]; + for (n = 0, o = e.length; n < o; n++) { + g = e[n]; + E += h[s] + l[s] + C[s] + string16(n) + string16(g.length) + string16(u); + u += g.length; + } + } + E += i.join("") + a.join(""); + return E; +} +class Font { + constructor(e, t, i) { + this.name = e; + this.psName = null; + this.mimetype = null; + this.disableFontFace = !1; + this.loadedName = i.loadedName; + this.isType3Font = i.isType3Font; + this.missingFile = !1; + this.cssFontInfo = i.cssFontInfo; + this._charsCache = Object.create(null); + this._glyphCache = Object.create(null); + let a = !!(i.flags & Ki); + if (!a && !i.isSimulatedFlags) { + const t = e.replaceAll(/[,_]/g, "-").split("-", 1)[0], + i = ji(); + for (const e of t.split("+")) + if (i[e]) { + a = !0; + break; + } + } + this.isSerifFont = a; + this.isSymbolicFont = !!(i.flags & Ti); + this.isMonospace = !!(i.flags & vi); + let { type: s, subtype: r } = i; + this.type = s; + this.subtype = r; + this.systemFontInfo = i.systemFontInfo; + const n = e.match(/^InvalidPDFjsFont_(.*)_\d+$/); + this.isInvalidPDFjsFont = !!n; + this.isInvalidPDFjsFont + ? (this.fallbackName = n[1]) + : this.isMonospace + ? (this.fallbackName = "monospace") + : this.isSerifFont + ? (this.fallbackName = "serif") + : (this.fallbackName = "sans-serif"); + if (this.systemFontInfo?.guessFallback) { + this.systemFontInfo.guessFallback = !1; + this.systemFontInfo.css += `,${this.fallbackName}`; + } + this.differences = i.differences; + this.widths = i.widths; + this.defaultWidth = i.defaultWidth; + this.composite = i.composite; + this.cMap = i.cMap; + this.capHeight = i.capHeight / Ca; + this.ascent = i.ascent / Ca; + this.descent = i.descent / Ca; + this.lineHeight = this.ascent - this.descent; + this.fontMatrix = i.fontMatrix; + this.bbox = i.bbox; + this.defaultEncoding = i.defaultEncoding; + this.toUnicode = i.toUnicode; + this.toFontChar = []; + if ("Type3" === i.type) { + for (let e = 0; e < 256; e++) + this.toFontChar[e] = this.differences[e] || i.defaultEncoding[e]; + return; + } + this.cidEncoding = i.cidEncoding || ""; + this.vertical = !!i.vertical; + if (this.vertical) { + this.vmetrics = i.vmetrics; + this.defaultVMetrics = i.defaultVMetrics; + } + if (!t || t.isEmpty) { + t && warn('Font file is empty in "' + e + '" (' + this.loadedName + ")"); + this.fallbackToSystemFont(i); + return; + } + [s, r] = getFontFileType(t, i); + (s === this.type && r === this.subtype) || + info( + `Inconsistent font file Type/SubType, expected: ${this.type}/${this.subtype} but found: ${s}/${r}.`, + ); + let o; + try { + switch (s) { + case "MMType1": + info("MMType1 font (" + e + "), falling back to Type1."); + case "Type1": + case "CIDFontType0": + this.mimetype = "font/opentype"; + const a = + "Type1C" === r || "CIDFontType0C" === r + ? new CFFFont(t, i) + : new Type1Font(e, t, i); + adjustWidths(i); + o = this.convert(e, a, i); + break; + case "OpenType": + case "TrueType": + case "CIDFontType2": + this.mimetype = "font/opentype"; + o = this.checkAndRepair(e, t, i); + if (this.isOpenType) { + adjustWidths(i); + s = "OpenType"; + } + break; + default: + throw new FormatError(`Font ${s} is not supported`); + } + } catch (e) { + warn(e); + this.fallbackToSystemFont(i); + return; + } + amendFallbackToUnicode(i); + this.data = o; + this.type = s; + this.subtype = r; + this.fontMatrix = i.fontMatrix; + this.widths = i.widths; + this.defaultWidth = i.defaultWidth; + this.toUnicode = i.toUnicode; + this.seacMap = i.seacMap; + } + get renderer() { + return shadow(this, "renderer", FontRendererFactory.create(this, Yi)); + } + exportData(e = !1) { + const t = e ? [...Ba, ...Qa] : Ba, + i = Object.create(null); + let a, s; + for (a of t) { + s = this[a]; + void 0 !== s && (i[a] = s); + } + return i; + } + fallbackToSystemFont(e) { + this.missingFile = !0; + const { name: t, type: i } = this; + let a = normalizeFontName(t); + const s = Pi(), + r = Xi(), + n = !!s[a], + o = !(!r[a] || !s[r[a]]); + a = s[a] || r[a] || a; + const g = ea()[a]; + if (g) { + isNaN(this.ascent) && (this.ascent = g.ascent / Ca); + isNaN(this.descent) && (this.descent = g.descent / Ca); + isNaN(this.capHeight) && (this.capHeight = g.capHeight / Ca); + } + this.bold = /bold/gi.test(a); + this.italic = /oblique|italic/gi.test(a); + this.black = /Black/g.test(t); + const c = /Narrow/g.test(t); + this.remeasure = (!n || c) && Object.keys(this.widths).length > 0; + if ( + (n || o) && + "CIDFontType2" === i && + this.cidEncoding.startsWith("Identity-") + ) { + const i = e.cidToGidMap, + a = []; + applyStandardFontGlyphMap(a, Vi()); + /Arial-?Black/i.test(t) + ? applyStandardFontGlyphMap(a, zi()) + : /Calibri/i.test(t) && applyStandardFontGlyphMap(a, _i()); + if (i) { + for (const e in a) { + const t = a[e]; + void 0 !== i[t] && (a[+e] = i[t]); + } + i.length !== this.toUnicode.length && + e.hasIncludedToUnicodeMap && + this.toUnicode instanceof IdentityToUnicodeMap && + this.toUnicode.forEach(function (e, t) { + const s = a[e]; + void 0 === i[s] && (a[+e] = t); + }); + } + this.toUnicode instanceof IdentityToUnicodeMap || + this.toUnicode.forEach(function (e, t) { + a[+e] = t; + }); + this.toFontChar = a; + this.toUnicode = new ToUnicodeMap(a); + } else if (/Symbol/i.test(a)) + this.toFontChar = buildToFontChar(mi, Ni(), this.differences); + else if (/Dingbats/i.test(a)) + this.toFontChar = buildToFontChar(yi, Gi(), this.differences); + else if (n) { + const e = buildToFontChar(this.defaultEncoding, Ni(), this.differences); + "CIDFontType2" !== i || + this.cidEncoding.startsWith("Identity-") || + this.toUnicode instanceof IdentityToUnicodeMap || + this.toUnicode.forEach(function (t, i) { + e[+t] = i; + }); + this.toFontChar = e; + } else { + const e = Ni(), + i = []; + this.toUnicode.forEach((t, a) => { + if (!this.composite) { + const i = getUnicodeForGlyph( + this.differences[t] || this.defaultEncoding[t], + e, + ); + -1 !== i && (a = i); + } + i[+t] = a; + }); + this.composite && + this.toUnicode instanceof IdentityToUnicodeMap && + /Tahoma|Verdana/i.test(t) && + applyStandardFontGlyphMap(i, Vi()); + this.toFontChar = i; + } + amendFallbackToUnicode(e); + this.loadedName = a.split("-", 1)[0]; + } + checkAndRepair(e, t, i) { + const a = [ + "OS/2", + "cmap", + "head", + "hhea", + "hmtx", + "maxp", + "name", + "post", + "loca", + "glyf", + "fpgm", + "prep", + "cvt ", + "CFF ", + ]; + function readTables(e, t) { + const i = Object.create(null); + i["OS/2"] = null; + i.cmap = null; + i.head = null; + i.hhea = null; + i.hmtx = null; + i.maxp = null; + i.name = null; + i.post = null; + for (let s = 0; s < t; s++) { + const t = readTableEntry(e); + a.includes(t.tag) && 0 !== t.length && (i[t.tag] = t); + } + return i; + } + function readTableEntry(e) { + const t = e.getString(4), + i = e.getInt32() >>> 0, + a = e.getInt32() >>> 0, + s = e.getInt32() >>> 0, + r = e.pos; + e.pos = e.start || 0; + e.skip(a); + const n = e.getBytes(s); + e.pos = r; + if ("head" === t) { + n[8] = n[9] = n[10] = n[11] = 0; + n[17] |= 32; + } + return { tag: t, checksum: i, length: s, offset: a, data: n }; + } + function readOpenTypeHeader(e) { + return { + version: e.getString(4), + numTables: e.getUint16(), + searchRange: e.getUint16(), + entrySelector: e.getUint16(), + rangeShift: e.getUint16(), + }; + } + function sanitizeGlyph(e, t, i, a, s, r) { + const n = { length: 0, sizeOfInstructions: 0 }; + if (t < 0 || t >= e.length || i > e.length || i - t <= 12) return n; + const o = e.subarray(t, i), + g = signedInt16(o[2], o[3]), + c = signedInt16(o[4], o[5]), + h = signedInt16(o[6], o[7]), + l = signedInt16(o[8], o[9]); + if (g > h) { + writeSignedInt16(o, 2, h); + writeSignedInt16(o, 6, g); + } + if (c > l) { + writeSignedInt16(o, 4, l); + writeSignedInt16(o, 8, c); + } + const C = signedInt16(o[0], o[1]); + if (C < 0) { + if (C < -1) return n; + a.set(o, s); + n.length = o.length; + return n; + } + let Q, + E = 10, + u = 0; + for (Q = 0; Q < C; Q++) { + u = ((o[E] << 8) | o[E + 1]) + 1; + E += 2; + } + const d = E, + f = (o[E] << 8) | o[E + 1]; + n.sizeOfInstructions = f; + E += 2 + f; + const p = E; + let m = 0; + for (Q = 0; Q < u; Q++) { + const e = o[E++]; + 192 & e && (o[E - 1] = 63 & e); + let t = 2; + 2 & e ? (t = 1) : 16 & e && (t = 0); + let i = 2; + 4 & e ? (i = 1) : 32 & e && (i = 0); + const a = t + i; + m += a; + if (8 & e) { + const e = o[E++]; + 0 === e && (o[E - 1] ^= 8); + Q += e; + m += e * a; + } + } + if (0 === m) return n; + let y = E + m; + if (y > o.length) return n; + if (!r && f > 0) { + a.set(o.subarray(0, d), s); + a.set([0, 0], s + d); + a.set(o.subarray(p, y), s + d + 2); + y -= f; + o.length - y > 3 && (y = (y + 3) & -4); + n.length = y; + return n; + } + if (o.length - y > 3) { + y = (y + 3) & -4; + a.set(o.subarray(0, y), s); + n.length = y; + return n; + } + a.set(o, s); + n.length = o.length; + return n; + } + function readNameTable(e) { + const i = (t.start || 0) + e.offset; + t.pos = i; + const a = [[], []], + s = [], + r = e.length, + n = i + r; + if (0 !== t.getUint16() || r < 6) return [a, s]; + const o = t.getUint16(), + g = t.getUint16(); + let c, h; + for (c = 0; c < o && t.pos + 12 <= n; c++) { + const e = { + platform: t.getUint16(), + encoding: t.getUint16(), + language: t.getUint16(), + name: t.getUint16(), + length: t.getUint16(), + offset: t.getUint16(), + }; + (isMacNameRecord(e) || isWinNameRecord(e)) && s.push(e); + } + for (c = 0, h = s.length; c < h; c++) { + const e = s[c]; + if (e.length <= 0) continue; + const r = i + g + e.offset; + if (r + e.length > n) continue; + t.pos = r; + const o = e.name; + if (e.encoding) { + let i = ""; + for (let a = 0, s = e.length; a < s; a += 2) + i += String.fromCharCode(t.getUint16()); + a[1][o] = i; + } else a[0][o] = t.getString(e.length); + } + return [a, s]; + } + const s = [ + 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5, -1, -1, -1, -1, -1, + -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1, 1, -1, -999, 0, 1, 0, -1, -2, 0, + -1, -2, -1, -1, 0, -1, -1, 0, 0, -999, -999, -1, -1, -1, -1, -2, -999, -2, + -2, -999, 0, -2, -2, 0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1, + -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1, -1, -1, -1, + -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -999, -999, -999, -999, -999, + -1, -1, -2, -2, 0, 0, 0, 0, -1, -1, -999, -2, -2, 0, 0, -1, -2, -2, 0, 0, + 0, -1, -1, -1, -2, + ]; + function sanitizeTTProgram(e, t) { + let i, + a, + r, + n, + o, + g = e.data, + c = 0, + h = 0, + l = 0; + const C = [], + Q = [], + E = []; + let u = t.tooComplexToFollowFunctions, + d = !1, + f = 0, + p = 0; + for (let e = g.length; c < e; ) { + const e = g[c++]; + if (64 === e) { + a = g[c++]; + if (d || p) c += a; + else for (i = 0; i < a; i++) C.push(g[c++]); + } else if (65 === e) { + a = g[c++]; + if (d || p) c += 2 * a; + else + for (i = 0; i < a; i++) { + r = g[c++]; + C.push((r << 8) | g[c++]); + } + } else if (176 == (248 & e)) { + a = e - 176 + 1; + if (d || p) c += a; + else for (i = 0; i < a; i++) C.push(g[c++]); + } else if (184 == (248 & e)) { + a = e - 184 + 1; + if (d || p) c += 2 * a; + else + for (i = 0; i < a; i++) { + r = g[c++]; + C.push((r << 8) | g[c++]); + } + } else if (43 !== e || u) + if (44 !== e || u) { + if (45 === e) + if (d) { + d = !1; + h = c; + } else { + o = Q.pop(); + if (!o) { + warn("TT: ENDF bad stack"); + t.hintsValid = !1; + return; + } + n = E.pop(); + g = o.data; + c = o.i; + t.functionsStackDeltas[n] = C.length - o.stackTop; + } + else if (137 === e) { + if (d || p) { + warn("TT: nested IDEFs not allowed"); + u = !0; + } + d = !0; + l = c; + } else if (88 === e) ++f; + else if (27 === e) p = f; + else if (89 === e) { + p === f && (p = 0); + --f; + } else if (28 === e && !d && !p) { + const e = C.at(-1); + e > 0 && (c += e - 1); + } + } else { + if (d || p) { + warn("TT: nested FDEFs not allowed"); + u = !0; + } + d = !0; + l = c; + n = C.pop(); + t.functionsDefined[n] = { data: g, i: c }; + } + else if (!d && !p) { + n = C.at(-1); + if (isNaN(n)) info("TT: CALL empty stack (or invalid entry)."); + else { + t.functionsUsed[n] = !0; + if (n in t.functionsStackDeltas) { + const e = C.length + t.functionsStackDeltas[n]; + if (e < 0) { + warn("TT: CALL invalid functions stack delta."); + t.hintsValid = !1; + return; + } + C.length = e; + } else if (n in t.functionsDefined && !E.includes(n)) { + Q.push({ data: g, i: c, stackTop: C.length - 1 }); + E.push(n); + o = t.functionsDefined[n]; + if (!o) { + warn("TT: CALL non-existent function"); + t.hintsValid = !1; + return; + } + g = o.data; + c = o.i; + } + } + } + if (!d && !p) { + let t = 0; + e <= 142 + ? (t = s[e]) + : e >= 192 && e <= 223 + ? (t = -1) + : e >= 224 && (t = -2); + if (e >= 113 && e <= 117) { + a = C.pop(); + isNaN(a) || (t = 2 * -a); + } + for (; t < 0 && C.length > 0; ) { + C.pop(); + t++; + } + for (; t > 0; ) { + C.push(NaN); + t--; + } + } + } + t.tooComplexToFollowFunctions = u; + const m = [g]; + c > g.length && m.push(new Uint8Array(c - g.length)); + if (l > h) { + warn("TT: complementing a missing function tail"); + m.push(new Uint8Array([34, 45])); + } + !(function foldTTTable(e, t) { + if (t.length > 1) { + let i, + a, + s = 0; + for (i = 0, a = t.length; i < a; i++) s += t[i].length; + s = (s + 3) & -4; + const r = new Uint8Array(s); + let n = 0; + for (i = 0, a = t.length; i < a; i++) { + r.set(t[i], n); + n += t[i].length; + } + e.data = r; + e.length = s; + } + })(e, m); + } + let r, n, o, g; + if ( + isTrueTypeCollectionFile((t = new Stream(new Uint8Array(t.getBytes())))) + ) { + const e = (function readTrueTypeCollectionData(e, t) { + const { numFonts: i, offsetTable: a } = + (function readTrueTypeCollectionHeader(e) { + const t = e.getString(4); + assert("ttcf" === t, "Must be a TrueType Collection font."); + const i = e.getUint16(), + a = e.getUint16(), + s = e.getInt32() >>> 0, + r = []; + for (let t = 0; t < s; t++) r.push(e.getInt32() >>> 0); + const n = { + ttcTag: t, + majorVersion: i, + minorVersion: a, + numFonts: s, + offsetTable: r, + }; + switch (i) { + case 1: + return n; + case 2: + n.dsigTag = e.getInt32() >>> 0; + n.dsigLength = e.getInt32() >>> 0; + n.dsigOffset = e.getInt32() >>> 0; + return n; + } + throw new FormatError( + `Invalid TrueType Collection majorVersion: ${i}.`, + ); + })(e), + s = t.split("+"); + let r; + for (let n = 0; n < i; n++) { + e.pos = (e.start || 0) + a[n]; + const i = readOpenTypeHeader(e), + o = readTables(e, i.numTables); + if (!o.name) + throw new FormatError( + 'TrueType Collection font must contain a "name" table.', + ); + const [g] = readNameTable(o.name); + for (let e = 0, a = g.length; e < a; e++) + for (let a = 0, n = g[e].length; a < n; a++) { + const n = g[e][a]?.replaceAll(/\s/g, ""); + if (n) { + if (n === t) return { header: i, tables: o }; + if (!(s.length < 2)) + for (const e of s) + n === e && (r = { name: e, header: i, tables: o }); + } + } + } + if (r) { + warn( + `TrueType Collection does not contain "${t}" font, falling back to "${r.name}" font instead.`, + ); + return { header: r.header, tables: r.tables }; + } + throw new FormatError( + `TrueType Collection does not contain "${t}" font.`, + ); + })(t, this.name); + r = e.header; + n = e.tables; + } else { + r = readOpenTypeHeader(t); + n = readTables(t, r.numTables); + } + const c = !n["CFF "]; + if (c) { + if (!n.loca) throw new FormatError('Required "loca" table is not found'); + if (!n.glyf) { + warn('Required "glyf" table is not found -- trying to recover.'); + n.glyf = { tag: "glyf", data: new Uint8Array(0) }; + } + this.isOpenType = !1; + } else { + const t = + i.composite && + (i.cidToGidMap?.length > 0 || !(i.cMap instanceof IdentityCMap)); + if ( + ("OTTO" === r.version && !t) || + !n.head || + !n.hhea || + !n.maxp || + !n.post + ) { + g = new Stream(n["CFF "].data); + o = new CFFFont(g, i); + adjustWidths(i); + return this.convert(e, o, i); + } + delete n.glyf; + delete n.loca; + delete n.fpgm; + delete n.prep; + delete n["cvt "]; + this.isOpenType = !0; + } + if (!n.maxp) throw new FormatError('Required "maxp" table is not found'); + t.pos = (t.start || 0) + n.maxp.offset; + let h = t.getInt32(); + const l = t.getUint16(); + if (65536 !== h && 20480 !== h) { + if (6 === n.maxp.length) h = 20480; + else { + if (!(n.maxp.length >= 32)) + throw new FormatError('"maxp" table has a wrong version number'); + h = 65536; + } + !(function writeUint32(e, t, i) { + e[t + 3] = 255 & i; + e[t + 2] = i >>> 8; + e[t + 1] = i >>> 16; + e[t] = i >>> 24; + })(n.maxp.data, 0, h); + } + if (i.scaleFactors?.length === l && c) { + const { scaleFactors: e } = i, + t = int16(n.head.data[50], n.head.data[51]), + a = new GlyfTable({ + glyfTable: n.glyf.data, + isGlyphLocationsLong: t, + locaTable: n.loca.data, + numGlyphs: l, + }); + a.scale(e); + const { glyf: s, loca: r, isLocationLong: o } = a.write(); + n.glyf.data = s; + n.loca.data = r; + if (o !== !!t) { + n.head.data[50] = 0; + n.head.data[51] = o ? 1 : 0; + } + const g = n.hmtx.data; + for (let t = 0; t < l; t++) { + const i = 4 * t, + a = Math.round(e[t] * int16(g[i], g[i + 1])); + g[i] = (a >> 8) & 255; + g[i + 1] = 255 & a; + writeSignedInt16( + g, + i + 2, + Math.round(e[t] * signedInt16(g[i + 2], g[i + 3])), + ); + } + } + let C = l + 1, + Q = !0; + if (C > 65535) { + Q = !1; + C = l; + warn("Not enough space in glyfs to duplicate first glyph."); + } + let E = 0, + u = 0; + if (h >= 65536 && n.maxp.length >= 32) { + t.pos += 8; + if (t.getUint16() > 2) { + n.maxp.data[14] = 0; + n.maxp.data[15] = 2; + } + t.pos += 4; + E = t.getUint16(); + t.pos += 4; + u = t.getUint16(); + } + n.maxp.data[4] = C >> 8; + n.maxp.data[5] = 255 & C; + const d = (function sanitizeTTPrograms(e, t, i, a) { + const s = { + functionsDefined: [], + functionsUsed: [], + functionsStackDeltas: [], + tooComplexToFollowFunctions: !1, + hintsValid: !0, + }; + e && sanitizeTTProgram(e, s); + t && sanitizeTTProgram(t, s); + e && + (function checkInvalidFunctions(e, t) { + if (!e.tooComplexToFollowFunctions) + if (e.functionsDefined.length > t) { + warn("TT: more functions defined than expected"); + e.hintsValid = !1; + } else + for (let i = 0, a = e.functionsUsed.length; i < a; i++) { + if (i > t) { + warn("TT: invalid function id: " + i); + e.hintsValid = !1; + return; + } + if (e.functionsUsed[i] && !e.functionsDefined[i]) { + warn("TT: undefined function: " + i); + e.hintsValid = !1; + return; + } + } + })(s, a); + if (i && 1 & i.length) { + const e = new Uint8Array(i.length + 1); + e.set(i.data); + i.data = e; + } + return s.hintsValid; + })(n.fpgm, n.prep, n["cvt "], E); + if (!d) { + delete n.fpgm; + delete n.prep; + delete n["cvt "]; + } + !(function sanitizeMetrics(e, t, i, a, s, r) { + if (!t) { + i && (i.data = null); + return; + } + e.pos = (e.start || 0) + t.offset; + e.pos += 4; + e.pos += 2; + e.pos += 2; + e.pos += 2; + e.pos += 2; + e.pos += 2; + e.pos += 2; + e.pos += 2; + e.pos += 2; + e.pos += 2; + const n = e.getUint16(); + e.pos += 8; + e.pos += 2; + let o = e.getUint16(); + if (0 !== n) { + if (!(2 & int16(a.data[44], a.data[45]))) { + t.data[22] = 0; + t.data[23] = 0; + } + } + if (o > s) { + info( + `The numOfMetrics (${o}) should not be greater than the numGlyphs (${s}).`, + ); + o = s; + t.data[34] = (65280 & o) >> 8; + t.data[35] = 255 & o; + } + const g = s - o - ((i.length - 4 * o) >> 1); + if (g > 0) { + const e = new Uint8Array(i.length + 2 * g); + e.set(i.data); + if (r) { + e[i.length] = i.data[2]; + e[i.length + 1] = i.data[3]; + } + i.data = e; + } + })(t, n.hhea, n.hmtx, n.head, C, Q); + if (!n.head) throw new FormatError('Required "head" table is not found'); + !(function sanitizeHead(e, t, i) { + const a = e.data, + s = (function int32(e, t, i, a) { + return (e << 24) + (t << 16) + (i << 8) + a; + })(a[0], a[1], a[2], a[3]); + if (s >> 16 != 1) { + info("Attempting to fix invalid version in head table: " + s); + a[0] = 0; + a[1] = 1; + a[2] = 0; + a[3] = 0; + } + const r = int16(a[50], a[51]); + if (r < 0 || r > 1) { + info("Attempting to fix invalid indexToLocFormat in head table: " + r); + const e = t + 1; + if (i === e << 1) { + a[50] = 0; + a[51] = 0; + } else { + if (i !== e << 2) + throw new FormatError("Could not fix indexToLocFormat: " + r); + a[50] = 0; + a[51] = 1; + } + } + })(n.head, l, c ? n.loca.length : 0); + let f = Object.create(null); + if (c) { + const e = int16(n.head.data[50], n.head.data[51]), + t = (function sanitizeGlyphLocations(e, t, i, a, s, r, n) { + let o, g, c; + if (a) { + o = 4; + g = function fontItemDecodeLong(e, t) { + return ( + (e[t] << 24) | (e[t + 1] << 16) | (e[t + 2] << 8) | e[t + 3] + ); + }; + c = function fontItemEncodeLong(e, t, i) { + e[t] = (i >>> 24) & 255; + e[t + 1] = (i >> 16) & 255; + e[t + 2] = (i >> 8) & 255; + e[t + 3] = 255 & i; + }; + } else { + o = 2; + g = function fontItemDecode(e, t) { + return (e[t] << 9) | (e[t + 1] << 1); + }; + c = function fontItemEncode(e, t, i) { + e[t] = (i >> 9) & 255; + e[t + 1] = (i >> 1) & 255; + }; + } + const h = r ? i + 1 : i, + l = o * (1 + h), + C = new Uint8Array(l); + C.set(e.data.subarray(0, l)); + e.data = C; + const Q = t.data, + E = Q.length, + u = new Uint8Array(E); + let d, f; + const p = []; + for (d = 0, f = 0; d < i + 1; d++, f += o) { + let e = g(C, f); + e > E && (e = E); + p.push({ index: d, offset: e, endOffset: 0 }); + } + p.sort((e, t) => e.offset - t.offset); + for (d = 0; d < i; d++) p[d].endOffset = p[d + 1].offset; + p.sort((e, t) => e.index - t.index); + for (d = 0; d < i; d++) { + const { offset: e, endOffset: t } = p[d]; + if (0 !== e || 0 !== t) break; + const i = p[d + 1].offset; + if (0 !== i) { + p[d].endOffset = i; + break; + } + } + const m = p.at(-2); + 0 !== m.offset && 0 === m.endOffset && (m.endOffset = E); + const y = Object.create(null); + let w = 0; + c(C, 0, w); + for (d = 0, f = o; d < i; d++, f += o) { + const e = sanitizeGlyph(Q, p[d].offset, p[d].endOffset, u, w, s), + t = e.length; + 0 === t && (y[d] = !0); + e.sizeOfInstructions > n && (n = e.sizeOfInstructions); + w += t; + c(C, f, w); + } + if (0 === w) { + const e = new Uint8Array([ + 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, + ]); + for (d = 0, f = o; d < h; d++, f += o) c(C, f, e.length); + t.data = e; + } else if (r) { + const i = g(C, o); + if (u.length > i + w) t.data = u.subarray(0, i + w); + else { + t.data = new Uint8Array(i + w); + t.data.set(u.subarray(0, w)); + } + t.data.set(u.subarray(0, i), w); + c(e.data, C.length - o, w + i); + } else t.data = u.subarray(0, w); + return { missingGlyphs: y, maxSizeOfInstructions: n }; + })(n.loca, n.glyf, l, e, d, Q, u); + f = t.missingGlyphs; + if (h >= 65536 && n.maxp.length >= 32) { + n.maxp.data[26] = t.maxSizeOfInstructions >> 8; + n.maxp.data[27] = 255 & t.maxSizeOfInstructions; + } + } + if (!n.hhea) throw new FormatError('Required "hhea" table is not found'); + if (0 === n.hhea.data[10] && 0 === n.hhea.data[11]) { + n.hhea.data[10] = 255; + n.hhea.data[11] = 255; + } + const p = { + unitsPerEm: int16(n.head.data[18], n.head.data[19]), + yMax: signedInt16(n.head.data[42], n.head.data[43]), + yMin: signedInt16(n.head.data[38], n.head.data[39]), + ascent: signedInt16(n.hhea.data[4], n.hhea.data[5]), + descent: signedInt16(n.hhea.data[6], n.hhea.data[7]), + lineGap: signedInt16(n.hhea.data[8], n.hhea.data[9]), + }; + this.ascent = p.ascent / p.unitsPerEm; + this.descent = p.descent / p.unitsPerEm; + this.lineGap = p.lineGap / p.unitsPerEm; + if (this.cssFontInfo?.lineHeight) { + this.lineHeight = this.cssFontInfo.metrics.lineHeight; + this.lineGap = this.cssFontInfo.metrics.lineGap; + } else this.lineHeight = this.ascent - this.descent + this.lineGap; + n.post && + (function readPostScriptTable(e, i, a) { + const s = (t.start || 0) + e.offset; + t.pos = s; + const r = s + e.length, + n = t.getInt32(); + t.skip(28); + let o, + g, + c = !0; + switch (n) { + case 65536: + o = Oi; + break; + case 131072: + const e = t.getUint16(); + if (e !== a) { + c = !1; + break; + } + const s = []; + for (g = 0; g < e; ++g) { + const e = t.getUint16(); + if (e >= 32768) { + c = !1; + break; + } + s.push(e); + } + if (!c) break; + const h = [], + l = []; + for (; t.pos < r; ) { + const e = t.getByte(); + l.length = e; + for (g = 0; g < e; ++g) l[g] = String.fromCharCode(t.getByte()); + h.push(l.join("")); + } + o = []; + for (g = 0; g < e; ++g) { + const e = s[g]; + e < 258 ? o.push(Oi[e]) : o.push(h[e - 258]); + } + break; + case 196608: + break; + default: + warn("Unknown/unsupported post table version " + n); + c = !1; + i.defaultEncoding && (o = i.defaultEncoding); + } + i.glyphNames = o; + return c; + })(n.post, i, l); + n.post = { tag: "post", data: createPostTable(i) }; + const m = Object.create(null); + function hasGlyph(e) { + return !f[e]; + } + if (i.composite) { + const e = i.cidToGidMap || [], + t = 0 === e.length; + i.cMap.forEach(function (i, a) { + "string" == typeof a && (a = convertCidString(i, a, !0)); + if (a > 65535) throw new FormatError("Max size of CID is 65,535"); + let s = -1; + t ? (s = a) : void 0 !== e[a] && (s = e[a]); + s >= 0 && s < l && hasGlyph(s) && (m[i] = s); + }); + } else { + const e = (function readCmapTable(e, t, i, a) { + if (!e) { + warn("No cmap table available."); + return { + platformId: -1, + encodingId: -1, + mappings: [], + hasShortCmap: !1, + }; + } + let s, + r = (t.start || 0) + e.offset; + t.pos = r; + t.skip(2); + const n = t.getUint16(); + let o, + g = !1; + for (let e = 0; e < n; e++) { + const s = t.getUint16(), + r = t.getUint16(), + c = t.getInt32() >>> 0; + let h = !1; + if (o?.platformId !== s || o?.encodingId !== r) { + if (0 !== s || (0 !== r && 1 !== r && 3 !== r)) + if (1 === s && 0 === r) h = !0; + else if (3 !== s || 1 !== r || (!a && o)) { + if (i && 3 === s && 0 === r) { + h = !0; + let i = !0; + if (e < n - 1) { + const e = t.peekBytes(2); + int16(e[0], e[1]) < s && (i = !1); + } + i && (g = !0); + } + } else { + h = !0; + i || (g = !0); + } + else h = !0; + h && (o = { platformId: s, encodingId: r, offset: c }); + if (g) break; + } + } + o && (t.pos = r + o.offset); + if (!o || -1 === t.peekByte()) { + warn("Could not find a preferred cmap table."); + return { + platformId: -1, + encodingId: -1, + mappings: [], + hasShortCmap: !1, + }; + } + const c = t.getUint16(); + let h = !1; + const l = []; + let C, Q; + if (0 === c) { + t.skip(4); + for (C = 0; C < 256; C++) { + const e = t.getByte(); + e && l.push({ charCode: C, glyphId: e }); + } + h = !0; + } else if (2 === c) { + t.skip(4); + const e = []; + let i = 0; + for (let a = 0; a < 256; a++) { + const a = t.getUint16() >> 3; + e.push(a); + i = Math.max(a, i); + } + const a = []; + for (let e = 0; e <= i; e++) + a.push({ + firstCode: t.getUint16(), + entryCount: t.getUint16(), + idDelta: signedInt16(t.getByte(), t.getByte()), + idRangePos: t.pos + t.getUint16(), + }); + for (let i = 0; i < 256; i++) + if (0 === e[i]) { + t.pos = a[0].idRangePos + 2 * i; + Q = t.getUint16(); + l.push({ charCode: i, glyphId: Q }); + } else { + const s = a[e[i]]; + for (C = 0; C < s.entryCount; C++) { + const e = (i << 8) + C + s.firstCode; + t.pos = s.idRangePos + 2 * C; + Q = t.getUint16(); + 0 !== Q && (Q = (Q + s.idDelta) % 65536); + l.push({ charCode: e, glyphId: Q }); + } + } + } else if (4 === c) { + t.skip(4); + const e = t.getUint16() >> 1; + t.skip(6); + const i = []; + let a; + for (a = 0; a < e; a++) i.push({ end: t.getUint16() }); + t.skip(2); + for (a = 0; a < e; a++) i[a].start = t.getUint16(); + for (a = 0; a < e; a++) i[a].delta = t.getUint16(); + let n, + o = 0; + for (a = 0; a < e; a++) { + s = i[a]; + const r = t.getUint16(); + if (r) { + n = (r >> 1) - (e - a); + s.offsetIndex = n; + o = Math.max(o, n + s.end - s.start + 1); + } else s.offsetIndex = -1; + } + const g = []; + for (C = 0; C < o; C++) g.push(t.getUint16()); + for (a = 0; a < e; a++) { + s = i[a]; + r = s.start; + const e = s.end, + t = s.delta; + n = s.offsetIndex; + for (C = r; C <= e; C++) + if (65535 !== C) { + Q = n < 0 ? C : g[n + C - r]; + Q = (Q + t) & 65535; + l.push({ charCode: C, glyphId: Q }); + } + } + } else if (6 === c) { + t.skip(4); + const e = t.getUint16(), + i = t.getUint16(); + for (C = 0; C < i; C++) { + Q = t.getUint16(); + const i = e + C; + l.push({ charCode: i, glyphId: Q }); + } + } else { + if (12 !== c) { + warn("cmap table has unsupported format: " + c); + return { + platformId: -1, + encodingId: -1, + mappings: [], + hasShortCmap: !1, + }; + } + { + t.skip(10); + const e = t.getInt32() >>> 0; + for (C = 0; C < e; C++) { + const e = t.getInt32() >>> 0, + i = t.getInt32() >>> 0; + let a = t.getInt32() >>> 0; + for (let t = e; t <= i; t++) + l.push({ charCode: t, glyphId: a++ }); + } + } + } + l.sort(function (e, t) { + return e.charCode - t.charCode; + }); + for (let e = 1; e < l.length; e++) + if (l[e - 1].charCode === l[e].charCode) { + l.splice(e, 1); + e--; + } + return { + platformId: o.platformId, + encodingId: o.encodingId, + mappings: l, + hasShortCmap: h, + }; + })(n.cmap, t, this.isSymbolicFont, i.hasEncoding), + a = e.platformId, + s = e.encodingId, + r = e.mappings; + let o = [], + g = !1; + !i.hasEncoding || + ("MacRomanEncoding" !== i.baseEncodingName && + "WinAnsiEncoding" !== i.baseEncodingName) || + (o = getEncoding(i.baseEncodingName)); + if ( + i.hasEncoding && + !this.isSymbolicFont && + ((3 === a && 1 === s) || (1 === a && 0 === s)) + ) { + const e = Ni(); + for (let t = 0; t < 256; t++) { + let n; + n = + void 0 !== this.differences[t] + ? this.differences[t] + : o.length && "" !== o[t] + ? o[t] + : fi[t]; + if (!n) continue; + const g = recoverGlyphName(n, e); + let c; + 3 === a && 1 === s + ? (c = e[g]) + : 1 === a && 0 === s && (c = di.indexOf(g)); + if (void 0 === c) { + if ( + !i.glyphNames && + i.hasIncludedToUnicodeMap && + !(this.toUnicode instanceof IdentityToUnicodeMap) + ) { + const e = this.toUnicode.get(t); + e && (c = e.codePointAt(0)); + } + if (void 0 === c) continue; + } + for (const e of r) + if (e.charCode === c) { + m[t] = e.glyphId; + break; + } + } + } else if (0 === a) { + for (const e of r) m[e.charCode] = e.glyphId; + g = !0; + } else if (3 === a && 0 === s) + for (const e of r) { + let t = e.charCode; + t >= 61440 && t <= 61695 && (t &= 255); + m[t] = e.glyphId; + } + else for (const e of r) m[e.charCode] = e.glyphId; + if (i.glyphNames && (o.length || this.differences.length)) + for (let e = 0; e < 256; ++e) { + if (!g && void 0 !== m[e]) continue; + const t = this.differences[e] || o[e]; + if (!t) continue; + const a = i.glyphNames.indexOf(t); + a > 0 && hasGlyph(a) && (m[e] = a); + } + } + 0 === m.length && (m[0] = 0); + let y = C - 1; + Q || (y = 0); + if (!i.cssFontInfo) { + const e = adjustMapping(m, hasGlyph, y, this.toUnicode); + this.toFontChar = e.toFontChar; + n.cmap = { + tag: "cmap", + data: createCmapTable(e.charCodeToGlyphId, e.toUnicodeExtraMap, C), + }; + (n["OS/2"] && + (function validateOS2Table(e, t) { + t.pos = (t.start || 0) + e.offset; + const i = t.getUint16(); + t.skip(60); + const a = t.getUint16(); + if (i < 4 && 768 & a) return !1; + if (t.getUint16() > t.getUint16()) return !1; + t.skip(6); + if (0 === t.getUint16()) return !1; + e.data[8] = e.data[9] = 0; + return !0; + })(n["OS/2"], t)) || + (n["OS/2"] = { + tag: "OS/2", + data: createOS2Table(i, e.charCodeToGlyphId, p), + }); + } + if (!c) + try { + g = new Stream(n["CFF "].data); + o = new CFFParser(g, i, Yi).parse(); + o.duplicateFirstGlyph(); + const e = new CFFCompiler(o); + n["CFF "].data = e.compile(); + } catch { + warn("Failed to compile font " + i.loadedName); + } + if (n.name) { + const [t, a] = readNameTable(n.name); + n.name.data = createNameTable(e, t); + this.psName = t[0][6] || null; + i.composite || + (function adjustTrueTypeToUnicode(e, t, i) { + if (e.isInternalFont) return; + if (e.hasIncludedToUnicodeMap) return; + if (e.hasEncoding) return; + if (e.toUnicode instanceof IdentityToUnicodeMap) return; + if (!t) return; + if (0 === i.length) return; + if (e.defaultEncoding === pi) return; + for (const e of i) if (!isWinNameRecord(e)) return; + const a = pi, + s = [], + r = Ni(); + for (const e in a) { + const t = a[e]; + if ("" === t) continue; + const i = r[t]; + void 0 !== i && (s[e] = String.fromCharCode(i)); + } + s.length > 0 && e.toUnicode.amend(s); + })(i, this.isSymbolicFont, a); + } else n.name = { tag: "name", data: createNameTable(this.name) }; + const w = new OpenTypeFileBuilder(r.version); + for (const e in n) w.addTable(e, n[e].data); + return w.toArray(); + } + convert(e, t, i) { + i.fixedPitch = !1; + i.builtInEncoding && + (function adjustType1ToUnicode(e, t) { + if (e.isInternalFont) return; + if (e.hasIncludedToUnicodeMap) return; + if (t === e.defaultEncoding) return; + if (e.toUnicode instanceof IdentityToUnicodeMap) return; + const i = [], + a = Ni(); + for (const s in t) { + if ( + e.hasEncoding && + (e.baseEncodingName || void 0 !== e.differences[s]) + ) + continue; + const r = getUnicodeForGlyph(t[s], a); + -1 !== r && (i[s] = String.fromCharCode(r)); + } + i.length > 0 && e.toUnicode.amend(i); + })(i, i.builtInEncoding); + let s = 1; + t instanceof CFFFont && (s = t.numGlyphs - 1); + const r = t.getGlyphMapping(i); + let n = null, + o = r, + g = null; + if (!i.cssFontInfo) { + n = adjustMapping(r, t.hasGlyphId.bind(t), s, this.toUnicode); + this.toFontChar = n.toFontChar; + o = n.charCodeToGlyphId; + g = n.toUnicodeExtraMap; + } + const c = t.numGlyphs; + function getCharCodes(e, t) { + let i = null; + for (const a in e) t === e[a] && (i ||= []).push(0 | a); + return i; + } + function createCharCode(e, t) { + for (const i in e) if (t === e[i]) return 0 | i; + n.charCodeToGlyphId[n.nextAvailableFontCharCode] = t; + return n.nextAvailableFontCharCode++; + } + const h = t.seacs; + if (n && h?.length) { + const e = i.fontMatrix || a, + s = t.getCharset(), + o = Object.create(null); + for (let t in h) { + t |= 0; + const i = h[t], + a = fi[i[2]], + g = fi[i[3]], + c = s.indexOf(a), + l = s.indexOf(g); + if (c < 0 || l < 0) continue; + const C = { + x: i[0] * e[0] + i[1] * e[2] + e[4], + y: i[0] * e[1] + i[1] * e[3] + e[5], + }, + Q = getCharCodes(r, t); + if (Q) + for (const e of Q) { + const t = n.charCodeToGlyphId, + i = createCharCode(t, c), + a = createCharCode(t, l); + o[e] = { + baseFontCharCode: i, + accentFontCharCode: a, + accentOffset: C, + }; + } + } + i.seacMap = o; + } + const l = 1 / (i.fontMatrix || a)[0], + C = new OpenTypeFileBuilder("OTTO"); + C.addTable("CFF ", t.data); + C.addTable("OS/2", createOS2Table(i, o)); + C.addTable("cmap", createCmapTable(o, g, c)); + C.addTable( + "head", + "\0\0\0\0\0\0\0\0\0\0_<õ\0\0" + + safeString16(l) + + "\0\0\0\0ž\v~'\0\0\0\0ž\v~'\0\0" + + safeString16(i.descent) + + "ÿ" + + safeString16(i.ascent) + + string16(i.italicAngle ? 2 : 0) + + "\0\0\0\0\0\0\0", + ); + C.addTable( + "hhea", + "\0\0\0" + + safeString16(i.ascent) + + safeString16(i.descent) + + "\0\0ÿÿ\0\0\0\0\0\0" + + safeString16(i.capHeight) + + safeString16(Math.tan(i.italicAngle) * i.xHeight) + + "\0\0\0\0\0\0\0\0\0\0\0\0" + + string16(c), + ); + C.addTable( + "hmtx", + (function fontFieldsHmtx() { + const e = t.charstrings, + i = t.cff ? t.cff.widths : null; + let a = "\0\0\0\0"; + for (let t = 1, s = c; t < s; t++) { + let s = 0; + if (e) { + const i = e[t - 1]; + s = "width" in i ? i.width : 0; + } else i && (s = Math.ceil(i[t] || 0)); + a += string16(s) + string16(0); + } + return a; + })(), + ); + C.addTable("maxp", "\0\0P\0" + string16(c)); + C.addTable("name", createNameTable(e)); + C.addTable("post", createPostTable(i)); + return C.toArray(); + } + _charToGlyph(e, t = !1) { + let i, + a, + s, + r = this._glyphCache[e]; + if (r?.isSpace === t) return r; + let n = e; + if (this.cMap?.contains(e)) { + n = this.cMap.lookup(e); + "string" == typeof n && (n = convertCidString(e, n)); + } + a = this.widths[n]; + "number" != typeof a && (a = this.defaultWidth); + const o = this.vmetrics?.[n]; + let g = this.toUnicode.get(e) || e; + "number" == typeof g && (g = String.fromCharCode(g)); + let c = void 0 !== this.toFontChar[e]; + i = this.toFontChar[e] || e; + if (this.missingFile) { + const t = this.differences[e] || this.defaultEncoding[e]; + (".notdef" !== t && "" !== t) || "Type1" !== this.type || (i = 32); + i = (function mapSpecialUnicodeValues(e) { + return e >= 65520 && e <= 65535 + ? 0 + : e >= 62976 && e <= 63743 + ? xi()[e] || e + : 173 === e + ? 45 + : e; + })(i); + } + this.isType3Font && (s = i); + let h = null; + if (this.seacMap?.[e]) { + c = !0; + const t = this.seacMap[e]; + i = t.baseFontCharCode; + h = { + fontChar: String.fromCodePoint(t.accentFontCharCode), + offset: t.accentOffset, + }; + } + let l = ""; + "number" == typeof i && + (i <= 1114111 + ? (l = String.fromCodePoint(i)) + : warn(`charToGlyph - invalid fontCharCode: ${i}`)); + r = new fonts_Glyph(e, l, g, h, a, o, s, t, c); + return (this._glyphCache[e] = r); + } + charsToGlyphs(e) { + let t = this._charsCache[e]; + if (t) return t; + t = []; + if (this.cMap) { + const i = Object.create(null), + a = e.length; + let s = 0; + for (; s < a; ) { + this.cMap.readCharCode(e, s, i); + const { charcode: a, length: r } = i; + s += r; + const n = this._charToGlyph(a, 1 === r && 32 === e.charCodeAt(s - 1)); + t.push(n); + } + } else + for (let i = 0, a = e.length; i < a; ++i) { + const a = e.charCodeAt(i), + s = this._charToGlyph(a, 32 === a); + t.push(s); + } + return (this._charsCache[e] = t); + } + getCharPositions(e) { + const t = []; + if (this.cMap) { + const i = Object.create(null); + let a = 0; + for (; a < e.length; ) { + this.cMap.readCharCode(e, a, i); + const s = i.length; + t.push([a, a + s]); + a += s; + } + } else for (let i = 0, a = e.length; i < a; ++i) t.push([i, i + 1]); + return t; + } + get glyphCacheValues() { + return Object.values(this._glyphCache); + } + encodeString(e) { + const t = [], + i = [], + hasCurrentBufErrors = () => t.length % 2 == 1, + a = + this.toUnicode instanceof IdentityToUnicodeMap + ? (e) => this.toUnicode.charCodeOf(e) + : (e) => this.toUnicode.charCodeOf(String.fromCodePoint(e)); + for (let s = 0, r = e.length; s < r; s++) { + const r = e.codePointAt(s); + r > 55295 && (r < 57344 || r > 65533) && s++; + if (this.toUnicode) { + const e = a(r); + if (-1 !== e) { + if (hasCurrentBufErrors()) { + t.push(i.join("")); + i.length = 0; + } + for ( + let t = (this.cMap ? this.cMap.getCharCodeLength(e) : 1) - 1; + t >= 0; + t-- + ) + i.push(String.fromCharCode((e >> (8 * t)) & 255)); + continue; + } + } + if (!hasCurrentBufErrors()) { + t.push(i.join("")); + i.length = 0; + } + i.push(String.fromCodePoint(r)); + } + t.push(i.join("")); + return t; + } +} +class ErrorFont { + constructor(e) { + this.error = e; + this.loadedName = "g_font_error"; + this.missingFile = !0; + } + charsToGlyphs() { + return []; + } + encodeString(e) { + return [e]; + } + exportData(e = !1) { + return { error: this.error }; + } +} +const Ea = 2, + ua = 3, + da = 4, + fa = 5, + pa = 6, + ma = 7; +class Pattern { + constructor() { + unreachable("Cannot initialize Pattern."); + } + static parseShading(e, t, i, a, s) { + const r = e instanceof BaseStream ? e.dict : e, + n = r.get("ShadingType"); + try { + switch (n) { + case Ea: + case ua: + return new RadialAxialShading(r, t, i, a, s); + case da: + case fa: + case pa: + case ma: + return new MeshShading(e, t, i, a, s); + default: + throw new FormatError("Unsupported ShadingType: " + n); + } + } catch (e) { + if (e instanceof MissingDataException) throw e; + warn(e); + return new DummyShading(); + } + } +} +class BaseShading { + static SMALL_NUMBER = 1e-6; + constructor() { + this.constructor === BaseShading && + unreachable("Cannot initialize BaseShading."); + } + getIR() { + unreachable("Abstract method `getIR` called."); + } +} +class RadialAxialShading extends BaseShading { + constructor(e, t, i, a, s) { + super(); + this.shadingType = e.get("ShadingType"); + let r = 0; + this.shadingType === Ea ? (r = 4) : this.shadingType === ua && (r = 6); + this.coordsArr = e.getArray("Coords"); + if (!isNumberArray(this.coordsArr, r)) + throw new FormatError("RadialAxialShading: Invalid /Coords array."); + const n = ColorSpace.parse({ + cs: e.getRaw("CS") || e.getRaw("ColorSpace"), + xref: t, + resources: i, + pdfFunctionFactory: a, + localColorSpaceCache: s, + }); + this.bbox = lookupNormalRect(e.getArray("BBox"), null); + let o = 0, + g = 1; + const c = e.getArray("Domain"); + isNumberArray(c, 2) && ([o, g] = c); + let h = !1, + l = !1; + const C = e.getArray("Extend"); + (function isBooleanArray(e, t) { + return ( + Array.isArray(e) && + (null === t || e.length === t) && + e.every((e) => "boolean" == typeof e) + ); + })(C, 2) && ([h, l] = C); + if (!(this.shadingType !== ua || (h && l))) { + const [e, t, i, a, s, r] = this.coordsArr, + n = Math.hypot(e - a, t - s); + i <= r + n && r <= i + n && warn("Unsupported radial gradient."); + } + this.extendStart = h; + this.extendEnd = l; + const Q = e.getRaw("Function"), + E = a.createFromArray(Q), + u = (g - o) / 840, + d = (this.colorStops = []); + if (o >= g || u <= 0) { + info("Bad shading domain."); + return; + } + const f = new Float32Array(n.numComps), + p = new Float32Array(1); + let m, + y = 0; + p[0] = o; + E(p, 0, f, 0); + let w = n.getRgb(f, 0); + const b = Util.makeHexColor(w[0], w[1], w[2]); + d.push([0, b]); + let D = 1; + p[0] = o + u; + E(p, 0, f, 0); + let F = n.getRgb(f, 0), + S = F[0] - w[0] + 1, + k = F[1] - w[1] + 1, + R = F[2] - w[2] + 1, + N = F[0] - w[0] - 1, + G = F[1] - w[1] - 1, + x = F[2] - w[2] - 1; + for (let e = 2; e < 840; e++) { + p[0] = o + e * u; + E(p, 0, f, 0); + m = n.getRgb(f, 0); + const t = e - y; + S = Math.min(S, (m[0] - w[0] + 1) / t); + k = Math.min(k, (m[1] - w[1] + 1) / t); + R = Math.min(R, (m[2] - w[2] + 1) / t); + N = Math.max(N, (m[0] - w[0] - 1) / t); + G = Math.max(G, (m[1] - w[1] - 1) / t); + x = Math.max(x, (m[2] - w[2] - 1) / t); + if (!(N <= S && G <= k && x <= R)) { + const e = Util.makeHexColor(F[0], F[1], F[2]); + d.push([D / 840, e]); + S = m[0] - F[0] + 1; + k = m[1] - F[1] + 1; + R = m[2] - F[2] + 1; + N = m[0] - F[0] - 1; + G = m[1] - F[1] - 1; + x = m[2] - F[2] - 1; + y = D; + w = F; + } + D = e; + F = m; + } + const M = Util.makeHexColor(F[0], F[1], F[2]); + d.push([1, M]); + let U = "transparent"; + if (e.has("Background")) { + m = n.getRgb(e.get("Background"), 0); + U = Util.makeHexColor(m[0], m[1], m[2]); + } + if (!h) { + d.unshift([0, U]); + d[1][0] += BaseShading.SMALL_NUMBER; + } + if (!l) { + d.at(-1)[0] -= BaseShading.SMALL_NUMBER; + d.push([1, U]); + } + this.colorStops = d; + } + getIR() { + const { coordsArr: e, shadingType: t } = this; + let i, a, s, r, n; + if (t === Ea) { + a = [e[0], e[1]]; + s = [e[2], e[3]]; + r = null; + n = null; + i = "axial"; + } else if (t === ua) { + a = [e[0], e[1]]; + s = [e[3], e[4]]; + r = e[2]; + n = e[5]; + i = "radial"; + } else unreachable(`getPattern type unknown: ${t}`); + return ["RadialAxial", i, this.bbox, this.colorStops, a, s, r, n]; + } +} +class MeshStreamReader { + constructor(e, t) { + this.stream = e; + this.context = t; + this.buffer = 0; + this.bufferLength = 0; + const i = t.numComps; + this.tmpCompsBuf = new Float32Array(i); + const a = t.colorSpace.numComps; + this.tmpCsCompsBuf = t.colorFn ? new Float32Array(a) : this.tmpCompsBuf; + } + get hasData() { + if (this.stream.end) return this.stream.pos < this.stream.end; + if (this.bufferLength > 0) return !0; + const e = this.stream.getByte(); + if (e < 0) return !1; + this.buffer = e; + this.bufferLength = 8; + return !0; + } + readBits(e) { + let t = this.buffer, + i = this.bufferLength; + if (32 === e) { + if (0 === i) + return ( + ((this.stream.getByte() << 24) | + (this.stream.getByte() << 16) | + (this.stream.getByte() << 8) | + this.stream.getByte()) >>> + 0 + ); + t = + (t << 24) | + (this.stream.getByte() << 16) | + (this.stream.getByte() << 8) | + this.stream.getByte(); + const e = this.stream.getByte(); + this.buffer = e & ((1 << i) - 1); + return ((t << (8 - i)) | ((255 & e) >> i)) >>> 0; + } + if (8 === e && 0 === i) return this.stream.getByte(); + for (; i < e; ) { + t = (t << 8) | this.stream.getByte(); + i += 8; + } + i -= e; + this.bufferLength = i; + this.buffer = t & ((1 << i) - 1); + return t >> i; + } + align() { + this.buffer = 0; + this.bufferLength = 0; + } + readFlag() { + return this.readBits(this.context.bitsPerFlag); + } + readCoordinate() { + const e = this.context.bitsPerCoordinate, + t = this.readBits(e), + i = this.readBits(e), + a = this.context.decode, + s = e < 32 ? 1 / ((1 << e) - 1) : 2.3283064365386963e-10; + return [t * s * (a[1] - a[0]) + a[0], i * s * (a[3] - a[2]) + a[2]]; + } + readComponents() { + const e = this.context.numComps, + t = this.context.bitsPerComponent, + i = t < 32 ? 1 / ((1 << t) - 1) : 2.3283064365386963e-10, + a = this.context.decode, + s = this.tmpCompsBuf; + for (let r = 0, n = 4; r < e; r++, n += 2) { + const e = this.readBits(t); + s[r] = e * i * (a[n + 1] - a[n]) + a[n]; + } + const r = this.tmpCsCompsBuf; + this.context.colorFn && this.context.colorFn(s, 0, r, 0); + return this.context.colorSpace.getRgb(r, 0); + } +} +let ya = Object.create(null); +function getB(e) { + return (ya[e] ||= (function buildB(e) { + const t = []; + for (let i = 0; i <= e; i++) { + const a = i / e, + s = 1 - a; + t.push( + new Float32Array([s ** 3, 3 * a * s ** 2, 3 * a ** 2 * s, a ** 3]), + ); + } + return t; + })(e)); +} +class MeshShading extends BaseShading { + static MIN_SPLIT_PATCH_CHUNKS_AMOUNT = 3; + static MAX_SPLIT_PATCH_CHUNKS_AMOUNT = 20; + static TRIANGLE_DENSITY = 20; + constructor(e, t, i, a, s) { + super(); + if (!(e instanceof BaseStream)) + throw new FormatError("Mesh data is not a stream"); + const r = e.dict; + this.shadingType = r.get("ShadingType"); + this.bbox = lookupNormalRect(r.getArray("BBox"), null); + const n = ColorSpace.parse({ + cs: r.getRaw("CS") || r.getRaw("ColorSpace"), + xref: t, + resources: i, + pdfFunctionFactory: a, + localColorSpaceCache: s, + }); + this.background = r.has("Background") + ? n.getRgb(r.get("Background"), 0) + : null; + const o = r.getRaw("Function"), + g = o ? a.createFromArray(o) : null; + this.coords = []; + this.colors = []; + this.figures = []; + const c = { + bitsPerCoordinate: r.get("BitsPerCoordinate"), + bitsPerComponent: r.get("BitsPerComponent"), + bitsPerFlag: r.get("BitsPerFlag"), + decode: r.getArray("Decode"), + colorFn: g, + colorSpace: n, + numComps: g ? 1 : n.numComps, + }, + h = new MeshStreamReader(e, c); + let l = !1; + switch (this.shadingType) { + case da: + this._decodeType4Shading(h); + break; + case fa: + const e = 0 | r.get("VerticesPerRow"); + if (e < 2) throw new FormatError("Invalid VerticesPerRow"); + this._decodeType5Shading(h, e); + break; + case pa: + this._decodeType6Shading(h); + l = !0; + break; + case ma: + this._decodeType7Shading(h); + l = !0; + break; + default: + unreachable("Unsupported mesh type."); + } + if (l) { + this._updateBounds(); + for (let e = 0, t = this.figures.length; e < t; e++) + this._buildFigureFromPatch(e); + } + this._updateBounds(); + this._packData(); + } + _decodeType4Shading(e) { + const t = this.coords, + i = this.colors, + a = [], + s = []; + let r = 0; + for (; e.hasData; ) { + const n = e.readFlag(), + o = e.readCoordinate(), + g = e.readComponents(); + if (0 === r) { + if (!(0 <= n && n <= 2)) throw new FormatError("Unknown type4 flag"); + switch (n) { + case 0: + r = 3; + break; + case 1: + s.push(s.at(-2), s.at(-1)); + r = 1; + break; + case 2: + s.push(s.at(-3), s.at(-1)); + r = 1; + } + a.push(n); + } + s.push(t.length); + t.push(o); + i.push(g); + r--; + e.align(); + } + this.figures.push({ + type: "triangles", + coords: new Int32Array(s), + colors: new Int32Array(s), + }); + } + _decodeType5Shading(e, t) { + const i = this.coords, + a = this.colors, + s = []; + for (; e.hasData; ) { + const t = e.readCoordinate(), + r = e.readComponents(); + s.push(i.length); + i.push(t); + a.push(r); + } + this.figures.push({ + type: "lattice", + coords: new Int32Array(s), + colors: new Int32Array(s), + verticesPerRow: t, + }); + } + _decodeType6Shading(e) { + const t = this.coords, + i = this.colors, + a = new Int32Array(16), + s = new Int32Array(4); + for (; e.hasData; ) { + const r = e.readFlag(); + if (!(0 <= r && r <= 3)) throw new FormatError("Unknown type6 flag"); + const n = t.length; + for (let i = 0, a = 0 !== r ? 8 : 12; i < a; i++) + t.push(e.readCoordinate()); + const o = i.length; + for (let t = 0, a = 0 !== r ? 2 : 4; t < a; t++) + i.push(e.readComponents()); + let g, c, h, l; + switch (r) { + case 0: + a[12] = n + 3; + a[13] = n + 4; + a[14] = n + 5; + a[15] = n + 6; + a[8] = n + 2; + a[11] = n + 7; + a[4] = n + 1; + a[7] = n + 8; + a[0] = n; + a[1] = n + 11; + a[2] = n + 10; + a[3] = n + 9; + s[2] = o + 1; + s[3] = o + 2; + s[0] = o; + s[1] = o + 3; + break; + case 1: + g = a[12]; + c = a[13]; + h = a[14]; + l = a[15]; + a[12] = l; + a[13] = n + 0; + a[14] = n + 1; + a[15] = n + 2; + a[8] = h; + a[11] = n + 3; + a[4] = c; + a[7] = n + 4; + a[0] = g; + a[1] = n + 7; + a[2] = n + 6; + a[3] = n + 5; + g = s[2]; + c = s[3]; + s[2] = c; + s[3] = o; + s[0] = g; + s[1] = o + 1; + break; + case 2: + g = a[15]; + c = a[11]; + a[12] = a[3]; + a[13] = n + 0; + a[14] = n + 1; + a[15] = n + 2; + a[8] = a[7]; + a[11] = n + 3; + a[4] = c; + a[7] = n + 4; + a[0] = g; + a[1] = n + 7; + a[2] = n + 6; + a[3] = n + 5; + g = s[3]; + s[2] = s[1]; + s[3] = o; + s[0] = g; + s[1] = o + 1; + break; + case 3: + a[12] = a[0]; + a[13] = n + 0; + a[14] = n + 1; + a[15] = n + 2; + a[8] = a[1]; + a[11] = n + 3; + a[4] = a[2]; + a[7] = n + 4; + a[0] = a[3]; + a[1] = n + 7; + a[2] = n + 6; + a[3] = n + 5; + s[2] = s[0]; + s[3] = o; + s[0] = s[1]; + s[1] = o + 1; + } + a[5] = t.length; + t.push([ + (-4 * t[a[0]][0] - + t[a[15]][0] + + 6 * (t[a[4]][0] + t[a[1]][0]) - + 2 * (t[a[12]][0] + t[a[3]][0]) + + 3 * (t[a[13]][0] + t[a[7]][0])) / + 9, + (-4 * t[a[0]][1] - + t[a[15]][1] + + 6 * (t[a[4]][1] + t[a[1]][1]) - + 2 * (t[a[12]][1] + t[a[3]][1]) + + 3 * (t[a[13]][1] + t[a[7]][1])) / + 9, + ]); + a[6] = t.length; + t.push([ + (-4 * t[a[3]][0] - + t[a[12]][0] + + 6 * (t[a[2]][0] + t[a[7]][0]) - + 2 * (t[a[0]][0] + t[a[15]][0]) + + 3 * (t[a[4]][0] + t[a[14]][0])) / + 9, + (-4 * t[a[3]][1] - + t[a[12]][1] + + 6 * (t[a[2]][1] + t[a[7]][1]) - + 2 * (t[a[0]][1] + t[a[15]][1]) + + 3 * (t[a[4]][1] + t[a[14]][1])) / + 9, + ]); + a[9] = t.length; + t.push([ + (-4 * t[a[12]][0] - + t[a[3]][0] + + 6 * (t[a[8]][0] + t[a[13]][0]) - + 2 * (t[a[0]][0] + t[a[15]][0]) + + 3 * (t[a[11]][0] + t[a[1]][0])) / + 9, + (-4 * t[a[12]][1] - + t[a[3]][1] + + 6 * (t[a[8]][1] + t[a[13]][1]) - + 2 * (t[a[0]][1] + t[a[15]][1]) + + 3 * (t[a[11]][1] + t[a[1]][1])) / + 9, + ]); + a[10] = t.length; + t.push([ + (-4 * t[a[15]][0] - + t[a[0]][0] + + 6 * (t[a[11]][0] + t[a[14]][0]) - + 2 * (t[a[12]][0] + t[a[3]][0]) + + 3 * (t[a[2]][0] + t[a[8]][0])) / + 9, + (-4 * t[a[15]][1] - + t[a[0]][1] + + 6 * (t[a[11]][1] + t[a[14]][1]) - + 2 * (t[a[12]][1] + t[a[3]][1]) + + 3 * (t[a[2]][1] + t[a[8]][1])) / + 9, + ]); + this.figures.push({ + type: "patch", + coords: new Int32Array(a), + colors: new Int32Array(s), + }); + } + } + _decodeType7Shading(e) { + const t = this.coords, + i = this.colors, + a = new Int32Array(16), + s = new Int32Array(4); + for (; e.hasData; ) { + const r = e.readFlag(); + if (!(0 <= r && r <= 3)) throw new FormatError("Unknown type7 flag"); + const n = t.length; + for (let i = 0, a = 0 !== r ? 12 : 16; i < a; i++) + t.push(e.readCoordinate()); + const o = i.length; + for (let t = 0, a = 0 !== r ? 2 : 4; t < a; t++) + i.push(e.readComponents()); + let g, c, h, l; + switch (r) { + case 0: + a[12] = n + 3; + a[13] = n + 4; + a[14] = n + 5; + a[15] = n + 6; + a[8] = n + 2; + a[9] = n + 13; + a[10] = n + 14; + a[11] = n + 7; + a[4] = n + 1; + a[5] = n + 12; + a[6] = n + 15; + a[7] = n + 8; + a[0] = n; + a[1] = n + 11; + a[2] = n + 10; + a[3] = n + 9; + s[2] = o + 1; + s[3] = o + 2; + s[0] = o; + s[1] = o + 3; + break; + case 1: + g = a[12]; + c = a[13]; + h = a[14]; + l = a[15]; + a[12] = l; + a[13] = n + 0; + a[14] = n + 1; + a[15] = n + 2; + a[8] = h; + a[9] = n + 9; + a[10] = n + 10; + a[11] = n + 3; + a[4] = c; + a[5] = n + 8; + a[6] = n + 11; + a[7] = n + 4; + a[0] = g; + a[1] = n + 7; + a[2] = n + 6; + a[3] = n + 5; + g = s[2]; + c = s[3]; + s[2] = c; + s[3] = o; + s[0] = g; + s[1] = o + 1; + break; + case 2: + g = a[15]; + c = a[11]; + a[12] = a[3]; + a[13] = n + 0; + a[14] = n + 1; + a[15] = n + 2; + a[8] = a[7]; + a[9] = n + 9; + a[10] = n + 10; + a[11] = n + 3; + a[4] = c; + a[5] = n + 8; + a[6] = n + 11; + a[7] = n + 4; + a[0] = g; + a[1] = n + 7; + a[2] = n + 6; + a[3] = n + 5; + g = s[3]; + s[2] = s[1]; + s[3] = o; + s[0] = g; + s[1] = o + 1; + break; + case 3: + a[12] = a[0]; + a[13] = n + 0; + a[14] = n + 1; + a[15] = n + 2; + a[8] = a[1]; + a[9] = n + 9; + a[10] = n + 10; + a[11] = n + 3; + a[4] = a[2]; + a[5] = n + 8; + a[6] = n + 11; + a[7] = n + 4; + a[0] = a[3]; + a[1] = n + 7; + a[2] = n + 6; + a[3] = n + 5; + s[2] = s[0]; + s[3] = o; + s[0] = s[1]; + s[1] = o + 1; + } + this.figures.push({ + type: "patch", + coords: new Int32Array(a), + colors: new Int32Array(s), + }); + } + } + _buildFigureFromPatch(e) { + const t = this.figures[e]; + assert("patch" === t.type, "Unexpected patch mesh figure"); + const i = this.coords, + a = this.colors, + s = t.coords, + r = t.colors, + n = Math.min(i[s[0]][0], i[s[3]][0], i[s[12]][0], i[s[15]][0]), + o = Math.min(i[s[0]][1], i[s[3]][1], i[s[12]][1], i[s[15]][1]), + g = Math.max(i[s[0]][0], i[s[3]][0], i[s[12]][0], i[s[15]][0]), + c = Math.max(i[s[0]][1], i[s[3]][1], i[s[12]][1], i[s[15]][1]); + let h = Math.ceil( + ((g - n) * MeshShading.TRIANGLE_DENSITY) / + (this.bounds[2] - this.bounds[0]), + ); + h = Math.max( + MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT, + Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, h), + ); + let l = Math.ceil( + ((c - o) * MeshShading.TRIANGLE_DENSITY) / + (this.bounds[3] - this.bounds[1]), + ); + l = Math.max( + MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT, + Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, l), + ); + const C = h + 1, + Q = new Int32Array((l + 1) * C), + E = new Int32Array((l + 1) * C); + let u = 0; + const d = new Uint8Array(3), + f = new Uint8Array(3), + p = a[r[0]], + m = a[r[1]], + y = a[r[2]], + w = a[r[3]], + b = getB(l), + D = getB(h); + for (let e = 0; e <= l; e++) { + d[0] = ((p[0] * (l - e) + y[0] * e) / l) | 0; + d[1] = ((p[1] * (l - e) + y[1] * e) / l) | 0; + d[2] = ((p[2] * (l - e) + y[2] * e) / l) | 0; + f[0] = ((m[0] * (l - e) + w[0] * e) / l) | 0; + f[1] = ((m[1] * (l - e) + w[1] * e) / l) | 0; + f[2] = ((m[2] * (l - e) + w[2] * e) / l) | 0; + for (let t = 0; t <= h; t++, u++) { + if (!((0 !== e && e !== l) || (0 !== t && t !== h))) continue; + let r = 0, + n = 0, + o = 0; + for (let a = 0; a <= 3; a++) + for (let g = 0; g <= 3; g++, o++) { + const c = b[e][a] * D[t][g]; + r += i[s[o]][0] * c; + n += i[s[o]][1] * c; + } + Q[u] = i.length; + i.push([r, n]); + E[u] = a.length; + const g = new Uint8Array(3); + g[0] = ((d[0] * (h - t) + f[0] * t) / h) | 0; + g[1] = ((d[1] * (h - t) + f[1] * t) / h) | 0; + g[2] = ((d[2] * (h - t) + f[2] * t) / h) | 0; + a.push(g); + } + } + Q[0] = s[0]; + E[0] = r[0]; + Q[h] = s[3]; + E[h] = r[1]; + Q[C * l] = s[12]; + E[C * l] = r[2]; + Q[C * l + h] = s[15]; + E[C * l + h] = r[3]; + this.figures[e] = { + type: "lattice", + coords: Q, + colors: E, + verticesPerRow: C, + }; + } + _updateBounds() { + let e = this.coords[0][0], + t = this.coords[0][1], + i = e, + a = t; + for (let s = 1, r = this.coords.length; s < r; s++) { + const r = this.coords[s][0], + n = this.coords[s][1]; + e = e > r ? r : e; + t = t > n ? n : t; + i = i < r ? r : i; + a = a < n ? n : a; + } + this.bounds = [e, t, i, a]; + } + _packData() { + let e, t, i, a; + const s = this.coords, + r = new Float32Array(2 * s.length); + for (e = 0, i = 0, t = s.length; e < t; e++) { + const t = s[e]; + r[i++] = t[0]; + r[i++] = t[1]; + } + this.coords = r; + const n = this.colors, + o = new Uint8Array(3 * n.length); + for (e = 0, i = 0, t = n.length; e < t; e++) { + const t = n[e]; + o[i++] = t[0]; + o[i++] = t[1]; + o[i++] = t[2]; + } + this.colors = o; + const g = this.figures; + for (e = 0, t = g.length; e < t; e++) { + const t = g[e], + s = t.coords, + r = t.colors; + for (i = 0, a = s.length; i < a; i++) { + s[i] *= 2; + r[i] *= 3; + } + } + } + getIR() { + const { bounds: e } = this; + if (e[2] - e[0] == 0 || e[3] - e[1] == 0) + throw new FormatError(`Invalid MeshShading bounds: [${e}].`); + return [ + "Mesh", + this.shadingType, + this.coords, + this.colors, + this.figures, + e, + this.bbox, + this.background, + ]; + } +} +class DummyShading extends BaseShading { + getIR() { + return ["Dummy"]; + } +} +function getTilingPatternIR(e, t, a) { + const s = lookupMatrix(t.getArray("Matrix"), i), + r = lookupNormalRect(t.getArray("BBox"), null); + if (!r || r[2] - r[0] == 0 || r[3] - r[1] == 0) + throw new FormatError("Invalid getTilingPatternIR /BBox array."); + const n = t.get("XStep"); + if ("number" != typeof n) + throw new FormatError("Invalid getTilingPatternIR /XStep value."); + const o = t.get("YStep"); + if ("number" != typeof o) + throw new FormatError("Invalid getTilingPatternIR /YStep value."); + const g = t.get("PaintType"); + if (!Number.isInteger(g)) + throw new FormatError("Invalid getTilingPatternIR /PaintType value."); + const c = t.get("TilingType"); + if (!Number.isInteger(c)) + throw new FormatError("Invalid getTilingPatternIR /TilingType value."); + return ["TilingPattern", a, e, s, r, n, o, g, c]; +} +const wa = [ + 1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566, + 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.54657, + 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, + 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859, + 0.92138, 0.83908, 0.7762, 0.73293, 0.87289, 0.73133, 0.7514, 0.81921, + 0.87356, 0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.9121, 0.86943, + 0.79795, 0.88198, 0.77958, 0.70864, 0.81055, 0.90399, 0.88653, 0.96017, + 0.82577, 0.77892, 0.78257, 0.97507, 1.54657, 0.97507, 0.85284, 0.89552, + 0.90176, 0.88762, 0.8785, 0.75241, 0.8785, 0.90518, 0.95015, 0.77618, + 0.8785, 0.88401, 0.91916, 0.86304, 0.88401, 0.91488, 0.8785, 0.8801, 0.8785, + 0.8785, 0.91343, 0.7173, 1.04106, 0.8785, 0.85075, 0.95794, 0.82616, + 0.85162, 0.79492, 0.88331, 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, + 0.91133, 0.89552, 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, 1.12401, + 0.96839, 0.85284, 0.68787, 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, + 0.90323, 1, 1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, 0.78864, + 0.82845, 0.84133, 0.75859, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, + 0.83908, 0.77539, 0.73293, 0.73133, 0.73133, 0.73133, 0.73133, 0.95958, + 0.95958, 0.95958, 0.95958, 0.88506, 0.9121, 0.86943, 0.86943, 0.86943, + 0.86943, 0.86943, 0.85284, 0.87508, 0.90399, 0.90399, 0.90399, 0.90399, + 0.77892, 0.79795, 0.90807, 0.88762, 0.88762, 0.88762, 0.88762, 0.88762, + 0.88762, 0.8715, 0.75241, 0.90518, 0.90518, 0.90518, 0.90518, 0.88401, + 0.88401, 0.88401, 0.88401, 0.8785, 0.8785, 0.8801, 0.8801, 0.8801, 0.8801, + 0.8801, 0.90747, 0.89049, 0.8785, 0.8785, 0.8785, 0.8785, 0.85162, 0.8785, + 0.85162, 0.83908, 0.88762, 0.83908, 0.88762, 0.83908, 0.88762, 0.73293, + 0.75241, 0.73293, 0.75241, 0.73293, 0.75241, 0.73293, 0.75241, 0.87289, + 0.83016, 0.88506, 0.93125, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, + 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.81921, 0.77618, 0.81921, + 0.77618, 0.81921, 0.77618, 1, 1, 0.87356, 0.8785, 0.91075, 0.89608, 0.95958, + 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, + 0.88401, 0.76229, 0.90167, 0.59526, 0.91916, 1, 1, 0.86304, 0.69225, + 0.88401, 1, 1, 0.70424, 0.79468, 0.91926, 0.88175, 0.70823, 0.94903, 0.9121, + 0.8785, 1, 1, 0.9121, 0.8785, 0.87802, 0.88656, 0.8785, 0.86943, 0.8801, + 0.86943, 0.8801, 0.86943, 0.8801, 0.87402, 0.89291, 0.77958, 0.91343, 1, 1, + 0.77958, 0.91343, 0.70864, 0.7173, 0.70864, 0.7173, 0.70864, 0.7173, + 0.70864, 0.7173, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399, 0.8785, + 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, + 0.8785, 0.96017, 0.95794, 0.77892, 0.85162, 0.77892, 0.78257, 0.79492, + 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908, 0.88762, + 0.77539, 0.8715, 0.87508, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 1.20528, + 1, 1.15543, 0.70674, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161, 1.06303, + 0.83908, 0.80352, 0.57184, 0.6965, 0.56289, 0.82001, 0.56029, 0.81235, + 1.02988, 0.83908, 0.7762, 0.68156, 0.80367, 0.73133, 0.78257, 0.87356, + 0.86943, 0.95958, 0.75727, 0.89019, 1.04924, 0.9121, 0.7648, 0.86943, + 0.87356, 0.79795, 0.78275, 0.81055, 0.77892, 0.9762, 0.82577, 0.99819, + 0.84896, 0.95958, 0.77892, 0.96108, 1.01407, 0.89049, 1.02988, 0.94211, + 0.96108, 0.8936, 0.84021, 0.87842, 0.96399, 0.79109, 0.89049, 1.00813, + 1.02988, 0.86077, 0.87445, 0.92099, 0.84723, 0.86513, 0.8801, 0.75638, + 0.85714, 0.78216, 0.79586, 0.87965, 0.94211, 0.97747, 0.78287, 0.97926, + 0.84971, 1.02988, 0.94211, 0.8801, 0.94211, 0.84971, 0.73133, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 0.90264, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 0.90518, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90548, 1, 1, 1, 1, 1, 1, + 0.96017, 0.95794, 0.96017, 0.95794, 0.96017, 0.95794, 0.77892, 0.85162, 1, + 1, 0.89552, 0.90527, 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.92794, + 0.87012, 0.87012, 0.87012, 0.89552, 0.89552, 1.42259, 0.71143, 1.06152, 1, + 1, 1.03372, 1.03372, 0.97171, 1.4956, 2.2807, 0.93835, 0.83406, 0.91133, + 0.84107, 0.91133, 1, 1, 1, 0.72021, 1, 1.23108, 0.83489, 0.88525, 0.88525, + 0.81499, 0.90527, 1.81055, 0.90527, 1.81055, 1.31006, 1.53711, 0.94434, + 1.08696, 1, 0.95018, 0.77192, 0.85284, 0.90747, 1.17534, 0.69825, 0.9716, + 1.37077, 0.90747, 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, + 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, + 1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 0.90727, 0.90727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + ], + ba = { lineHeight: 1.2207, lineGap: 0.2207 }, + Da = [ + 1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566, + 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.56239, + 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, + 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859, + 0.92138, 0.83908, 0.7762, 0.71805, 0.87289, 0.73133, 0.7514, 0.81921, + 0.87356, 0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.90872, 0.85938, + 0.79795, 0.87068, 0.77958, 0.69766, 0.81055, 0.90399, 0.88653, 0.96068, + 0.82577, 0.77892, 0.78257, 0.97507, 1.529, 0.97507, 0.85284, 0.89552, + 0.90176, 0.94908, 0.86411, 0.74012, 0.86411, 0.88323, 0.95015, 0.86411, + 0.86331, 0.88401, 0.91916, 0.86304, 0.88401, 0.9039, 0.86331, 0.86331, + 0.86411, 0.86411, 0.90464, 0.70852, 1.04106, 0.86331, 0.84372, 0.95794, + 0.82616, 0.84548, 0.79492, 0.88331, 1.69808, 0.88331, 0.85284, 0.97801, + 0.89552, 0.91133, 0.89552, 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, + 1.19129, 0.96839, 0.85284, 0.68787, 0.70645, 0.85592, 0.90747, 1.01466, + 1.0088, 0.90323, 1, 1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, 0.78864, + 0.82845, 0.84133, 0.75859, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, + 0.83908, 0.77539, 0.71805, 0.73133, 0.73133, 0.73133, 0.73133, 0.95958, + 0.95958, 0.95958, 0.95958, 0.88506, 0.90872, 0.85938, 0.85938, 0.85938, + 0.85938, 0.85938, 0.85284, 0.87068, 0.90399, 0.90399, 0.90399, 0.90399, + 0.77892, 0.79795, 0.90807, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, + 0.94908, 0.85887, 0.74012, 0.88323, 0.88323, 0.88323, 0.88323, 0.88401, + 0.88401, 0.88401, 0.88401, 0.8785, 0.86331, 0.86331, 0.86331, 0.86331, + 0.86331, 0.86331, 0.90747, 0.89049, 0.86331, 0.86331, 0.86331, 0.86331, + 0.84548, 0.86411, 0.84548, 0.83908, 0.94908, 0.83908, 0.94908, 0.83908, + 0.94908, 0.71805, 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.71805, + 0.74012, 0.87289, 0.79538, 0.88506, 0.92726, 0.73133, 0.88323, 0.73133, + 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.81921, + 0.86411, 0.81921, 0.86411, 0.81921, 0.86411, 1, 1, 0.87356, 0.86331, + 0.91075, 0.8777, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, + 0.95958, 0.88401, 0.95958, 0.88401, 0.76467, 0.90167, 0.59526, 0.91916, 1, + 1, 0.86304, 0.69225, 0.88401, 1, 1, 0.70424, 0.77312, 0.91926, 0.88175, + 0.70823, 0.94903, 0.90872, 0.86331, 1, 1, 0.90872, 0.86331, 0.86906, + 0.88116, 0.86331, 0.85938, 0.86331, 0.85938, 0.86331, 0.85938, 0.86331, + 0.87402, 0.86549, 0.77958, 0.90464, 1, 1, 0.77958, 0.90464, 0.69766, + 0.70852, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766, 0.70852, 1, 1, + 0.81055, 0.75841, 0.81055, 1.06452, 0.90399, 0.86331, 0.90399, 0.86331, + 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, + 0.96068, 0.95794, 0.77892, 0.84548, 0.77892, 0.78257, 0.79492, 0.78257, + 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908, 0.94908, 0.77539, + 0.85887, 0.87068, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 1.20528, 1, + 1.15543, 0.70088, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161, 1.48387, + 0.83908, 0.80352, 0.57118, 0.6965, 0.56347, 0.79179, 0.55853, 0.80346, + 1.02988, 0.83908, 0.7762, 0.67174, 0.86036, 0.73133, 0.78257, 0.87356, + 0.86441, 0.95958, 0.75727, 0.89019, 1.04924, 0.90872, 0.74889, 0.85938, + 0.87891, 0.79795, 0.7957, 0.81055, 0.77892, 0.97447, 0.82577, 0.97466, + 0.87179, 0.95958, 0.77892, 0.94252, 0.95612, 0.8753, 1.02988, 0.92733, + 0.94252, 0.87411, 0.84021, 0.8728, 0.95612, 0.74081, 0.8753, 1.02189, + 1.02988, 0.84814, 0.87445, 0.91822, 0.84723, 0.85668, 0.86331, 0.81344, + 0.87581, 0.76422, 0.82046, 0.96057, 0.92733, 0.99375, 0.78022, 0.95452, + 0.86015, 1.02988, 0.92733, 0.86331, 0.92733, 0.86015, 0.73133, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 0.90631, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 0.88323, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85174, 1, 1, 1, 1, 1, + 1, 0.96068, 0.95794, 0.96068, 0.95794, 0.96068, 0.95794, 0.77892, 0.84548, + 1, 1, 0.89552, 0.90527, 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.89807, + 0.87012, 0.87012, 0.87012, 0.89552, 0.89552, 1.42259, 0.71094, 1.06152, 1, + 1, 1.03372, 1.03372, 0.97171, 1.4956, 2.2807, 0.92972, 0.83406, 0.91133, + 0.83326, 0.91133, 1, 1, 1, 0.72021, 1, 1.23108, 0.83489, 0.88525, 0.88525, + 0.81499, 0.90616, 1.81055, 0.90527, 1.81055, 1.3107, 1.53711, 0.94434, + 1.08696, 1, 0.95018, 0.77192, 0.85284, 0.90747, 1.17534, 0.69825, 0.9716, + 1.37077, 0.90747, 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, + 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, + 1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 0.90727, 0.90727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + ], + Fa = { lineHeight: 1.2207, lineGap: 0.2207 }, + Sa = [ + 1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, + 1.15601, 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39543, + 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, + 0.91133, 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, + 0.88071, 0.8675, 0.81552, 0.72346, 0.85193, 0.73206, 0.7522, 0.81105, + 0.86275, 0.90685, 0.6377, 0.77892, 0.75593, 1.02638, 0.89249, 0.84118, + 0.77452, 0.85374, 0.75186, 0.67789, 0.79776, 0.88844, 0.85066, 0.94309, + 0.77818, 0.7306, 0.76659, 1.10369, 1.38313, 1.10369, 1.06139, 0.89552, + 0.8739, 0.9245, 0.9245, 0.83203, 0.9245, 0.85865, 1.09842, 0.9245, 0.9245, + 1.03297, 1.07692, 0.90918, 1.03297, 0.94959, 0.9245, 0.92274, 0.9245, + 0.9245, 1.02933, 0.77832, 1.20562, 0.9245, 0.8916, 0.98986, 0.86621, + 0.89453, 0.79004, 0.94152, 1.77256, 0.94152, 0.85284, 0.97801, 0.89552, + 0.91133, 0.89552, 0.91133, 1.91729, 0.89552, 1.17889, 1.13254, 1.16359, + 0.92098, 0.85284, 0.68787, 0.71353, 0.84737, 0.90747, 1.0088, 1.0044, + 0.87683, 1, 1.09091, 1, 0.92229, 0.739, 1.15642, 0.92098, 0.76288, 0.80504, + 0.80972, 0.75859, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.76318, + 0.72346, 0.73206, 0.73206, 0.73206, 0.73206, 0.90685, 0.90685, 0.90685, + 0.90685, 0.86477, 0.89249, 0.84118, 0.84118, 0.84118, 0.84118, 0.84118, + 0.85284, 0.84557, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.77452, + 0.86331, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.84843, 0.83203, + 0.85865, 0.85865, 0.85865, 0.85865, 0.82601, 0.82601, 0.82601, 0.82601, + 0.94469, 0.9245, 0.92274, 0.92274, 0.92274, 0.92274, 0.92274, 0.90747, + 0.86651, 0.9245, 0.9245, 0.9245, 0.9245, 0.89453, 0.9245, 0.89453, 0.8675, + 0.9245, 0.8675, 0.9245, 0.8675, 0.9245, 0.72346, 0.83203, 0.72346, 0.83203, + 0.72346, 0.83203, 0.72346, 0.83203, 0.85193, 0.8875, 0.86477, 0.99034, + 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865, + 0.73206, 0.85865, 0.81105, 0.9245, 0.81105, 0.9245, 0.81105, 0.9245, 1, 1, + 0.86275, 0.9245, 0.90872, 0.93591, 0.90685, 0.82601, 0.90685, 0.82601, + 0.90685, 0.82601, 0.90685, 1.03297, 0.90685, 0.82601, 0.77896, 1.05611, + 0.6377, 1.07692, 1, 1, 0.90918, 0.75593, 1.03297, 1, 1, 0.76032, 0.9375, + 0.98156, 0.93407, 0.77261, 1.11429, 0.89249, 0.9245, 1, 1, 0.89249, 0.9245, + 0.92534, 0.86698, 0.9245, 0.84118, 0.92274, 0.84118, 0.92274, 0.84118, + 0.92274, 0.8667, 0.86291, 0.75186, 1.02933, 1, 1, 0.75186, 1.02933, 0.67789, + 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 1, 1, + 0.79776, 0.97655, 0.79776, 1.23023, 0.88844, 0.9245, 0.88844, 0.9245, + 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.94309, + 0.98986, 0.7306, 0.89453, 0.7306, 0.76659, 0.79004, 0.76659, 0.79004, + 0.76659, 0.79004, 1.09231, 0.54873, 0.8675, 0.9245, 0.76318, 0.84843, + 0.84557, 0.86651, 1, 1, 0.79776, 1.20562, 1.18622, 1.18622, 1, 1.1437, + 0.67009, 0.96334, 0.93695, 1.35191, 1.40909, 0.95161, 1.48387, 0.8675, + 0.90861, 0.6192, 0.7363, 0.64824, 0.82411, 0.56321, 0.85696, 1.23516, + 0.8675, 0.81552, 0.7286, 0.84134, 0.73206, 0.76659, 0.86275, 0.84369, + 0.90685, 0.77892, 0.85871, 1.02638, 0.89249, 0.75828, 0.84118, 0.85984, + 0.77452, 0.76466, 0.79776, 0.7306, 0.90782, 0.77818, 0.903, 0.87291, + 0.90685, 0.7306, 0.99058, 1.03667, 0.94635, 1.23516, 0.9849, 0.99058, + 0.92393, 0.8916, 0.942, 1.03667, 0.75026, 0.94635, 1.0297, 1.23516, 0.90918, + 0.94048, 0.98217, 0.89746, 0.84153, 0.92274, 0.82507, 0.88832, 0.84438, + 0.88178, 1.03525, 0.9849, 1.00225, 0.78086, 0.97248, 0.89404, 1.23516, + 0.9849, 0.92274, 0.9849, 0.89404, 0.73206, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 0.89693, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85865, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90933, 1, 1, 1, 1, 1, 1, 0.94309, 0.98986, + 0.94309, 0.98986, 0.94309, 0.98986, 0.7306, 0.89453, 1, 1, 0.89552, 0.90527, + 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566, 1.2566, + 0.89552, 0.89552, 1.42259, 0.68994, 1.03809, 1, 1, 1.0176, 1.0176, 1.11523, + 1.4956, 2.01462, 0.97858, 0.82616, 0.91133, 0.83437, 0.91133, 1, 1, 1, + 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90572, 1.81055, + 0.90749, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589, + 0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747, + 0.85284, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, + 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1, + 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + ], + ka = { lineHeight: 1.2207, lineGap: 0.2207 }, + Ra = [ + 1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, + 1.15601, 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39016, + 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, + 0.91133, 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, + 0.88071, 0.8675, 0.81552, 0.73834, 0.85193, 0.73206, 0.7522, 0.81105, + 0.86275, 0.90685, 0.6377, 0.77892, 0.75593, 1.02638, 0.89385, 0.85122, + 0.77452, 0.86503, 0.75186, 0.68887, 0.79776, 0.88844, 0.85066, 0.94258, + 0.77818, 0.7306, 0.76659, 1.10369, 1.39016, 1.10369, 1.06139, 0.89552, + 0.8739, 0.86128, 0.94469, 0.8457, 0.94469, 0.89464, 1.09842, 0.84636, + 0.94469, 1.03297, 1.07692, 0.90918, 1.03297, 0.95897, 0.94469, 0.9482, + 0.94469, 0.94469, 1.04692, 0.78223, 1.20562, 0.94469, 0.90332, 0.98986, + 0.86621, 0.90527, 0.79004, 0.94152, 1.77256, 0.94152, 0.85284, 0.97801, + 0.89552, 0.91133, 0.89552, 0.91133, 1.91729, 0.89552, 1.17889, 1.13254, + 1.08707, 0.92098, 0.85284, 0.68787, 0.71353, 0.84737, 0.90747, 1.0088, + 1.0044, 0.87683, 1, 1.09091, 1, 0.92229, 0.739, 1.15642, 0.92098, 0.76288, + 0.80504, 0.80972, 0.75859, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, + 0.76318, 0.73834, 0.73206, 0.73206, 0.73206, 0.73206, 0.90685, 0.90685, + 0.90685, 0.90685, 0.86477, 0.89385, 0.85122, 0.85122, 0.85122, 0.85122, + 0.85122, 0.85284, 0.85311, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, + 0.77452, 0.86331, 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, + 0.8693, 0.8457, 0.89464, 0.89464, 0.89464, 0.89464, 0.82601, 0.82601, + 0.82601, 0.82601, 0.94469, 0.94469, 0.9482, 0.9482, 0.9482, 0.9482, 0.9482, + 0.90747, 0.86651, 0.94469, 0.94469, 0.94469, 0.94469, 0.90527, 0.94469, + 0.90527, 0.8675, 0.86128, 0.8675, 0.86128, 0.8675, 0.86128, 0.73834, 0.8457, + 0.73834, 0.8457, 0.73834, 0.8457, 0.73834, 0.8457, 0.85193, 0.92454, + 0.86477, 0.9921, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, + 0.73206, 0.89464, 0.73206, 0.89464, 0.81105, 0.84636, 0.81105, 0.84636, + 0.81105, 0.84636, 1, 1, 0.86275, 0.94469, 0.90872, 0.95786, 0.90685, + 0.82601, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 1.03297, 0.90685, + 0.82601, 0.77741, 1.05611, 0.6377, 1.07692, 1, 1, 0.90918, 0.75593, 1.03297, + 1, 1, 0.76032, 0.90452, 0.98156, 1.11842, 0.77261, 1.11429, 0.89385, + 0.94469, 1, 1, 0.89385, 0.94469, 0.95877, 0.86901, 0.94469, 0.85122, 0.9482, + 0.85122, 0.9482, 0.85122, 0.9482, 0.8667, 0.90016, 0.75186, 1.04692, 1, 1, + 0.75186, 1.04692, 0.68887, 0.78223, 0.68887, 0.78223, 0.68887, 0.78223, + 0.68887, 0.78223, 1, 1, 0.79776, 0.92188, 0.79776, 1.23023, 0.88844, + 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, + 0.94469, 0.88844, 0.94469, 0.94258, 0.98986, 0.7306, 0.90527, 0.7306, + 0.76659, 0.79004, 0.76659, 0.79004, 0.76659, 0.79004, 1.09231, 0.54873, + 0.8675, 0.86128, 0.76318, 0.8693, 0.85311, 0.86651, 1, 1, 0.79776, 1.20562, + 1.18622, 1.18622, 1, 1.1437, 0.67742, 0.96334, 0.93695, 1.35191, 1.40909, + 0.95161, 1.48387, 0.86686, 0.90861, 0.62267, 0.74359, 0.65649, 0.85498, + 0.56963, 0.88254, 1.23516, 0.8675, 0.81552, 0.75443, 0.84503, 0.73206, + 0.76659, 0.86275, 0.85122, 0.90685, 0.77892, 0.85746, 1.02638, 0.89385, + 0.75657, 0.85122, 0.86275, 0.77452, 0.74171, 0.79776, 0.7306, 0.95165, + 0.77818, 0.89772, 0.88831, 0.90685, 0.7306, 0.98142, 1.02191, 0.96576, + 1.23516, 0.99018, 0.98142, 0.9236, 0.89258, 0.94035, 1.02191, 0.78848, + 0.96576, 0.9561, 1.23516, 0.90918, 0.92578, 0.95424, 0.89746, 0.83969, + 0.9482, 0.80113, 0.89442, 0.85208, 0.86155, 0.98022, 0.99018, 1.00452, + 0.81209, 0.99247, 0.89181, 1.23516, 0.99018, 0.9482, 0.99018, 0.89181, + 0.73206, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.88844, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89464, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0.96766, 1, 1, 1, 1, 1, 1, 0.94258, 0.98986, 0.94258, 0.98986, 0.94258, + 0.98986, 0.7306, 0.90527, 1, 1, 0.89552, 0.90527, 1, 0.90186, 1.12308, + 1.12308, 1.12308, 1.12308, 1.2566, 1.2566, 1.2566, 0.89552, 0.89552, + 1.42259, 0.69043, 1.03809, 1, 1, 1.0176, 1.0176, 1.11523, 1.4956, 2.01462, + 0.99331, 0.82616, 0.91133, 0.84286, 0.91133, 1, 1, 1, 0.70508, 1, 1.23108, + 0.79801, 0.84426, 0.84426, 0.774, 0.90527, 1.81055, 0.90527, 1.81055, + 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589, 0.85284, 0.90747, + 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747, 0.85356, 0.90747, + 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, + 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1, 1.07185, 0.99413, + 0.96334, 1.08065, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + ], + Na = { lineHeight: 1.2207, lineGap: 0.2207 }, + Ga = [ + 0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977, + 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, + 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, + 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, + 0.9999, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, + 0.99977, 1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, + 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, + 1.00001, 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, + 0.99998, 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, + 1.00026, 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, + 1.00026, 1.00026, 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, + 0.99973, 0.99973, 1, 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, + 0.99973, 0.99973, 0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, + 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, + 0.99973, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, + 1.00026, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, + 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, + 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, + 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, + 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, + 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, + 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, + 1.00026, 1.00026, 1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, + 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, + 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 1.03374, 0.99977, 1.00026, + 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, + 1.00001, 0.99973, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, + 1.00022, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, + 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.00042, + 0.99973, 0.99973, 1.0006, 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, + 1.00026, 1.0006, 1.00026, 1.03828, 1.00026, 0.99999, 1.00026, 1.0006, + 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.9993, 0.9998, + 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1, 1.00016, + 0.99977, 0.99959, 0.99977, 0.99959, 0.99977, 0.99959, 1.00001, 0.99973, + 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00026, 0.99998, + 1.00026, 0.8121, 1.00026, 0.99998, 0.99977, 1.00026, 0.99977, 1.00026, + 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, + 1.00016, 1.00022, 1.00001, 0.99973, 1.00001, 1.00026, 1, 1.00026, 1, + 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1, 0.99982, 1.00022, 1.00026, + 1.00001, 0.99973, 1.00026, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, + 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 1.00034, 0.99977, 1, + 0.99997, 1.00026, 1.00078, 1.00036, 0.99973, 1.00013, 1.0006, 0.99977, + 0.99977, 0.99988, 0.85148, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, + 0.99977, 1.00001, 0.99999, 0.99977, 1.00069, 1.00022, 0.99977, 1.00001, + 0.99984, 1.00026, 1.00001, 1.00024, 1.00001, 0.9999, 1, 1.0006, 1.00001, + 1.00041, 0.99962, 1.00026, 1.0006, 0.99995, 1.00041, 0.99942, 0.99973, + 0.99927, 1.00082, 0.99902, 1.00026, 1.00087, 1.0006, 1.00069, 0.99973, + 0.99867, 0.99973, 0.9993, 1.00026, 1.00049, 1.00056, 1, 0.99988, 0.99935, + 0.99995, 0.99954, 1.00055, 0.99945, 1.00032, 1.0006, 0.99995, 1.00026, + 0.99995, 1.00032, 1.00001, 1.00008, 0.99971, 1.00019, 0.9994, 1.00001, + 1.0006, 1.00044, 0.99973, 1.00023, 1.00047, 1, 0.99942, 0.99561, 0.99989, + 1.00035, 0.99977, 1.00035, 0.99977, 1.00019, 0.99944, 1.00001, 1.00021, + 0.99926, 1.00035, 1.00035, 0.99942, 1.00048, 0.99999, 0.99977, 1.00022, + 1.00035, 1.00001, 0.99977, 1.00026, 0.99989, 1.00057, 1.00001, 0.99936, + 1.00052, 1.00012, 0.99996, 1.00043, 1, 1.00035, 0.9994, 0.99976, 1.00035, + 0.99973, 1.00052, 1.00041, 1.00119, 1.00037, 0.99973, 1.00002, 0.99986, + 1.00041, 1.00041, 0.99902, 0.9996, 1.00034, 0.99999, 1.00026, 0.99999, + 1.00026, 0.99973, 1.00052, 0.99973, 1, 0.99973, 1.00041, 1.00075, 0.9994, + 1.0003, 0.99999, 1, 1.00041, 0.99955, 1, 0.99915, 0.99973, 0.99973, 1.00026, + 1.00119, 0.99955, 0.99973, 1.0006, 0.99911, 1.0006, 1.00026, 0.99972, + 1.00026, 0.99902, 1.00041, 0.99973, 0.99999, 1, 1, 1.00038, 1.0005, 1.00016, + 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1, + 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973, + 0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, + 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 0.99971, 1.00047, + 1.00023, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1, 1, 1, + 1, 1, 1, 1, 0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, + 0.99561, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, + 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, + 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, + 1.00026, 1.00026, 0.99972, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, + 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, + 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + ], + xa = { lineHeight: 1.2, lineGap: 0.2 }, + Ma = [ + 0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977, + 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, + 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, + 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, + 0.9999, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, + 0.99977, 1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, + 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, + 1.00001, 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, + 0.99998, 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, + 1.00026, 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, + 1.00026, 1.00026, 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, + 0.99973, 0.99973, 1, 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, + 0.99973, 0.99973, 0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, + 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, + 0.99973, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, + 1.00026, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, + 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, + 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, + 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, + 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, + 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, + 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, + 1.00026, 1.00026, 1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, + 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, + 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 1.0044, 0.99977, 1.00026, + 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, + 1.00001, 0.99973, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, + 1.00022, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, + 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99971, + 0.99973, 0.99973, 1.0006, 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, + 1.00026, 1.0006, 1.00026, 1.01011, 1.00026, 0.99999, 1.00026, 1.0006, + 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.9993, 0.9998, + 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1, 1.00016, + 0.99977, 0.99959, 0.99977, 0.99959, 0.99977, 0.99959, 1.00001, 0.99973, + 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00026, 0.99998, + 1.00026, 0.8121, 1.00026, 0.99998, 0.99977, 1.00026, 0.99977, 1.00026, + 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, + 1.00016, 1.00022, 1.00001, 0.99973, 1.00001, 1.00026, 1, 1.00026, 1, + 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1, 0.99982, 1.00022, 1.00026, + 1.00001, 0.99973, 1.00026, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, + 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99977, 1, + 1, 1.00026, 0.99969, 0.99972, 0.99981, 0.9998, 1.0006, 0.99977, 0.99977, + 1.00022, 0.91155, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 0.99977, + 1.00001, 0.99999, 0.99977, 0.99966, 1.00022, 1.00032, 1.00001, 0.99944, + 1.00026, 1.00001, 0.99968, 1.00001, 1.00047, 1, 1.0006, 1.00001, 0.99981, + 1.00101, 1.00026, 1.0006, 0.99948, 0.99981, 1.00064, 0.99973, 0.99942, + 1.00101, 1.00061, 1.00026, 1.00069, 1.0006, 1.00014, 0.99973, 1.01322, + 0.99973, 1.00065, 1.00026, 1.00012, 0.99923, 1, 1.00064, 1.00076, 0.99948, + 1.00055, 1.00063, 1.00007, 0.99943, 1.0006, 0.99948, 1.00026, 0.99948, + 0.99943, 1.00001, 1.00001, 1.00029, 1.00038, 1.00035, 1.00001, 1.0006, + 1.0006, 0.99973, 0.99978, 1.00001, 1.00057, 0.99989, 0.99967, 0.99964, + 0.99967, 0.99977, 0.99999, 0.99977, 1.00038, 0.99977, 1.00001, 0.99973, + 1.00066, 0.99967, 0.99967, 1.00041, 0.99998, 0.99999, 0.99977, 1.00022, + 0.99967, 1.00001, 0.99977, 1.00026, 0.99964, 1.00031, 1.00001, 0.99999, + 0.99999, 1, 1.00023, 1, 1, 0.99999, 1.00035, 1.00001, 0.99999, 0.99973, + 0.99977, 0.99999, 1.00058, 0.99973, 0.99973, 0.99955, 0.9995, 1.00026, + 1.00026, 1.00032, 0.99989, 1.00034, 0.99999, 1.00026, 1.00026, 1.00026, + 0.99973, 0.45998, 0.99973, 1.00026, 0.99973, 1.00001, 0.99999, 0.99982, + 0.99994, 0.99996, 1, 1.00042, 1.00044, 1.00029, 1.00023, 0.99973, 0.99973, + 1.00026, 0.99949, 1.00002, 0.99973, 1.0006, 1.0006, 1.0006, 0.99975, + 1.00026, 1.00026, 1.00032, 0.98685, 0.99973, 1.00026, 1, 1, 0.99966, + 1.00044, 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, + 0.99973, 1, 1, 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, + 1, 0.99973, 0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, + 0.99999, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1, 0.99973, 0.99971, + 0.99978, 1, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, + 1.00098, 1, 1, 1, 1.00049, 1, 1, 0.99972, 1, 1.20985, 1.39713, 1.00003, + 1.00031, 1.00015, 1, 0.99561, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, + 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, + 1.00026, 1.00026, 1.00026, 1.00026, 0.99972, 0.99999, 0.99999, 0.99999, + 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, + 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + ], + Ua = { lineHeight: 1.35, lineGap: 0.2 }, + La = [ + 0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001, + 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, + 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, + 0.99973, 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, + 0.99987, 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, + 0.99977, 1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, + 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, + 1.00001, 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, + 0.99973, 0.99973, 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, + 0.99924, 1, 0.99924, 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, + 1, 1.0006, 0.99973, 1, 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, + 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, + 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, + 1, 0.99998, 1, 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, + 1.00002, 1.00002, 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, + 1.00001, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, + 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, + 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, + 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, + 0.99982, 1, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, + 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, + 1.06409, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 1, 0.99973, 1, + 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 0.99977, 1, 0.99977, + 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.0288, 0.99977, 0.99973, 1.00001, + 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, + 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, + 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, + 1.0006, 1.0006, 1.0006, 0.99924, 1.0006, 1.0006, 0.99946, 1.00034, 1, + 0.99924, 1.00001, 1, 1, 0.99973, 0.99924, 0.99973, 0.99924, 0.99973, + 1.06311, 0.99973, 1.00024, 0.99973, 0.99924, 0.99977, 0.99973, 0.99977, + 0.99973, 0.99977, 0.99973, 1.00041, 0.9998, 0.99973, 1.00022, 0.99973, + 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016, 0.99977, 0.99998, 0.99977, + 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00001, 1, + 1.00026, 1.0006, 1.00026, 0.89547, 1.00026, 1.0006, 0.99977, 0.99973, + 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, + 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001, 1.00026, 1, + 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1, 0.99982, + 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998, 0.99998, + 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, + 1.00001, 1, 1.00054, 0.99977, 1.00084, 1.00007, 0.99973, 1.00013, 0.99924, + 1.00001, 1.00001, 0.99945, 0.91221, 1.00001, 1.00026, 0.99977, 1.00022, + 1.0006, 1.00001, 1.00001, 0.99999, 0.99977, 0.99933, 1.00022, 1.00054, + 1.00001, 1.00065, 1.00026, 1.00001, 1.0001, 1.00001, 1.00052, 1, 1.0006, + 1.00001, 0.99945, 0.99897, 0.99968, 0.99924, 1.00036, 0.99945, 0.99949, 1, + 1.0006, 0.99897, 0.99918, 0.99968, 0.99911, 0.99924, 1, 0.99962, 1.01487, 1, + 1.0005, 0.99973, 1.00012, 1.00043, 1, 0.99995, 0.99994, 1.00036, 0.99947, + 1.00019, 1.00063, 1.00025, 0.99924, 1.00036, 0.99973, 1.00036, 1.00025, + 1.00001, 1.00001, 1.00027, 1.0001, 1.00068, 1.00001, 1.0006, 1.0006, 1, + 1.00008, 0.99957, 0.99972, 0.9994, 0.99954, 0.99975, 1.00051, 1.00001, + 1.00019, 1.00001, 1.0001, 0.99986, 1.00001, 1.00001, 1.00038, 0.99954, + 0.99954, 0.9994, 1.00066, 0.99999, 0.99977, 1.00022, 1.00054, 1.00001, + 0.99977, 1.00026, 0.99975, 1.0001, 1.00001, 0.99993, 0.9995, 0.99955, + 1.00016, 0.99978, 0.99974, 1.00019, 1.00022, 0.99955, 1.00053, 0.99973, + 1.00089, 1.00005, 0.99967, 1.00048, 0.99973, 1.00002, 1.00034, 0.99973, + 0.99973, 0.99964, 1.00006, 1.00066, 0.99947, 0.99973, 0.98894, 0.99973, 1, + 0.44898, 1, 0.99946, 1, 1.00039, 1.00082, 0.99991, 0.99991, 0.99985, + 1.00022, 1.00023, 1.00061, 1.00006, 0.99966, 0.99973, 0.99973, 0.99973, + 1.00019, 1.0008, 1, 0.99924, 0.99924, 0.99924, 0.99983, 1.00044, 0.99973, + 0.99964, 0.98332, 1, 0.99973, 1, 1, 0.99962, 0.99895, 1.00016, 0.99977, + 1.00016, 0.99977, 1.00016, 0.99977, 1.00001, 1, 1, 1, 0.99973, 1, 1, + 0.99955, 0.99924, 0.99924, 0.99924, 0.99924, 0.99998, 0.99998, 0.99998, + 0.99973, 0.99973, 0.99972, 1, 1, 1.00267, 0.99999, 0.99998, 0.99998, 1, + 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 1.00423, 0.99925, + 0.99999, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1.00049, + 1, 1.00245, 1, 1, 1, 1, 0.96329, 1, 1.20985, 1.39713, 1.00003, 0.8254, + 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031, 1.00003, 1.00031, 1.00031, + 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, + 1.00026, 1.00026, 1.00026, 0.95317, 0.99999, 0.99999, 0.99999, 0.99999, + 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, + 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, + ], + Ja = { lineHeight: 1.35, lineGap: 0.2 }, + Ha = [ + 0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001, + 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, + 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, + 0.99973, 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, + 0.99987, 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, + 0.99977, 1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, + 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, + 1.00001, 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, + 0.99973, 0.99973, 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, + 0.99924, 1, 0.99924, 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, + 1, 1.0006, 0.99973, 1, 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, + 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, + 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, + 1, 0.99998, 1, 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, + 1.00002, 1.00002, 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, + 1.00001, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, + 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, + 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, + 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, + 0.99982, 1, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, + 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, + 1.06409, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 1, 0.99973, 1, + 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 0.99977, 1, 0.99977, + 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.04596, 0.99977, 0.99973, 1.00001, + 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, + 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, + 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, + 1.0006, 1.0006, 1.0006, 0.99924, 1.0006, 1.0006, 1.00019, 1.00034, 1, + 0.99924, 1.00001, 1, 1, 0.99973, 0.99924, 0.99973, 0.99924, 0.99973, + 1.02572, 0.99973, 1.00005, 0.99973, 0.99924, 0.99977, 0.99973, 0.99977, + 0.99973, 0.99977, 0.99973, 0.99999, 0.9998, 0.99973, 1.00022, 0.99973, + 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016, 0.99977, 0.99998, 0.99977, + 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00001, 1, + 1.00026, 1.0006, 1.00026, 0.84533, 1.00026, 1.0006, 0.99977, 0.99973, + 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, + 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001, 1.00026, 1, + 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1, 0.99982, + 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998, 0.99998, + 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, + 0.99928, 1, 0.99977, 1.00013, 1.00055, 0.99947, 0.99945, 0.99941, 0.99924, + 1.00001, 1.00001, 1.0004, 0.91621, 1.00001, 1.00026, 0.99977, 1.00022, + 1.0006, 1.00001, 1.00005, 0.99999, 0.99977, 1.00015, 1.00022, 0.99977, + 1.00001, 0.99973, 1.00026, 1.00001, 1.00019, 1.00001, 0.99946, 1, 1.0006, + 1.00001, 0.99978, 1.00045, 0.99973, 0.99924, 1.00023, 0.99978, 0.99966, 1, + 1.00065, 1.00045, 1.00019, 0.99973, 0.99973, 0.99924, 1, 1, 0.96499, 1, + 1.00055, 0.99973, 1.00008, 1.00027, 1, 0.9997, 0.99995, 1.00023, 0.99933, + 1.00019, 1.00015, 1.00031, 0.99924, 1.00023, 0.99973, 1.00023, 1.00031, + 1.00001, 0.99928, 1.00029, 1.00092, 1.00035, 1.00001, 1.0006, 1.0006, 1, + 0.99988, 0.99975, 1, 1.00082, 0.99561, 0.9996, 1.00035, 1.00001, 0.99962, + 1.00001, 1.00092, 0.99964, 1.00001, 0.99963, 0.99999, 1.00035, 1.00035, + 1.00082, 0.99962, 0.99999, 0.99977, 1.00022, 1.00035, 1.00001, 0.99977, + 1.00026, 0.9996, 0.99967, 1.00001, 1.00034, 1.00074, 1.00054, 1.00053, + 1.00063, 0.99971, 0.99962, 1.00035, 0.99975, 0.99977, 0.99973, 1.00043, + 0.99953, 1.0007, 0.99915, 0.99973, 1.00008, 0.99892, 1.00073, 1.00073, + 1.00114, 0.99915, 1.00073, 0.99955, 0.99973, 1.00092, 0.99973, 1, 0.99998, + 1, 1.0003, 1, 1.00043, 1.00001, 0.99969, 1.0003, 1, 1.00035, 1.00001, + 0.9995, 1, 1.00092, 0.99973, 0.99973, 0.99973, 1.0007, 0.9995, 1, 0.99924, + 1.0006, 0.99924, 0.99972, 1.00062, 0.99973, 1.00114, 1.00073, 1, 0.99955, 1, + 1, 1.00047, 0.99968, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016, 0.99977, + 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924, + 0.99924, 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, + 1.00267, 0.99999, 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, + 0.99973, 1.00023, 0.99973, 0.99971, 0.99925, 1.00023, 1, 0.99991, 0.99984, + 1.00002, 1.00002, 1.00002, 1.00002, 1, 1, 1, 1, 1, 1, 1, 0.96329, 1, + 1.20985, 1.39713, 1.00003, 0.8254, 1.00015, 1, 1.00035, 1.00027, 1.00031, + 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, + 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, + 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.95317, 0.99999, + 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, + 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + ], + Ya = { lineHeight: 1.2, lineGap: 0.2 }, + va = [ + 365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, + 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, + 333, 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, + 556, 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, + 667, 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, + 611, 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, + 778, 556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, + 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, + 333, 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1e3, + 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, + 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, + 556, 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, + 611, 611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, + 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 719, 722, 611, + 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, + 611, 778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, + 278, 278, 785, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 385, + 611, 479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, + 778, 611, 778, 611, 1e3, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, + 556, 667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, + 722, 611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, + 611, 500, 611, 500, 278, 556, 722, 556, 1e3, 889, 778, 611, 667, 556, 611, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 465, 722, 333, 853, + 906, 474, 825, 927, 838, 278, 722, 722, 601, 719, 667, 611, 722, 778, 278, + 722, 667, 833, 722, 644, 778, 722, 667, 600, 611, 667, 821, 667, 809, 802, + 278, 667, 615, 451, 611, 278, 582, 615, 610, 556, 606, 475, 460, 611, 541, + 278, 558, 556, 612, 556, 445, 611, 766, 619, 520, 684, 446, 582, 715, 576, + 753, 845, 278, 582, 611, 582, 845, 667, 669, 885, 567, 711, 667, 278, 276, + 556, 1094, 1062, 875, 610, 722, 622, 719, 722, 719, 722, 567, 712, 667, 904, + 626, 719, 719, 610, 702, 833, 722, 778, 719, 667, 722, 611, 622, 854, 667, + 730, 703, 1005, 1019, 870, 979, 719, 711, 1031, 719, 556, 618, 615, 417, + 635, 556, 709, 497, 615, 615, 500, 635, 740, 604, 611, 604, 611, 556, 490, + 556, 875, 556, 615, 581, 833, 844, 729, 854, 615, 552, 854, 583, 556, 556, + 611, 417, 552, 556, 278, 281, 278, 969, 906, 611, 500, 615, 556, 604, 778, + 611, 487, 447, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1e3, + 1e3, 552, 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1e3, 1e3, 240, + 479, 333, 333, 604, 333, 167, 396, 556, 556, 1094, 556, 885, 489, 1115, 1e3, + 768, 600, 834, 834, 834, 834, 1e3, 500, 1e3, 500, 1e3, 500, 500, 494, 612, + 823, 713, 584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, + 604, 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 708, 729, 604, 604, 354, 354, 1e3, 990, 990, 990, 990, 494, + 604, 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, + 750, 750, 611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, + 333, 333, 333, 333, 333, 333, 333, + ], + Ka = [ + -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, + 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, + 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, + 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, + 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, + 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, + 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, + 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, + 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, + 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, + 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, + 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, + 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, + 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, + 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, + 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, + 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, + 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, + 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, + 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, + 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, + 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, + 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, + 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, + 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, + 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, + 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, + 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + ], + Ta = [ + 365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, + 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, + 333, 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, + 556, 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, + 667, 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, + 611, 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, + 778, 556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, + 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, + 333, 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1e3, + 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, + 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, + 556, 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, + 611, 611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, + 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 740, 722, 611, + 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, + 611, 778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, + 278, 278, 782, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 396, + 611, 479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, + 778, 611, 778, 611, 1e3, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, + 556, 667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, + 722, 611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, + 611, 500, 611, 500, 278, 556, 722, 556, 1e3, 889, 778, 611, 667, 556, 611, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 722, 333, 854, + 906, 473, 844, 930, 847, 278, 722, 722, 610, 671, 667, 611, 722, 778, 278, + 722, 667, 833, 722, 657, 778, 718, 667, 590, 611, 667, 822, 667, 829, 781, + 278, 667, 620, 479, 611, 278, 591, 620, 621, 556, 610, 479, 492, 611, 558, + 278, 566, 556, 603, 556, 450, 611, 712, 605, 532, 664, 409, 591, 704, 578, + 773, 834, 278, 591, 611, 591, 834, 667, 667, 886, 614, 719, 667, 278, 278, + 556, 1094, 1042, 854, 622, 719, 677, 719, 722, 708, 722, 614, 722, 667, 927, + 643, 719, 719, 615, 687, 833, 722, 778, 719, 667, 722, 611, 677, 781, 667, + 729, 708, 979, 989, 854, 1e3, 708, 719, 1042, 729, 556, 619, 604, 534, 618, + 556, 736, 510, 611, 611, 507, 622, 740, 604, 611, 611, 611, 556, 889, 556, + 885, 556, 646, 583, 889, 935, 707, 854, 594, 552, 865, 589, 556, 556, 611, + 469, 563, 556, 278, 278, 278, 969, 906, 611, 507, 619, 556, 611, 778, 611, + 575, 467, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1e3, 1e3, + 552, 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1e3, 1e3, 240, 479, + 333, 333, 604, 333, 167, 396, 556, 556, 1104, 556, 885, 516, 1146, 1e3, 768, + 600, 834, 834, 834, 834, 999, 500, 1e3, 500, 1e3, 500, 500, 494, 612, 823, + 713, 584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, + 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 729, 604, 604, 354, 354, 1e3, 990, 990, 990, 990, 494, 604, + 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, + 750, 611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, + 333, 333, 333, 333, 333, 333, + ], + qa = [ + -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, + 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, + 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, + 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, + 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, + 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, + 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, + 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, + 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, + 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, + 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, + 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, + 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, + 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, + 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, + 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, + 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, + 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, + 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, + 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, + 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, + 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, + 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, + 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, + 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, + 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, + 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, + 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + ], + Oa = [ + 365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, + 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, + 278, 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, + 500, 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, + 667, 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, + 556, 222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, + 722, 500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, + 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, + 333, 333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1e3, + 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, + 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, + 556, 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, + 556, 556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, + 556, 667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 625, 722, 556, + 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, + 556, 778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, + 278, 278, 733, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 281, + 556, 400, 556, 222, 722, 556, 722, 556, 722, 556, 615, 723, 556, 778, 556, + 778, 556, 778, 556, 1e3, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, + 500, 667, 500, 667, 500, 611, 278, 611, 354, 611, 278, 722, 556, 722, 556, + 722, 556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, + 611, 500, 611, 500, 222, 556, 667, 556, 1e3, 889, 778, 611, 667, 500, 611, + 278, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 789, + 846, 389, 794, 865, 775, 222, 667, 667, 570, 671, 667, 611, 722, 778, 278, + 667, 667, 833, 722, 648, 778, 725, 667, 600, 611, 667, 837, 667, 831, 761, + 278, 667, 570, 439, 555, 222, 550, 570, 571, 500, 556, 439, 463, 555, 542, + 222, 500, 492, 548, 500, 447, 556, 670, 573, 486, 603, 374, 550, 652, 546, + 728, 779, 222, 550, 556, 550, 779, 667, 667, 843, 544, 708, 667, 278, 278, + 500, 1066, 982, 844, 589, 715, 639, 724, 667, 651, 667, 544, 704, 667, 917, + 614, 715, 715, 589, 686, 833, 722, 778, 725, 667, 722, 611, 639, 795, 667, + 727, 673, 920, 923, 805, 886, 651, 694, 1022, 682, 556, 562, 522, 493, 553, + 556, 688, 465, 556, 556, 472, 564, 686, 550, 556, 556, 556, 500, 833, 500, + 835, 500, 572, 518, 830, 851, 621, 736, 526, 492, 752, 534, 556, 556, 556, + 378, 496, 500, 222, 222, 222, 910, 828, 556, 472, 565, 500, 556, 778, 556, + 492, 339, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1e3, 1e3, + 552, 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1e3, 1e3, 188, 354, + 333, 333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1083, 1e3, 768, + 600, 834, 834, 834, 834, 1e3, 500, 998, 500, 1e3, 500, 500, 494, 612, 823, + 713, 584, 549, 713, 979, 719, 274, 549, 549, 584, 549, 549, 604, 584, 604, + 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 729, 604, 604, 354, 354, 1e3, 990, 990, 990, 990, 494, 604, + 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, + 750, 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, + 324, 324, 316, 328, 398, 285, + ], + Pa = [ + -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, + 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, + 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, + 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, + 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, + 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, + 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, + 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, + 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, + 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, + 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, + 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, + 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, + 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, + 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, + 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, + 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, + 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, + 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, + 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, + 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, + 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, + 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, + 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, + 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, + 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, + 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, + 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + ], + Wa = [ + 365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, + 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, + 278, 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, + 500, 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, + 667, 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, + 556, 222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, + 722, 500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, + 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, + 333, 333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1e3, + 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, + 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, + 556, 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, + 556, 556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, + 556, 667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 615, 722, 556, + 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, + 556, 778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, + 278, 278, 735, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 292, + 556, 334, 556, 222, 722, 556, 722, 556, 722, 556, 604, 723, 556, 778, 556, + 778, 556, 778, 556, 1e3, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, + 500, 667, 500, 667, 500, 611, 278, 611, 375, 611, 278, 722, 556, 722, 556, + 722, 556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, + 611, 500, 611, 500, 222, 556, 667, 556, 1e3, 889, 778, 611, 667, 500, 611, + 278, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 784, + 838, 384, 774, 855, 752, 222, 667, 667, 551, 668, 667, 611, 722, 778, 278, + 667, 668, 833, 722, 650, 778, 722, 667, 618, 611, 667, 798, 667, 835, 748, + 278, 667, 578, 446, 556, 222, 547, 578, 575, 500, 557, 446, 441, 556, 556, + 222, 500, 500, 576, 500, 448, 556, 690, 569, 482, 617, 395, 547, 648, 525, + 713, 781, 222, 547, 556, 547, 781, 667, 667, 865, 542, 719, 667, 278, 278, + 500, 1057, 1010, 854, 583, 722, 635, 719, 667, 656, 667, 542, 677, 667, 923, + 604, 719, 719, 583, 656, 833, 722, 778, 719, 667, 722, 611, 635, 760, 667, + 740, 667, 917, 938, 792, 885, 656, 719, 1010, 722, 556, 573, 531, 365, 583, + 556, 669, 458, 559, 559, 438, 583, 688, 552, 556, 542, 556, 500, 458, 500, + 823, 500, 573, 521, 802, 823, 625, 719, 521, 510, 750, 542, 556, 556, 556, + 365, 510, 500, 222, 278, 222, 906, 812, 556, 438, 559, 500, 552, 778, 556, + 489, 411, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1e3, 1e3, + 552, 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1e3, 1e3, 188, 354, + 333, 333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1073, 1e3, 768, + 600, 834, 834, 834, 834, 1e3, 500, 1e3, 500, 1e3, 500, 500, 494, 612, 823, + 713, 584, 549, 713, 979, 719, 274, 549, 549, 583, 549, 549, 604, 584, 604, + 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 729, 604, 604, 354, 354, 1e3, 990, 990, 990, 990, 494, 604, + 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, + 750, 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, + 324, 324, 316, 328, 398, 285, + ], + Xa = [ + -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, + 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, + 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, + 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, + 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, + 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, + 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, + 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, + 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, + 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, + 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, + 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, + 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, + 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, + 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, + 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, + 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, + 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, + 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, + 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, + 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, + 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, + 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, + 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, + 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, + 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, + 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, + 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + ], + ja = [ + 1.36898, 1, 1, 0.72706, 0.80479, 0.83734, 0.98894, 0.99793, 0.9897, 0.93884, + 0.86209, 0.94292, 0.94292, 1.16661, 1.02058, 0.93582, 0.96694, 0.93582, + 1.19137, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, + 0.99793, 0.99793, 0.99793, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058, + 0.72851, 0.78966, 0.90838, 0.83637, 0.82391, 0.96376, 0.80061, 0.86275, + 0.8768, 0.95407, 1.0258, 0.73901, 0.85022, 0.83655, 1.0156, 0.95546, + 0.92179, 0.87107, 0.92179, 0.82114, 0.8096, 0.89713, 0.94438, 0.95353, + 0.94083, 0.91905, 0.90406, 0.9446, 0.94292, 1.18777, 0.94292, 1.02058, + 0.89903, 0.90088, 0.94938, 0.97898, 0.81093, 0.97571, 0.94938, 1.024, + 0.9577, 0.95933, 0.98621, 1.0474, 0.97455, 0.98981, 0.9672, 0.95933, 0.9446, + 0.97898, 0.97407, 0.97646, 0.78036, 1.10208, 0.95442, 0.95298, 0.97579, + 0.9332, 0.94039, 0.938, 0.80687, 1.01149, 0.80687, 1.02058, 0.80479, + 0.99793, 0.99793, 0.99793, 0.99793, 1.01149, 1.00872, 0.90088, 0.91882, + 1.0213, 0.8361, 1.02058, 0.62295, 0.54324, 0.89022, 1.08595, 1, 1, 0.90088, + 1, 0.97455, 0.93582, 0.90088, 1, 1.05686, 0.8361, 0.99642, 0.99642, 0.99642, + 0.72851, 0.90838, 0.90838, 0.90838, 0.90838, 0.90838, 0.90838, 0.868, + 0.82391, 0.80061, 0.80061, 0.80061, 0.80061, 1.0258, 1.0258, 1.0258, 1.0258, + 0.97484, 0.95546, 0.92179, 0.92179, 0.92179, 0.92179, 0.92179, 1.02058, + 0.92179, 0.94438, 0.94438, 0.94438, 0.94438, 0.90406, 0.86958, 0.98225, + 0.94938, 0.94938, 0.94938, 0.94938, 0.94938, 0.94938, 0.9031, 0.81093, + 0.94938, 0.94938, 0.94938, 0.94938, 0.98621, 0.98621, 0.98621, 0.98621, + 0.93969, 0.95933, 0.9446, 0.9446, 0.9446, 0.9446, 0.9446, 1.08595, 0.9446, + 0.95442, 0.95442, 0.95442, 0.95442, 0.94039, 0.97898, 0.94039, 0.90838, + 0.94938, 0.90838, 0.94938, 0.90838, 0.94938, 0.82391, 0.81093, 0.82391, + 0.81093, 0.82391, 0.81093, 0.82391, 0.81093, 0.96376, 0.84313, 0.97484, + 0.97571, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, + 0.94938, 0.80061, 0.94938, 0.8768, 0.9577, 0.8768, 0.9577, 0.8768, 0.9577, + 1, 1, 0.95407, 0.95933, 0.97069, 0.95933, 1.0258, 0.98621, 1.0258, 0.98621, + 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 0.887, 1.01591, 0.73901, + 1.0474, 1, 1, 0.97455, 0.83655, 0.98981, 1, 1, 0.83655, 0.73977, 0.83655, + 0.73903, 0.84638, 1.033, 0.95546, 0.95933, 1, 1, 0.95546, 0.95933, 0.8271, + 0.95417, 0.95933, 0.92179, 0.9446, 0.92179, 0.9446, 0.92179, 0.9446, 0.936, + 0.91964, 0.82114, 0.97646, 1, 1, 0.82114, 0.97646, 0.8096, 0.78036, 0.8096, + 0.78036, 1, 1, 0.8096, 0.78036, 1, 1, 0.89713, 0.77452, 0.89713, 1.10208, + 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, + 0.94438, 0.95442, 0.94438, 0.95442, 0.94083, 0.97579, 0.90406, 0.94039, + 0.90406, 0.9446, 0.938, 0.9446, 0.938, 0.9446, 0.938, 1, 0.99793, 0.90838, + 0.94938, 0.868, 0.9031, 0.92179, 0.9446, 1, 1, 0.89713, 1.10208, 0.90088, + 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, + 0.90989, 0.9358, 0.91945, 0.83181, 0.75261, 0.87992, 0.82976, 0.96034, + 0.83689, 0.97268, 1.0078, 0.90838, 0.83637, 0.8019, 0.90157, 0.80061, + 0.9446, 0.95407, 0.92436, 1.0258, 0.85022, 0.97153, 1.0156, 0.95546, + 0.89192, 0.92179, 0.92361, 0.87107, 0.96318, 0.89713, 0.93704, 0.95638, + 0.91905, 0.91709, 0.92796, 1.0258, 0.93704, 0.94836, 1.0373, 0.95933, + 1.0078, 0.95871, 0.94836, 0.96174, 0.92601, 0.9498, 0.98607, 0.95776, + 0.95933, 1.05453, 1.0078, 0.98275, 0.9314, 0.95617, 0.91701, 1.05993, + 0.9446, 0.78367, 0.9553, 1, 0.86832, 1.0128, 0.95871, 0.99394, 0.87548, + 0.96361, 0.86774, 1.0078, 0.95871, 0.9446, 0.95871, 0.86774, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.94083, + 0.97579, 0.94083, 0.97579, 0.94083, 0.97579, 0.90406, 0.94039, 0.96694, 1, + 0.89903, 1, 1, 1, 0.93582, 0.93582, 0.93582, 1, 0.908, 0.908, 0.918, + 0.94219, 0.94219, 0.96544, 1, 1.285, 1, 1, 0.81079, 0.81079, 1, 1, 0.74854, + 1, 1, 1, 1, 0.99793, 1, 1, 1, 0.65, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1.17173, 1, 0.80535, 0.76169, 1.02058, 1.0732, 1.05486, 1, 1, 1.30692, + 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1.16161, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + ], + Za = { lineHeight: 1.2, lineGap: 0.2 }, + Va = [ + 1.36898, 1, 1, 0.66227, 0.80779, 0.81625, 0.97276, 0.97276, 0.97733, + 0.92222, 0.83266, 0.94292, 0.94292, 1.16148, 1.02058, 0.93582, 0.96694, + 0.93582, 1.17337, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, + 0.97276, 0.97276, 0.97276, 0.97276, 0.78076, 0.78076, 1.02058, 1.02058, + 1.02058, 0.71541, 0.76813, 0.85576, 0.80591, 0.80729, 0.94299, 0.77512, + 0.83655, 0.86523, 0.92222, 0.98621, 0.71743, 0.81698, 0.79726, 0.98558, + 0.92222, 0.90637, 0.83809, 0.90637, 0.80729, 0.76463, 0.86275, 0.90699, + 0.91605, 0.9154, 0.85308, 0.85458, 0.90531, 0.94292, 1.21296, 0.94292, + 1.02058, 0.89903, 1.18616, 0.99613, 0.91677, 0.78216, 0.91677, 0.90083, + 0.98796, 0.9135, 0.92168, 0.95381, 0.98981, 0.95298, 0.95381, 0.93459, + 0.92168, 0.91513, 0.92004, 0.91677, 0.95077, 0.748, 1.04502, 0.91677, + 0.92061, 0.94236, 0.89544, 0.89364, 0.9, 0.80687, 0.8578, 0.80687, 1.02058, + 0.80779, 0.97276, 0.97276, 0.97276, 0.97276, 0.8578, 0.99973, 1.18616, + 0.91339, 1.08074, 0.82891, 1.02058, 0.55509, 0.71526, 0.89022, 1.08595, 1, + 1, 1.18616, 1, 0.96736, 0.93582, 1.18616, 1, 1.04864, 0.82711, 0.99043, + 0.99043, 0.99043, 0.71541, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, + 0.85576, 0.845, 0.80729, 0.77512, 0.77512, 0.77512, 0.77512, 0.98621, + 0.98621, 0.98621, 0.98621, 0.95961, 0.92222, 0.90637, 0.90637, 0.90637, + 0.90637, 0.90637, 1.02058, 0.90251, 0.90699, 0.90699, 0.90699, 0.90699, + 0.85458, 0.83659, 0.94951, 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, + 0.99613, 0.85811, 0.78216, 0.90083, 0.90083, 0.90083, 0.90083, 0.95381, + 0.95381, 0.95381, 0.95381, 0.9135, 0.92168, 0.91513, 0.91513, 0.91513, + 0.91513, 0.91513, 1.08595, 0.91677, 0.91677, 0.91677, 0.91677, 0.91677, + 0.89364, 0.92332, 0.89364, 0.85576, 0.99613, 0.85576, 0.99613, 0.85576, + 0.99613, 0.80729, 0.78216, 0.80729, 0.78216, 0.80729, 0.78216, 0.80729, + 0.78216, 0.94299, 0.76783, 0.95961, 0.91677, 0.77512, 0.90083, 0.77512, + 0.90083, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083, 0.86523, + 0.9135, 0.86523, 0.9135, 0.86523, 0.9135, 1, 1, 0.92222, 0.92168, 0.92222, + 0.92168, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, + 0.95381, 0.98621, 0.95381, 0.86036, 0.97096, 0.71743, 0.98981, 1, 1, + 0.95298, 0.79726, 0.95381, 1, 1, 0.79726, 0.6894, 0.79726, 0.74321, 0.81691, + 1.0006, 0.92222, 0.92168, 1, 1, 0.92222, 0.92168, 0.79464, 0.92098, 0.92168, + 0.90637, 0.91513, 0.90637, 0.91513, 0.90637, 0.91513, 0.909, 0.87514, + 0.80729, 0.95077, 1, 1, 0.80729, 0.95077, 0.76463, 0.748, 0.76463, 0.748, 1, + 1, 0.76463, 0.748, 1, 1, 0.86275, 0.72651, 0.86275, 1.04502, 0.90699, + 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, + 0.91677, 0.90699, 0.91677, 0.9154, 0.94236, 0.85458, 0.89364, 0.85458, + 0.90531, 0.9, 0.90531, 0.9, 0.90531, 0.9, 1, 0.97276, 0.85576, 0.99613, + 0.845, 0.85811, 0.90251, 0.91677, 1, 1, 0.86275, 1.04502, 1.18616, 1.18616, + 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.00899, + 1.30628, 0.85576, 0.80178, 0.66862, 0.7927, 0.69323, 0.88127, 0.72459, + 0.89711, 0.95381, 0.85576, 0.80591, 0.7805, 0.94729, 0.77512, 0.90531, + 0.92222, 0.90637, 0.98621, 0.81698, 0.92655, 0.98558, 0.92222, 0.85359, + 0.90637, 0.90976, 0.83809, 0.94523, 0.86275, 0.83509, 0.93157, 0.85308, + 0.83392, 0.92346, 0.98621, 0.83509, 0.92886, 0.91324, 0.92168, 0.95381, + 0.90646, 0.92886, 0.90557, 0.86847, 0.90276, 0.91324, 0.86842, 0.92168, + 0.99531, 0.95381, 0.9224, 0.85408, 0.92699, 0.86847, 1.0051, 0.91513, + 0.80487, 0.93481, 1, 0.88159, 1.05214, 0.90646, 0.97355, 0.81539, 0.89398, + 0.85923, 0.95381, 0.90646, 0.91513, 0.90646, 0.85923, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.9154, 0.94236, + 0.9154, 0.94236, 0.9154, 0.94236, 0.85458, 0.89364, 0.96694, 1, 0.89903, 1, + 1, 1, 0.91782, 0.91782, 0.91782, 1, 0.896, 0.896, 0.896, 0.9332, 0.9332, + 0.95973, 1, 1.26, 1, 1, 0.80479, 0.80178, 1, 1, 0.85633, 1, 1, 1, 1, + 0.97276, 1, 1, 1, 0.698, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1.14542, 1, 0.79199, 0.78694, 1.02058, 1.03493, 1.05486, 1, 1, 1.23026, + 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1.20006, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + ], + za = { lineHeight: 1.2, lineGap: 0.2 }, + _a = [ + 1.36898, 1, 1, 0.65507, 0.84943, 0.85639, 0.88465, 0.88465, 0.86936, + 0.88307, 0.86948, 0.85283, 0.85283, 1.06383, 1.02058, 0.75945, 0.9219, + 0.75945, 1.17337, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, + 0.88465, 0.88465, 0.88465, 0.88465, 0.75945, 0.75945, 1.02058, 1.02058, + 1.02058, 0.69046, 0.70926, 0.85158, 0.77812, 0.76852, 0.89591, 0.70466, + 0.76125, 0.80094, 0.86822, 0.83864, 0.728, 0.77212, 0.79475, 0.93637, + 0.87514, 0.8588, 0.76013, 0.8588, 0.72421, 0.69866, 0.77598, 0.85991, + 0.80811, 0.87832, 0.78112, 0.77512, 0.8562, 1.0222, 1.18417, 1.0222, + 1.27014, 0.89903, 1.15012, 0.93859, 0.94399, 0.846, 0.94399, 0.81453, + 1.0186, 0.94219, 0.96017, 1.03075, 1.02175, 0.912, 1.03075, 0.96998, + 0.96017, 0.93859, 0.94399, 0.94399, 0.95493, 0.746, 1.12658, 0.94578, 0.91, + 0.979, 0.882, 0.882, 0.83, 0.85034, 0.83537, 0.85034, 1.02058, 0.70869, + 0.88465, 0.88465, 0.88465, 0.88465, 0.83537, 0.90083, 1.15012, 0.9161, + 0.94565, 0.73541, 1.02058, 0.53609, 0.69353, 0.79519, 1.08595, 1, 1, + 1.15012, 1, 0.91974, 0.75945, 1.15012, 1, 0.9446, 0.73361, 0.9005, 0.9005, + 0.9005, 0.62864, 0.85158, 0.85158, 0.85158, 0.85158, 0.85158, 0.85158, + 0.773, 0.76852, 0.70466, 0.70466, 0.70466, 0.70466, 0.83864, 0.83864, + 0.83864, 0.83864, 0.90561, 0.87514, 0.8588, 0.8588, 0.8588, 0.8588, 0.8588, + 1.02058, 0.85751, 0.85991, 0.85991, 0.85991, 0.85991, 0.77512, 0.76013, + 0.88075, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 0.8075, + 0.846, 0.81453, 0.81453, 0.81453, 0.81453, 0.82424, 0.82424, 0.82424, + 0.82424, 0.9278, 0.96017, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, + 1.08595, 0.8562, 0.94578, 0.94578, 0.94578, 0.94578, 0.882, 0.94578, 0.882, + 0.85158, 0.93859, 0.85158, 0.93859, 0.85158, 0.93859, 0.76852, 0.846, + 0.76852, 0.846, 0.76852, 0.846, 0.76852, 0.846, 0.89591, 0.8544, 0.90561, + 0.94399, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, + 0.81453, 0.70466, 0.81453, 0.80094, 0.94219, 0.80094, 0.94219, 0.80094, + 0.94219, 1, 1, 0.86822, 0.96017, 0.86822, 0.96017, 0.83864, 0.82424, + 0.83864, 0.82424, 0.83864, 0.82424, 0.83864, 1.03075, 0.83864, 0.82424, + 0.81402, 1.02738, 0.728, 1.02175, 1, 1, 0.912, 0.79475, 1.03075, 1, 1, + 0.79475, 0.83911, 0.79475, 0.66266, 0.80553, 1.06676, 0.87514, 0.96017, 1, + 1, 0.87514, 0.96017, 0.86865, 0.87396, 0.96017, 0.8588, 0.93859, 0.8588, + 0.93859, 0.8588, 0.93859, 0.867, 0.84759, 0.72421, 0.95493, 1, 1, 0.72421, + 0.95493, 0.69866, 0.746, 0.69866, 0.746, 1, 1, 0.69866, 0.746, 1, 1, + 0.77598, 0.88417, 0.77598, 1.12658, 0.85991, 0.94578, 0.85991, 0.94578, + 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, + 0.87832, 0.979, 0.77512, 0.882, 0.77512, 0.8562, 0.83, 0.8562, 0.83, 0.8562, + 0.83, 1, 0.88465, 0.85158, 0.93859, 0.773, 0.8075, 0.85751, 0.8562, 1, 1, + 0.77598, 1.12658, 1.15012, 1.15012, 1.15012, 1.15012, 1.15012, 1.15313, + 1.15012, 1.15012, 1.15012, 1.08106, 1.03901, 0.85158, 0.77025, 0.62264, + 0.7646, 0.65351, 0.86026, 0.69461, 0.89947, 1.03075, 0.85158, 0.77812, + 0.76449, 0.88836, 0.70466, 0.8562, 0.86822, 0.8588, 0.83864, 0.77212, + 0.85308, 0.93637, 0.87514, 0.82352, 0.8588, 0.85701, 0.76013, 0.89058, + 0.77598, 0.8156, 0.82565, 0.78112, 0.77899, 0.89386, 0.83864, 0.8156, + 0.9486, 0.92388, 0.96186, 1.03075, 0.91123, 0.9486, 0.93298, 0.878, 0.93942, + 0.92388, 0.84596, 0.96186, 0.95119, 1.03075, 0.922, 0.88787, 0.95829, 0.88, + 0.93559, 0.93859, 0.78815, 0.93758, 1, 0.89217, 1.03737, 0.91123, 0.93969, + 0.77487, 0.85769, 0.86799, 1.03075, 0.91123, 0.93859, 0.91123, 0.86799, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0.87832, 0.979, 0.87832, 0.979, 0.87832, 0.979, 0.77512, 0.882, 0.9219, 1, + 0.89903, 1, 1, 1, 0.87321, 0.87321, 0.87321, 1, 1.027, 1.027, 1.027, + 0.86847, 0.86847, 0.79121, 1, 1.124, 1, 1, 0.73572, 0.73572, 1, 1, 0.85034, + 1, 1, 1, 1, 0.88465, 1, 1, 1, 0.669, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1.04828, 1, 0.74948, 0.75187, 1.02058, 0.98391, 1.02119, 1, 1, + 1.06233, 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1.05233, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + ], + $a = { lineHeight: 1.2, lineGap: 0.2 }, + As = [ + 1.36898, 1, 1, 0.76305, 0.82784, 0.94935, 0.89364, 0.92241, 0.89073, + 0.90706, 0.98472, 0.85283, 0.85283, 1.0664, 1.02058, 0.74505, 0.9219, + 0.74505, 1.23456, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, + 0.92241, 0.92241, 0.92241, 0.92241, 0.74505, 0.74505, 1.02058, 1.02058, + 1.02058, 0.73002, 0.72601, 0.91755, 0.8126, 0.80314, 0.92222, 0.73764, + 0.79726, 0.83051, 0.90284, 0.86023, 0.74, 0.8126, 0.84869, 0.96518, 0.91115, + 0.8858, 0.79761, 0.8858, 0.74498, 0.73914, 0.81363, 0.89591, 0.83659, + 0.89633, 0.85608, 0.8111, 0.90531, 1.0222, 1.22736, 1.0222, 1.27014, + 0.89903, 0.90088, 0.86667, 1.0231, 0.896, 1.01411, 0.90083, 1.05099, + 1.00512, 0.99793, 1.05326, 1.09377, 0.938, 1.06226, 1.00119, 0.99793, + 0.98714, 1.0231, 1.01231, 0.98196, 0.792, 1.19137, 0.99074, 0.962, 1.01915, + 0.926, 0.942, 0.856, 0.85034, 0.92006, 0.85034, 1.02058, 0.69067, 0.92241, + 0.92241, 0.92241, 0.92241, 0.92006, 0.9332, 0.90088, 0.91882, 0.93484, + 0.75339, 1.02058, 0.56866, 0.54324, 0.79519, 1.08595, 1, 1, 0.90088, 1, + 0.95325, 0.74505, 0.90088, 1, 0.97198, 0.75339, 0.91009, 0.91009, 0.91009, + 0.66466, 0.91755, 0.91755, 0.91755, 0.91755, 0.91755, 0.91755, 0.788, + 0.80314, 0.73764, 0.73764, 0.73764, 0.73764, 0.86023, 0.86023, 0.86023, + 0.86023, 0.92915, 0.91115, 0.8858, 0.8858, 0.8858, 0.8858, 0.8858, 1.02058, + 0.8858, 0.89591, 0.89591, 0.89591, 0.89591, 0.8111, 0.79611, 0.89713, + 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86936, 0.896, + 0.90083, 0.90083, 0.90083, 0.90083, 0.84224, 0.84224, 0.84224, 0.84224, + 0.97276, 0.99793, 0.98714, 0.98714, 0.98714, 0.98714, 0.98714, 1.08595, + 0.89876, 0.99074, 0.99074, 0.99074, 0.99074, 0.942, 1.0231, 0.942, 0.91755, + 0.86667, 0.91755, 0.86667, 0.91755, 0.86667, 0.80314, 0.896, 0.80314, 0.896, + 0.80314, 0.896, 0.80314, 0.896, 0.92222, 0.93372, 0.92915, 1.01411, 0.73764, + 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, + 0.90083, 0.83051, 1.00512, 0.83051, 1.00512, 0.83051, 1.00512, 1, 1, + 0.90284, 0.99793, 0.90976, 0.99793, 0.86023, 0.84224, 0.86023, 0.84224, + 0.86023, 0.84224, 0.86023, 1.05326, 0.86023, 0.84224, 0.82873, 1.07469, + 0.74, 1.09377, 1, 1, 0.938, 0.84869, 1.06226, 1, 1, 0.84869, 0.83704, + 0.84869, 0.81441, 0.85588, 1.08927, 0.91115, 0.99793, 1, 1, 0.91115, + 0.99793, 0.91887, 0.90991, 0.99793, 0.8858, 0.98714, 0.8858, 0.98714, + 0.8858, 0.98714, 0.894, 0.91434, 0.74498, 0.98196, 1, 1, 0.74498, 0.98196, + 0.73914, 0.792, 0.73914, 0.792, 1, 1, 0.73914, 0.792, 1, 1, 0.81363, 0.904, + 0.81363, 1.19137, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, + 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89633, 1.01915, + 0.8111, 0.942, 0.8111, 0.90531, 0.856, 0.90531, 0.856, 0.90531, 0.856, 1, + 0.92241, 0.91755, 0.86667, 0.788, 0.86936, 0.8858, 0.89876, 1, 1, 0.81363, + 1.19137, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, + 0.90088, 0.90088, 0.90388, 1.03901, 0.92138, 0.78105, 0.7154, 0.86169, + 0.80513, 0.94007, 0.82528, 0.98612, 1.06226, 0.91755, 0.8126, 0.81884, + 0.92819, 0.73764, 0.90531, 0.90284, 0.8858, 0.86023, 0.8126, 0.91172, + 0.96518, 0.91115, 0.83089, 0.8858, 0.87791, 0.79761, 0.89297, 0.81363, + 0.88157, 0.89992, 0.85608, 0.81992, 0.94307, 0.86023, 0.88157, 0.95308, + 0.98699, 0.99793, 1.06226, 0.95817, 0.95308, 0.97358, 0.928, 0.98088, + 0.98699, 0.92761, 0.99793, 0.96017, 1.06226, 0.986, 0.944, 0.95978, 0.938, + 0.96705, 0.98714, 0.80442, 0.98972, 1, 0.89762, 1.04552, 0.95817, 0.99007, + 0.87064, 0.91879, 0.88888, 1.06226, 0.95817, 0.98714, 0.95817, 0.88888, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0.89633, 1.01915, 0.89633, 1.01915, 0.89633, 1.01915, 0.8111, 0.942, 0.9219, + 1, 0.89903, 1, 1, 1, 0.93173, 0.93173, 0.93173, 1, 1.06304, 1.06304, + 1.06904, 0.89903, 0.89903, 0.80549, 1, 1.156, 1, 1, 0.76575, 0.76575, 1, 1, + 0.72458, 1, 1, 1, 1, 0.92241, 1, 1, 1, 0.619, 1, 1.36145, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1.07257, 1, 0.74705, 0.71119, 1.02058, 1.024, 1.02119, 1, 1, + 1.1536, 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1.05638, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + ], + es = { lineHeight: 1.2, lineGap: 0.2 }, + ts = [ + 1.76738, 1, 1, 0.99297, 0.9824, 1.04016, 1.06497, 1.03424, 0.97529, 1.17647, + 1.23203, 1.1085, 1.1085, 1.16939, 1.2107, 0.9754, 1.21408, 0.9754, 1.59578, + 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, + 1.03424, 1.03424, 0.81378, 0.81378, 1.2107, 1.2107, 1.2107, 0.71703, + 0.97847, 0.97363, 0.88776, 0.8641, 1.02096, 0.79795, 0.85132, 0.914, + 1.06085, 1.1406, 0.8007, 0.89858, 0.83693, 1.14889, 1.09398, 0.97489, + 0.92094, 0.97489, 0.90399, 0.84041, 0.95923, 1.00135, 1, 1.06467, 0.98243, + 0.90996, 0.99361, 1.1085, 1.56942, 1.1085, 1.2107, 0.74627, 0.94282, + 0.96752, 1.01519, 0.86304, 1.01359, 0.97278, 1.15103, 1.01359, 0.98561, + 1.02285, 1.02285, 1.00527, 1.02285, 1.0302, 0.99041, 1.0008, 1.01519, + 1.01359, 1.02258, 0.79104, 1.16862, 0.99041, 0.97454, 1.02511, 0.99298, + 0.96752, 0.95801, 0.94856, 1.16579, 0.94856, 1.2107, 0.9824, 1.03424, + 1.03424, 1, 1.03424, 1.16579, 0.8727, 1.3871, 1.18622, 1.10818, 1.04478, + 1.2107, 1.18622, 0.75155, 0.94994, 1.28826, 1.21408, 1.21408, 0.91056, 1, + 0.91572, 0.9754, 0.64663, 1.18328, 1.24866, 1.04478, 1.14169, 1.15749, + 1.17389, 0.71703, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, + 0.93506, 0.8641, 0.79795, 0.79795, 0.79795, 0.79795, 1.1406, 1.1406, 1.1406, + 1.1406, 1.02096, 1.09398, 0.97426, 0.97426, 0.97426, 0.97426, 0.97426, + 1.2107, 0.97489, 1.00135, 1.00135, 1.00135, 1.00135, 0.90996, 0.92094, + 1.02798, 0.96752, 0.96752, 0.96752, 0.96752, 0.96752, 0.96752, 0.93136, + 0.86304, 0.97278, 0.97278, 0.97278, 0.97278, 1.02285, 1.02285, 1.02285, + 1.02285, 0.97122, 0.99041, 1, 1, 1, 1, 1, 1.28826, 1.0008, 0.99041, 0.99041, + 0.99041, 0.99041, 0.96752, 1.01519, 0.96752, 0.97363, 0.96752, 0.97363, + 0.96752, 0.97363, 0.96752, 0.8641, 0.86304, 0.8641, 0.86304, 0.8641, + 0.86304, 0.8641, 0.86304, 1.02096, 1.03057, 1.02096, 1.03517, 0.79795, + 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, + 0.97278, 0.914, 1.01359, 0.914, 1.01359, 0.914, 1.01359, 1, 1, 1.06085, + 0.98561, 1.06085, 1.00879, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406, + 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 0.97138, 1.08692, 0.8007, + 1.02285, 1, 1, 1.00527, 0.83693, 1.02285, 1, 1, 0.83693, 0.9455, 0.83693, + 0.90418, 0.83693, 1.13005, 1.09398, 0.99041, 1, 1, 1.09398, 0.99041, + 0.96692, 1.09251, 0.99041, 0.97489, 1.0008, 0.97489, 1.0008, 0.97489, + 1.0008, 0.93994, 0.97931, 0.90399, 1.02258, 1, 1, 0.90399, 1.02258, 0.84041, + 0.79104, 0.84041, 0.79104, 0.84041, 0.79104, 0.84041, 0.79104, 1, 1, + 0.95923, 1.07034, 0.95923, 1.16862, 1.00135, 0.99041, 1.00135, 0.99041, + 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, + 1.06467, 1.02511, 0.90996, 0.96752, 0.90996, 0.99361, 0.95801, 0.99361, + 0.95801, 0.99361, 0.95801, 1.07733, 1.03424, 0.97363, 0.96752, 0.93506, + 0.93136, 0.97489, 1.0008, 1, 1, 0.95923, 1.16862, 1.15103, 1.15103, 1.01173, + 1.03959, 0.75953, 0.81378, 0.79912, 1.15103, 1.21994, 0.95161, 0.87815, + 1.01149, 0.81525, 0.7676, 0.98167, 1.01134, 1.02546, 0.84097, 1.03089, + 1.18102, 0.97363, 0.88776, 0.85134, 0.97826, 0.79795, 0.99361, 1.06085, + 0.97489, 1.1406, 0.89858, 1.0388, 1.14889, 1.09398, 0.86039, 0.97489, + 1.0595, 0.92094, 0.94793, 0.95923, 0.90996, 0.99346, 0.98243, 1.02112, + 0.95493, 1.1406, 0.90996, 1.03574, 1.02597, 1.0008, 1.18102, 1.06628, + 1.03574, 1.0192, 1.01932, 1.00886, 0.97531, 1.0106, 1.0008, 1.13189, + 1.18102, 1.02277, 0.98683, 1.0016, 0.99561, 1.07237, 1.0008, 0.90434, + 0.99921, 0.93803, 0.8965, 1.23085, 1.06628, 1.04983, 0.96268, 1.0499, + 0.98439, 1.18102, 1.06628, 1.0008, 1.06628, 0.98439, 0.79795, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1.09466, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 0.97278, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.02065, 1, 1, 1, 1, 1, 1, + 1.06467, 1.02511, 1.06467, 1.02511, 1.06467, 1.02511, 0.90996, 0.96752, 1, + 1.21408, 0.89903, 1, 1, 0.75155, 1.04394, 1.04394, 1.04394, 1.04394, + 0.98633, 0.98633, 0.98633, 0.73047, 0.73047, 1.20642, 0.91211, 1.25635, + 1.222, 1.02956, 1.03372, 1.03372, 0.96039, 1.24633, 1, 1.12454, 0.93503, + 1.03424, 1.19687, 1.03424, 1, 1, 1, 0.771, 1, 1, 1.15749, 1.15749, 1.15749, + 1.10948, 0.86279, 0.94434, 0.86279, 0.94434, 0.86182, 1, 1, 1.16897, 1, + 0.96085, 0.90137, 1.2107, 1.18416, 1.13973, 0.69825, 0.9716, 2.10339, + 1.29004, 1.29004, 1.21172, 1.29004, 1.29004, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, + 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.18874, 1.42603, 1, + 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, + 1, 1, 1, 1.09193, 1.09193, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, + ], + is = { lineHeight: 1.33008, lineGap: 0 }, + as = [ + 1.76738, 1, 1, 0.98946, 1.03959, 1.04016, 1.02809, 1.036, 0.97639, 1.10953, + 1.23203, 1.11144, 1.11144, 1.16939, 1.21237, 0.9754, 1.21261, 0.9754, + 1.59754, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, + 1.036, 0.81378, 0.81378, 1.21237, 1.21237, 1.21237, 0.73541, 0.97847, + 0.97363, 0.89723, 0.87897, 1.0426, 0.79429, 0.85292, 0.91149, 1.05815, + 1.1406, 0.79631, 0.90128, 0.83853, 1.04396, 1.10615, 0.97552, 0.94436, + 0.97552, 0.88641, 0.80527, 0.96083, 1.00135, 1, 1.06777, 0.9817, 0.91142, + 0.99361, 1.11144, 1.57293, 1.11144, 1.21237, 0.74627, 1.31818, 1.06585, + 0.97042, 0.83055, 0.97042, 0.93503, 1.1261, 0.97042, 0.97922, 1.14236, + 0.94552, 1.01054, 1.14236, 1.02471, 0.97922, 0.94165, 0.97042, 0.97042, + 1.0276, 0.78929, 1.1261, 0.97922, 0.95874, 1.02197, 0.98507, 0.96752, + 0.97168, 0.95107, 1.16579, 0.95107, 1.21237, 1.03959, 1.036, 1.036, 1, + 1.036, 1.16579, 0.87357, 1.31818, 1.18754, 1.26781, 1.05356, 1.21237, + 1.18622, 0.79487, 0.94994, 1.29004, 1.24047, 1.24047, 1.31818, 1, 0.91484, + 0.9754, 1.31818, 1.1349, 1.24866, 1.05356, 1.13934, 1.15574, 1.17389, + 0.73541, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.94385, + 0.87897, 0.79429, 0.79429, 0.79429, 0.79429, 1.1406, 1.1406, 1.1406, 1.1406, + 1.0426, 1.10615, 0.97552, 0.97552, 0.97552, 0.97552, 0.97552, 1.21237, + 0.97552, 1.00135, 1.00135, 1.00135, 1.00135, 0.91142, 0.94436, 0.98721, + 1.06585, 1.06585, 1.06585, 1.06585, 1.06585, 1.06585, 0.96705, 0.83055, + 0.93503, 0.93503, 0.93503, 0.93503, 1.14236, 1.14236, 1.14236, 1.14236, + 0.93125, 0.97922, 0.94165, 0.94165, 0.94165, 0.94165, 0.94165, 1.29004, + 0.94165, 0.97922, 0.97922, 0.97922, 0.97922, 0.96752, 0.97042, 0.96752, + 0.97363, 1.06585, 0.97363, 1.06585, 0.97363, 1.06585, 0.87897, 0.83055, + 0.87897, 0.83055, 0.87897, 0.83055, 0.87897, 0.83055, 1.0426, 1.0033, + 1.0426, 0.97042, 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, + 0.79429, 0.93503, 0.79429, 0.93503, 0.91149, 0.97042, 0.91149, 0.97042, + 0.91149, 0.97042, 1, 1, 1.05815, 0.97922, 1.05815, 0.97922, 1.1406, 1.14236, + 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 0.97441, + 1.04302, 0.79631, 1.01582, 1, 1, 1.01054, 0.83853, 1.14236, 1, 1, 0.83853, + 1.09125, 0.83853, 0.90418, 0.83853, 1.19508, 1.10615, 0.97922, 1, 1, + 1.10615, 0.97922, 1.01034, 1.10466, 0.97922, 0.97552, 0.94165, 0.97552, + 0.94165, 0.97552, 0.94165, 0.91602, 0.91981, 0.88641, 1.0276, 1, 1, 0.88641, + 1.0276, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527, + 0.78929, 1, 1, 0.96083, 1.05403, 0.95923, 1.16862, 1.00135, 0.97922, + 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, + 1.00135, 0.97922, 1.06777, 1.02197, 0.91142, 0.96752, 0.91142, 0.99361, + 0.97168, 0.99361, 0.97168, 0.99361, 0.97168, 1.23199, 1.036, 0.97363, + 1.06585, 0.94385, 0.96705, 0.97552, 0.94165, 1, 1, 0.96083, 1.1261, 1.31818, + 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, + 0.95161, 1.27126, 1.00811, 0.83284, 0.77702, 0.99137, 0.95253, 1.0347, + 0.86142, 1.07205, 1.14236, 0.97363, 0.89723, 0.86869, 1.09818, 0.79429, + 0.99361, 1.05815, 0.97552, 1.1406, 0.90128, 1.06662, 1.04396, 1.10615, + 0.84918, 0.97552, 1.04694, 0.94436, 0.98015, 0.96083, 0.91142, 1.00356, + 0.9817, 1.01945, 0.98999, 1.1406, 0.91142, 1.04961, 0.9898, 1.00639, + 1.14236, 1.07514, 1.04961, 0.99607, 1.02897, 1.008, 0.9898, 0.95134, + 1.00639, 1.11121, 1.14236, 1.00518, 0.97981, 1.02186, 1, 1.08578, 0.94165, + 0.99314, 0.98387, 0.93028, 0.93377, 1.35125, 1.07514, 1.10687, 0.93491, + 1.04232, 1.00351, 1.14236, 1.07514, 0.94165, 1.07514, 1.00351, 0.79429, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.09097, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0.93503, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.96609, 1, 1, + 1, 1, 1, 1, 1.06777, 1.02197, 1.06777, 1.02197, 1.06777, 1.02197, 0.91142, + 0.96752, 1, 1.21261, 0.89903, 1, 1, 0.75155, 1.04745, 1.04745, 1.04745, + 1.04394, 0.98633, 0.98633, 0.98633, 0.72959, 0.72959, 1.20502, 0.91406, + 1.26514, 1.222, 1.02956, 1.03372, 1.03372, 0.96039, 1.24633, 1, 1.09125, + 0.93327, 1.03336, 1.16541, 1.036, 1, 1, 1, 0.771, 1, 1, 1.15574, 1.15574, + 1.15574, 1.15574, 0.86364, 0.94434, 0.86279, 0.94434, 0.86224, 1, 1, + 1.16798, 1, 0.96085, 0.90068, 1.21237, 1.18416, 1.13904, 0.69825, 0.9716, + 2.10339, 1.29004, 1.29004, 1.21339, 1.29004, 1.29004, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, + 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.18775, 1.42603, + 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, + 1.34163, 1, 1, 1, 1.13269, 1.13269, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + ], + ss = { lineHeight: 1.33008, lineGap: 0 }, + rs = [ + 1.76738, 1, 1, 0.98946, 1.14763, 1.05365, 1.06234, 0.96927, 0.92586, + 1.15373, 1.18414, 0.91349, 0.91349, 1.07403, 1.17308, 0.78383, 1.20088, + 0.78383, 1.42531, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, + 0.96927, 0.96927, 0.96927, 0.96927, 0.78383, 0.78383, 1.17308, 1.17308, + 1.17308, 0.77349, 0.94565, 0.94729, 0.85944, 0.88506, 0.9858, 0.74817, + 0.80016, 0.88449, 0.98039, 0.95782, 0.69238, 0.89898, 0.83231, 0.98183, + 1.03989, 0.96924, 0.86237, 0.96924, 0.80595, 0.74524, 0.86091, 0.95402, + 0.94143, 0.98448, 0.8858, 0.83089, 0.93285, 1.0949, 1.39016, 1.0949, + 1.45994, 0.74627, 1.04839, 0.97454, 0.97454, 0.87207, 0.97454, 0.87533, + 1.06151, 0.97454, 1.00176, 1.16484, 1.08132, 0.98047, 1.16484, 1.02989, + 1.01054, 0.96225, 0.97454, 0.97454, 1.06598, 0.79004, 1.16344, 1.00351, + 0.94629, 0.9973, 0.91016, 0.96777, 0.9043, 0.91082, 0.92481, 0.91082, + 1.17308, 0.95748, 0.96927, 0.96927, 1, 0.96927, 0.92481, 0.80597, 1.04839, + 1.23393, 1.1781, 0.9245, 1.17308, 1.20808, 0.63218, 0.94261, 1.24822, + 1.09971, 1.09971, 1.04839, 1, 0.85273, 0.78032, 1.04839, 1.09971, 1.22326, + 0.9245, 1.09836, 1.13525, 1.15222, 0.70424, 0.94729, 0.94729, 0.94729, + 0.94729, 0.94729, 0.94729, 0.85498, 0.88506, 0.74817, 0.74817, 0.74817, + 0.74817, 0.95782, 0.95782, 0.95782, 0.95782, 0.9858, 1.03989, 0.96924, + 0.96924, 0.96924, 0.96924, 0.96924, 1.17308, 0.96924, 0.95402, 0.95402, + 0.95402, 0.95402, 0.83089, 0.86237, 0.88409, 0.97454, 0.97454, 0.97454, + 0.97454, 0.97454, 0.97454, 0.92916, 0.87207, 0.87533, 0.87533, 0.87533, + 0.87533, 0.93146, 0.93146, 0.93146, 0.93146, 0.93854, 1.01054, 0.96225, + 0.96225, 0.96225, 0.96225, 0.96225, 1.24822, 0.8761, 1.00351, 1.00351, + 1.00351, 1.00351, 0.96777, 0.97454, 0.96777, 0.94729, 0.97454, 0.94729, + 0.97454, 0.94729, 0.97454, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506, + 0.87207, 0.88506, 0.87207, 0.9858, 0.95391, 0.9858, 0.97454, 0.74817, + 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, + 0.87533, 0.88449, 0.97454, 0.88449, 0.97454, 0.88449, 0.97454, 1, 1, + 0.98039, 1.00176, 0.98039, 1.00176, 0.95782, 0.93146, 0.95782, 0.93146, + 0.95782, 0.93146, 0.95782, 1.16484, 0.95782, 0.93146, 0.84421, 1.12761, + 0.69238, 1.08132, 1, 1, 0.98047, 0.83231, 1.16484, 1, 1, 0.84723, 1.04861, + 0.84723, 0.78755, 0.83231, 1.23736, 1.03989, 1.01054, 1, 1, 1.03989, + 1.01054, 0.9857, 1.03849, 1.01054, 0.96924, 0.96225, 0.96924, 0.96225, + 0.96924, 0.96225, 0.92383, 0.90171, 0.80595, 1.06598, 1, 1, 0.80595, + 1.06598, 0.74524, 0.79004, 0.74524, 0.79004, 0.74524, 0.79004, 0.74524, + 0.79004, 1, 1, 0.86091, 1.02759, 0.85771, 1.16344, 0.95402, 1.00351, + 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, + 0.95402, 1.00351, 0.98448, 0.9973, 0.83089, 0.96777, 0.83089, 0.93285, + 0.9043, 0.93285, 0.9043, 0.93285, 0.9043, 1.31868, 0.96927, 0.94729, + 0.97454, 0.85498, 0.92916, 0.96924, 0.8761, 1, 1, 0.86091, 1.16344, 1.04839, + 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, + 0.81965, 0.81965, 0.94729, 0.78032, 0.71022, 0.90883, 0.84171, 0.99877, + 0.77596, 1.05734, 1.2, 0.94729, 0.85944, 0.82791, 0.9607, 0.74817, 0.93285, + 0.98039, 0.96924, 0.95782, 0.89898, 0.98316, 0.98183, 1.03989, 0.78614, + 0.96924, 0.97642, 0.86237, 0.86075, 0.86091, 0.83089, 0.90082, 0.8858, + 0.97296, 1.01284, 0.95782, 0.83089, 1.0976, 1.04, 1.03342, 1.2, 1.0675, + 1.0976, 0.98205, 1.03809, 1.05097, 1.04, 0.95364, 1.03342, 1.05401, 1.2, + 1.02148, 1.0119, 1.04724, 1.0127, 1.02732, 0.96225, 0.8965, 0.97783, + 0.93574, 0.94818, 1.30679, 1.0675, 1.11826, 0.99821, 1.0557, 1.0326, 1.2, + 1.0675, 0.96225, 1.0675, 1.0326, 0.74817, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1.03754, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.87533, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.98705, 1, 1, 1, 1, 1, 1, 0.98448, 0.9973, + 0.98448, 0.9973, 0.98448, 0.9973, 0.83089, 0.96777, 1, 1.20088, 0.89903, 1, + 1, 0.75155, 0.94945, 0.94945, 0.94945, 0.94945, 1.12317, 1.12317, 1.12317, + 0.67603, 0.67603, 1.15621, 0.73584, 1.21191, 1.22135, 1.06483, 0.94868, + 0.94868, 0.95996, 1.24633, 1, 1.07497, 0.87709, 0.96927, 1.01473, 0.96927, + 1, 1, 1, 0.77295, 1, 1, 1.09836, 1.09836, 1.09836, 1.01522, 0.86321, + 0.94434, 0.8649, 0.94434, 0.86182, 1, 1, 1.083, 1, 0.91578, 0.86438, + 1.17308, 1.18416, 1.14589, 0.69825, 0.97622, 1.96791, 1.24822, 1.24822, + 1.17308, 1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, + 0.87025, 0.87025, 0.87025, 1.17984, 1.42603, 1, 1.42603, 1.42603, 0.99862, + 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.10742, 1.10742, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + ], + ns = { lineHeight: 1.33008, lineGap: 0 }, + os = [ + 1.76738, 1, 1, 0.98594, 1.02285, 1.10454, 1.06234, 0.96927, 0.92037, + 1.19985, 1.2046, 0.90616, 0.90616, 1.07152, 1.1714, 0.78032, 1.20088, + 0.78032, 1.40246, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, + 0.96927, 0.96927, 0.96927, 0.96927, 0.78032, 0.78032, 1.1714, 1.1714, + 1.1714, 0.80597, 0.94084, 0.96706, 0.85944, 0.85734, 0.97093, 0.75842, + 0.79936, 0.88198, 0.9831, 0.95782, 0.71387, 0.86969, 0.84636, 1.07796, + 1.03584, 0.96924, 0.83968, 0.96924, 0.82826, 0.79649, 0.85771, 0.95132, + 0.93119, 0.98965, 0.88433, 0.8287, 0.93365, 1.08612, 1.3638, 1.08612, + 1.45786, 0.74627, 0.80499, 0.91484, 1.05707, 0.92383, 1.05882, 0.9403, + 1.12654, 1.05882, 1.01756, 1.09011, 1.09011, 0.99414, 1.09011, 1.034, + 1.01756, 1.05356, 1.05707, 1.05882, 1.04399, 0.84863, 1.21968, 1.01756, + 0.95801, 1.00068, 0.91797, 0.96777, 0.9043, 0.90351, 0.92105, 0.90351, + 1.1714, 0.85337, 0.96927, 0.96927, 0.99912, 0.96927, 0.92105, 0.80597, + 1.2434, 1.20808, 1.05937, 0.90957, 1.1714, 1.20808, 0.75155, 0.94261, + 1.24644, 1.09971, 1.09971, 0.84751, 1, 0.85273, 0.78032, 0.61584, 1.05425, + 1.17914, 0.90957, 1.08665, 1.11593, 1.14169, 0.73381, 0.96706, 0.96706, + 0.96706, 0.96706, 0.96706, 0.96706, 0.86035, 0.85734, 0.75842, 0.75842, + 0.75842, 0.75842, 0.95782, 0.95782, 0.95782, 0.95782, 0.97093, 1.03584, + 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 1.1714, 0.96924, 0.95132, + 0.95132, 0.95132, 0.95132, 0.8287, 0.83968, 0.89049, 0.91484, 0.91484, + 0.91484, 0.91484, 0.91484, 0.91484, 0.93575, 0.92383, 0.9403, 0.9403, + 0.9403, 0.9403, 0.8717, 0.8717, 0.8717, 0.8717, 1.00527, 1.01756, 1.05356, + 1.05356, 1.05356, 1.05356, 1.05356, 1.24644, 0.95923, 1.01756, 1.01756, + 1.01756, 1.01756, 0.96777, 1.05707, 0.96777, 0.96706, 0.91484, 0.96706, + 0.91484, 0.96706, 0.91484, 0.85734, 0.92383, 0.85734, 0.92383, 0.85734, + 0.92383, 0.85734, 0.92383, 0.97093, 1.0969, 0.97093, 1.05882, 0.75842, + 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, + 0.88198, 1.05882, 0.88198, 1.05882, 0.88198, 1.05882, 1, 1, 0.9831, 1.01756, + 0.9831, 1.01756, 0.95782, 0.8717, 0.95782, 0.8717, 0.95782, 0.8717, 0.95782, + 1.09011, 0.95782, 0.8717, 0.84784, 1.11551, 0.71387, 1.09011, 1, 1, 0.99414, + 0.84636, 1.09011, 1, 1, 0.84636, 1.0536, 0.84636, 0.94298, 0.84636, 1.23297, + 1.03584, 1.01756, 1, 1, 1.03584, 1.01756, 1.00323, 1.03444, 1.01756, + 0.96924, 1.05356, 0.96924, 1.05356, 0.96924, 1.05356, 0.93066, 0.98293, + 0.82826, 1.04399, 1, 1, 0.82826, 1.04399, 0.79649, 0.84863, 0.79649, + 0.84863, 0.79649, 0.84863, 0.79649, 0.84863, 1, 1, 0.85771, 1.17318, + 0.85771, 1.21968, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, + 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.98965, 1.00068, + 0.8287, 0.96777, 0.8287, 0.93365, 0.9043, 0.93365, 0.9043, 0.93365, 0.9043, + 1.08571, 0.96927, 0.96706, 0.91484, 0.86035, 0.93575, 0.96924, 0.95923, 1, + 1, 0.85771, 1.21968, 1.11437, 1.11437, 0.93109, 0.91202, 0.60411, 0.84164, + 0.55572, 1.01173, 0.97361, 0.81818, 0.81818, 0.96635, 0.78032, 0.72727, + 0.92366, 0.98601, 1.03405, 0.77968, 1.09799, 1.2, 0.96706, 0.85944, 0.85638, + 0.96491, 0.75842, 0.93365, 0.9831, 0.96924, 0.95782, 0.86969, 0.94152, + 1.07796, 1.03584, 0.78437, 0.96924, 0.98715, 0.83968, 0.83491, 0.85771, + 0.8287, 0.94492, 0.88433, 0.9287, 1.0098, 0.95782, 0.8287, 1.0625, 0.98248, + 1.03424, 1.2, 1.01071, 1.0625, 0.95246, 1.03809, 1.04912, 0.98248, 1.00221, + 1.03424, 1.05443, 1.2, 1.04785, 0.99609, 1.00169, 1.05176, 0.99346, 1.05356, + 0.9087, 1.03004, 0.95542, 0.93117, 1.23362, 1.01071, 1.07831, 1.02512, + 1.05205, 1.03502, 1.2, 1.01071, 1.05356, 1.01071, 1.03502, 0.75842, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.03719, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 0.9403, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.04021, 1, 1, 1, 1, 1, + 1, 0.98965, 1.00068, 0.98965, 1.00068, 0.98965, 1.00068, 0.8287, 0.96777, 1, + 1.20088, 0.89903, 1, 1, 0.75155, 1.03077, 1.03077, 1.03077, 1.03077, + 1.13196, 1.13196, 1.13196, 0.67428, 0.67428, 1.16039, 0.73291, 1.20996, + 1.22135, 1.06483, 0.94868, 0.94868, 0.95996, 1.24633, 1, 1.07497, 0.87796, + 0.96927, 1.01518, 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.10539, 1.10539, + 1.11358, 1.06967, 0.86279, 0.94434, 0.86279, 0.94434, 0.86182, 1, 1, 1.083, + 1, 0.91578, 0.86507, 1.1714, 1.18416, 1.14589, 0.69825, 0.97622, 1.9697, + 1.24822, 1.24822, 1.17238, 1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, + 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.18083, 1.42603, 1, + 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, + 1, 1, 1, 1.10938, 1.10938, 1, 1, 1, 1.05425, 1.09971, 1.09971, 1.09971, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + ], + gs = { lineHeight: 1.33008, lineGap: 0 }, + Is = getLookupTableFactory(function (e) { + e["MyriadPro-Regular"] = e["PdfJS-Fallback-Regular"] = { + name: "LiberationSans-Regular", + factors: As, + baseWidths: Wa, + baseMapping: Xa, + metrics: es, + }; + e["MyriadPro-Bold"] = e["PdfJS-Fallback-Bold"] = { + name: "LiberationSans-Bold", + factors: ja, + baseWidths: va, + baseMapping: Ka, + metrics: Za, + }; + e["MyriadPro-It"] = + e["MyriadPro-Italic"] = + e["PdfJS-Fallback-Italic"] = + { + name: "LiberationSans-Italic", + factors: _a, + baseWidths: Oa, + baseMapping: Pa, + metrics: $a, + }; + e["MyriadPro-BoldIt"] = + e["MyriadPro-BoldItalic"] = + e["PdfJS-Fallback-BoldItalic"] = + { + name: "LiberationSans-BoldItalic", + factors: Va, + baseWidths: Ta, + baseMapping: qa, + metrics: za, + }; + e.ArialMT = + e.Arial = + e["Arial-Regular"] = + { name: "LiberationSans-Regular", baseWidths: Wa, baseMapping: Xa }; + e["Arial-BoldMT"] = e["Arial-Bold"] = { + name: "LiberationSans-Bold", + baseWidths: va, + baseMapping: Ka, + }; + e["Arial-ItalicMT"] = e["Arial-Italic"] = { + name: "LiberationSans-Italic", + baseWidths: Oa, + baseMapping: Pa, + }; + e["Arial-BoldItalicMT"] = e["Arial-BoldItalic"] = { + name: "LiberationSans-BoldItalic", + baseWidths: Ta, + baseMapping: qa, + }; + e["Calibri-Regular"] = { + name: "LiberationSans-Regular", + factors: Ra, + baseWidths: Wa, + baseMapping: Xa, + metrics: Na, + }; + e["Calibri-Bold"] = { + name: "LiberationSans-Bold", + factors: wa, + baseWidths: va, + baseMapping: Ka, + metrics: ba, + }; + e["Calibri-Italic"] = { + name: "LiberationSans-Italic", + factors: Sa, + baseWidths: Oa, + baseMapping: Pa, + metrics: ka, + }; + e["Calibri-BoldItalic"] = { + name: "LiberationSans-BoldItalic", + factors: Da, + baseWidths: Ta, + baseMapping: qa, + metrics: Fa, + }; + e["Segoeui-Regular"] = { + name: "LiberationSans-Regular", + factors: os, + baseWidths: Wa, + baseMapping: Xa, + metrics: gs, + }; + e["Segoeui-Bold"] = { + name: "LiberationSans-Bold", + factors: ts, + baseWidths: va, + baseMapping: Ka, + metrics: is, + }; + e["Segoeui-Italic"] = { + name: "LiberationSans-Italic", + factors: rs, + baseWidths: Oa, + baseMapping: Pa, + metrics: ns, + }; + e["Segoeui-BoldItalic"] = { + name: "LiberationSans-BoldItalic", + factors: as, + baseWidths: Ta, + baseMapping: qa, + metrics: ss, + }; + e["Helvetica-Regular"] = e.Helvetica = { + name: "LiberationSans-Regular", + factors: Ha, + baseWidths: Wa, + baseMapping: Xa, + metrics: Ya, + }; + e["Helvetica-Bold"] = { + name: "LiberationSans-Bold", + factors: Ga, + baseWidths: va, + baseMapping: Ka, + metrics: xa, + }; + e["Helvetica-Italic"] = { + name: "LiberationSans-Italic", + factors: La, + baseWidths: Oa, + baseMapping: Pa, + metrics: Ja, + }; + e["Helvetica-BoldItalic"] = { + name: "LiberationSans-BoldItalic", + factors: Ma, + baseWidths: Ta, + baseMapping: qa, + metrics: Ua, + }; + }); +function getXfaFontName(e) { + const t = normalizeFontName(e); + return Is()[t]; +} +function getXfaFontDict(e) { + const t = (function getXfaFontWidths(e) { + const t = getXfaFontName(e); + if (!t) return null; + const { baseWidths: i, baseMapping: a, factors: s } = t, + r = s ? i.map((e, t) => e * s[t]) : i; + let n, + o = -2; + const g = []; + for (const [e, t] of a.map((e, t) => [e, t]).sort(([e], [t]) => e - t)) + if (-1 !== e) + if (e === o + 1) { + n.push(r[t]); + o += 1; + } else { + o = e; + n = [r[t]]; + g.push(e, n); + } + return g; + })(e), + i = new Dict(null); + i.set("BaseFont", Name.get(e)); + i.set("Type", Name.get("Font")); + i.set("Subtype", Name.get("CIDFontType2")); + i.set("Encoding", Name.get("Identity-H")); + i.set("CIDToGIDMap", Name.get("Identity")); + i.set("W", t); + i.set("FirstChar", t[0]); + i.set("LastChar", t.at(-2) + t.at(-1).length - 1); + const a = new Dict(null); + i.set("FontDescriptor", a); + const s = new Dict(null); + s.set("Ordering", "Identity"); + s.set("Registry", "Adobe"); + s.set("Supplement", 0); + i.set("CIDSystemInfo", s); + return i; +} +class PostScriptParser { + constructor(e) { + this.lexer = e; + this.operators = []; + this.token = null; + this.prev = null; + } + nextToken() { + this.prev = this.token; + this.token = this.lexer.getToken(); + } + accept(e) { + if (this.token.type === e) { + this.nextToken(); + return !0; + } + return !1; + } + expect(e) { + if (this.accept(e)) return !0; + throw new FormatError( + `Unexpected symbol: found ${this.token.type} expected ${e}.`, + ); + } + parse() { + this.nextToken(); + this.expect(cs.LBRACE); + this.parseBlock(); + this.expect(cs.RBRACE); + return this.operators; + } + parseBlock() { + for (;;) + if (this.accept(cs.NUMBER)) this.operators.push(this.prev.value); + else if (this.accept(cs.OPERATOR)) this.operators.push(this.prev.value); + else { + if (!this.accept(cs.LBRACE)) return; + this.parseCondition(); + } + } + parseCondition() { + const e = this.operators.length; + this.operators.push(null, null); + this.parseBlock(); + this.expect(cs.RBRACE); + if (this.accept(cs.IF)) { + this.operators[e] = this.operators.length; + this.operators[e + 1] = "jz"; + } else { + if (!this.accept(cs.LBRACE)) + throw new FormatError("PS Function: error parsing conditional."); + { + const t = this.operators.length; + this.operators.push(null, null); + const i = this.operators.length; + this.parseBlock(); + this.expect(cs.RBRACE); + this.expect(cs.IFELSE); + this.operators[t] = this.operators.length; + this.operators[t + 1] = "j"; + this.operators[e] = i; + this.operators[e + 1] = "jz"; + } + } + } +} +const cs = { LBRACE: 0, RBRACE: 1, NUMBER: 2, OPERATOR: 3, IF: 4, IFELSE: 5 }; +class PostScriptToken { + static get opCache() { + return shadow(this, "opCache", Object.create(null)); + } + constructor(e, t) { + this.type = e; + this.value = t; + } + static getOperator(e) { + return (PostScriptToken.opCache[e] ||= new PostScriptToken(cs.OPERATOR, e)); + } + static get LBRACE() { + return shadow(this, "LBRACE", new PostScriptToken(cs.LBRACE, "{")); + } + static get RBRACE() { + return shadow(this, "RBRACE", new PostScriptToken(cs.RBRACE, "}")); + } + static get IF() { + return shadow(this, "IF", new PostScriptToken(cs.IF, "IF")); + } + static get IFELSE() { + return shadow(this, "IFELSE", new PostScriptToken(cs.IFELSE, "IFELSE")); + } +} +class PostScriptLexer { + constructor(e) { + this.stream = e; + this.nextChar(); + this.strBuf = []; + } + nextChar() { + return (this.currentChar = this.stream.getByte()); + } + getToken() { + let e = !1, + t = this.currentChar; + for (;;) { + if (t < 0) return pt; + if (e) (10 !== t && 13 !== t) || (e = !1); + else if (37 === t) e = !0; + else if (!isWhiteSpace(t)) break; + t = this.nextChar(); + } + switch (0 | t) { + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + case 43: + case 45: + case 46: + return new PostScriptToken(cs.NUMBER, this.getNumber()); + case 123: + this.nextChar(); + return PostScriptToken.LBRACE; + case 125: + this.nextChar(); + return PostScriptToken.RBRACE; + } + const i = this.strBuf; + i.length = 0; + i[0] = String.fromCharCode(t); + for ( + ; + (t = this.nextChar()) >= 0 && + ((t >= 65 && t <= 90) || (t >= 97 && t <= 122)); + + ) + i.push(String.fromCharCode(t)); + const a = i.join(""); + switch (a.toLowerCase()) { + case "if": + return PostScriptToken.IF; + case "ifelse": + return PostScriptToken.IFELSE; + default: + return PostScriptToken.getOperator(a); + } + } + getNumber() { + let e = this.currentChar; + const t = this.strBuf; + t.length = 0; + t[0] = String.fromCharCode(e); + for ( + ; + (e = this.nextChar()) >= 0 && + ((e >= 48 && e <= 57) || 45 === e || 46 === e); + + ) + t.push(String.fromCharCode(e)); + const i = parseFloat(t.join("")); + if (isNaN(i)) throw new FormatError(`Invalid floating point number: ${i}`); + return i; + } +} +class BaseLocalCache { + constructor(e) { + this.constructor === BaseLocalCache && + unreachable("Cannot initialize BaseLocalCache."); + this._onlyRefs = !0 === e?.onlyRefs; + if (!this._onlyRefs) { + this._nameRefMap = new Map(); + this._imageMap = new Map(); + } + this._imageCache = new RefSetCache(); + } + getByName(e) { + this._onlyRefs && unreachable("Should not call `getByName` method."); + const t = this._nameRefMap.get(e); + return t ? this.getByRef(t) : this._imageMap.get(e) || null; + } + getByRef(e) { + return this._imageCache.get(e) || null; + } + set(e, t, i) { + unreachable("Abstract method `set` called."); + } +} +class LocalImageCache extends BaseLocalCache { + set(e, t = null, i) { + if ("string" != typeof e) + throw new Error('LocalImageCache.set - expected "name" argument.'); + if (t) { + if (this._imageCache.has(t)) return; + this._nameRefMap.set(e, t); + this._imageCache.put(t, i); + } else this._imageMap.has(e) || this._imageMap.set(e, i); + } +} +class LocalColorSpaceCache extends BaseLocalCache { + set(e = null, t = null, i) { + if ("string" != typeof e && !t) + throw new Error( + 'LocalColorSpaceCache.set - expected "name" and/or "ref" argument.', + ); + if (t) { + if (this._imageCache.has(t)) return; + null !== e && this._nameRefMap.set(e, t); + this._imageCache.put(t, i); + } else this._imageMap.has(e) || this._imageMap.set(e, i); + } +} +class LocalFunctionCache extends BaseLocalCache { + constructor(e) { + super({ onlyRefs: !0 }); + } + set(e = null, t, i) { + if (!t) + throw new Error('LocalFunctionCache.set - expected "ref" argument.'); + this._imageCache.has(t) || this._imageCache.put(t, i); + } +} +class LocalGStateCache extends BaseLocalCache { + set(e, t = null, i) { + if ("string" != typeof e) + throw new Error('LocalGStateCache.set - expected "name" argument.'); + if (t) { + if (this._imageCache.has(t)) return; + this._nameRefMap.set(e, t); + this._imageCache.put(t, i); + } else this._imageMap.has(e) || this._imageMap.set(e, i); + } +} +class LocalTilingPatternCache extends BaseLocalCache { + constructor(e) { + super({ onlyRefs: !0 }); + } + set(e = null, t, i) { + if (!t) + throw new Error('LocalTilingPatternCache.set - expected "ref" argument.'); + this._imageCache.has(t) || this._imageCache.put(t, i); + } +} +class RegionalImageCache extends BaseLocalCache { + constructor(e) { + super({ onlyRefs: !0 }); + } + set(e = null, t, i) { + if (!t) + throw new Error('RegionalImageCache.set - expected "ref" argument.'); + this._imageCache.has(t) || this._imageCache.put(t, i); + } +} +class GlobalImageCache { + static NUM_PAGES_THRESHOLD = 2; + static MIN_IMAGES_TO_CACHE = 10; + static MAX_BYTE_SIZE = 5e7; + #b = new RefSet(); + constructor() { + this._refCache = new RefSetCache(); + this._imageCache = new RefSetCache(); + } + get #D() { + let e = 0; + for (const t of this._imageCache) e += t.byteSize; + return e; + } + get #F() { + return ( + !(this._imageCache.size < GlobalImageCache.MIN_IMAGES_TO_CACHE) && + !(this.#D < GlobalImageCache.MAX_BYTE_SIZE) + ); + } + shouldCache(e, t) { + let i = this._refCache.get(e); + if (!i) { + i = new Set(); + this._refCache.put(e, i); + } + i.add(t); + return ( + !(i.size < GlobalImageCache.NUM_PAGES_THRESHOLD) && + !(!this._imageCache.has(e) && this.#F) + ); + } + addDecodeFailed(e) { + this.#b.put(e); + } + hasDecodeFailed(e) { + return this.#b.has(e); + } + addByteSize(e, t) { + const i = this._imageCache.get(e); + i && (i.byteSize || (i.byteSize = t)); + } + getData(e, t) { + const i = this._refCache.get(e); + if (!i) return null; + if (i.size < GlobalImageCache.NUM_PAGES_THRESHOLD) return null; + const a = this._imageCache.get(e); + if (!a) return null; + i.add(t); + return a; + } + setData(e, t) { + if (!this._refCache.has(e)) + throw new Error( + 'GlobalImageCache.setData - expected "shouldCache" to have been called.', + ); + this._imageCache.has(e) || + (this.#F + ? warn("GlobalImageCache.setData - cache limit reached.") + : this._imageCache.put(e, t)); + } + clear(e = !1) { + if (!e) { + this.#b.clear(); + this._refCache.clear(); + } + this._imageCache.clear(); + } +} +class PDFFunctionFactory { + constructor({ xref: e, isEvalSupported: t = !0 }) { + this.xref = e; + this.isEvalSupported = !1 !== t; + } + create(e) { + const t = this.getCached(e); + if (t) return t; + const i = PDFFunction.parse({ + xref: this.xref, + isEvalSupported: this.isEvalSupported, + fn: e instanceof Ref ? this.xref.fetch(e) : e, + }); + this._cache(e, i); + return i; + } + createFromArray(e) { + const t = this.getCached(e); + if (t) return t; + const i = PDFFunction.parseArray({ + xref: this.xref, + isEvalSupported: this.isEvalSupported, + fnObj: e instanceof Ref ? this.xref.fetch(e) : e, + }); + this._cache(e, i); + return i; + } + getCached(e) { + let t; + e instanceof Ref + ? (t = e) + : e instanceof Dict + ? (t = e.objId) + : e instanceof BaseStream && (t = e.dict?.objId); + if (t) { + const e = this._localFunctionCache.getByRef(t); + if (e) return e; + } + return null; + } + _cache(e, t) { + if (!t) + throw new Error( + 'PDFFunctionFactory._cache - expected "parsedFunction" argument.', + ); + let i; + e instanceof Ref + ? (i = e) + : e instanceof Dict + ? (i = e.objId) + : e instanceof BaseStream && (i = e.dict?.objId); + i && this._localFunctionCache.set(null, i, t); + } + get _localFunctionCache() { + return shadow(this, "_localFunctionCache", new LocalFunctionCache()); + } +} +function toNumberArray(e) { + return Array.isArray(e) + ? isNumberArray(e, null) + ? e + : e.map((e) => +e) + : null; +} +class PDFFunction { + static getSampleArray(e, t, i, a) { + let s, + r, + n = 1; + for (s = 0, r = e.length; s < r; s++) n *= e[s]; + n *= t; + const o = new Array(n); + let g = 0, + c = 0; + const h = 1 / (2 ** i - 1), + l = a.getBytes((n * i + 7) / 8); + let C = 0; + for (s = 0; s < n; s++) { + for (; g < i; ) { + c <<= 8; + c |= l[C++]; + g += 8; + } + g -= i; + o[s] = (c >> g) * h; + c &= (1 << g) - 1; + } + return o; + } + static parse({ xref: e, isEvalSupported: t, fn: i }) { + const a = i.dict || i; + switch (a.get("FunctionType")) { + case 0: + return this.constructSampled({ + xref: e, + isEvalSupported: t, + fn: i, + dict: a, + }); + case 1: + break; + case 2: + return this.constructInterpolated({ + xref: e, + isEvalSupported: t, + dict: a, + }); + case 3: + return this.constructStiched({ xref: e, isEvalSupported: t, dict: a }); + case 4: + return this.constructPostScript({ + xref: e, + isEvalSupported: t, + fn: i, + dict: a, + }); + } + throw new FormatError("Unknown type of function"); + } + static parseArray({ xref: e, isEvalSupported: t, fnObj: i }) { + if (!Array.isArray(i)) + return this.parse({ xref: e, isEvalSupported: t, fn: i }); + const a = []; + for (const s of i) + a.push(this.parse({ xref: e, isEvalSupported: t, fn: e.fetchIfRef(s) })); + return function (e, t, i, s) { + for (let r = 0, n = a.length; r < n; r++) a[r](e, t, i, s + r); + }; + } + static constructSampled({ xref: e, isEvalSupported: t, fn: i, dict: a }) { + function toMultiArray(e) { + const t = e.length, + i = []; + let a = 0; + for (let s = 0; s < t; s += 2) i[a++] = [e[s], e[s + 1]]; + return i; + } + function interpolate(e, t, i, a, s) { + return a + ((s - a) / (i - t)) * (e - t); + } + let s = toNumberArray(a.getArray("Domain")), + r = toNumberArray(a.getArray("Range")); + if (!s || !r) throw new FormatError("No domain or range"); + const n = s.length / 2, + o = r.length / 2; + s = toMultiArray(s); + r = toMultiArray(r); + const g = toNumberArray(a.getArray("Size")), + c = a.get("BitsPerSample"), + h = a.get("Order") || 1; + 1 !== h && info("No support for cubic spline interpolation: " + h); + let l = toNumberArray(a.getArray("Encode")); + if (l) l = toMultiArray(l); + else { + l = []; + for (let e = 0; e < n; ++e) l.push([0, g[e] - 1]); + } + let C = toNumberArray(a.getArray("Decode")); + C = C ? toMultiArray(C) : r; + const Q = this.getSampleArray(g, o, c, i); + return function constructSampledFn(e, t, i, a) { + const c = 1 << n, + h = new Float64Array(c), + E = new Uint32Array(c); + let u, d; + for (d = 0; d < c; d++) h[d] = 1; + let f = o, + p = 1; + for (u = 0; u < n; ++u) { + const i = s[u][0], + a = s[u][1]; + let r = interpolate( + Math.min(Math.max(e[t + u], i), a), + i, + a, + l[u][0], + l[u][1], + ); + const n = g[u]; + r = Math.min(Math.max(r, 0), n - 1); + const o = r < n - 1 ? Math.floor(r) : r - 1, + C = o + 1 - r, + Q = r - o, + m = o * f, + y = m + f; + for (d = 0; d < c; d++) + if (d & p) { + h[d] *= Q; + E[d] += y; + } else { + h[d] *= C; + E[d] += m; + } + f *= n; + p <<= 1; + } + for (d = 0; d < o; ++d) { + let e = 0; + for (u = 0; u < c; u++) e += Q[E[u] + d] * h[u]; + e = interpolate(e, 0, 1, C[d][0], C[d][1]); + i[a + d] = Math.min(Math.max(e, r[d][0]), r[d][1]); + } + }; + } + static constructInterpolated({ xref: e, isEvalSupported: t, dict: i }) { + const a = toNumberArray(i.getArray("C0")) || [0], + s = toNumberArray(i.getArray("C1")) || [1], + r = i.get("N"), + n = []; + for (let e = 0, t = a.length; e < t; ++e) n.push(s[e] - a[e]); + const o = n.length; + return function constructInterpolatedFn(e, t, i, s) { + const g = 1 === r ? e[t] : e[t] ** r; + for (let e = 0; e < o; ++e) i[s + e] = a[e] + g * n[e]; + }; + } + static constructStiched({ xref: e, isEvalSupported: t, dict: i }) { + const a = toNumberArray(i.getArray("Domain")); + if (!a) throw new FormatError("No domain"); + if (1 !== a.length / 2) + throw new FormatError("Bad domain for stiched function"); + const s = []; + for (const a of i.get("Functions")) + s.push(this.parse({ xref: e, isEvalSupported: t, fn: e.fetchIfRef(a) })); + const r = toNumberArray(i.getArray("Bounds")), + n = toNumberArray(i.getArray("Encode")), + o = new Float32Array(1); + return function constructStichedFn(e, t, i, g) { + const c = (function constructStichedFromIRClip(e, t, i) { + e > i ? (e = i) : e < t && (e = t); + return e; + })(e[t], a[0], a[1]), + h = r.length; + let l; + for (l = 0; l < h && !(c < r[l]); ++l); + let C = a[0]; + l > 0 && (C = r[l - 1]); + let Q = a[1]; + l < r.length && (Q = r[l]); + const E = n[2 * l], + u = n[2 * l + 1]; + o[0] = C === Q ? E : E + ((c - C) * (u - E)) / (Q - C); + s[l](o, 0, i, g); + }; + } + static constructPostScript({ xref: e, isEvalSupported: t, fn: i, dict: a }) { + const s = toNumberArray(a.getArray("Domain")), + r = toNumberArray(a.getArray("Range")); + if (!s) throw new FormatError("No domain."); + if (!r) throw new FormatError("No range."); + const n = new PostScriptLexer(i), + o = new PostScriptParser(n).parse(); + if (t && FeatureTest.isEvalSupported) { + const e = new PostScriptCompiler().compile(o, s, r); + if (e) return new Function("src", "srcOffset", "dest", "destOffset", e); + } + info("Unable to compile PS function"); + const g = r.length >> 1, + c = s.length >> 1, + h = new PostScriptEvaluator(o), + l = Object.create(null); + let C = 8192; + const Q = new Float32Array(c); + return function constructPostScriptFn(e, t, i, a) { + let s, + n, + o = ""; + const E = Q; + for (s = 0; s < c; s++) { + n = e[t + s]; + E[s] = n; + o += n + "_"; + } + const u = l[o]; + if (void 0 !== u) { + i.set(u, a); + return; + } + const d = new Float32Array(g), + f = h.execute(E), + p = f.length - g; + for (s = 0; s < g; s++) { + n = f[p + s]; + let e = r[2 * s]; + if (n < e) n = e; + else { + e = r[2 * s + 1]; + n > e && (n = e); + } + d[s] = n; + } + if (C > 0) { + C--; + l[o] = d; + } + i.set(d, a); + }; + } +} +function isPDFFunction(e) { + let t; + if (e instanceof Dict) t = e; + else { + if (!(e instanceof BaseStream)) return !1; + t = e.dict; + } + return t.has("FunctionType"); +} +class PostScriptStack { + static MAX_STACK_SIZE = 100; + constructor(e) { + this.stack = e ? Array.from(e) : []; + } + push(e) { + if (this.stack.length >= PostScriptStack.MAX_STACK_SIZE) + throw new Error("PostScript function stack overflow."); + this.stack.push(e); + } + pop() { + if (this.stack.length <= 0) + throw new Error("PostScript function stack underflow."); + return this.stack.pop(); + } + copy(e) { + if (this.stack.length + e >= PostScriptStack.MAX_STACK_SIZE) + throw new Error("PostScript function stack overflow."); + const t = this.stack; + for (let i = t.length - e, a = e - 1; a >= 0; a--, i++) t.push(t[i]); + } + index(e) { + this.push(this.stack[this.stack.length - e - 1]); + } + roll(e, t) { + const i = this.stack, + a = i.length - e, + s = i.length - 1, + r = a + (t - Math.floor(t / e) * e); + for (let e = a, t = s; e < t; e++, t--) { + const a = i[e]; + i[e] = i[t]; + i[t] = a; + } + for (let e = a, t = r - 1; e < t; e++, t--) { + const a = i[e]; + i[e] = i[t]; + i[t] = a; + } + for (let e = r, t = s; e < t; e++, t--) { + const a = i[e]; + i[e] = i[t]; + i[t] = a; + } + } +} +class PostScriptEvaluator { + constructor(e) { + this.operators = e; + } + execute(e) { + const t = new PostScriptStack(e); + let i = 0; + const a = this.operators, + s = a.length; + let r, n, o; + for (; i < s; ) { + r = a[i++]; + if ("number" != typeof r) + switch (r) { + case "jz": + o = t.pop(); + n = t.pop(); + n || (i = o); + break; + case "j": + n = t.pop(); + i = n; + break; + case "abs": + n = t.pop(); + t.push(Math.abs(n)); + break; + case "add": + o = t.pop(); + n = t.pop(); + t.push(n + o); + break; + case "and": + o = t.pop(); + n = t.pop(); + "boolean" == typeof n && "boolean" == typeof o + ? t.push(n && o) + : t.push(n & o); + break; + case "atan": + o = t.pop(); + n = t.pop(); + n = (Math.atan2(n, o) / Math.PI) * 180; + n < 0 && (n += 360); + t.push(n); + break; + case "bitshift": + o = t.pop(); + n = t.pop(); + n > 0 ? t.push(n << o) : t.push(n >> o); + break; + case "ceiling": + n = t.pop(); + t.push(Math.ceil(n)); + break; + case "copy": + n = t.pop(); + t.copy(n); + break; + case "cos": + n = t.pop(); + t.push(Math.cos(((n % 360) / 180) * Math.PI)); + break; + case "cvi": + n = 0 | t.pop(); + t.push(n); + break; + case "cvr": + break; + case "div": + o = t.pop(); + n = t.pop(); + t.push(n / o); + break; + case "dup": + t.copy(1); + break; + case "eq": + o = t.pop(); + n = t.pop(); + t.push(n === o); + break; + case "exch": + t.roll(2, 1); + break; + case "exp": + o = t.pop(); + n = t.pop(); + t.push(n ** o); + break; + case "false": + t.push(!1); + break; + case "floor": + n = t.pop(); + t.push(Math.floor(n)); + break; + case "ge": + o = t.pop(); + n = t.pop(); + t.push(n >= o); + break; + case "gt": + o = t.pop(); + n = t.pop(); + t.push(n > o); + break; + case "idiv": + o = t.pop(); + n = t.pop(); + t.push((n / o) | 0); + break; + case "index": + n = t.pop(); + t.index(n); + break; + case "le": + o = t.pop(); + n = t.pop(); + t.push(n <= o); + break; + case "ln": + n = t.pop(); + t.push(Math.log(n)); + break; + case "log": + n = t.pop(); + t.push(Math.log10(n)); + break; + case "lt": + o = t.pop(); + n = t.pop(); + t.push(n < o); + break; + case "mod": + o = t.pop(); + n = t.pop(); + t.push(n % o); + break; + case "mul": + o = t.pop(); + n = t.pop(); + t.push(n * o); + break; + case "ne": + o = t.pop(); + n = t.pop(); + t.push(n !== o); + break; + case "neg": + n = t.pop(); + t.push(-n); + break; + case "not": + n = t.pop(); + "boolean" == typeof n ? t.push(!n) : t.push(~n); + break; + case "or": + o = t.pop(); + n = t.pop(); + "boolean" == typeof n && "boolean" == typeof o + ? t.push(n || o) + : t.push(n | o); + break; + case "pop": + t.pop(); + break; + case "roll": + o = t.pop(); + n = t.pop(); + t.roll(n, o); + break; + case "round": + n = t.pop(); + t.push(Math.round(n)); + break; + case "sin": + n = t.pop(); + t.push(Math.sin(((n % 360) / 180) * Math.PI)); + break; + case "sqrt": + n = t.pop(); + t.push(Math.sqrt(n)); + break; + case "sub": + o = t.pop(); + n = t.pop(); + t.push(n - o); + break; + case "true": + t.push(!0); + break; + case "truncate": + n = t.pop(); + n = n < 0 ? Math.ceil(n) : Math.floor(n); + t.push(n); + break; + case "xor": + o = t.pop(); + n = t.pop(); + "boolean" == typeof n && "boolean" == typeof o + ? t.push(n !== o) + : t.push(n ^ o); + break; + default: + throw new FormatError(`Unknown operator ${r}`); + } + else t.push(r); + } + return t.stack; + } +} +class AstNode { + constructor(e) { + this.type = e; + } + visit(e) { + unreachable("abstract method"); + } +} +class AstArgument extends AstNode { + constructor(e, t, i) { + super("args"); + this.index = e; + this.min = t; + this.max = i; + } + visit(e) { + e.visitArgument(this); + } +} +class AstLiteral extends AstNode { + constructor(e) { + super("literal"); + this.number = e; + this.min = e; + this.max = e; + } + visit(e) { + e.visitLiteral(this); + } +} +class AstBinaryOperation extends AstNode { + constructor(e, t, i, a, s) { + super("binary"); + this.op = e; + this.arg1 = t; + this.arg2 = i; + this.min = a; + this.max = s; + } + visit(e) { + e.visitBinaryOperation(this); + } +} +class AstMin extends AstNode { + constructor(e, t) { + super("max"); + this.arg = e; + this.min = e.min; + this.max = t; + } + visit(e) { + e.visitMin(this); + } +} +class AstVariable extends AstNode { + constructor(e, t, i) { + super("var"); + this.index = e; + this.min = t; + this.max = i; + } + visit(e) { + e.visitVariable(this); + } +} +class AstVariableDefinition extends AstNode { + constructor(e, t) { + super("definition"); + this.variable = e; + this.arg = t; + } + visit(e) { + e.visitVariableDefinition(this); + } +} +class ExpressionBuilderVisitor { + constructor() { + this.parts = []; + } + visitArgument(e) { + this.parts.push( + "Math.max(", + e.min, + ", Math.min(", + e.max, + ", src[srcOffset + ", + e.index, + "]))", + ); + } + visitVariable(e) { + this.parts.push("v", e.index); + } + visitLiteral(e) { + this.parts.push(e.number); + } + visitBinaryOperation(e) { + this.parts.push("("); + e.arg1.visit(this); + this.parts.push(" ", e.op, " "); + e.arg2.visit(this); + this.parts.push(")"); + } + visitVariableDefinition(e) { + this.parts.push("var "); + e.variable.visit(this); + this.parts.push(" = "); + e.arg.visit(this); + this.parts.push(";"); + } + visitMin(e) { + this.parts.push("Math.min("); + e.arg.visit(this); + this.parts.push(", ", e.max, ")"); + } + toString() { + return this.parts.join(""); + } +} +function buildAddOperation(e, t) { + return "literal" === t.type && 0 === t.number + ? e + : "literal" === e.type && 0 === e.number + ? t + : "literal" === t.type && "literal" === e.type + ? new AstLiteral(e.number + t.number) + : new AstBinaryOperation("+", e, t, e.min + t.min, e.max + t.max); +} +function buildMulOperation(e, t) { + if ("literal" === t.type) { + if (0 === t.number) return new AstLiteral(0); + if (1 === t.number) return e; + if ("literal" === e.type) return new AstLiteral(e.number * t.number); + } + if ("literal" === e.type) { + if (0 === e.number) return new AstLiteral(0); + if (1 === e.number) return t; + } + const i = Math.min( + e.min * t.min, + e.min * t.max, + e.max * t.min, + e.max * t.max, + ), + a = Math.max(e.min * t.min, e.min * t.max, e.max * t.min, e.max * t.max); + return new AstBinaryOperation("*", e, t, i, a); +} +function buildSubOperation(e, t) { + if ("literal" === t.type) { + if (0 === t.number) return e; + if ("literal" === e.type) return new AstLiteral(e.number - t.number); + } + return "binary" === t.type && + "-" === t.op && + "literal" === e.type && + 1 === e.number && + "literal" === t.arg1.type && + 1 === t.arg1.number + ? t.arg2 + : new AstBinaryOperation("-", e, t, e.min - t.max, e.max - t.min); +} +function buildMinOperation(e, t) { + return e.min >= t ? new AstLiteral(t) : e.max <= t ? e : new AstMin(e, t); +} +class PostScriptCompiler { + compile(e, t, i) { + const a = [], + s = [], + r = t.length >> 1, + n = i.length >> 1; + let o, + g, + c, + h, + l, + C, + Q, + E, + u = 0; + for (let e = 0; e < r; e++) + a.push(new AstArgument(e, t[2 * e], t[2 * e + 1])); + for (let t = 0, i = e.length; t < i; t++) { + E = e[t]; + if ("number" != typeof E) + switch (E) { + case "add": + if (a.length < 2) return null; + h = a.pop(); + c = a.pop(); + a.push(buildAddOperation(c, h)); + break; + case "cvr": + if (a.length < 1) return null; + break; + case "mul": + if (a.length < 2) return null; + h = a.pop(); + c = a.pop(); + a.push(buildMulOperation(c, h)); + break; + case "sub": + if (a.length < 2) return null; + h = a.pop(); + c = a.pop(); + a.push(buildSubOperation(c, h)); + break; + case "exch": + if (a.length < 2) return null; + l = a.pop(); + C = a.pop(); + a.push(l, C); + break; + case "pop": + if (a.length < 1) return null; + a.pop(); + break; + case "index": + if (a.length < 1) return null; + c = a.pop(); + if ("literal" !== c.type) return null; + o = c.number; + if (o < 0 || !Number.isInteger(o) || a.length < o) return null; + l = a[a.length - o - 1]; + if ("literal" === l.type || "var" === l.type) { + a.push(l); + break; + } + Q = new AstVariable(u++, l.min, l.max); + a[a.length - o - 1] = Q; + a.push(Q); + s.push(new AstVariableDefinition(Q, l)); + break; + case "dup": + if (a.length < 1) return null; + if ( + "number" == typeof e[t + 1] && + "gt" === e[t + 2] && + e[t + 3] === t + 7 && + "jz" === e[t + 4] && + "pop" === e[t + 5] && + e[t + 6] === e[t + 1] + ) { + c = a.pop(); + a.push(buildMinOperation(c, e[t + 1])); + t += 6; + break; + } + l = a.at(-1); + if ("literal" === l.type || "var" === l.type) { + a.push(l); + break; + } + Q = new AstVariable(u++, l.min, l.max); + a[a.length - 1] = Q; + a.push(Q); + s.push(new AstVariableDefinition(Q, l)); + break; + case "roll": + if (a.length < 2) return null; + h = a.pop(); + c = a.pop(); + if ("literal" !== h.type || "literal" !== c.type) return null; + g = h.number; + o = c.number; + if ( + o <= 0 || + !Number.isInteger(o) || + !Number.isInteger(g) || + a.length < o + ) + return null; + g = ((g % o) + o) % o; + if (0 === g) break; + a.push(...a.splice(a.length - o, o - g)); + break; + default: + return null; + } + else a.push(new AstLiteral(E)); + } + if (a.length !== n) return null; + const d = []; + for (const e of s) { + const t = new ExpressionBuilderVisitor(); + e.visit(t); + d.push(t.toString()); + } + for (let e = 0, t = a.length; e < t; e++) { + const t = a[e], + s = new ExpressionBuilderVisitor(); + t.visit(s); + const r = i[2 * e], + n = i[2 * e + 1], + o = [s.toString()]; + if (r > t.min) { + o.unshift("Math.max(", r, ", "); + o.push(")"); + } + if (n < t.max) { + o.unshift("Math.min(", n, ", "); + o.push(")"); + } + o.unshift("dest[destOffset + ", e, "] = "); + o.push(";"); + d.push(o.join("")); + } + return d.join("\n"); + } +} +const hs = [ + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "S", + "B", + "S", + "WS", + "B", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "B", + "B", + "B", + "S", + "WS", + "ON", + "ON", + "ET", + "ET", + "ET", + "ON", + "ON", + "ON", + "ON", + "ON", + "ES", + "CS", + "ES", + "CS", + "CS", + "EN", + "EN", + "EN", + "EN", + "EN", + "EN", + "EN", + "EN", + "EN", + "EN", + "CS", + "ON", + "ON", + "ON", + "ON", + "ON", + "ON", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "ON", + "ON", + "ON", + "ON", + "ON", + "ON", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "ON", + "ON", + "ON", + "ON", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "B", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "CS", + "ON", + "ET", + "ET", + "ET", + "ET", + "ON", + "ON", + "ON", + "ON", + "L", + "ON", + "ON", + "BN", + "ON", + "ON", + "ET", + "ET", + "EN", + "EN", + "ON", + "L", + "ON", + "ON", + "ON", + "EN", + "L", + "ON", + "ON", + "ON", + "ON", + "ON", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "ON", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "ON", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + ], + ls = [ + "AN", + "AN", + "AN", + "AN", + "AN", + "AN", + "ON", + "ON", + "AL", + "ET", + "ET", + "AL", + "CS", + "AL", + "ON", + "ON", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "AL", + "AL", + "", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "AN", + "AN", + "AN", + "AN", + "AN", + "AN", + "AN", + "AN", + "AN", + "AN", + "ET", + "AN", + "AN", + "AL", + "AL", + "AL", + "NSM", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "AN", + "ON", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "AL", + "AL", + "NSM", + "NSM", + "ON", + "NSM", + "NSM", + "NSM", + "NSM", + "AL", + "AL", + "EN", + "EN", + "EN", + "EN", + "EN", + "EN", + "EN", + "EN", + "EN", + "EN", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + ]; +function isOdd(e) { + return 0 != (1 & e); +} +function isEven(e) { + return 0 == (1 & e); +} +function findUnequal(e, t, i) { + let a, s; + for (a = t, s = e.length; a < s; ++a) if (e[a] !== i) return a; + return a; +} +function setValues(e, t, i, a) { + for (let s = t; s < i; ++s) e[s] = a; +} +function reverseValues(e, t, i) { + for (let a = t, s = i - 1; a < s; ++a, --s) { + const t = e[a]; + e[a] = e[s]; + e[s] = t; + } +} +function createBidiText(e, t, i = !1) { + let a = "ltr"; + i ? (a = "ttb") : t || (a = "rtl"); + return { str: e, dir: a }; +} +const Cs = [], + Bs = []; +function bidi(e, t = -1, i = !1) { + let a = !0; + const s = e.length; + if (0 === s || i) return createBidiText(e, a, i); + Cs.length = s; + Bs.length = s; + let r, + n, + o = 0; + for (r = 0; r < s; ++r) { + Cs[r] = e.charAt(r); + const t = e.charCodeAt(r); + let i = "L"; + if (t <= 255) i = hs[t]; + else if (1424 <= t && t <= 1524) i = "R"; + else if (1536 <= t && t <= 1791) { + i = ls[255 & t]; + i || warn("Bidi: invalid Unicode character " + t.toString(16)); + } else + ((1792 <= t && t <= 2220) || + (64336 <= t && t <= 65023) || + (65136 <= t && t <= 65279)) && + (i = "AL"); + ("R" !== i && "AL" !== i && "AN" !== i) || o++; + Bs[r] = i; + } + if (0 === o) { + a = !0; + return createBidiText(e, a); + } + if (-1 === t) + if (o / s < 0.3 && s > 4) { + a = !0; + t = 0; + } else { + a = !1; + t = 1; + } + const g = []; + for (r = 0; r < s; ++r) g[r] = t; + const c = isOdd(t) ? "R" : "L", + h = c, + l = h; + let C, + Q = h; + for (r = 0; r < s; ++r) "NSM" === Bs[r] ? (Bs[r] = Q) : (Q = Bs[r]); + Q = h; + for (r = 0; r < s; ++r) { + C = Bs[r]; + "EN" === C + ? (Bs[r] = "AL" === Q ? "AN" : "EN") + : ("R" !== C && "L" !== C && "AL" !== C) || (Q = C); + } + for (r = 0; r < s; ++r) { + C = Bs[r]; + "AL" === C && (Bs[r] = "R"); + } + for (r = 1; r < s - 1; ++r) { + "ES" === Bs[r] && + "EN" === Bs[r - 1] && + "EN" === Bs[r + 1] && + (Bs[r] = "EN"); + "CS" !== Bs[r] || + ("EN" !== Bs[r - 1] && "AN" !== Bs[r - 1]) || + Bs[r + 1] !== Bs[r - 1] || + (Bs[r] = Bs[r - 1]); + } + for (r = 0; r < s; ++r) + if ("EN" === Bs[r]) { + for (let e = r - 1; e >= 0 && "ET" === Bs[e]; --e) Bs[e] = "EN"; + for (let e = r + 1; e < s && "ET" === Bs[e]; ++e) Bs[e] = "EN"; + } + for (r = 0; r < s; ++r) { + C = Bs[r]; + ("WS" !== C && "ES" !== C && "ET" !== C && "CS" !== C) || (Bs[r] = "ON"); + } + Q = h; + for (r = 0; r < s; ++r) { + C = Bs[r]; + "EN" === C + ? (Bs[r] = "L" === Q ? "L" : "EN") + : ("R" !== C && "L" !== C) || (Q = C); + } + for (r = 0; r < s; ++r) + if ("ON" === Bs[r]) { + const e = findUnequal(Bs, r + 1, "ON"); + let t = h; + r > 0 && (t = Bs[r - 1]); + let i = l; + e + 1 < s && (i = Bs[e + 1]); + "L" !== t && (t = "R"); + "L" !== i && (i = "R"); + t === i && setValues(Bs, r, e, t); + r = e - 1; + } + for (r = 0; r < s; ++r) "ON" === Bs[r] && (Bs[r] = c); + for (r = 0; r < s; ++r) { + C = Bs[r]; + isEven(g[r]) + ? "R" === C + ? (g[r] += 1) + : ("AN" !== C && "EN" !== C) || (g[r] += 2) + : ("L" !== C && "AN" !== C && "EN" !== C) || (g[r] += 1); + } + let E, + u = -1, + d = 99; + for (r = 0, n = g.length; r < n; ++r) { + E = g[r]; + u < E && (u = E); + d > E && isOdd(E) && (d = E); + } + for (E = u; E >= d; --E) { + let e = -1; + for (r = 0, n = g.length; r < n; ++r) + if (g[r] < E) { + if (e >= 0) { + reverseValues(Cs, e, r); + e = -1; + } + } else e < 0 && (e = r); + e >= 0 && reverseValues(Cs, e, g.length); + } + for (r = 0, n = Cs.length; r < n; ++r) { + const e = Cs[r]; + ("<" !== e && ">" !== e) || (Cs[r] = ""); + } + return createBidiText(Cs.join(""), a); +} +const Qs = { style: "normal", weight: "normal" }, + Es = { style: "normal", weight: "bold" }, + us = { style: "italic", weight: "normal" }, + ds = { style: "italic", weight: "bold" }, + fs = new Map([ + [ + "Times-Roman", + { + local: [ + "Times New Roman", + "Times-Roman", + "Times", + "Liberation Serif", + "Nimbus Roman", + "Nimbus Roman L", + "Tinos", + "Thorndale", + "TeX Gyre Termes", + "FreeSerif", + "Linux Libertine O", + "Libertinus Serif", + "DejaVu Serif", + "Bitstream Vera Serif", + "Ubuntu", + ], + style: Qs, + ultimate: "serif", + }, + ], + ["Times-Bold", { alias: "Times-Roman", style: Es, ultimate: "serif" }], + ["Times-Italic", { alias: "Times-Roman", style: us, ultimate: "serif" }], + [ + "Times-BoldItalic", + { alias: "Times-Roman", style: ds, ultimate: "serif" }, + ], + [ + "Helvetica", + { + local: [ + "Helvetica", + "Helvetica Neue", + "Arial", + "Arial Nova", + "Liberation Sans", + "Arimo", + "Nimbus Sans", + "Nimbus Sans L", + "A030", + "TeX Gyre Heros", + "FreeSans", + "DejaVu Sans", + "Albany", + "Bitstream Vera Sans", + "Arial Unicode MS", + "Microsoft Sans Serif", + "Apple Symbols", + "Cantarell", + ], + path: "LiberationSans-Regular.ttf", + style: Qs, + ultimate: "sans-serif", + }, + ], + [ + "Helvetica-Bold", + { + alias: "Helvetica", + path: "LiberationSans-Bold.ttf", + style: Es, + ultimate: "sans-serif", + }, + ], + [ + "Helvetica-Oblique", + { + alias: "Helvetica", + path: "LiberationSans-Italic.ttf", + style: us, + ultimate: "sans-serif", + }, + ], + [ + "Helvetica-BoldOblique", + { + alias: "Helvetica", + path: "LiberationSans-BoldItalic.ttf", + style: ds, + ultimate: "sans-serif", + }, + ], + [ + "Courier", + { + local: [ + "Courier", + "Courier New", + "Liberation Mono", + "Nimbus Mono", + "Nimbus Mono L", + "Cousine", + "Cumberland", + "TeX Gyre Cursor", + "FreeMono", + "Linux Libertine Mono O", + "Libertinus Mono", + ], + style: Qs, + ultimate: "monospace", + }, + ], + ["Courier-Bold", { alias: "Courier", style: Es, ultimate: "monospace" }], + ["Courier-Oblique", { alias: "Courier", style: us, ultimate: "monospace" }], + [ + "Courier-BoldOblique", + { alias: "Courier", style: ds, ultimate: "monospace" }, + ], + [ + "ArialBlack", + { + local: ["Arial Black"], + style: { style: "normal", weight: "900" }, + fallback: "Helvetica-Bold", + }, + ], + ["ArialBlack-Bold", { alias: "ArialBlack" }], + [ + "ArialBlack-Italic", + { + alias: "ArialBlack", + style: { style: "italic", weight: "900" }, + fallback: "Helvetica-BoldOblique", + }, + ], + ["ArialBlack-BoldItalic", { alias: "ArialBlack-Italic" }], + [ + "ArialNarrow", + { + local: [ + "Arial Narrow", + "Liberation Sans Narrow", + "Helvetica Condensed", + "Nimbus Sans Narrow", + "TeX Gyre Heros Cn", + ], + style: Qs, + fallback: "Helvetica", + }, + ], + [ + "ArialNarrow-Bold", + { alias: "ArialNarrow", style: Es, fallback: "Helvetica-Bold" }, + ], + [ + "ArialNarrow-Italic", + { alias: "ArialNarrow", style: us, fallback: "Helvetica-Oblique" }, + ], + [ + "ArialNarrow-BoldItalic", + { alias: "ArialNarrow", style: ds, fallback: "Helvetica-BoldOblique" }, + ], + [ + "Calibri", + { local: ["Calibri", "Carlito"], style: Qs, fallback: "Helvetica" }, + ], + [ + "Calibri-Bold", + { alias: "Calibri", style: Es, fallback: "Helvetica-Bold" }, + ], + [ + "Calibri-Italic", + { alias: "Calibri", style: us, fallback: "Helvetica-Oblique" }, + ], + [ + "Calibri-BoldItalic", + { alias: "Calibri", style: ds, fallback: "Helvetica-BoldOblique" }, + ], + ["Wingdings", { local: ["Wingdings", "URW Dingbats"], style: Qs }], + ["Wingdings-Regular", { alias: "Wingdings" }], + ["Wingdings-Bold", { alias: "Wingdings" }], + ]), + ps = new Map([["Arial-Black", "ArialBlack"]]); +function getFamilyName(e) { + const t = new Set([ + "thin", + "extralight", + "ultralight", + "demilight", + "semilight", + "light", + "book", + "regular", + "normal", + "medium", + "demibold", + "semibold", + "bold", + "extrabold", + "ultrabold", + "black", + "heavy", + "extrablack", + "ultrablack", + "roman", + "italic", + "oblique", + "ultracondensed", + "extracondensed", + "condensed", + "semicondensed", + "normal", + "semiexpanded", + "expanded", + "extraexpanded", + "ultraexpanded", + "bolditalic", + ]); + return e + .split(/[- ,+]+/g) + .filter((e) => !t.has(e.toLowerCase())) + .join(" "); +} +function generateFont( + { alias: e, local: t, path: i, fallback: a, style: s, ultimate: r }, + n, + o, + g = !0, + c = !0, + h = "", +) { + const l = { style: null, ultimate: null }; + if (t) { + const e = h ? ` ${h}` : ""; + for (const i of t) n.push(`local(${i}${e})`); + } + if (e) { + const t = fs.get(e), + r = + h || + (function getStyleToAppend(e) { + switch (e) { + case Es: + return "Bold"; + case us: + return "Italic"; + case ds: + return "Bold Italic"; + default: + if ("bold" === e?.weight) return "Bold"; + if ("italic" === e?.style) return "Italic"; + } + return ""; + })(s); + Object.assign(l, generateFont(t, n, o, g && !a, c && !i, r)); + } + s && (l.style = s); + r && (l.ultimate = r); + if (g && a) { + const e = fs.get(a), + { ultimate: t } = generateFont(e, n, o, g, c && !i, h); + l.ultimate ||= t; + } + c && i && o && n.push(`url(${o}${i})`); + return l; +} +function getFontSubstitution(e, t, i, a, s, r) { + if (a.startsWith("InvalidPDFjsFont_")) return null; + ("TrueType" !== r && "Type1" !== r) || + !/^[A-Z]{6}\+/.test(a) || + (a = a.slice(7)); + const n = (a = normalizeFontName(a)); + let o = e.get(n); + if (o) return o; + let g = fs.get(a); + if (!g) + for (const [e, t] of ps) + if (a.startsWith(e)) { + a = `${t}${a.substring(e.length)}`; + g = fs.get(a); + break; + } + let c = !1; + if (!g) { + g = fs.get(s); + c = !0; + } + const h = `${t.getDocId()}_s${t.createFontId()}`; + if (!g) { + if (!validateFontName(a)) { + warn(`Cannot substitute the font because of its name: ${a}`); + e.set(n, null); + return null; + } + const t = /bold/gi.test(a), + i = /oblique|italic/gi.test(a), + s = (t && i && ds) || (t && Es) || (i && us) || Qs; + o = { + css: `"${getFamilyName(a)}",${h}`, + guessFallback: !0, + loadedName: h, + baseFontName: a, + src: `local(${a})`, + style: s, + }; + e.set(n, o); + return o; + } + const l = []; + c && validateFontName(a) && l.push(`local(${a})`); + const { style: C, ultimate: Q } = generateFont(g, l, i), + E = null === Q, + u = E ? "" : `,${Q}`; + o = { + css: `"${getFamilyName(a)}",${h}${u}`, + guessFallback: E, + loadedName: h, + baseFontName: a, + src: l.join(","), + style: C, + }; + e.set(n, o); + return o; +} +class ImageResizer { + constructor(e, t) { + this._imgData = e; + this._isMask = t; + } + static needsToBeResized(e, t) { + if (e <= this._goodSquareLength && t <= this._goodSquareLength) return !1; + const { MAX_DIM: i } = this; + if (e > i || t > i) return !0; + const a = e * t; + if (this._hasMaxArea) return a > this.MAX_AREA; + if (a < this._goodSquareLength ** 2) return !1; + if (this._areGoodDims(e, t)) { + this._goodSquareLength = Math.max( + this._goodSquareLength, + Math.floor(Math.sqrt(e * t)), + ); + return !1; + } + this._goodSquareLength = this._guessMax(this._goodSquareLength, i, 128, 0); + return a > (this.MAX_AREA = this._goodSquareLength ** 2); + } + static get MAX_DIM() { + return shadow(this, "MAX_DIM", this._guessMax(2048, 65537, 0, 1)); + } + static get MAX_AREA() { + this._hasMaxArea = !0; + return shadow( + this, + "MAX_AREA", + this._guessMax(ImageResizer._goodSquareLength, this.MAX_DIM, 128, 0) ** 2, + ); + } + static set MAX_AREA(e) { + if (e >= 0) { + this._hasMaxArea = !0; + shadow(this, "MAX_AREA", e); + } + } + static setMaxArea(e) { + this._hasMaxArea || (this.MAX_AREA = e >> 2); + } + static _areGoodDims(e, t) { + try { + const i = new OffscreenCanvas(e, t), + a = i.getContext("2d"); + a.fillRect(0, 0, 1, 1); + const s = a.getImageData(0, 0, 1, 1).data[3]; + i.width = i.height = 1; + return 0 !== s; + } catch { + return !1; + } + } + static _guessMax(e, t, i, a) { + for (; e + i + 1 < t; ) { + const i = Math.floor((e + t) / 2), + s = a || i; + this._areGoodDims(i, s) ? (e = i) : (t = i); + } + return e; + } + static async createImage(e, t = !1) { + return new ImageResizer(e, t)._createImage(); + } + async _createImage() { + const e = this._encodeBMP(), + t = new Blob([e.buffer], { type: "image/bmp" }), + i = createImageBitmap(t), + { MAX_AREA: a, MAX_DIM: s } = ImageResizer, + { _imgData: r } = this, + { width: n, height: o } = r, + g = Math.max(n / s, o / s, Math.sqrt((n * o) / a)), + c = Math.max(g, 2), + h = Math.round(10 * (g + 1.25)) / 10 / c, + l = Math.floor(Math.log2(h)), + C = new Array(l + 2).fill(2); + C[0] = c; + C.splice(-1, 1, h / (1 << l)); + let Q = n, + E = o, + u = await i; + for (const e of C) { + const t = Q, + i = E; + Q = Math.floor(Q / e) - 1; + E = Math.floor(E / e) - 1; + const a = new OffscreenCanvas(Q, E); + a.getContext("2d").drawImage(u, 0, 0, t, i, 0, 0, Q, E); + u = a.transferToImageBitmap(); + } + r.data = null; + r.bitmap = u; + r.width = Q; + r.height = E; + return r; + } + _encodeBMP() { + const { width: e, height: t, kind: i } = this._imgData; + let a, + s = this._imgData.data, + r = new Uint8Array(0), + n = r, + o = 0; + switch (i) { + case b: { + a = 1; + r = new Uint8Array( + this._isMask + ? [255, 255, 255, 255, 0, 0, 0, 0] + : [0, 0, 0, 0, 255, 255, 255, 255], + ); + const i = (e + 7) >> 3, + n = (i + 3) & -4; + if (i !== n) { + const e = new Uint8Array(n * t); + let a = 0; + for (let r = 0, o = t * i; r < o; r += i, a += n) + e.set(s.subarray(r, r + i), a); + s = e; + } + break; + } + case D: + a = 24; + if (3 & e) { + const i = 3 * e, + a = (i + 3) & -4, + r = a - i, + n = new Uint8Array(a * t); + let o = 0; + for (let e = 0, a = t * i; e < a; e += i) { + const t = s.subarray(e, e + i); + for (let e = 0; e < i; e += 3) { + n[o++] = t[e + 2]; + n[o++] = t[e + 1]; + n[o++] = t[e]; + } + o += r; + } + s = n; + } else + for (let e = 0, t = s.length; e < t; e += 3) { + const t = s[e]; + s[e] = s[e + 2]; + s[e + 2] = t; + } + break; + case F: + a = 32; + o = 3; + n = new Uint8Array(68); + const i = new DataView(n.buffer); + if (FeatureTest.isLittleEndian) { + i.setUint32(0, 255, !0); + i.setUint32(4, 65280, !0); + i.setUint32(8, 16711680, !0); + i.setUint32(12, 4278190080, !0); + } else { + i.setUint32(0, 4278190080, !0); + i.setUint32(4, 16711680, !0); + i.setUint32(8, 65280, !0); + i.setUint32(12, 255, !0); + } + break; + default: + throw new Error("invalid format"); + } + let g = 0; + const c = 40 + n.length, + h = 14 + c + r.length + s.length, + l = new Uint8Array(h), + C = new DataView(l.buffer); + C.setUint16(g, 19778, !0); + g += 2; + C.setUint32(g, h, !0); + g += 4; + C.setUint32(g, 0, !0); + g += 4; + C.setUint32(g, 14 + c + r.length, !0); + g += 4; + C.setUint32(g, c, !0); + g += 4; + C.setInt32(g, e, !0); + g += 4; + C.setInt32(g, -t, !0); + g += 4; + C.setUint16(g, 1, !0); + g += 2; + C.setUint16(g, a, !0); + g += 2; + C.setUint32(g, o, !0); + g += 4; + C.setUint32(g, 0, !0); + g += 4; + C.setInt32(g, 0, !0); + g += 4; + C.setInt32(g, 0, !0); + g += 4; + C.setUint32(g, r.length / 4, !0); + g += 4; + C.setUint32(g, 0, !0); + g += 4; + l.set(n, g); + g += n.length; + l.set(r, g); + g += r.length; + l.set(s, g); + return l; + } +} +ImageResizer._goodSquareLength = 2048; +const ms = 3285377520, + ys = 4294901760, + ws = 65535; +class MurmurHash3_64 { + constructor(e) { + this.h1 = e ? 4294967295 & e : ms; + this.h2 = e ? 4294967295 & e : ms; + } + update(e) { + let t, i; + if ("string" == typeof e) { + t = new Uint8Array(2 * e.length); + i = 0; + for (let a = 0, s = e.length; a < s; a++) { + const s = e.charCodeAt(a); + if (s <= 255) t[i++] = s; + else { + t[i++] = s >>> 8; + t[i++] = 255 & s; + } + } + } else { + if (!ArrayBuffer.isView(e)) + throw new Error("Invalid data format, must be a string or TypedArray."); + t = e.slice(); + i = t.byteLength; + } + const a = i >> 2, + s = i - 4 * a, + r = new Uint32Array(t.buffer, 0, a); + let n = 0, + o = 0, + g = this.h1, + c = this.h2; + const h = 3432918353, + l = 461845907, + C = 11601, + Q = 13715; + for (let e = 0; e < a; e++) + if (1 & e) { + n = r[e]; + n = ((n * h) & ys) | ((n * C) & ws); + n = (n << 15) | (n >>> 17); + n = ((n * l) & ys) | ((n * Q) & ws); + g ^= n; + g = (g << 13) | (g >>> 19); + g = 5 * g + 3864292196; + } else { + o = r[e]; + o = ((o * h) & ys) | ((o * C) & ws); + o = (o << 15) | (o >>> 17); + o = ((o * l) & ys) | ((o * Q) & ws); + c ^= o; + c = (c << 13) | (c >>> 19); + c = 5 * c + 3864292196; + } + n = 0; + switch (s) { + case 3: + n ^= t[4 * a + 2] << 16; + case 2: + n ^= t[4 * a + 1] << 8; + case 1: + n ^= t[4 * a]; + n = ((n * h) & ys) | ((n * C) & ws); + n = (n << 15) | (n >>> 17); + n = ((n * l) & ys) | ((n * Q) & ws); + 1 & a ? (g ^= n) : (c ^= n); + } + this.h1 = g; + this.h2 = c; + } + hexdigest() { + let e = this.h1, + t = this.h2; + e ^= t >>> 1; + e = ((3981806797 * e) & ys) | ((36045 * e) & ws); + t = + ((4283543511 * t) & ys) | + (((2950163797 * ((t << 16) | (e >>> 16))) & ys) >>> 16); + e ^= t >>> 1; + e = ((444984403 * e) & ys) | ((60499 * e) & ws); + t = + ((3301882366 * t) & ys) | + (((3120437893 * ((t << 16) | (e >>> 16))) & ys) >>> 16); + e ^= t >>> 1; + return ( + (e >>> 0).toString(16).padStart(8, "0") + + (t >>> 0).toString(16).padStart(8, "0") + ); + } +} +function addState(e, t, i, a, s) { + let r = e; + for (let e = 0, i = t.length - 1; e < i; e++) { + const i = t[e]; + r = r[i] ||= []; + } + r[t.at(-1)] = { checkFn: i, iterateFn: a, processFn: s }; +} +const bs = []; +addState( + bs, + [GA, MA, ze, xA], + null, + function iterateInlineImageGroup(e, t) { + const i = e.fnArray, + a = (t - (e.iCurr - 3)) % 4; + switch (a) { + case 0: + return i[t] === GA; + case 1: + return i[t] === MA; + case 2: + return i[t] === ze; + case 3: + return i[t] === xA; + } + throw new Error(`iterateInlineImageGroup - invalid pos: ${a}`); + }, + function foundInlineImageGroup(e, t) { + const i = e.fnArray, + a = e.argsArray, + s = e.iCurr, + r = s - 3, + n = s - 2, + o = s - 1, + g = Math.min(Math.floor((t - r) / 4), 200); + if (g < 10) return t - ((t - r) % 4); + let c = 0; + const h = []; + let l = 0, + C = 1, + Q = 1; + for (let e = 0; e < g; e++) { + const t = a[n + (e << 2)], + i = a[o + (e << 2)][0]; + if (C + i.width > 1e3) { + c = Math.max(c, C); + Q += l + 2; + C = 0; + l = 0; + } + h.push({ transform: t, x: C, y: Q, w: i.width, h: i.height }); + C += i.width + 2; + l = Math.max(l, i.height); + } + const E = Math.max(c, C) + 1, + u = Q + l + 1, + d = new Uint8Array(E * u * 4), + f = E << 2; + for (let e = 0; e < g; e++) { + const t = a[o + (e << 2)][0].data, + i = h[e].w << 2; + let s = 0, + r = (h[e].x + h[e].y * E) << 2; + d.set(t.subarray(0, i), r - f); + for (let a = 0, n = h[e].h; a < n; a++) { + d.set(t.subarray(s, s + i), r); + s += i; + r += f; + } + d.set(t.subarray(s - i, s), r); + for (; r >= 0; ) { + t[r - 4] = t[r]; + t[r - 3] = t[r + 1]; + t[r - 2] = t[r + 2]; + t[r - 1] = t[r + 3]; + t[r + i] = t[r + i - 4]; + t[r + i + 1] = t[r + i - 3]; + t[r + i + 2] = t[r + i - 2]; + t[r + i + 3] = t[r + i - 1]; + r -= f; + } + } + const p = { width: E, height: u }; + if (e.isOffscreenCanvasSupported) { + const e = new OffscreenCanvas(E, u); + e.getContext("2d").putImageData( + new ImageData(new Uint8ClampedArray(d.buffer), E, u), + 0, + 0, + ); + p.bitmap = e.transferToImageBitmap(); + p.data = null; + } else { + p.kind = F; + p.data = d; + } + i.splice(r, 4 * g, _e); + a.splice(r, 4 * g, [p, h]); + return r + 1; + }, +); +addState( + bs, + [GA, MA, je, xA], + null, + function iterateImageMaskGroup(e, t) { + const i = e.fnArray, + a = (t - (e.iCurr - 3)) % 4; + switch (a) { + case 0: + return i[t] === GA; + case 1: + return i[t] === MA; + case 2: + return i[t] === je; + case 3: + return i[t] === xA; + } + throw new Error(`iterateImageMaskGroup - invalid pos: ${a}`); + }, + function foundImageMaskGroup(e, t) { + const i = e.fnArray, + a = e.argsArray, + s = e.iCurr, + r = s - 3, + n = s - 2, + o = s - 1; + let g = Math.floor((t - r) / 4); + if (g < 10) return t - ((t - r) % 4); + let c, + h, + l = !1; + const C = a[o][0], + Q = a[n][0], + E = a[n][1], + u = a[n][2], + d = a[n][3]; + if (E === u) { + l = !0; + c = n + 4; + let e = o + 4; + for (let t = 1; t < g; t++, c += 4, e += 4) { + h = a[c]; + if ( + a[e][0] !== C || + h[0] !== Q || + h[1] !== E || + h[2] !== u || + h[3] !== d + ) { + t < 10 ? (l = !1) : (g = t); + break; + } + } + } + if (l) { + g = Math.min(g, 1e3); + const e = new Float32Array(2 * g); + c = n; + for (let t = 0; t < g; t++, c += 4) { + h = a[c]; + e[t << 1] = h[4]; + e[1 + (t << 1)] = h[5]; + } + i.splice(r, 4 * g, At); + a.splice(r, 4 * g, [C, Q, E, u, d, e]); + } else { + g = Math.min(g, 100); + const e = []; + for (let t = 0; t < g; t++) { + h = a[n + (t << 2)]; + const i = a[o + (t << 2)][0]; + e.push({ + data: i.data, + width: i.width, + height: i.height, + interpolate: i.interpolate, + count: i.count, + transform: h, + }); + } + i.splice(r, 4 * g, Ze); + a.splice(r, 4 * g, [e]); + } + return r + 1; + }, +); +addState( + bs, + [GA, MA, Ve, xA], + function (e) { + const t = e.argsArray, + i = e.iCurr - 2; + return 0 === t[i][1] && 0 === t[i][2]; + }, + function iterateImageGroup(e, t) { + const i = e.fnArray, + a = e.argsArray, + s = (t - (e.iCurr - 3)) % 4; + switch (s) { + case 0: + return i[t] === GA; + case 1: + if (i[t] !== MA) return !1; + const s = e.iCurr - 2, + r = a[s][0], + n = a[s][3]; + return a[t][0] === r && 0 === a[t][1] && 0 === a[t][2] && a[t][3] === n; + case 2: + if (i[t] !== Ve) return !1; + const o = a[e.iCurr - 1][0]; + return a[t][0] === o; + case 3: + return i[t] === xA; + } + throw new Error(`iterateImageGroup - invalid pos: ${s}`); + }, + function (e, t) { + const i = e.fnArray, + a = e.argsArray, + s = e.iCurr, + r = s - 3, + n = s - 2, + o = a[s - 1][0], + g = a[n][0], + c = a[n][3], + h = Math.min(Math.floor((t - r) / 4), 1e3); + if (h < 3) return t - ((t - r) % 4); + const l = new Float32Array(2 * h); + let C = n; + for (let e = 0; e < h; e++, C += 4) { + const t = a[C]; + l[e << 1] = t[4]; + l[1 + (e << 1)] = t[5]; + } + const Q = [o, g, c, l]; + i.splice(r, 4 * h, $e); + a.splice(r, 4 * h, Q); + return r + 1; + }, +); +addState( + bs, + [$A, se, Ie, he, Ae], + null, + function iterateShowTextGroup(e, t) { + const i = e.fnArray, + a = e.argsArray, + s = (t - (e.iCurr - 4)) % 5; + switch (s) { + case 0: + return i[t] === $A; + case 1: + return i[t] === se; + case 2: + return i[t] === Ie; + case 3: + if (i[t] !== he) return !1; + const s = e.iCurr - 3, + r = a[s][0], + n = a[s][1]; + return a[t][0] === r && a[t][1] === n; + case 4: + return i[t] === Ae; + } + throw new Error(`iterateShowTextGroup - invalid pos: ${s}`); + }, + function (e, t) { + const i = e.fnArray, + a = e.argsArray, + s = e.iCurr, + r = s - 4, + n = s - 3, + o = s - 2, + g = s - 1, + c = s, + h = a[n][0], + l = a[n][1]; + let C = Math.min(Math.floor((t - r) / 5), 1e3); + if (C < 3) return t - ((t - r) % 5); + let Q = r; + if ( + r >= 4 && + i[r - 4] === i[n] && + i[r - 3] === i[o] && + i[r - 2] === i[g] && + i[r - 1] === i[c] && + a[r - 4][0] === h && + a[r - 4][1] === l + ) { + C++; + Q -= 5; + } + let E = Q + 4; + for (let e = 1; e < C; e++) { + i.splice(E, 3); + a.splice(E, 3); + E += 2; + } + return E + 1; + }, +); +class NullOptimizer { + constructor(e) { + this.queue = e; + } + _optimize() {} + push(e, t) { + this.queue.fnArray.push(e); + this.queue.argsArray.push(t); + this._optimize(); + } + flush() {} + reset() {} +} +class QueueOptimizer extends NullOptimizer { + constructor(e) { + super(e); + this.state = null; + this.context = { + iCurr: 0, + fnArray: e.fnArray, + argsArray: e.argsArray, + isOffscreenCanvasSupported: !1, + }; + this.match = null; + this.lastProcessed = 0; + } + set isOffscreenCanvasSupported(e) { + this.context.isOffscreenCanvasSupported = e; + } + _optimize() { + const e = this.queue.fnArray; + let t = this.lastProcessed, + i = e.length, + a = this.state, + s = this.match; + if (!a && !s && t + 1 === i && !bs[e[t]]) { + this.lastProcessed = i; + return; + } + const r = this.context; + for (; t < i; ) { + if (s) { + if ((0, s.iterateFn)(r, t)) { + t++; + continue; + } + t = (0, s.processFn)(r, t + 1); + i = e.length; + s = null; + a = null; + if (t >= i) break; + } + a = (a || bs)[e[t]]; + if (a && !Array.isArray(a)) { + r.iCurr = t; + t++; + if (!a.checkFn || (0, a.checkFn)(r)) { + s = a; + a = null; + } else a = null; + } else t++; + } + this.state = a; + this.match = s; + this.lastProcessed = t; + } + flush() { + for (; this.match; ) { + const e = this.queue.fnArray.length; + this.lastProcessed = (0, this.match.processFn)(this.context, e); + this.match = null; + this.state = null; + this._optimize(); + } + } + reset() { + this.state = null; + this.match = null; + this.lastProcessed = 0; + } +} +class OperatorList { + static CHUNK_SIZE = 1e3; + static CHUNK_SIZE_ABOUT = this.CHUNK_SIZE - 5; + constructor(e = 0, t) { + this._streamSink = t; + this.fnArray = []; + this.argsArray = []; + this.optimizer = + !t || e & Q ? new NullOptimizer(this) : new QueueOptimizer(this); + this.dependencies = new Set(); + this._totalLength = 0; + this.weight = 0; + this._resolved = t ? null : Promise.resolve(); + } + set isOffscreenCanvasSupported(e) { + this.optimizer.isOffscreenCanvasSupported = e; + } + get length() { + return this.argsArray.length; + } + get ready() { + return this._resolved || this._streamSink.ready; + } + get totalLength() { + return this._totalLength + this.length; + } + addOp(e, t) { + this.optimizer.push(e, t); + this.weight++; + this._streamSink && + (this.weight >= OperatorList.CHUNK_SIZE || + (this.weight >= OperatorList.CHUNK_SIZE_ABOUT && + (e === xA || e === Ae))) && + this.flush(); + } + addImageOps(e, t, i) { + void 0 !== i && this.addOp(He, ["OC", i]); + this.addOp(e, t); + void 0 !== i && this.addOp(Ye, []); + } + addDependency(e) { + if (!this.dependencies.has(e)) { + this.dependencies.add(e); + this.addOp(yA, [e]); + } + } + addDependencies(e) { + for (const t of e) this.addDependency(t); + } + addOpList(e) { + if (e instanceof OperatorList) { + for (const t of e.dependencies) this.dependencies.add(t); + for (let t = 0, i = e.length; t < i; t++) + this.addOp(e.fnArray[t], e.argsArray[t]); + } else warn('addOpList - ignoring invalid "opList" parameter.'); + } + getIR() { + return { + fnArray: this.fnArray, + argsArray: this.argsArray, + length: this.length, + }; + } + get _transfers() { + const e = [], + { fnArray: t, argsArray: i, length: a } = this; + for (let s = 0; s < a; s++) + switch (t[s]) { + case ze: + case _e: + case je: + const t = i[s][0]; + !t.cached && + t.data?.buffer instanceof ArrayBuffer && + e.push(t.data.buffer); + } + return e; + } + flush(e = !1, t = null) { + this.optimizer.flush(); + const i = this.length; + this._totalLength += i; + this._streamSink.enqueue( + { + fnArray: this.fnArray, + argsArray: this.argsArray, + lastChunk: e, + separateAnnots: t, + length: i, + }, + 1, + this._transfers, + ); + this.dependencies.clear(); + this.fnArray.length = 0; + this.argsArray.length = 0; + this.weight = 0; + this.optimizer.reset(); + } +} +function decodeAndClamp(e, t, i, a) { + (e = t + e * i) < 0 ? (e = 0) : e > a && (e = a); + return e; +} +function resizeImageMask(e, t, i, a, s, r) { + const n = s * r; + let o; + o = + t <= 8 + ? new Uint8Array(n) + : t <= 16 + ? new Uint16Array(n) + : new Uint32Array(n); + const g = i / s, + c = a / r; + let h, + l, + C, + Q, + E = 0; + const u = new Uint16Array(s), + d = i; + for (h = 0; h < s; h++) u[h] = Math.floor(h * g); + for (h = 0; h < r; h++) { + C = Math.floor(h * c) * d; + for (l = 0; l < s; l++) { + Q = C + u[l]; + o[E++] = e[Q]; + } + } + return o; +} +class PDFImage { + constructor({ + xref: e, + res: t, + image: i, + isInline: a = !1, + smask: s = null, + mask: r = null, + isMask: n = !1, + pdfFunctionFactory: o, + localColorSpaceCache: g, + }) { + this.image = i; + let c = !1; + const h = i.dict, + l = h.get("F", "Filter"); + let C; + if (l instanceof Name) C = l.name; + else if (Array.isArray(l)) { + const t = e.fetchIfRef(l[0]); + t instanceof Name && (C = t.name); + } + switch (C) { + case "JPXDecode": + ({ + width: i.width, + height: i.height, + componentsCount: i.numComps, + bitsPerComponent: i.bitsPerComponent, + } = JpxImage.parseImageProperties(i.stream)); + i.stream.reset(); + c = !0; + break; + case "JBIG2Decode": + i.bitsPerComponent = 1; + i.numComps = 1; + } + let Q = h.get("W", "Width"), + E = h.get("H", "Height"); + if ( + Number.isInteger(i.width) && + i.width > 0 && + Number.isInteger(i.height) && + i.height > 0 && + (i.width !== Q || i.height !== E) + ) { + warn( + "PDFImage - using the Width/Height of the image data, rather than the image dictionary.", + ); + Q = i.width; + E = i.height; + } + if (Q < 1 || E < 1) + throw new FormatError(`Invalid image width: ${Q} or height: ${E}`); + this.width = Q; + this.height = E; + this.interpolate = h.get("I", "Interpolate"); + this.imageMask = h.get("IM", "ImageMask") || !1; + this.matte = h.get("Matte") || !1; + let u = i.bitsPerComponent; + if (!u) { + u = h.get("BPC", "BitsPerComponent"); + if (!u) { + if (!this.imageMask) + throw new FormatError( + `Bits per component missing in image: ${this.imageMask}`, + ); + u = 1; + } + } + this.bpc = u; + if (!this.imageMask) { + let s = h.getRaw("CS") || h.getRaw("ColorSpace"); + if (!s) { + info("JPX images (which do not require color spaces)"); + switch (i.numComps) { + case 1: + s = Name.get("DeviceGray"); + break; + case 3: + s = Name.get("DeviceRGB"); + break; + case 4: + s = Name.get("DeviceCMYK"); + break; + default: + throw new Error( + `JPX images with ${i.numComps} color components not supported.`, + ); + } + } + this.colorSpace = ColorSpace.parse({ + cs: s, + xref: e, + resources: a ? t : null, + pdfFunctionFactory: o, + localColorSpaceCache: g, + }); + this.numComps = this.colorSpace.numComps; + this.ignoreColorSpace = c && "Indexed" === this.colorSpace.name; + } + this.decode = h.getArray("D", "Decode"); + this.needsDecode = !1; + if ( + this.decode && + ((this.colorSpace && !this.colorSpace.isDefaultDecode(this.decode, u)) || + (n && !ColorSpace.isDefaultDecode(this.decode, 1))) + ) { + this.needsDecode = !0; + const e = (1 << u) - 1; + this.decodeCoefficients = []; + this.decodeAddends = []; + const t = "Indexed" === this.colorSpace?.name; + for (let i = 0, a = 0; i < this.decode.length; i += 2, ++a) { + const s = this.decode[i], + r = this.decode[i + 1]; + this.decodeCoefficients[a] = t ? (r - s) / e : r - s; + this.decodeAddends[a] = t ? s : e * s; + } + } + if (s) + this.smask = new PDFImage({ + xref: e, + res: t, + image: s, + isInline: a, + pdfFunctionFactory: o, + localColorSpaceCache: g, + }); + else if (r) + if (r instanceof BaseStream) { + r.dict.get("IM", "ImageMask") + ? (this.mask = new PDFImage({ + xref: e, + res: t, + image: r, + isInline: a, + isMask: !0, + pdfFunctionFactory: o, + localColorSpaceCache: g, + })) + : warn("Ignoring /Mask in image without /ImageMask."); + } else this.mask = r; + } + static async buildImage({ + xref: e, + res: t, + image: i, + isInline: a = !1, + pdfFunctionFactory: s, + localColorSpaceCache: r, + }) { + const n = i; + let o = null, + g = null; + const c = i.dict.get("SMask"), + h = i.dict.get("Mask"); + c + ? c instanceof BaseStream + ? (o = c) + : warn("Unsupported /SMask format.") + : h && + (h instanceof BaseStream || Array.isArray(h) + ? (g = h) + : warn("Unsupported /Mask format.")); + return new PDFImage({ + xref: e, + res: t, + image: n, + isInline: a, + smask: o, + mask: g, + pdfFunctionFactory: s, + localColorSpaceCache: r, + }); + } + static createRawMask({ + imgArray: e, + width: t, + height: i, + imageIsFromDecodeStream: a, + inverseDecode: s, + interpolate: r, + }) { + const n = ((t + 7) >> 3) * i, + o = e.byteLength; + let g, c; + if (!a || (s && !(n === o))) + if (s) { + g = new Uint8Array(n); + g.set(e); + g.fill(255, o); + } else g = new Uint8Array(e); + else g = e; + if (s) for (c = 0; c < o; c++) g[c] ^= 255; + return { data: g, width: t, height: i, interpolate: r }; + } + static async createMask({ + imgArray: e, + width: t, + height: i, + imageIsFromDecodeStream: a, + inverseDecode: s, + interpolate: r, + isOffscreenCanvasSupported: n = !1, + }) { + const o = 1 === t && 1 === i && s === (0 === e.length || !!(128 & e[0])); + if (o) return { isSingleOpaquePixel: o }; + if (n) { + if (ImageResizer.needsToBeResized(t, i)) { + const a = new Uint8ClampedArray(t * i * 4); + convertBlackAndWhiteToRGBA({ + src: e, + dest: a, + width: t, + height: i, + nonBlackColor: 0, + inverseDecode: s, + }); + return ImageResizer.createImage({ + kind: F, + data: a, + width: t, + height: i, + interpolate: r, + }); + } + const a = new OffscreenCanvas(t, i), + n = a.getContext("2d"), + o = n.createImageData(t, i); + convertBlackAndWhiteToRGBA({ + src: e, + dest: o.data, + width: t, + height: i, + nonBlackColor: 0, + inverseDecode: s, + }); + n.putImageData(o, 0, 0); + return { + data: null, + width: t, + height: i, + interpolate: r, + bitmap: a.transferToImageBitmap(), + }; + } + return this.createRawMask({ + imgArray: e, + width: t, + height: i, + inverseDecode: s, + imageIsFromDecodeStream: a, + interpolate: r, + }); + } + get drawWidth() { + return Math.max(this.width, this.smask?.width || 0, this.mask?.width || 0); + } + get drawHeight() { + return Math.max( + this.height, + this.smask?.height || 0, + this.mask?.height || 0, + ); + } + decodeBuffer(e) { + const t = this.bpc, + i = this.numComps, + a = this.decodeAddends, + s = this.decodeCoefficients, + r = (1 << t) - 1; + let n, o; + if (1 === t) { + for (n = 0, o = e.length; n < o; n++) e[n] = +!e[n]; + return; + } + let g = 0; + for (n = 0, o = this.width * this.height; n < o; n++) + for (let t = 0; t < i; t++) { + e[g] = decodeAndClamp(e[g], a[t], s[t], r); + g++; + } + } + getComponents(e) { + const t = this.bpc; + if (8 === t) return e; + const i = this.width, + a = this.height, + s = this.numComps, + r = i * a * s; + let n, + o = 0; + n = + t <= 8 + ? new Uint8Array(r) + : t <= 16 + ? new Uint16Array(r) + : new Uint32Array(r); + const g = i * s, + c = (1 << t) - 1; + let h, + l, + C = 0; + if (1 === t) { + let t, i, s; + for (let r = 0; r < a; r++) { + i = C + (-8 & g); + s = C + g; + for (; C < i; ) { + l = e[o++]; + n[C] = (l >> 7) & 1; + n[C + 1] = (l >> 6) & 1; + n[C + 2] = (l >> 5) & 1; + n[C + 3] = (l >> 4) & 1; + n[C + 4] = (l >> 3) & 1; + n[C + 5] = (l >> 2) & 1; + n[C + 6] = (l >> 1) & 1; + n[C + 7] = 1 & l; + C += 8; + } + if (C < s) { + l = e[o++]; + t = 128; + for (; C < s; ) { + n[C++] = +!!(l & t); + t >>= 1; + } + } + } + } else { + let i = 0; + l = 0; + for (C = 0, h = r; C < h; ++C) { + if (C % g == 0) { + l = 0; + i = 0; + } + for (; i < t; ) { + l = (l << 8) | e[o++]; + i += 8; + } + const a = i - t; + let s = l >> a; + s < 0 ? (s = 0) : s > c && (s = c); + n[C] = s; + l &= (1 << a) - 1; + i = a; + } + } + return n; + } + fillOpacity(e, t, i, a, s) { + const r = this.smask, + n = this.mask; + let o, g, c, h, l, C; + if (r) { + g = r.width; + c = r.height; + o = new Uint8ClampedArray(g * c); + r.fillGrayBuffer(o); + (g === t && c === i) || (o = resizeImageMask(o, r.bpc, g, c, t, i)); + } else if (n) + if (n instanceof PDFImage) { + g = n.width; + c = n.height; + o = new Uint8ClampedArray(g * c); + n.numComps = 1; + n.fillGrayBuffer(o); + for (h = 0, l = g * c; h < l; ++h) o[h] = 255 - o[h]; + (g === t && c === i) || (o = resizeImageMask(o, n.bpc, g, c, t, i)); + } else { + if (!Array.isArray(n)) throw new FormatError("Unknown mask format."); + { + o = new Uint8ClampedArray(t * i); + const e = this.numComps; + for (h = 0, l = t * i; h < l; ++h) { + let t = 0; + const i = h * e; + for (C = 0; C < e; ++C) { + const e = s[i + C], + a = 2 * C; + if (e < n[a] || e > n[a + 1]) { + t = 255; + break; + } + } + o[h] = t; + } + } + } + if (o) for (h = 0, C = 3, l = t * a; h < l; ++h, C += 4) e[C] = o[h]; + else for (h = 0, C = 3, l = t * a; h < l; ++h, C += 4) e[C] = 255; + } + undoPreblend(e, t, i) { + const a = this.smask?.matte; + if (!a) return; + const s = this.colorSpace.getRgb(a, 0), + r = s[0], + n = s[1], + o = s[2], + g = t * i * 4; + for (let t = 0; t < g; t += 4) { + const i = e[t + 3]; + if (0 === i) { + e[t] = 255; + e[t + 1] = 255; + e[t + 2] = 255; + continue; + } + const a = 255 / i; + e[t] = (e[t] - r) * a + r; + e[t + 1] = (e[t + 1] - n) * a + n; + e[t + 2] = (e[t + 2] - o) * a + o; + } + } + async createImageData(e = !1, t = !1) { + const i = this.drawWidth, + a = this.drawHeight, + s = { + width: i, + height: a, + interpolate: this.interpolate, + kind: 0, + data: null, + }, + r = this.numComps, + n = this.width, + o = this.height, + g = this.bpc, + c = (n * r * g + 7) >> 3, + h = t && ImageResizer.needsToBeResized(i, a); + if (!e) { + let e; + "DeviceGray" === this.colorSpace.name && 1 === g + ? (e = b) + : "DeviceRGB" !== this.colorSpace.name || + 8 !== g || + this.needsDecode || + (e = D); + if (e && !this.smask && !this.mask && i === n && a === o) { + const r = this.getImageBytes(o * c, {}); + if (t) + return h + ? ImageResizer.createImage( + { + data: r, + kind: e, + width: i, + height: a, + interpolate: this.interpolate, + }, + this.needsDecode, + ) + : this.createBitmap(e, n, o, r); + s.kind = e; + s.data = r; + if (this.needsDecode) { + assert( + e === b, + "PDFImage.createImageData: The image must be grayscale.", + ); + const t = s.data; + for (let e = 0, i = t.length; e < i; e++) t[e] ^= 255; + } + return s; + } + if ( + this.image instanceof JpegStream && + !this.smask && + !this.mask && + !this.needsDecode + ) { + let e = o * c; + if (t && !h) { + let t = !1; + switch (this.colorSpace.name) { + case "DeviceGray": + e *= 4; + t = !0; + break; + case "DeviceRGB": + e = (e / 3) * 4; + t = !0; + break; + case "DeviceCMYK": + t = !0; + } + if (t) { + const t = this.getImageBytes(e, { + drawWidth: i, + drawHeight: a, + forceRGBA: !0, + }); + return this.createBitmap(F, i, a, t); + } + } else + switch (this.colorSpace.name) { + case "DeviceGray": + e *= 3; + case "DeviceRGB": + case "DeviceCMYK": + s.kind = D; + s.data = this.getImageBytes(e, { + drawWidth: i, + drawHeight: a, + forceRGB: !0, + }); + return h ? ImageResizer.createImage(s) : s; + } + } + } + const l = this.getImageBytes(o * c, { internal: !0 }), + C = 0 | (((l.length / c) * a) / o), + Q = this.getComponents(l); + let E, u, d, f, p, m; + if (t && !h) { + d = new OffscreenCanvas(i, a); + f = d.getContext("2d"); + p = f.createImageData(i, a); + m = p.data; + } + s.kind = F; + if (e || this.smask || this.mask) { + (t && !h) || (m = new Uint8ClampedArray(i * a * 4)); + E = 1; + u = !0; + this.fillOpacity(m, i, a, C, Q); + } else { + if (!t || h) { + s.kind = D; + m = new Uint8ClampedArray(i * a * 3); + E = 0; + } else { + new Uint32Array(m.buffer).fill( + FeatureTest.isLittleEndian ? 4278190080 : 255, + ); + E = 1; + } + u = !1; + } + this.needsDecode && this.decodeBuffer(Q); + this.colorSpace.fillRgb(m, n, o, i, a, C, g, Q, E); + u && this.undoPreblend(m, i, C); + if (t && !h) { + f.putImageData(p, 0, 0); + return { + data: null, + width: i, + height: a, + bitmap: d.transferToImageBitmap(), + interpolate: this.interpolate, + }; + } + s.data = m; + return h ? ImageResizer.createImage(s) : s; + } + fillGrayBuffer(e) { + const t = this.numComps; + if (1 !== t) + throw new FormatError(`Reading gray scale from a color image: ${t}`); + const i = this.width, + a = this.height, + s = this.bpc, + r = (i * t * s + 7) >> 3, + n = this.getImageBytes(a * r, { internal: !0 }), + o = this.getComponents(n); + let g, c; + if (1 === s) { + c = i * a; + if (this.needsDecode) for (g = 0; g < c; ++g) e[g] = (o[g] - 1) & 255; + else for (g = 0; g < c; ++g) e[g] = 255 & -o[g]; + return; + } + this.needsDecode && this.decodeBuffer(o); + c = i * a; + const h = 255 / ((1 << s) - 1); + for (g = 0; g < c; ++g) e[g] = h * o[g]; + } + createBitmap(e, t, i, a) { + const s = new OffscreenCanvas(t, i), + r = s.getContext("2d"); + let n; + if (e === F) n = new ImageData(a, t, i); + else { + n = r.createImageData(t, i); + convertToRGBA({ + kind: e, + src: a, + dest: new Uint32Array(n.data.buffer), + width: t, + height: i, + inverseDecode: this.needsDecode, + }); + } + r.putImageData(n, 0, 0); + return { + data: null, + width: t, + height: i, + bitmap: s.transferToImageBitmap(), + interpolate: this.interpolate, + }; + } + getImageBytes( + e, + { + drawWidth: t, + drawHeight: i, + forceRGBA: a = !1, + forceRGB: s = !1, + internal: r = !1, + }, + ) { + this.image.reset(); + this.image.drawWidth = t || this.width; + this.image.drawHeight = i || this.height; + this.image.forceRGBA = !!a; + this.image.forceRGB = !!s; + const n = this.image.getBytes(e, this.ignoreColorSpace); + if (r || this.image instanceof DecodeStream) return n; + assert( + n instanceof Uint8Array, + 'PDFImage.getImageBytes: Unsupported "imageBytes" type.', + ); + return new Uint8Array(n); + } +} +const Ds = Object.freeze({ + maxImageSize: -1, + disableFontFace: !1, + ignoreErrors: !1, + isEvalSupported: !0, + isOffscreenCanvasSupported: !1, + canvasMaxAreaInBytes: -1, + fontExtraProperties: !1, + useSystemFonts: !0, + cMapUrl: null, + standardFontDataUrl: null, + }), + Fs = 1, + Ss = 2, + ks = Promise.resolve(); +function normalizeBlendMode(e, t = !1) { + if (Array.isArray(e)) { + for (const t of e) { + const e = normalizeBlendMode(t, !0); + if (e) return e; + } + warn(`Unsupported blend mode Array: ${e}`); + return "source-over"; + } + if (!(e instanceof Name)) return t ? null : "source-over"; + switch (e.name) { + case "Normal": + case "Compatible": + return "source-over"; + case "Multiply": + return "multiply"; + case "Screen": + return "screen"; + case "Overlay": + return "overlay"; + case "Darken": + return "darken"; + case "Lighten": + return "lighten"; + case "ColorDodge": + return "color-dodge"; + case "ColorBurn": + return "color-burn"; + case "HardLight": + return "hard-light"; + case "SoftLight": + return "soft-light"; + case "Difference": + return "difference"; + case "Exclusion": + return "exclusion"; + case "Hue": + return "hue"; + case "Saturation": + return "saturation"; + case "Color": + return "color"; + case "Luminosity": + return "luminosity"; + } + if (t) return null; + warn(`Unsupported blend mode: ${e.name}`); + return "source-over"; +} +function incrementCachedImageMaskCount(e) { + e.fn === je && e.args[0]?.count > 0 && e.args[0].count++; +} +class TimeSlotManager { + static TIME_SLOT_DURATION_MS = 20; + static CHECK_TIME_EVERY = 100; + constructor() { + this.reset(); + } + check() { + if (++this.checked < TimeSlotManager.CHECK_TIME_EVERY) return !1; + this.checked = 0; + return this.endTime <= Date.now(); + } + reset() { + this.endTime = Date.now() + TimeSlotManager.TIME_SLOT_DURATION_MS; + this.checked = 0; + } +} +class PartialEvaluator { + constructor({ + xref: e, + handler: t, + pageIndex: i, + idFactory: a, + fontCache: s, + builtInCMapCache: r, + standardFontDataCache: n, + globalImageCache: o, + systemFontCache: g, + options: c = null, + }) { + this.xref = e; + this.handler = t; + this.pageIndex = i; + this.idFactory = a; + this.fontCache = s; + this.builtInCMapCache = r; + this.standardFontDataCache = n; + this.globalImageCache = o; + this.systemFontCache = g; + this.options = c || Ds; + this.type3FontRefs = null; + this._regionalImageCache = new RegionalImageCache(); + this._fetchBuiltInCMapBound = this.fetchBuiltInCMap.bind(this); + ImageResizer.setMaxArea(this.options.canvasMaxAreaInBytes); + } + get _pdfFunctionFactory() { + return shadow( + this, + "_pdfFunctionFactory", + new PDFFunctionFactory({ + xref: this.xref, + isEvalSupported: this.options.isEvalSupported, + }), + ); + } + get parsingType3Font() { + return !!this.type3FontRefs; + } + clone(e = null) { + const t = Object.create(this); + t.options = Object.assign(Object.create(null), this.options, e); + return t; + } + hasBlendModes(e, t) { + if (!(e instanceof Dict)) return !1; + if (e.objId && t.has(e.objId)) return !1; + const i = new RefSet(t); + e.objId && i.put(e.objId); + const a = [e], + s = this.xref; + for (; a.length; ) { + const e = a.shift(), + t = e.get("ExtGState"); + if (t instanceof Dict) + for (let e of t.getRawValues()) { + if (e instanceof Ref) { + if (i.has(e)) continue; + try { + e = s.fetch(e); + } catch (t) { + i.put(e); + info(`hasBlendModes - ignoring ExtGState: "${t}".`); + continue; + } + } + if (!(e instanceof Dict)) continue; + e.objId && i.put(e.objId); + const t = e.get("BM"); + if (t instanceof Name) { + if ("Normal" !== t.name) return !0; + } else if (void 0 !== t && Array.isArray(t)) + for (const e of t) + if (e instanceof Name && "Normal" !== e.name) return !0; + } + const r = e.get("XObject"); + if (r instanceof Dict) + for (let e of r.getRawValues()) { + if (e instanceof Ref) { + if (i.has(e)) continue; + try { + e = s.fetch(e); + } catch (t) { + i.put(e); + info(`hasBlendModes - ignoring XObject: "${t}".`); + continue; + } + } + if (!(e instanceof BaseStream)) continue; + e.dict.objId && i.put(e.dict.objId); + const t = e.dict.get("Resources"); + if (t instanceof Dict && (!t.objId || !i.has(t.objId))) { + a.push(t); + t.objId && i.put(t.objId); + } + } + } + for (const e of i) t.put(e); + return !1; + } + async fetchBuiltInCMap(e) { + const t = this.builtInCMapCache.get(e); + if (t) return t; + let i; + if (null !== this.options.cMapUrl) { + const t = `${this.options.cMapUrl}${e}.bcmap`, + a = await fetch(t); + if (!a.ok) + throw new Error( + `fetchBuiltInCMap: failed to fetch file "${t}" with "${a.statusText}".`, + ); + i = { + cMapData: new Uint8Array(await a.arrayBuffer()), + compressionType: mA.BINARY, + }; + } else + i = await this.handler.sendWithPromise("FetchBuiltInCMap", { name: e }); + i.compressionType !== mA.NONE && this.builtInCMapCache.set(e, i); + return i; + } + async fetchStandardFontData(e) { + const t = this.standardFontDataCache.get(e); + if (t) return new Stream(t); + if (this.options.useSystemFonts && "Symbol" !== e && "ZapfDingbats" !== e) + return null; + const i = Wi()[e]; + let a; + if (null !== this.options.standardFontDataUrl) { + const e = `${this.options.standardFontDataUrl}${i}`, + t = await fetch(e); + t.ok + ? (a = new Uint8Array(await t.arrayBuffer())) + : warn( + `fetchStandardFontData: failed to fetch file "${e}" with "${t.statusText}".`, + ); + } else + try { + a = await this.handler.sendWithPromise("FetchStandardFontData", { + filename: i, + }); + } catch (e) { + warn(`fetchStandardFontData: failed to fetch file "${i}" with "${e}".`); + } + if (!a) return null; + this.standardFontDataCache.set(e, a); + return new Stream(a); + } + async buildFormXObject(e, t, i, a, s, r, n) { + const o = t.dict, + g = lookupMatrix(o.getArray("Matrix"), null), + c = lookupNormalRect(o.getArray("BBox"), null); + let h, l; + o.has("OC") && (h = await this.parseMarkedContentProps(o.get("OC"), e)); + void 0 !== h && a.addOp(He, ["OC", h]); + const C = o.get("Group"); + if (C) { + l = { matrix: g, bbox: c, smask: i, isolated: !1, knockout: !1 }; + let t = null; + if (isName(C.get("S"), "Transparency")) { + l.isolated = C.get("I") || !1; + l.knockout = C.get("K") || !1; + if (C.has("CS")) { + const i = C.getRaw("CS"), + a = ColorSpace.getCached(i, this.xref, n); + t = + a || + (await this.parseColorSpace({ + cs: i, + resources: e, + localColorSpaceCache: n, + })); + } + } + if (i?.backdrop) { + t ||= ColorSpace.singletons.rgb; + i.backdrop = t.getRgb(i.backdrop, 0); + } + a.addOp(Oe, [l]); + } + const Q = C ? [g, null] : [g, c]; + a.addOp(Te, Q); + await this.getOperatorList({ + stream: t, + task: s, + resources: o.get("Resources") || e, + operatorList: a, + initialState: r, + }); + a.addOp(qe, []); + C && a.addOp(Pe, [l]); + void 0 !== h && a.addOp(Ye, []); + } + _sendImgData(e, t, i = !1) { + const a = t ? [t.bitmap || t.data.buffer] : null; + return this.parsingType3Font || i + ? this.handler.send("commonobj", [e, "Image", t], a) + : this.handler.send("obj", [e, this.pageIndex, "Image", t], a); + } + async buildPaintImageXObject({ + resources: e, + image: t, + isInline: i = !1, + operatorList: a, + cacheKey: s, + localImageCache: r, + localColorSpaceCache: n, + }) { + const o = t.dict, + g = o.objId, + c = o.get("W", "Width"), + h = o.get("H", "Height"); + if (!c || "number" != typeof c || !h || "number" != typeof h) { + warn("Image dimensions are missing, or not numbers."); + return; + } + const l = this.options.maxImageSize; + if (-1 !== l && c * h > l) { + const e = "Image exceeded maximum allowed size and was removed."; + if (this.options.ignoreErrors) { + warn(e); + return; + } + throw new Error(e); + } + let C; + o.has("OC") && (C = await this.parseMarkedContentProps(o.get("OC"), e)); + let Q, E; + if (o.get("IM", "ImageMask") || !1) { + const e = o.get("I", "Interpolate"), + i = (c + 7) >> 3, + n = t.getBytes(i * h), + l = o.getArray("D", "Decode"); + if (this.parsingType3Font) { + Q = PDFImage.createRawMask({ + imgArray: n, + width: c, + height: h, + imageIsFromDecodeStream: t instanceof DecodeStream, + inverseDecode: l?.[0] > 0, + interpolate: e, + }); + Q.cached = !!s; + E = [Q]; + a.addImageOps(je, E, C); + if (s) { + const e = { fn: je, args: E, optionalContent: C }; + r.set(s, g, e); + g && this._regionalImageCache.set(null, g, e); + } + return; + } + Q = await PDFImage.createMask({ + imgArray: n, + width: c, + height: h, + imageIsFromDecodeStream: t instanceof DecodeStream, + inverseDecode: l?.[0] > 0, + interpolate: e, + isOffscreenCanvasSupported: this.options.isOffscreenCanvasSupported, + }); + if (Q.isSingleOpaquePixel) { + a.addImageOps(et, [], C); + if (s) { + const e = { fn: et, args: [], optionalContent: C }; + r.set(s, g, e); + g && this._regionalImageCache.set(null, g, e); + } + return; + } + const u = `mask_${this.idFactory.createObjId()}`; + a.addDependency(u); + Q.dataLen = Q.bitmap ? Q.width * Q.height * 4 : Q.data.length; + this._sendImgData(u, Q); + E = [ + { + data: u, + width: Q.width, + height: Q.height, + interpolate: Q.interpolate, + count: 1, + }, + ]; + a.addImageOps(je, E, C); + if (s) { + const e = { fn: je, args: E, optionalContent: C }; + r.set(s, g, e); + g && this._regionalImageCache.set(null, g, e); + } + return; + } + if (i && c + h < 200 && !o.has("SMask") && !o.has("Mask")) { + try { + const s = new PDFImage({ + xref: this.xref, + res: e, + image: t, + isInline: i, + pdfFunctionFactory: this._pdfFunctionFactory, + localColorSpaceCache: n, + }); + Q = await s.createImageData(!0, !1); + a.isOffscreenCanvasSupported = this.options.isOffscreenCanvasSupported; + a.addImageOps(ze, [Q], C); + } catch (e) { + const t = `Unable to decode inline image: "${e}".`; + if (!this.options.ignoreErrors) throw new Error(t); + warn(t); + } + return; + } + let u = `img_${this.idFactory.createObjId()}`, + d = !1; + if (this.parsingType3Font) u = `${this.idFactory.getDocId()}_type3_${u}`; + else if (s && g) { + d = this.globalImageCache.shouldCache(g, this.pageIndex); + if (d) { + assert(!i, "Cannot cache an inline image globally."); + u = `${this.idFactory.getDocId()}_${u}`; + } + } + a.addDependency(u); + E = [u, c, h]; + a.addImageOps(Ve, E, C); + if (d) { + if (this.globalImageCache.hasDecodeFailed(g)) { + this.globalImageCache.setData(g, { + objId: u, + fn: Ve, + args: E, + optionalContent: C, + byteSize: 0, + }); + this._sendImgData(u, null, d); + return; + } + if (c * h > 25e4 || o.has("SMask") || o.has("Mask")) { + const e = await this.handler.sendWithPromise("commonobj", [ + u, + "CopyLocalImage", + { imageRef: g }, + ]); + if (e) { + this.globalImageCache.setData(g, { + objId: u, + fn: Ve, + args: E, + optionalContent: C, + byteSize: 0, + }); + this.globalImageCache.addByteSize(g, e); + return; + } + } + } + PDFImage.buildImage({ + xref: this.xref, + res: e, + image: t, + isInline: i, + pdfFunctionFactory: this._pdfFunctionFactory, + localColorSpaceCache: n, + }) + .then(async (e) => { + Q = await e.createImageData( + !1, + this.options.isOffscreenCanvasSupported, + ); + Q.dataLen = Q.bitmap ? Q.width * Q.height * 4 : Q.data.length; + Q.ref = g; + d && this.globalImageCache.addByteSize(g, Q.dataLen); + return this._sendImgData(u, Q, d); + }) + .catch((e) => { + warn(`Unable to decode image "${u}": "${e}".`); + g && this.globalImageCache.addDecodeFailed(g); + return this._sendImgData(u, null, d); + }); + if (s) { + const e = { fn: Ve, args: E, optionalContent: C }; + r.set(s, g, e); + if (g) { + this._regionalImageCache.set(null, g, e); + d && + this.globalImageCache.setData(g, { + objId: u, + fn: Ve, + args: E, + optionalContent: C, + byteSize: 0, + }); + } + } + } + handleSMask(e, t, i, a, s, r) { + const n = e.get("G"), + o = { subtype: e.get("S").name, backdrop: e.get("BC") }, + g = e.get("TR"); + if (isPDFFunction(g)) { + const e = this._pdfFunctionFactory.create(g), + t = new Uint8Array(256), + i = new Float32Array(1); + for (let a = 0; a < 256; a++) { + i[0] = a / 255; + e(i, 0, i, 0); + t[a] = (255 * i[0]) | 0; + } + o.transferMap = t; + } + return this.buildFormXObject(t, n, o, i, a, s.state.clone(), r); + } + handleTransferFunction(e) { + let t; + if (Array.isArray(e)) t = e; + else { + if (!isPDFFunction(e)) return null; + t = [e]; + } + const i = []; + let a = 0, + s = 0; + for (const e of t) { + const t = this.xref.fetchIfRef(e); + a++; + if (isName(t, "Identity")) { + i.push(null); + continue; + } + if (!isPDFFunction(t)) return null; + const r = this._pdfFunctionFactory.create(t), + n = new Uint8Array(256), + o = new Float32Array(1); + for (let e = 0; e < 256; e++) { + o[0] = e / 255; + r(o, 0, o, 0); + n[e] = (255 * o[0]) | 0; + } + i.push(n); + s++; + } + return (1 !== a && 4 !== a) || 0 === s ? null : i; + } + handleTilingType(e, t, i, a, s, r, n, o) { + const g = new OperatorList(), + c = Dict.merge({ xref: this.xref, dictArray: [s.get("Resources"), i] }); + return this.getOperatorList({ + stream: a, + task: n, + resources: c, + operatorList: g, + }) + .then(function () { + const i = g.getIR(), + a = getTilingPatternIR(i, s, t); + r.addDependencies(g.dependencies); + r.addOp(e, a); + s.objId && o.set(null, s.objId, { operatorListIR: i, dict: s }); + }) + .catch((e) => { + if (!(e instanceof AbortException)) { + if (!this.options.ignoreErrors) throw e; + warn(`handleTilingType - ignoring pattern: "${e}".`); + } + }); + } + async handleSetFont(e, t, i, a, s, r, n = null, o = null) { + const g = t?.[0] instanceof Name ? t[0].name : null; + let c = await this.loadFont(g, i, e, n, o); + if (c.font.isType3Font) + try { + await c.loadType3Data(this, e, s); + a.addDependencies(c.type3Dependencies); + } catch (e) { + c = new TranslatedFont({ + loadedName: "g_font_error", + font: new ErrorFont(`Type3 font load error: ${e}`), + dict: c.font, + evaluatorOptions: this.options, + }); + } + r.font = c.font; + c.send(this.handler); + return c.loadedName; + } + handleText(e, t) { + const i = t.font, + a = i.charsToGlyphs(e); + if (i.data) { + (!!(t.textRenderingMode & w) || + "Pattern" === t.fillColorSpace.name || + i.disableFontFace || + this.options.disableFontFace) && + PartialEvaluator.buildFontPaths(i, a, this.handler, this.options); + } + return a; + } + ensureStateFont(e) { + if (e.font) return; + const t = new FormatError( + "Missing setFont (Tf) operator before text rendering operator.", + ); + if (!this.options.ignoreErrors) throw t; + warn(`ensureStateFont: "${t}".`); + } + async setGState({ + resources: e, + gState: t, + operatorList: i, + cacheKey: a, + task: s, + stateManager: r, + localGStateCache: n, + localColorSpaceCache: o, + }) { + const g = t.objId; + let c = !0; + const h = []; + let l = Promise.resolve(); + for (const a of t.getKeys()) { + const n = t.get(a); + switch (a) { + case "Type": + break; + case "LW": + case "LC": + case "LJ": + case "ML": + case "D": + case "RI": + case "FL": + case "CA": + case "ca": + h.push([a, n]); + break; + case "Font": + c = !1; + l = l.then(() => + this.handleSetFont(e, null, n[0], i, s, r.state).then(function (e) { + i.addDependency(e); + h.push([a, [e, n[1]]]); + }), + ); + break; + case "BM": + h.push([a, normalizeBlendMode(n)]); + break; + case "SMask": + if (isName(n, "None")) { + h.push([a, !1]); + break; + } + if (n instanceof Dict) { + c = !1; + l = l.then(() => this.handleSMask(n, e, i, s, r, o)); + h.push([a, !0]); + } else warn("Unsupported SMask type"); + break; + case "TR": + const t = this.handleTransferFunction(n); + h.push([a, t]); + break; + case "OP": + case "op": + case "OPM": + case "BG": + case "BG2": + case "UCR": + case "UCR2": + case "TR2": + case "HT": + case "SM": + case "SA": + case "AIS": + case "TK": + info("graphic state operator " + a); + break; + default: + info("Unknown graphic state operator " + a); + } + } + await l; + h.length > 0 && i.addOp(NA, [h]); + c && n.set(a, g, h); + } + loadFont(e, t, i, a = null, s = null) { + const errorFont = async () => + new TranslatedFont({ + loadedName: "g_font_error", + font: new ErrorFont(`Font "${e}" is not available.`), + dict: t, + evaluatorOptions: this.options, + }); + let r; + if (t) t instanceof Ref && (r = t); + else { + const t = i.get("Font"); + t && (r = t.getRaw(e)); + } + if (r) { + if (this.type3FontRefs?.has(r)) return errorFont(); + if (this.fontCache.has(r)) return this.fontCache.get(r); + try { + t = this.xref.fetchIfRef(r); + } catch (e) { + warn(`loadFont - lookup failed: "${e}".`); + } + } + if (!(t instanceof Dict)) { + if (!this.options.ignoreErrors && !this.parsingType3Font) { + warn(`Font "${e}" is not available.`); + return errorFont(); + } + warn( + `Font "${e}" is not available -- attempting to fallback to a default font.`, + ); + t = a || PartialEvaluator.fallbackFontDict; + } + if (t.cacheKey && this.fontCache.has(t.cacheKey)) + return this.fontCache.get(t.cacheKey); + const { promise: n, resolve: o } = Promise.withResolvers(); + let g; + try { + g = this.preEvaluateFont(t); + g.cssFontInfo = s; + } catch (e) { + warn(`loadFont - preEvaluateFont failed: "${e}".`); + return errorFont(); + } + const { descriptor: c, hash: h } = g, + l = r instanceof Ref; + let C; + if (h && c instanceof Dict) { + const e = (c.fontAliases ||= Object.create(null)); + if (e[h]) { + const t = e[h].aliasRef; + if (l && t && this.fontCache.has(t)) { + this.fontCache.putAlias(r, t); + return this.fontCache.get(r); + } + } else e[h] = { fontID: this.idFactory.createFontId() }; + l && (e[h].aliasRef = r); + C = e[h].fontID; + } else C = this.idFactory.createFontId(); + assert(C?.startsWith("f"), 'The "fontID" must be (correctly) defined.'); + if (l) this.fontCache.put(r, n); + else { + t.cacheKey = `cacheKey_${C}`; + this.fontCache.put(t.cacheKey, n); + } + t.loadedName = `${this.idFactory.getDocId()}_${C}`; + this.translateFont(g) + .then((e) => { + o( + new TranslatedFont({ + loadedName: t.loadedName, + font: e, + dict: t, + evaluatorOptions: this.options, + }), + ); + }) + .catch((e) => { + warn(`loadFont - translateFont failed: "${e}".`); + o( + new TranslatedFont({ + loadedName: t.loadedName, + font: new ErrorFont(e instanceof Error ? e.message : e), + dict: t, + evaluatorOptions: this.options, + }), + ); + }); + return n; + } + buildPath(e, t, i, a = !1) { + const s = e.length - 1; + i || (i = []); + if (s < 0 || e.fnArray[s] !== tt) { + if (a) { + warn(`Encountered path operator "${t}" inside of a text object.`); + e.addOp(GA, null); + } + let s; + switch (t) { + case KA: + const e = i[0] + i[2], + t = i[1] + i[3]; + s = [ + Math.min(i[0], e), + Math.min(i[1], t), + Math.max(i[0], e), + Math.max(i[1], t), + ]; + break; + case UA: + case LA: + s = [i[0], i[1], i[0], i[1]]; + break; + default: + s = [1 / 0, 1 / 0, -1 / 0, -1 / 0]; + } + e.addOp(tt, [[t], i, s]); + a && e.addOp(xA, null); + } else { + const a = e.argsArray[s]; + a[0].push(t); + a[1].push(...i); + const r = a[2]; + switch (t) { + case KA: + const e = i[0] + i[2], + t = i[1] + i[3]; + r[0] = Math.min(r[0], i[0], e); + r[1] = Math.min(r[1], i[1], t); + r[2] = Math.max(r[2], i[0], e); + r[3] = Math.max(r[3], i[1], t); + break; + case UA: + case LA: + r[0] = Math.min(r[0], i[0]); + r[1] = Math.min(r[1], i[1]); + r[2] = Math.max(r[2], i[0]); + r[3] = Math.max(r[3], i[1]); + } + } + } + parseColorSpace({ cs: e, resources: t, localColorSpaceCache: i }) { + return ColorSpace.parseAsync({ + cs: e, + xref: this.xref, + resources: t, + pdfFunctionFactory: this._pdfFunctionFactory, + localColorSpaceCache: i, + }).catch((e) => { + if (e instanceof AbortException) return null; + if (this.options.ignoreErrors) { + warn(`parseColorSpace - ignoring ColorSpace: "${e}".`); + return null; + } + throw e; + }); + } + parseShading({ + shading: e, + resources: t, + localColorSpaceCache: i, + localShadingPatternCache: a, + }) { + let s, + r = a.get(e); + if (r) return r; + try { + s = Pattern.parseShading( + e, + this.xref, + t, + this._pdfFunctionFactory, + i, + ).getIR(); + } catch (t) { + if (t instanceof AbortException) return null; + if (this.options.ignoreErrors) { + warn(`parseShading - ignoring shading: "${t}".`); + a.set(e, null); + return null; + } + throw t; + } + r = `pattern_${this.idFactory.createObjId()}`; + this.parsingType3Font && (r = `${this.idFactory.getDocId()}_type3_${r}`); + a.set(e, r); + this.parsingType3Font + ? this.handler.send("commonobj", [r, "Pattern", s]) + : this.handler.send("obj", [r, this.pageIndex, "Pattern", s]); + return r; + } + handleColorN(e, t, i, a, s, r, n, o, g, c) { + const h = i.pop(); + if (h instanceof Name) { + const l = s.getRaw(h.name), + C = l instanceof Ref && g.getByRef(l); + if (C) + try { + const s = a.base ? a.base.getRgb(i, 0) : null, + r = getTilingPatternIR(C.operatorListIR, C.dict, s); + e.addOp(t, r); + return; + } catch {} + const Q = this.xref.fetchIfRef(l); + if (Q) { + const s = Q instanceof BaseStream ? Q.dict : Q, + h = s.get("PatternType"); + if (h === Fs) { + const o = a.base ? a.base.getRgb(i, 0) : null; + return this.handleTilingType(t, o, r, Q, s, e, n, g); + } + if (h === Ss) { + const i = s.get("Shading"), + a = this.parseShading({ + shading: i, + resources: r, + localColorSpaceCache: o, + localShadingPatternCache: c, + }); + if (a) { + const i = lookupMatrix(s.getArray("Matrix"), null); + e.addOp(t, ["Shading", a, i]); + } + return; + } + throw new FormatError(`Unknown PatternType: ${h}`); + } + } + throw new FormatError(`Unknown PatternName: ${h}`); + } + _parseVisibilityExpression(e, t, i) { + if (++t > 10) { + warn("Visibility expression is too deeply nested"); + return; + } + const a = e.length, + s = this.xref.fetchIfRef(e[0]); + if (!(a < 2) && s instanceof Name) { + switch (s.name) { + case "And": + case "Or": + case "Not": + i.push(s.name); + break; + default: + warn(`Invalid operator ${s.name} in visibility expression`); + return; + } + for (let s = 1; s < a; s++) { + const a = e[s], + r = this.xref.fetchIfRef(a); + if (Array.isArray(r)) { + const e = []; + i.push(e); + this._parseVisibilityExpression(r, t, e); + } else a instanceof Ref && i.push(a.toString()); + } + } else warn("Invalid visibility expression"); + } + async parseMarkedContentProps(e, t) { + let i; + if (e instanceof Name) { + i = t.get("Properties").get(e.name); + } else { + if (!(e instanceof Dict)) + throw new FormatError("Optional content properties malformed."); + i = e; + } + const a = i.get("Type")?.name; + if ("OCG" === a) return { type: a, id: i.objId }; + if ("OCMD" === a) { + const e = i.get("VE"); + if (Array.isArray(e)) { + const t = []; + this._parseVisibilityExpression(e, 0, t); + if (t.length > 0) return { type: "OCMD", expression: t }; + } + const t = i.get("OCGs"); + if (Array.isArray(t) || t instanceof Dict) { + const e = []; + if (Array.isArray(t)) for (const i of t) e.push(i.toString()); + else e.push(t.objId); + return { + type: a, + ids: e, + policy: i.get("P") instanceof Name ? i.get("P").name : null, + expression: null, + }; + } + if (t instanceof Ref) return { type: a, id: t.toString() }; + } + return null; + } + getOperatorList({ + stream: e, + task: t, + resources: i, + operatorList: a, + initialState: s = null, + fallbackFontDict: r = null, + }) { + i ||= Dict.empty; + s ||= new EvalState(); + if (!a) + throw new Error('getOperatorList: missing "operatorList" parameter'); + const n = this, + o = this.xref; + let g = !1; + const c = new LocalImageCache(), + h = new LocalColorSpaceCache(), + l = new LocalGStateCache(), + C = new LocalTilingPatternCache(), + Q = new Map(), + E = i.get("XObject") || Dict.empty, + u = i.get("Pattern") || Dict.empty, + d = new StateManager(s), + f = new EvaluatorPreprocessor(e, o, d), + p = new TimeSlotManager(); + function closePendingRestoreOPS(e) { + for (let e = 0, t = f.savedStatesDepth; e < t; e++) a.addOp(xA, []); + } + return new Promise(function promiseBody(e, s) { + const next = function (t) { + Promise.all([t, a.ready]).then(function () { + try { + promiseBody(e, s); + } catch (e) { + s(e); + } + }, s); + }; + t.ensureNotTerminated(); + p.reset(); + const m = {}; + let y, w, b, D, F, S; + for (; !(y = p.check()); ) { + m.args = null; + if (!f.read(m)) break; + let e = m.args, + s = m.fn; + switch (0 | s) { + case Me: + S = e[0] instanceof Name; + F = e[0].name; + if (S) { + const t = c.getByName(F); + if (t) { + a.addImageOps(t.fn, t.args, t.optionalContent); + incrementCachedImageMaskCount(t); + e = null; + continue; + } + } + next( + new Promise(function (e, s) { + if (!S) + throw new FormatError("XObject must be referred to by name."); + let r = E.getRaw(F); + if (r instanceof Ref) { + const t = c.getByRef(r) || n._regionalImageCache.getByRef(r); + if (t) { + a.addImageOps(t.fn, t.args, t.optionalContent); + incrementCachedImageMaskCount(t); + e(); + return; + } + const i = n.globalImageCache.getData(r, n.pageIndex); + if (i) { + a.addDependency(i.objId); + a.addImageOps(i.fn, i.args, i.optionalContent); + e(); + return; + } + r = o.fetch(r); + } + if (!(r instanceof BaseStream)) + throw new FormatError("XObject should be a stream"); + const g = r.dict.get("Subtype"); + if (!(g instanceof Name)) + throw new FormatError("XObject should have a Name subtype"); + if ("Form" !== g.name) + if ("Image" !== g.name) { + if ("PS" !== g.name) + throw new FormatError( + `Unhandled XObject subtype ${g.name}`, + ); + info("Ignored XObject subtype PS"); + e(); + } else + n.buildPaintImageXObject({ + resources: i, + image: r, + operatorList: a, + cacheKey: F, + localImageCache: c, + localColorSpaceCache: h, + }).then(e, s); + else { + d.save(); + n.buildFormXObject(i, r, null, a, t, d.state.clone(), h).then( + function () { + d.restore(); + e(); + }, + s, + ); + } + }).catch(function (e) { + if (!(e instanceof AbortException)) { + if (!n.options.ignoreErrors) throw e; + warn(`getOperatorList - ignoring XObject: "${e}".`); + } + }), + ); + return; + case se: + var k = e[1]; + next( + n.handleSetFont(i, e, null, a, t, d.state, r).then(function (e) { + a.addDependency(e); + a.addOp(se, [e, k]); + }), + ); + return; + case $A: + g = !0; + break; + case Ae: + g = !1; + break; + case xe: + var R = e[0].cacheKey; + if (R) { + const t = c.getByName(R); + if (t) { + a.addImageOps(t.fn, t.args, t.optionalContent); + incrementCachedImageMaskCount(t); + e = null; + continue; + } + } + next( + n.buildPaintImageXObject({ + resources: i, + image: e[0], + isInline: !0, + operatorList: a, + cacheKey: R, + localImageCache: c, + localColorSpaceCache: h, + }), + ); + return; + case he: + if (!d.state.font) { + n.ensureStateFont(d.state); + continue; + } + e[0] = n.handleText(e[0], d.state); + break; + case le: + if (!d.state.font) { + n.ensureStateFont(d.state); + continue; + } + var N = [], + G = d.state; + for (const t of e[0]) + "string" == typeof t + ? N.push(...n.handleText(t, G)) + : "number" == typeof t && N.push(t); + e[0] = N; + s = he; + break; + case Ce: + if (!d.state.font) { + n.ensureStateFont(d.state); + continue; + } + a.addOp(ce); + e[0] = n.handleText(e[0], d.state); + s = he; + break; + case Be: + if (!d.state.font) { + n.ensureStateFont(d.state); + continue; + } + a.addOp(ce); + a.addOp(te, [e.shift()]); + a.addOp(ee, [e.shift()]); + e[0] = n.handleText(e[0], d.state); + s = he; + break; + case re: + d.state.textRenderingMode = e[0]; + break; + case de: { + const t = ColorSpace.getCached(e[0], o, h); + if (t) { + d.state.fillColorSpace = t; + continue; + } + next( + n + .parseColorSpace({ + cs: e[0], + resources: i, + localColorSpaceCache: h, + }) + .then(function (e) { + e && (d.state.fillColorSpace = e); + }), + ); + return; + } + case ue: { + const t = ColorSpace.getCached(e[0], o, h); + if (t) { + d.state.strokeColorSpace = t; + continue; + } + next( + n + .parseColorSpace({ + cs: e[0], + resources: i, + localColorSpaceCache: h, + }) + .then(function (e) { + e && (d.state.strokeColorSpace = e); + }), + ); + return; + } + case me: + D = d.state.fillColorSpace; + e = D.getRgb(e, 0); + s = Fe; + break; + case fe: + D = d.state.strokeColorSpace; + e = D.getRgb(e, 0); + s = De; + break; + case be: + d.state.fillColorSpace = ColorSpace.singletons.gray; + e = ColorSpace.singletons.gray.getRgb(e, 0); + s = Fe; + break; + case we: + d.state.strokeColorSpace = ColorSpace.singletons.gray; + e = ColorSpace.singletons.gray.getRgb(e, 0); + s = De; + break; + case ke: + d.state.fillColorSpace = ColorSpace.singletons.cmyk; + e = ColorSpace.singletons.cmyk.getRgb(e, 0); + s = Fe; + break; + case Se: + d.state.strokeColorSpace = ColorSpace.singletons.cmyk; + e = ColorSpace.singletons.cmyk.getRgb(e, 0); + s = De; + break; + case Fe: + d.state.fillColorSpace = ColorSpace.singletons.rgb; + e = ColorSpace.singletons.rgb.getRgb(e, 0); + break; + case De: + d.state.strokeColorSpace = ColorSpace.singletons.rgb; + e = ColorSpace.singletons.rgb.getRgb(e, 0); + break; + case ye: + D = d.state.fillColorSpace; + if ("Pattern" === D.name) { + next(n.handleColorN(a, ye, e, D, u, i, t, h, C, Q)); + return; + } + e = D.getRgb(e, 0); + s = Fe; + break; + case pe: + D = d.state.strokeColorSpace; + if ("Pattern" === D.name) { + next(n.handleColorN(a, pe, e, D, u, i, t, h, C, Q)); + return; + } + e = D.getRgb(e, 0); + s = De; + break; + case Re: + var x = i.get("Shading"); + if (!x) throw new FormatError("No shading resource found"); + var M = x.get(e[0].name); + if (!M) throw new FormatError("No shading object found"); + const f = n.parseShading({ + shading: M, + resources: i, + localColorSpaceCache: h, + localShadingPatternCache: Q, + }); + if (!f) continue; + e = [f]; + s = Re; + break; + case NA: + S = e[0] instanceof Name; + F = e[0].name; + if (S) { + const t = l.getByName(F); + if (t) { + t.length > 0 && a.addOp(NA, [t]); + e = null; + continue; + } + } + next( + new Promise(function (e, s) { + if (!S) + throw new FormatError("GState must be referred to by name."); + const r = i.get("ExtGState"); + if (!(r instanceof Dict)) + throw new FormatError("ExtGState should be a dictionary."); + const o = r.get(F); + if (!(o instanceof Dict)) + throw new FormatError("GState should be a dictionary."); + n.setGState({ + resources: i, + gState: o, + operatorList: a, + cacheKey: F, + task: t, + stateManager: d, + localGStateCache: l, + localColorSpaceCache: h, + }).then(e, s); + }).catch(function (e) { + if (!(e instanceof AbortException)) { + if (!n.options.ignoreErrors) throw e; + warn(`getOperatorList - ignoring ExtGState: "${e}".`); + } + }), + ); + return; + case UA: + case LA: + case JA: + case HA: + case YA: + case vA: + case KA: + n.buildPath(a, s, e, g); + continue; + case Ue: + case Le: + case ve: + case Ke: + continue; + case He: + if (!(e[0] instanceof Name)) { + warn(`Expected name for beginMarkedContentProps arg0=${e[0]}`); + a.addOp(He, ["OC", null]); + continue; + } + if ("OC" === e[0].name) { + next( + n + .parseMarkedContentProps(e[1], i) + .then((e) => { + a.addOp(He, ["OC", e]); + }) + .catch((e) => { + if (!(e instanceof AbortException)) { + if (!n.options.ignoreErrors) throw e; + warn( + `getOperatorList - ignoring beginMarkedContentProps: "${e}".`, + ); + a.addOp(He, ["OC", null]); + } + }), + ); + return; + } + e = [e[0].name, e[1] instanceof Dict ? e[1].get("MCID") : null]; + break; + default: + if (null !== e) { + for (w = 0, b = e.length; w < b && !(e[w] instanceof Dict); w++); + if (w < b) { + warn("getOperatorList - ignoring operator: " + s); + continue; + } + } + } + a.addOp(s, e); + } + if (y) next(ks); + else { + closePendingRestoreOPS(); + e(); + } + }).catch((e) => { + if (!(e instanceof AbortException)) { + if (!this.options.ignoreErrors) throw e; + warn( + `getOperatorList - ignoring errors during "${t.name}" task: "${e}".`, + ); + closePendingRestoreOPS(); + } + }); + } + getTextContent({ + stream: e, + task: t, + resources: s, + stateManager: r = null, + includeMarkedContent: n = !1, + sink: o, + seenStyles: g = new Set(), + viewBox: c, + lang: h = null, + markedContentData: l = null, + disableNormalization: C = !1, + keepWhiteSpace: Q = !1, + }) { + s ||= Dict.empty; + r ||= new StateManager(new TextState()); + n && (l ||= { level: 0 }); + const E = { items: [], styles: Object.create(null), lang: h }, + u = { + initialized: !1, + str: [], + totalWidth: 0, + totalHeight: 0, + width: 0, + height: 0, + vertical: !1, + prevTransform: null, + textAdvanceScale: 0, + spaceInFlowMin: 0, + spaceInFlowMax: 0, + trackingSpaceMin: 1 / 0, + negativeSpaceMax: -1 / 0, + notASpace: -1 / 0, + transform: null, + fontName: null, + hasEOL: !1, + }, + d = [" ", " "]; + let f = 0; + function saveLastChar(e) { + const t = (f + 1) % 2, + i = " " !== d[f] && " " === d[t]; + d[f] = e; + f = t; + return !Q && i; + } + function shouldAddWhitepsace() { + return !Q && " " !== d[f] && " " === d[(f + 1) % 2]; + } + function resetLastChars() { + d[0] = d[1] = " "; + f = 0; + } + const p = this, + m = this.xref, + y = []; + let w = null; + const b = new LocalImageCache(), + D = new LocalGStateCache(), + F = new EvaluatorPreprocessor(e, m, r); + let S; + function pushWhitespace({ + width: e = 0, + height: t = 0, + transform: i = u.prevTransform, + fontName: a = u.fontName, + }) { + E.items.push({ + str: " ", + dir: "ltr", + width: e, + height: t, + transform: i, + fontName: a, + hasEOL: !1, + }); + } + function getCurrentTextTransform() { + const e = S.font, + t = [S.fontSize * S.textHScale, 0, 0, S.fontSize, 0, S.textRise]; + if ( + e.isType3Font && + (S.fontSize <= 1 || e.isCharBBox) && + !isArrayEqual(S.fontMatrix, a) + ) { + const i = e.bbox[3] - e.bbox[1]; + i > 0 && (t[3] *= i * S.fontMatrix[3]); + } + return Util.transform(S.ctm, Util.transform(S.textMatrix, t)); + } + function ensureTextContentItem() { + if (u.initialized) return u; + const { font: e, loadedName: t } = S; + if (!g.has(t)) { + g.add(t); + E.styles[t] = { + fontFamily: e.fallbackName, + ascent: e.ascent, + descent: e.descent, + vertical: e.vertical, + }; + if (p.options.fontExtraProperties && e.systemFontInfo) { + const i = E.styles[t]; + i.fontSubstitution = e.systemFontInfo.css; + i.fontSubstitutionLoadedName = e.systemFontInfo.loadedName; + } + } + u.fontName = t; + const i = (u.transform = getCurrentTextTransform()); + if (e.vertical) { + u.width = u.totalWidth = Math.hypot(i[0], i[1]); + u.height = u.totalHeight = 0; + u.vertical = !0; + } else { + u.width = u.totalWidth = 0; + u.height = u.totalHeight = Math.hypot(i[2], i[3]); + u.vertical = !1; + } + const a = Math.hypot(S.textLineMatrix[0], S.textLineMatrix[1]), + s = Math.hypot(S.ctm[0], S.ctm[1]); + u.textAdvanceScale = s * a; + const { fontSize: r } = S; + u.trackingSpaceMin = 0.102 * r; + u.notASpace = 0.03 * r; + u.negativeSpaceMax = -0.2 * r; + u.spaceInFlowMin = 0.102 * r; + u.spaceInFlowMax = 0.6 * r; + u.hasEOL = !1; + u.initialized = !0; + return u; + } + function updateAdvanceScale() { + if (!u.initialized) return; + const e = Math.hypot(S.textLineMatrix[0], S.textLineMatrix[1]), + t = Math.hypot(S.ctm[0], S.ctm[1]) * e; + if (t !== u.textAdvanceScale) { + if (u.vertical) { + u.totalHeight += u.height * u.textAdvanceScale; + u.height = 0; + } else { + u.totalWidth += u.width * u.textAdvanceScale; + u.width = 0; + } + u.textAdvanceScale = t; + } + } + function runBidiTransform(e) { + let t = e.str.join(""); + C || + (t = (function normalizeUnicode(e) { + if (!gt) { + gt = + /([\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; + It = new Map([["ſt", "ſt"]]); + } + return e.replaceAll(gt, (e, t, i) => + t ? t.normalize("NFKC") : It.get(i), + ); + })(t)); + const i = bidi(t, -1, e.vertical); + return { + str: i.str, + dir: i.dir, + width: Math.abs(e.totalWidth), + height: Math.abs(e.totalHeight), + transform: e.transform, + fontName: e.fontName, + hasEOL: e.hasEOL, + }; + } + async function handleSetFont(e, i) { + const r = await p.loadFont(e, i, s); + if (r.font.isType3Font) + try { + await r.loadType3Data(p, s, t); + } catch {} + S.loadedName = r.loadedName; + S.font = r.font; + S.fontMatrix = r.font.fontMatrix || a; + } + function applyInverseRotation(e, t, i) { + const a = Math.hypot(i[0], i[1]); + return [(i[0] * e + i[1] * t) / a, (i[2] * e + i[3] * t) / a]; + } + function compareWithLastPosition(e) { + const t = getCurrentTextTransform(); + let i = t[4], + a = t[5]; + if (S.font?.vertical) { + if (i < c[0] || i > c[2] || a + e < c[1] || a > c[3]) return !1; + } else if (i + e < c[0] || i > c[2] || a < c[1] || a > c[3]) return !1; + if (!S.font || !u.prevTransform) return !0; + let s = u.prevTransform[4], + r = u.prevTransform[5]; + if (s === i && r === a) return !0; + let n = -1; + t[0] && 0 === t[1] && 0 === t[2] + ? (n = t[0] > 0 ? 0 : 180) + : t[1] && 0 === t[0] && 0 === t[3] && (n = t[1] > 0 ? 90 : 270); + switch (n) { + case 0: + break; + case 90: + [i, a] = [a, i]; + [s, r] = [r, s]; + break; + case 180: + [i, a, s, r] = [-i, -a, -s, -r]; + break; + case 270: + [i, a] = [-a, -i]; + [s, r] = [-r, -s]; + break; + default: + [i, a] = applyInverseRotation(i, a, t); + [s, r] = applyInverseRotation(s, r, u.prevTransform); + } + if (S.font.vertical) { + const e = (r - a) / u.textAdvanceScale, + t = i - s, + n = Math.sign(u.height); + if (e < n * u.negativeSpaceMax) { + if (Math.abs(t) > 0.5 * u.width) { + appendEOL(); + return !0; + } + resetLastChars(); + flushTextContentItem(); + return !0; + } + if (Math.abs(t) > u.width) { + appendEOL(); + return !0; + } + e <= n * u.notASpace && resetLastChars(); + if (e <= n * u.trackingSpaceMin) + if (shouldAddWhitepsace()) { + resetLastChars(); + flushTextContentItem(); + pushWhitespace({ height: Math.abs(e) }); + } else u.height += e; + else if (!addFakeSpaces(e, u.prevTransform, n)) + if (0 === u.str.length) { + resetLastChars(); + pushWhitespace({ height: Math.abs(e) }); + } else u.height += e; + Math.abs(t) > 0.25 * u.width && flushTextContentItem(); + return !0; + } + const o = (i - s) / u.textAdvanceScale, + g = a - r, + h = Math.sign(u.width); + if (o < h * u.negativeSpaceMax) { + if (Math.abs(g) > 0.5 * u.height) { + appendEOL(); + return !0; + } + resetLastChars(); + flushTextContentItem(); + return !0; + } + if (Math.abs(g) > u.height) { + appendEOL(); + return !0; + } + o <= h * u.notASpace && resetLastChars(); + if (o <= h * u.trackingSpaceMin) + if (shouldAddWhitepsace()) { + resetLastChars(); + flushTextContentItem(); + pushWhitespace({ width: Math.abs(o) }); + } else u.width += o; + else if (!addFakeSpaces(o, u.prevTransform, h)) + if (0 === u.str.length) { + resetLastChars(); + pushWhitespace({ width: Math.abs(o) }); + } else u.width += o; + Math.abs(g) > 0.25 * u.height && flushTextContentItem(); + return !0; + } + function buildTextContentItem({ chars: e, extraSpacing: t }) { + const i = S.font; + if (!e) { + const e = S.charSpacing + t; + e && + (i.vertical + ? S.translateTextMatrix(0, -e) + : S.translateTextMatrix(e * S.textHScale, 0)); + Q && compareWithLastPosition(0); + return; + } + const a = i.charsToGlyphs(e), + s = S.fontMatrix[0] * S.fontSize; + for (let e = 0, r = a.length; e < r; e++) { + const n = a[e], + { category: o } = n; + if (o.isInvisibleFormatMark) continue; + let g = S.charSpacing + (e + 1 === r ? t : 0), + c = n.width; + i.vertical && (c = n.vmetric ? n.vmetric[0] : -c); + let h = c * s; + if (!Q && o.isWhitespace) { + if (i.vertical) { + g += -h + S.wordSpacing; + S.translateTextMatrix(0, -g); + } else { + g += h + S.wordSpacing; + S.translateTextMatrix(g * S.textHScale, 0); + } + saveLastChar(" "); + continue; + } + if (!o.isZeroWidthDiacritic && !compareWithLastPosition(h)) { + i.vertical + ? S.translateTextMatrix(0, h) + : S.translateTextMatrix(h * S.textHScale, 0); + continue; + } + const l = ensureTextContentItem(); + o.isZeroWidthDiacritic && (h = 0); + if (i.vertical) { + S.translateTextMatrix(0, h); + h = Math.abs(h); + l.height += h; + } else { + h *= S.textHScale; + S.translateTextMatrix(h, 0); + l.width += h; + } + h && (l.prevTransform = getCurrentTextTransform()); + const C = n.unicode; + saveLastChar(C) && l.str.push(" "); + l.str.push(C); + g && + (i.vertical + ? S.translateTextMatrix(0, -g) + : S.translateTextMatrix(g * S.textHScale, 0)); + } + } + function appendEOL() { + resetLastChars(); + if (u.initialized) { + u.hasEOL = !0; + flushTextContentItem(); + } else + E.items.push({ + str: "", + dir: "ltr", + width: 0, + height: 0, + transform: getCurrentTextTransform(), + fontName: S.loadedName, + hasEOL: !0, + }); + } + function addFakeSpaces(e, t, i) { + if (i * u.spaceInFlowMin <= e && e <= i * u.spaceInFlowMax) { + if (u.initialized) { + resetLastChars(); + u.str.push(" "); + } + return !1; + } + const a = u.fontName; + let s = 0; + if (u.vertical) { + s = e; + e = 0; + } + flushTextContentItem(); + resetLastChars(); + pushWhitespace({ + width: Math.abs(e), + height: Math.abs(s), + transform: t || getCurrentTextTransform(), + fontName: a, + }); + return !0; + } + function flushTextContentItem() { + if (u.initialized && u.str) { + u.vertical + ? (u.totalHeight += u.height * u.textAdvanceScale) + : (u.totalWidth += u.width * u.textAdvanceScale); + E.items.push(runBidiTransform(u)); + u.initialized = !1; + u.str.length = 0; + } + } + function enqueueChunk(e = !1) { + const t = E.items.length; + if (0 !== t && !(e && t < 10)) { + o.enqueue(E, t); + E.items = []; + E.styles = Object.create(null); + } + } + const k = new TimeSlotManager(); + return new Promise(function promiseBody(e, a) { + const next = function (t) { + enqueueChunk(!0); + Promise.all([t, o.ready]).then(function () { + try { + promiseBody(e, a); + } catch (e) { + a(e); + } + }, a); + }; + t.ensureNotTerminated(); + k.reset(); + const u = {}; + let d, + f = []; + for (; !(d = k.check()); ) { + f.length = 0; + u.args = f; + if (!F.read(u)) break; + const e = S; + S = r.state; + const a = u.fn; + f = u.args; + switch (0 | a) { + case se: + var R = f[0].name, + N = f[1]; + if (S.font && R === S.fontName && N === S.fontSize) break; + flushTextContentItem(); + S.fontName = R; + S.fontSize = N; + next(handleSetFont(R, null)); + return; + case ne: + S.textRise = f[0]; + break; + case ie: + S.textHScale = f[0] / 100; + break; + case ae: + S.leading = f[0]; + break; + case oe: + S.translateTextLineMatrix(f[0], f[1]); + S.textMatrix = S.textLineMatrix.slice(); + break; + case ge: + S.leading = -f[1]; + S.translateTextLineMatrix(f[0], f[1]); + S.textMatrix = S.textLineMatrix.slice(); + break; + case ce: + S.carriageReturn(); + break; + case Ie: + S.setTextMatrix(f[0], f[1], f[2], f[3], f[4], f[5]); + S.setTextLineMatrix(f[0], f[1], f[2], f[3], f[4], f[5]); + updateAdvanceScale(); + break; + case ee: + S.charSpacing = f[0]; + break; + case te: + S.wordSpacing = f[0]; + break; + case $A: + S.textMatrix = i.slice(); + S.textLineMatrix = i.slice(); + break; + case le: + if (!r.state.font) { + p.ensureStateFont(r.state); + continue; + } + const a = ((S.font.vertical ? 1 : -1) * S.fontSize) / 1e3, + u = f[0]; + for (let e = 0, t = u.length; e < t; e++) { + const t = u[e]; + if ("string" == typeof t) y.push(t); + else if ("number" == typeof t && 0 !== t) { + const e = y.join(""); + y.length = 0; + buildTextContentItem({ chars: e, extraSpacing: t * a }); + } + } + if (y.length > 0) { + const e = y.join(""); + y.length = 0; + buildTextContentItem({ chars: e, extraSpacing: 0 }); + } + break; + case he: + if (!r.state.font) { + p.ensureStateFont(r.state); + continue; + } + buildTextContentItem({ chars: f[0], extraSpacing: 0 }); + break; + case Ce: + if (!r.state.font) { + p.ensureStateFont(r.state); + continue; + } + S.carriageReturn(); + buildTextContentItem({ chars: f[0], extraSpacing: 0 }); + break; + case Be: + if (!r.state.font) { + p.ensureStateFont(r.state); + continue; + } + S.wordSpacing = f[0]; + S.charSpacing = f[1]; + S.carriageReturn(); + buildTextContentItem({ chars: f[2], extraSpacing: 0 }); + break; + case Me: + flushTextContentItem(); + w || (w = s.get("XObject") || Dict.empty); + var G = f[0] instanceof Name, + x = f[0].name; + if (G && b.getByName(x)) break; + next( + new Promise(function (e, i) { + if (!G) + throw new FormatError("XObject must be referred to by name."); + let a = w.getRaw(x); + if (a instanceof Ref) { + if (b.getByRef(a)) { + e(); + return; + } + if (p.globalImageCache.getData(a, p.pageIndex)) { + e(); + return; + } + a = m.fetch(a); + } + if (!(a instanceof BaseStream)) + throw new FormatError("XObject should be a stream"); + const E = a.dict.get("Subtype"); + if (!(E instanceof Name)) + throw new FormatError("XObject should have a Name subtype"); + if ("Form" !== E.name) { + b.set(x, a.dict.objId, !0); + e(); + return; + } + const u = r.state.clone(), + d = new StateManager(u), + f = lookupMatrix(a.dict.getArray("Matrix"), null); + f && d.transform(f); + enqueueChunk(); + const y = { + enqueueInvoked: !1, + enqueue(e, t) { + this.enqueueInvoked = !0; + o.enqueue(e, t); + }, + get desiredSize() { + return o.desiredSize; + }, + get ready() { + return o.ready; + }, + }; + p.getTextContent({ + stream: a, + task: t, + resources: a.dict.get("Resources") || s, + stateManager: d, + includeMarkedContent: n, + sink: y, + seenStyles: g, + viewBox: c, + lang: h, + markedContentData: l, + disableNormalization: C, + keepWhiteSpace: Q, + }).then(function () { + y.enqueueInvoked || b.set(x, a.dict.objId, !0); + e(); + }, i); + }).catch(function (e) { + if (!(e instanceof AbortException)) { + if (!p.options.ignoreErrors) throw e; + warn(`getTextContent - ignoring XObject: "${e}".`); + } + }), + ); + return; + case NA: + G = f[0] instanceof Name; + x = f[0].name; + if (G && D.getByName(x)) break; + next( + new Promise(function (e, t) { + if (!G) + throw new FormatError("GState must be referred to by name."); + const i = s.get("ExtGState"); + if (!(i instanceof Dict)) + throw new FormatError("ExtGState should be a dictionary."); + const a = i.get(x); + if (!(a instanceof Dict)) + throw new FormatError("GState should be a dictionary."); + const r = a.get("Font"); + if (r) { + flushTextContentItem(); + S.fontName = null; + S.fontSize = r[1]; + handleSetFont(null, r[0]).then(e, t); + } else { + D.set(x, a.objId, !0); + e(); + } + }).catch(function (e) { + if (!(e instanceof AbortException)) { + if (!p.options.ignoreErrors) throw e; + warn(`getTextContent - ignoring ExtGState: "${e}".`); + } + }), + ); + return; + case Je: + flushTextContentItem(); + if (n) { + l.level++; + E.items.push({ + type: "beginMarkedContent", + tag: f[0] instanceof Name ? f[0].name : null, + }); + } + break; + case He: + flushTextContentItem(); + if (n) { + l.level++; + let e = null; + f[1] instanceof Dict && (e = f[1].get("MCID")); + E.items.push({ + type: "beginMarkedContentProps", + id: Number.isInteger(e) + ? `${p.idFactory.getPageObjId()}_mc${e}` + : null, + tag: f[0] instanceof Name ? f[0].name : null, + }); + } + break; + case Ye: + flushTextContentItem(); + if (n) { + if (0 === l.level) break; + l.level--; + E.items.push({ type: "endMarkedContent" }); + } + break; + case xA: + !e || + (e.font === S.font && + e.fontSize === S.fontSize && + e.fontName === S.fontName) || + flushTextContentItem(); + } + if (E.items.length >= o.desiredSize) { + d = !0; + break; + } + } + if (d) next(ks); + else { + flushTextContentItem(); + enqueueChunk(); + e(); + } + }).catch((e) => { + if (!(e instanceof AbortException)) { + if (!this.options.ignoreErrors) throw e; + warn( + `getTextContent - ignoring errors during "${t.name}" task: "${e}".`, + ); + flushTextContentItem(); + enqueueChunk(); + } + }); + } + async extractDataStructures(e, t) { + const i = this.xref; + let a; + const s = this.readToUnicode(t.toUnicode); + if (t.composite) { + const i = e.get("CIDSystemInfo"); + i instanceof Dict && + (t.cidSystemInfo = { + registry: stringToPDFString(i.get("Registry")), + ordering: stringToPDFString(i.get("Ordering")), + supplement: i.get("Supplement"), + }); + try { + const t = e.get("CIDToGIDMap"); + t instanceof BaseStream && (a = t.getBytes()); + } catch (e) { + if (!this.options.ignoreErrors) throw e; + warn(`extractDataStructures - ignoring CIDToGIDMap data: "${e}".`); + } + } + const r = []; + let n, + o = null; + if (e.has("Encoding")) { + n = e.get("Encoding"); + if (n instanceof Dict) { + o = n.get("BaseEncoding"); + o = o instanceof Name ? o.name : null; + if (n.has("Differences")) { + const e = n.get("Differences"); + let t = 0; + for (const a of e) { + const e = i.fetchIfRef(a); + if ("number" == typeof e) t = e; + else { + if (!(e instanceof Name)) + throw new FormatError( + `Invalid entry in 'Differences' array: ${e}`, + ); + r[t++] = e.name; + } + } + } + } else if (n instanceof Name) o = n.name; + else { + const e = "Encoding is not a Name nor a Dict"; + if (!this.options.ignoreErrors) throw new FormatError(e); + warn(e); + } + "MacRomanEncoding" !== o && + "MacExpertEncoding" !== o && + "WinAnsiEncoding" !== o && + (o = null); + } + const g = !t.file || t.isInternalFont, + c = Zi()[t.name]; + o && g && c && (o = null); + if (o) t.defaultEncoding = getEncoding(o); + else { + const e = !!(t.flags & Ti), + i = !!(t.flags & qi); + n = fi; + "TrueType" !== t.type || i || (n = pi); + if (e || c) { + n = di; + g && + (/Symbol/i.test(t.name) + ? (n = mi) + : /Dingbats/i.test(t.name) + ? (n = yi) + : /Wingdings/i.test(t.name) && (n = pi)); + } + t.defaultEncoding = n; + } + t.differences = r; + t.baseEncodingName = o; + t.hasEncoding = !!o || r.length > 0; + t.dict = e; + t.toUnicode = await s; + const h = await this.buildToUnicode(t); + t.toUnicode = h; + a && (t.cidToGidMap = this.readCidToGidMap(a, h)); + return t; + } + _simpleFontToUnicode(e, t = !1) { + assert(!e.composite, "Must be a simple font."); + const i = [], + a = e.defaultEncoding.slice(), + s = e.baseEncodingName, + r = e.differences; + for (const e in r) { + const t = r[e]; + ".notdef" !== t && (a[e] = t); + } + const n = Ni(); + for (const r in a) { + let o = a[r]; + if ("" === o) continue; + let g = n[o]; + if (void 0 !== g) { + i[r] = String.fromCharCode(g); + continue; + } + let c = 0; + switch (o[0]) { + case "G": + 3 === o.length && (c = parseInt(o.substring(1), 16)); + break; + case "g": + 5 === o.length && (c = parseInt(o.substring(1), 16)); + break; + case "C": + case "c": + if (o.length >= 3 && o.length <= 4) { + const i = o.substring(1); + if (t) { + c = parseInt(i, 16); + break; + } + c = +i; + if (Number.isNaN(c) && Number.isInteger(parseInt(i, 16))) + return this._simpleFontToUnicode(e, !0); + } + break; + case "u": + g = getUnicodeForGlyph(o, n); + -1 !== g && (c = g); + break; + default: + switch (o) { + case "f_h": + case "f_t": + case "T_h": + i[r] = o.replaceAll("_", ""); + continue; + } + } + if (c > 0 && c <= 1114111 && Number.isInteger(c)) { + if (s && c === +r) { + const e = getEncoding(s); + if (e && (o = e[r])) { + i[r] = String.fromCharCode(n[o]); + continue; + } + } + i[r] = String.fromCodePoint(c); + } + } + return i; + } + async buildToUnicode(e) { + e.hasIncludedToUnicodeMap = e.toUnicode?.length > 0; + if (e.hasIncludedToUnicodeMap) { + !e.composite && + e.hasEncoding && + (e.fallbackToUnicode = this._simpleFontToUnicode(e)); + return e.toUnicode; + } + if (!e.composite) return new ToUnicodeMap(this._simpleFontToUnicode(e)); + if ( + e.composite && + ((e.cMap.builtInCMap && !(e.cMap instanceof IdentityCMap)) || + ("Adobe" === e.cidSystemInfo?.registry && + ("GB1" === e.cidSystemInfo.ordering || + "CNS1" === e.cidSystemInfo.ordering || + "Japan1" === e.cidSystemInfo.ordering || + "Korea1" === e.cidSystemInfo.ordering))) + ) { + const { registry: t, ordering: i } = e.cidSystemInfo, + a = Name.get(`${t}-${i}-UCS2`), + s = await CMapFactory.create({ + encoding: a, + fetchBuiltInCMap: this._fetchBuiltInCMapBound, + useCMap: null, + }), + r = [], + n = []; + e.cMap.forEach(function (e, t) { + if (t > 65535) throw new FormatError("Max size of CID is 65,535"); + const i = s.lookup(t); + if (i) { + n.length = 0; + for (let e = 0, t = i.length; e < t; e += 2) + n.push((i.charCodeAt(e) << 8) + i.charCodeAt(e + 1)); + r[e] = String.fromCharCode(...n); + } + }); + return new ToUnicodeMap(r); + } + return new IdentityToUnicodeMap(e.firstChar, e.lastChar); + } + async readToUnicode(e) { + if (!e) return null; + if (e instanceof Name) { + const t = await CMapFactory.create({ + encoding: e, + fetchBuiltInCMap: this._fetchBuiltInCMapBound, + useCMap: null, + }); + return t instanceof IdentityCMap + ? new IdentityToUnicodeMap(0, 65535) + : new ToUnicodeMap(t.getMap()); + } + if (e instanceof BaseStream) + try { + const t = await CMapFactory.create({ + encoding: e, + fetchBuiltInCMap: this._fetchBuiltInCMapBound, + useCMap: null, + }); + if (t instanceof IdentityCMap) + return new IdentityToUnicodeMap(0, 65535); + const i = new Array(t.length); + t.forEach(function (e, t) { + if ("number" == typeof t) { + i[e] = String.fromCodePoint(t); + return; + } + const a = []; + for (let e = 0; e < t.length; e += 2) { + const i = (t.charCodeAt(e) << 8) | t.charCodeAt(e + 1); + if (55296 != (63488 & i)) { + a.push(i); + continue; + } + e += 2; + const s = (t.charCodeAt(e) << 8) | t.charCodeAt(e + 1); + a.push(((1023 & i) << 10) + (1023 & s) + 65536); + } + i[e] = String.fromCodePoint(...a); + }); + return new ToUnicodeMap(i); + } catch (e) { + if (e instanceof AbortException) return null; + if (this.options.ignoreErrors) { + warn(`readToUnicode - ignoring ToUnicode data: "${e}".`); + return null; + } + throw e; + } + return null; + } + readCidToGidMap(e, t) { + const i = []; + for (let a = 0, s = e.length; a < s; a++) { + const s = (e[a++] << 8) | e[a], + r = a >> 1; + (0 !== s || t.has(r)) && (i[r] = s); + } + return i; + } + extractWidths(e, t, i) { + const a = this.xref; + let s = [], + r = 0; + const n = []; + let o; + if (i.composite) { + const t = e.get("DW"); + r = Number.isInteger(t) ? t : 1e3; + const g = e.get("W"); + if (Array.isArray(g)) + for (let e = 0, t = g.length; e < t; e++) { + let t = a.fetchIfRef(g[e++]); + if (!Number.isInteger(t)) break; + const i = a.fetchIfRef(g[e]); + if (Array.isArray(i)) + for (const e of i) { + const i = a.fetchIfRef(e); + "number" == typeof i && (s[t] = i); + t++; + } + else { + if (!Number.isInteger(i)) break; + { + const r = a.fetchIfRef(g[++e]); + if ("number" != typeof r) continue; + for (let e = t; e <= i; e++) s[e] = r; + } + } + } + if (i.vertical) { + const t = e.getArray("DW2"); + let i = isNumberArray(t, 2) ? t : [880, -1e3]; + o = [i[1], 0.5 * r, i[0]]; + i = e.get("W2"); + if (Array.isArray(i)) + for (let e = 0, t = i.length; e < t; e++) { + let t = a.fetchIfRef(i[e++]); + if (!Number.isInteger(t)) break; + const s = a.fetchIfRef(i[e]); + if (Array.isArray(s)) + for (let e = 0, i = s.length; e < i; e++) { + const i = [ + a.fetchIfRef(s[e++]), + a.fetchIfRef(s[e++]), + a.fetchIfRef(s[e]), + ]; + isNumberArray(i, null) && (n[t] = i); + t++; + } + else { + if (!Number.isInteger(s)) break; + { + const r = [ + a.fetchIfRef(i[++e]), + a.fetchIfRef(i[++e]), + a.fetchIfRef(i[++e]), + ]; + if (!isNumberArray(r, null)) continue; + for (let e = t; e <= s; e++) n[e] = r; + } + } + } + } + } else { + const n = e.get("Widths"); + if (Array.isArray(n)) { + let e = i.firstChar; + for (const t of n) { + const i = a.fetchIfRef(t); + "number" == typeof i && (s[e] = i); + e++; + } + const o = t.get("MissingWidth"); + r = "number" == typeof o ? o : 0; + } else { + const t = e.get("BaseFont"); + if (t instanceof Name) { + const e = this.getBaseFontMetrics(t.name); + s = this.buildCharCodeToWidth(e.widths, i); + r = e.defaultWidth; + } + } + } + let g = !0, + c = r; + for (const e in s) { + const t = s[e]; + if (t) + if (c) { + if (c !== t) { + g = !1; + break; + } + } else c = t; + } + g ? (i.flags |= vi) : (i.flags &= ~vi); + i.defaultWidth = r; + i.widths = s; + i.defaultVMetrics = o; + i.vmetrics = n; + } + isSerifFont(e) { + const t = e.split("-", 1)[0]; + return t in ji() || /serif/gi.test(t); + } + getBaseFontMetrics(e) { + let t = 0, + i = Object.create(null), + a = !1; + let s = Pi()[e] || e; + const r = Aa(); + s in r || (s = this.isSerifFont(e) ? "Times-Roman" : "Helvetica"); + const n = r[s]; + if ("number" == typeof n) { + t = n; + a = !0; + } else i = n(); + return { defaultWidth: t, monospace: a, widths: i }; + } + buildCharCodeToWidth(e, t) { + const i = Object.create(null), + a = t.differences, + s = t.defaultEncoding; + for (let t = 0; t < 256; t++) + t in a && e[a[t]] + ? (i[t] = e[a[t]]) + : t in s && e[s[t]] && (i[t] = e[s[t]]); + return i; + } + preEvaluateFont(e) { + const t = e; + let i = e.get("Subtype"); + if (!(i instanceof Name)) throw new FormatError("invalid font Subtype"); + let a, + s = !1; + if ("Type0" === i.name) { + const t = e.get("DescendantFonts"); + if (!t) throw new FormatError("Descendant fonts are not specified"); + if ( + !( + (e = Array.isArray(t) ? this.xref.fetchIfRef(t[0]) : t) instanceof + Dict + ) + ) + throw new FormatError("Descendant font is not a dictionary."); + i = e.get("Subtype"); + if (!(i instanceof Name)) throw new FormatError("invalid font Subtype"); + s = !0; + } + let r = e.get("FirstChar"); + Number.isInteger(r) || (r = 0); + let n = e.get("LastChar"); + Number.isInteger(n) || (n = s ? 65535 : 255); + const o = e.get("FontDescriptor"), + g = e.get("ToUnicode") || t.get("ToUnicode"); + if (o) { + a = new MurmurHash3_64(); + const i = t.getRaw("Encoding"); + if (i instanceof Name) a.update(i.name); + else if (i instanceof Ref) a.update(i.toString()); + else if (i instanceof Dict) + for (const e of i.getRawValues()) + if (e instanceof Name) a.update(e.name); + else if (e instanceof Ref) a.update(e.toString()); + else if (Array.isArray(e)) { + const t = e.length, + i = new Array(t); + for (let a = 0; a < t; a++) { + const t = e[a]; + t instanceof Name + ? (i[a] = t.name) + : ("number" == typeof t || t instanceof Ref) && + (i[a] = t.toString()); + } + a.update(i.join()); + } + a.update(`${r}-${n}`); + if (g instanceof BaseStream) { + const e = g.str || g, + t = e.buffer + ? new Uint8Array(e.buffer.buffer, 0, e.bufferLength) + : new Uint8Array(e.bytes.buffer, e.start, e.end - e.start); + a.update(t); + } else g instanceof Name && a.update(g.name); + const o = e.get("Widths") || t.get("Widths"); + if (Array.isArray(o)) { + const e = []; + for (const t of o) + ("number" == typeof t || t instanceof Ref) && e.push(t.toString()); + a.update(e.join()); + } + if (s) { + a.update("compositeFont"); + const i = e.get("W") || t.get("W"); + if (Array.isArray(i)) { + const e = []; + for (const t of i) + if ("number" == typeof t || t instanceof Ref) e.push(t.toString()); + else if (Array.isArray(t)) { + const i = []; + for (const e of t) + ("number" == typeof e || e instanceof Ref) && + i.push(e.toString()); + e.push(`[${i.join()}]`); + } + a.update(e.join()); + } + const s = e.getRaw("CIDToGIDMap") || t.getRaw("CIDToGIDMap"); + s instanceof Name + ? a.update(s.name) + : s instanceof Ref + ? a.update(s.toString()) + : s instanceof BaseStream && a.update(s.peekBytes()); + } + } + return { + descriptor: o, + dict: e, + baseDict: t, + composite: s, + type: i.name, + firstChar: r, + lastChar: n, + toUnicode: g, + hash: a ? a.hexdigest() : "", + }; + } + async translateFont({ + descriptor: e, + dict: t, + baseDict: i, + composite: s, + type: r, + firstChar: n, + lastChar: o, + toUnicode: g, + cssFontInfo: c, + }) { + const h = "Type3" === r; + if (!e) { + if (!h) { + let e = t.get("BaseFont"); + if (!(e instanceof Name)) + throw new FormatError("Base font is not specified"); + e = e.name.replaceAll(/[,_]/g, "-"); + const a = this.getBaseFontMetrics(e), + s = e.split("-", 1)[0], + c = + (this.isSerifFont(s) ? Ki : 0) | + (a.monospace ? vi : 0) | + (Zi()[s] ? Ti : qi), + l = { + type: r, + name: e, + loadedName: i.loadedName, + systemFontInfo: null, + widths: a.widths, + defaultWidth: a.defaultWidth, + isSimulatedFlags: !0, + flags: c, + firstChar: n, + lastChar: o, + toUnicode: g, + xHeight: 0, + capHeight: 0, + italicAngle: 0, + isType3Font: h, + }, + C = t.get("Widths"), + Q = getStandardFontName(e); + let E = null; + if (Q) { + E = await this.fetchStandardFontData(Q); + l.isInternalFont = !!E; + } + !l.isInternalFont && + this.options.useSystemFonts && + (l.systemFontInfo = getFontSubstitution( + this.systemFontCache, + this.idFactory, + this.options.standardFontDataUrl, + e, + Q, + r, + )); + const u = await this.extractDataStructures(t, l); + if (Array.isArray(C)) { + const e = []; + let t = n; + for (const i of C) { + const a = this.xref.fetchIfRef(i); + "number" == typeof a && (e[t] = a); + t++; + } + u.widths = e; + } else u.widths = this.buildCharCodeToWidth(a.widths, u); + return new Font(e, E, u); + } + { + const i = lookupNormalRect(t.getArray("FontBBox"), [0, 0, 0, 0]); + (e = new Dict(null)).set("FontName", Name.get(r)); + e.set("FontBBox", i); + } + } + let l = e.get("FontName"), + C = t.get("BaseFont"); + "string" == typeof l && (l = Name.get(l)); + "string" == typeof C && (C = Name.get(C)); + const Q = l?.name, + E = C?.name; + if (!h && Q !== E) { + info( + `The FontDescriptor's FontName is "${Q}" but should be the same as the Font's BaseFont "${E}".`, + ); + Q && + E && + (E.startsWith(Q) || (!isKnownFontName(Q) && isKnownFontName(E))) && + (l = null); + } + l ||= C; + if (!(l instanceof Name)) throw new FormatError("invalid font name"); + let u, d, f, p, m; + try { + u = e.get("FontFile", "FontFile2", "FontFile3"); + } catch (e) { + if (!this.options.ignoreErrors) throw e; + warn(`translateFont - fetching "${l.name}" font file: "${e}".`); + u = new NullStream(); + } + let y = !1, + w = null, + b = null; + if (u) { + if (u.dict) { + const e = u.dict.get("Subtype"); + e instanceof Name && (d = e.name); + f = u.dict.get("Length1"); + p = u.dict.get("Length2"); + m = u.dict.get("Length3"); + } + } else if (c) { + const e = getXfaFontName(l.name); + if (e) { + c.fontFamily = `${c.fontFamily}-PdfJS-XFA`; + c.metrics = e.metrics || null; + w = e.factors || null; + u = await this.fetchStandardFontData(e.name); + y = !!u; + i = t = getXfaFontDict(l.name); + s = !0; + } + } else if (!h) { + const e = getStandardFontName(l.name); + if (e) { + u = await this.fetchStandardFontData(e); + y = !!u; + } + !y && + this.options.useSystemFonts && + (b = getFontSubstitution( + this.systemFontCache, + this.idFactory, + this.options.standardFontDataUrl, + l.name, + e, + r, + )); + } + const D = lookupMatrix(t.getArray("FontMatrix"), a), + F = lookupNormalRect( + e.getArray("FontBBox") || t.getArray("FontBBox"), + void 0, + ); + let S = e.get("Ascent"); + "number" != typeof S && (S = void 0); + let k = e.get("Descent"); + "number" != typeof k && (k = void 0); + let R = e.get("XHeight"); + "number" != typeof R && (R = 0); + let N = e.get("CapHeight"); + "number" != typeof N && (N = 0); + let G = e.get("Flags"); + Number.isInteger(G) || (G = 0); + let x = e.get("ItalicAngle"); + "number" != typeof x && (x = 0); + const M = { + type: r, + name: l.name, + subtype: d, + file: u, + length1: f, + length2: p, + length3: m, + isInternalFont: y, + loadedName: i.loadedName, + composite: s, + fixedPitch: !1, + fontMatrix: D, + firstChar: n, + lastChar: o, + toUnicode: g, + bbox: F, + ascent: S, + descent: k, + xHeight: R, + capHeight: N, + flags: G, + italicAngle: x, + isType3Font: h, + cssFontInfo: c, + scaleFactors: w, + systemFontInfo: b, + }; + if (s) { + const e = i.get("Encoding"); + e instanceof Name && (M.cidEncoding = e.name); + const t = await CMapFactory.create({ + encoding: e, + fetchBuiltInCMap: this._fetchBuiltInCMapBound, + useCMap: null, + }); + M.cMap = t; + M.vertical = M.cMap.vertical; + } + const U = await this.extractDataStructures(t, M); + this.extractWidths(t, e, U); + return new Font(l.name, u, U); + } + static buildFontPaths(e, t, i, a) { + function buildPath(t) { + const s = `${e.loadedName}_path_${t}`; + try { + if (e.renderer.hasBuiltPath(t)) return; + i.send("commonobj", [s, "FontPath", e.renderer.getPathJs(t)]); + } catch (e) { + if (a.ignoreErrors) { + warn(`buildFontPaths - ignoring ${s} glyph: "${e}".`); + return; + } + throw e; + } + } + for (const e of t) { + buildPath(e.fontChar); + const t = e.accent; + t?.fontChar && buildPath(t.fontChar); + } + } + static get fallbackFontDict() { + const e = new Dict(); + e.set("BaseFont", Name.get("Helvetica")); + e.set("Type", Name.get("FallbackType")); + e.set("Subtype", Name.get("FallbackType")); + e.set("Encoding", Name.get("WinAnsiEncoding")); + return shadow(this, "fallbackFontDict", e); + } +} +class TranslatedFont { + constructor({ loadedName: e, font: t, dict: i, evaluatorOptions: a }) { + this.loadedName = e; + this.font = t; + this.dict = i; + this._evaluatorOptions = a || Ds; + this.type3Loaded = null; + this.type3Dependencies = t.isType3Font ? new Set() : null; + this.sent = !1; + } + send(e) { + if (!this.sent) { + this.sent = !0; + e.send("commonobj", [ + this.loadedName, + "Font", + this.font.exportData(this._evaluatorOptions.fontExtraProperties), + ]); + } + } + fallback(e) { + if (this.font.data) { + this.font.disableFontFace = !0; + PartialEvaluator.buildFontPaths( + this.font, + this.font.glyphCacheValues, + e, + this._evaluatorOptions, + ); + } + } + loadType3Data(e, t, i) { + if (this.type3Loaded) return this.type3Loaded; + if (!this.font.isType3Font) throw new Error("Must be a Type3 font."); + const a = e.clone({ ignoreErrors: !1 }), + s = new RefSet(e.type3FontRefs); + this.dict.objId && !s.has(this.dict.objId) && s.put(this.dict.objId); + a.type3FontRefs = s; + const r = this.font, + n = this.type3Dependencies; + let o = Promise.resolve(); + const g = this.dict.get("CharProcs"), + c = this.dict.get("Resources") || t, + h = Object.create(null), + l = Util.normalizeRect(r.bbox || [0, 0, 0, 0]), + C = l[2] - l[0], + Q = l[3] - l[1], + E = Math.hypot(C, Q); + for (const e of g.getKeys()) + o = o.then(() => { + const t = g.get(e), + s = new OperatorList(); + return a + .getOperatorList({ + stream: t, + task: i, + resources: c, + operatorList: s, + }) + .then(() => { + s.fnArray[0] === Ee && this._removeType3ColorOperators(s, E); + h[e] = s.getIR(); + for (const e of s.dependencies) n.add(e); + }) + .catch(function (t) { + warn(`Type3 font resource "${e}" is not available.`); + const i = new OperatorList(); + h[e] = i.getIR(); + }); + }); + this.type3Loaded = o.then(() => { + r.charProcOperatorList = h; + if (this._bbox) { + r.isCharBBox = !0; + r.bbox = this._bbox; + } + }); + return this.type3Loaded; + } + _removeType3ColorOperators(e, t = NaN) { + const i = Util.normalizeRect(e.argsArray[0].slice(2)), + a = i[2] - i[0], + s = i[3] - i[1], + r = Math.hypot(a, s); + if (0 === a || 0 === s) { + e.fnArray.splice(0, 1); + e.argsArray.splice(0, 1); + } else if (0 === t || Math.round(r / t) >= 10) { + this._bbox || (this._bbox = [1 / 0, 1 / 0, -1 / 0, -1 / 0]); + this._bbox[0] = Math.min(this._bbox[0], i[0]); + this._bbox[1] = Math.min(this._bbox[1], i[1]); + this._bbox[2] = Math.max(this._bbox[2], i[2]); + this._bbox[3] = Math.max(this._bbox[3], i[3]); + } + let n = 0, + o = e.length; + for (; n < o; ) { + switch (e.fnArray[n]) { + case Ee: + break; + case ue: + case de: + case fe: + case pe: + case me: + case ye: + case we: + case be: + case De: + case Fe: + case Se: + case ke: + case Re: + case kA: + e.fnArray.splice(n, 1); + e.argsArray.splice(n, 1); + o--; + continue; + case NA: + const [t] = e.argsArray[n]; + let i = 0, + a = t.length; + for (; i < a; ) { + const [e] = t[i]; + switch (e) { + case "TR": + case "TR2": + case "HT": + case "BG": + case "BG2": + case "UCR": + case "UCR2": + t.splice(i, 1); + a--; + continue; + } + i++; + } + } + n++; + } + } +} +class StateManager { + constructor(e = new EvalState()) { + this.state = e; + this.stateStack = []; + } + save() { + const e = this.state; + this.stateStack.push(this.state); + this.state = e.clone(); + } + restore() { + const e = this.stateStack.pop(); + e && (this.state = e); + } + transform(e) { + this.state.ctm = Util.transform(this.state.ctm, e); + } +} +class TextState { + constructor() { + this.ctm = new Float32Array(i); + this.fontName = null; + this.fontSize = 0; + this.loadedName = null; + this.font = null; + this.fontMatrix = a; + this.textMatrix = i.slice(); + this.textLineMatrix = i.slice(); + this.charSpacing = 0; + this.wordSpacing = 0; + this.leading = 0; + this.textHScale = 1; + this.textRise = 0; + } + setTextMatrix(e, t, i, a, s, r) { + const n = this.textMatrix; + n[0] = e; + n[1] = t; + n[2] = i; + n[3] = a; + n[4] = s; + n[5] = r; + } + setTextLineMatrix(e, t, i, a, s, r) { + const n = this.textLineMatrix; + n[0] = e; + n[1] = t; + n[2] = i; + n[3] = a; + n[4] = s; + n[5] = r; + } + translateTextMatrix(e, t) { + const i = this.textMatrix; + i[4] = i[0] * e + i[2] * t + i[4]; + i[5] = i[1] * e + i[3] * t + i[5]; + } + translateTextLineMatrix(e, t) { + const i = this.textLineMatrix; + i[4] = i[0] * e + i[2] * t + i[4]; + i[5] = i[1] * e + i[3] * t + i[5]; + } + carriageReturn() { + this.translateTextLineMatrix(0, -this.leading); + this.textMatrix = this.textLineMatrix.slice(); + } + clone() { + const e = Object.create(this); + e.textMatrix = this.textMatrix.slice(); + e.textLineMatrix = this.textLineMatrix.slice(); + e.fontMatrix = this.fontMatrix.slice(); + return e; + } +} +class EvalState { + constructor() { + this.ctm = new Float32Array(i); + this.font = null; + this.textRenderingMode = y; + this.fillColorSpace = ColorSpace.singletons.gray; + this.strokeColorSpace = ColorSpace.singletons.gray; + } + clone() { + return Object.create(this); + } +} +class EvaluatorPreprocessor { + static get opMap() { + return shadow( + this, + "opMap", + Object.assign(Object.create(null), { + w: { id: wA, numArgs: 1, variableArgs: !1 }, + J: { id: bA, numArgs: 1, variableArgs: !1 }, + j: { id: DA, numArgs: 1, variableArgs: !1 }, + M: { id: FA, numArgs: 1, variableArgs: !1 }, + d: { id: SA, numArgs: 2, variableArgs: !1 }, + ri: { id: kA, numArgs: 1, variableArgs: !1 }, + i: { id: RA, numArgs: 1, variableArgs: !1 }, + gs: { id: NA, numArgs: 1, variableArgs: !1 }, + q: { id: GA, numArgs: 0, variableArgs: !1 }, + Q: { id: xA, numArgs: 0, variableArgs: !1 }, + cm: { id: MA, numArgs: 6, variableArgs: !1 }, + m: { id: UA, numArgs: 2, variableArgs: !1 }, + l: { id: LA, numArgs: 2, variableArgs: !1 }, + c: { id: JA, numArgs: 6, variableArgs: !1 }, + v: { id: HA, numArgs: 4, variableArgs: !1 }, + y: { id: YA, numArgs: 4, variableArgs: !1 }, + h: { id: vA, numArgs: 0, variableArgs: !1 }, + re: { id: KA, numArgs: 4, variableArgs: !1 }, + S: { id: TA, numArgs: 0, variableArgs: !1 }, + s: { id: qA, numArgs: 0, variableArgs: !1 }, + f: { id: OA, numArgs: 0, variableArgs: !1 }, + F: { id: OA, numArgs: 0, variableArgs: !1 }, + "f*": { id: PA, numArgs: 0, variableArgs: !1 }, + B: { id: WA, numArgs: 0, variableArgs: !1 }, + "B*": { id: XA, numArgs: 0, variableArgs: !1 }, + b: { id: jA, numArgs: 0, variableArgs: !1 }, + "b*": { id: ZA, numArgs: 0, variableArgs: !1 }, + n: { id: VA, numArgs: 0, variableArgs: !1 }, + W: { id: zA, numArgs: 0, variableArgs: !1 }, + "W*": { id: _A, numArgs: 0, variableArgs: !1 }, + BT: { id: $A, numArgs: 0, variableArgs: !1 }, + ET: { id: Ae, numArgs: 0, variableArgs: !1 }, + Tc: { id: ee, numArgs: 1, variableArgs: !1 }, + Tw: { id: te, numArgs: 1, variableArgs: !1 }, + Tz: { id: ie, numArgs: 1, variableArgs: !1 }, + TL: { id: ae, numArgs: 1, variableArgs: !1 }, + Tf: { id: se, numArgs: 2, variableArgs: !1 }, + Tr: { id: re, numArgs: 1, variableArgs: !1 }, + Ts: { id: ne, numArgs: 1, variableArgs: !1 }, + Td: { id: oe, numArgs: 2, variableArgs: !1 }, + TD: { id: ge, numArgs: 2, variableArgs: !1 }, + Tm: { id: Ie, numArgs: 6, variableArgs: !1 }, + "T*": { id: ce, numArgs: 0, variableArgs: !1 }, + Tj: { id: he, numArgs: 1, variableArgs: !1 }, + TJ: { id: le, numArgs: 1, variableArgs: !1 }, + "'": { id: Ce, numArgs: 1, variableArgs: !1 }, + '"': { id: Be, numArgs: 3, variableArgs: !1 }, + d0: { id: Qe, numArgs: 2, variableArgs: !1 }, + d1: { id: Ee, numArgs: 6, variableArgs: !1 }, + CS: { id: ue, numArgs: 1, variableArgs: !1 }, + cs: { id: de, numArgs: 1, variableArgs: !1 }, + SC: { id: fe, numArgs: 4, variableArgs: !0 }, + SCN: { id: pe, numArgs: 33, variableArgs: !0 }, + sc: { id: me, numArgs: 4, variableArgs: !0 }, + scn: { id: ye, numArgs: 33, variableArgs: !0 }, + G: { id: we, numArgs: 1, variableArgs: !1 }, + g: { id: be, numArgs: 1, variableArgs: !1 }, + RG: { id: De, numArgs: 3, variableArgs: !1 }, + rg: { id: Fe, numArgs: 3, variableArgs: !1 }, + K: { id: Se, numArgs: 4, variableArgs: !1 }, + k: { id: ke, numArgs: 4, variableArgs: !1 }, + sh: { id: Re, numArgs: 1, variableArgs: !1 }, + BI: { id: Ne, numArgs: 0, variableArgs: !1 }, + ID: { id: Ge, numArgs: 0, variableArgs: !1 }, + EI: { id: xe, numArgs: 1, variableArgs: !1 }, + Do: { id: Me, numArgs: 1, variableArgs: !1 }, + MP: { id: Ue, numArgs: 1, variableArgs: !1 }, + DP: { id: Le, numArgs: 2, variableArgs: !1 }, + BMC: { id: Je, numArgs: 1, variableArgs: !1 }, + BDC: { id: He, numArgs: 2, variableArgs: !1 }, + EMC: { id: Ye, numArgs: 0, variableArgs: !1 }, + BX: { id: ve, numArgs: 0, variableArgs: !1 }, + EX: { id: Ke, numArgs: 0, variableArgs: !1 }, + BM: null, + BD: null, + true: null, + fa: null, + fal: null, + fals: null, + false: null, + nu: null, + nul: null, + null: null, + }), + ); + } + static MAX_INVALID_PATH_OPS = 10; + constructor(e, t, i = new StateManager()) { + this.parser = new Parser({ + lexer: new Lexer(e, EvaluatorPreprocessor.opMap), + xref: t, + }); + this.stateManager = i; + this.nonProcessedArgs = []; + this._isPathOp = !1; + this._numInvalidPathOPS = 0; + } + get savedStatesDepth() { + return this.stateManager.stateStack.length; + } + read(e) { + let t = e.args; + for (;;) { + const i = this.parser.getObj(); + if (i instanceof Cmd) { + const a = i.cmd, + s = EvaluatorPreprocessor.opMap[a]; + if (!s) { + warn(`Unknown command "${a}".`); + continue; + } + const r = s.id, + n = s.numArgs; + let o = null !== t ? t.length : 0; + this._isPathOp || (this._numInvalidPathOPS = 0); + this._isPathOp = r >= UA && r <= VA; + if (s.variableArgs) + o > n && + info( + `Command ${a}: expected [0, ${n}] args, but received ${o} args.`, + ); + else { + if (o !== n) { + const e = this.nonProcessedArgs; + for (; o > n; ) { + e.push(t.shift()); + o--; + } + for (; o < n && 0 !== e.length; ) { + null === t && (t = []); + t.unshift(e.pop()); + o++; + } + } + if (o < n) { + const e = `command ${a}: expected ${n} args, but received ${o} args.`; + if ( + this._isPathOp && + ++this._numInvalidPathOPS > + EvaluatorPreprocessor.MAX_INVALID_PATH_OPS + ) + throw new FormatError(`Invalid ${e}`); + warn(`Skipping ${e}`); + null !== t && (t.length = 0); + continue; + } + } + this.preprocessCommand(r, t); + e.fn = r; + e.args = t; + return !0; + } + if (i === pt) return !1; + if (null !== i) { + null === t && (t = []); + t.push(i); + if (t.length > 33) throw new FormatError("Too many arguments"); + } + } + } + preprocessCommand(e, t) { + switch (0 | e) { + case GA: + this.stateManager.save(); + break; + case xA: + this.stateManager.restore(); + break; + case MA: + this.stateManager.transform(t); + } + } +} +class DefaultAppearanceEvaluator extends EvaluatorPreprocessor { + constructor(e) { + super(new StringStream(e)); + } + parse() { + const e = { fn: 0, args: [] }, + t = { fontSize: 0, fontName: "", fontColor: new Uint8ClampedArray(3) }; + try { + for (;;) { + e.args.length = 0; + if (!this.read(e)) break; + if (0 !== this.savedStatesDepth) continue; + const { fn: i, args: a } = e; + switch (0 | i) { + case se: + const [e, i] = a; + e instanceof Name && (t.fontName = e.name); + "number" == typeof i && i > 0 && (t.fontSize = i); + break; + case Fe: + ColorSpace.singletons.rgb.getRgbItem(a, 0, t.fontColor, 0); + break; + case be: + ColorSpace.singletons.gray.getRgbItem(a, 0, t.fontColor, 0); + break; + case ke: + ColorSpace.singletons.cmyk.getRgbItem(a, 0, t.fontColor, 0); + } + } + } catch (e) { + warn(`parseDefaultAppearance - ignoring errors: "${e}".`); + } + return t; + } +} +function parseDefaultAppearance(e) { + return new DefaultAppearanceEvaluator(e).parse(); +} +class AppearanceStreamEvaluator extends EvaluatorPreprocessor { + constructor(e, t, i) { + super(e); + this.stream = e; + this.evaluatorOptions = t; + this.xref = i; + this.resources = e.dict?.get("Resources"); + } + parse() { + const e = { fn: 0, args: [] }; + let t = { + scaleFactor: 1, + fontSize: 0, + fontName: "", + fontColor: new Uint8ClampedArray(3), + fillColorSpace: ColorSpace.singletons.gray, + }, + i = !1; + const a = []; + try { + for (;;) { + e.args.length = 0; + if (i || !this.read(e)) break; + const { fn: s, args: r } = e; + switch (0 | s) { + case GA: + a.push({ + scaleFactor: t.scaleFactor, + fontSize: t.fontSize, + fontName: t.fontName, + fontColor: t.fontColor.slice(), + fillColorSpace: t.fillColorSpace, + }); + break; + case xA: + t = a.pop() || t; + break; + case Ie: + t.scaleFactor *= Math.hypot(r[0], r[1]); + break; + case se: + const [e, s] = r; + e instanceof Name && (t.fontName = e.name); + "number" == typeof s && s > 0 && (t.fontSize = s * t.scaleFactor); + break; + case de: + t.fillColorSpace = ColorSpace.parse({ + cs: r[0], + xref: this.xref, + resources: this.resources, + pdfFunctionFactory: this._pdfFunctionFactory, + localColorSpaceCache: this._localColorSpaceCache, + }); + break; + case me: + t.fillColorSpace.getRgbItem(r, 0, t.fontColor, 0); + break; + case Fe: + ColorSpace.singletons.rgb.getRgbItem(r, 0, t.fontColor, 0); + break; + case be: + ColorSpace.singletons.gray.getRgbItem(r, 0, t.fontColor, 0); + break; + case ke: + ColorSpace.singletons.cmyk.getRgbItem(r, 0, t.fontColor, 0); + break; + case he: + case le: + case Ce: + case Be: + i = !0; + } + } + } catch (e) { + warn(`parseAppearanceStream - ignoring errors: "${e}".`); + } + this.stream.reset(); + delete t.scaleFactor; + delete t.fillColorSpace; + return t; + } + get _localColorSpaceCache() { + return shadow(this, "_localColorSpaceCache", new LocalColorSpaceCache()); + } + get _pdfFunctionFactory() { + return shadow( + this, + "_pdfFunctionFactory", + new PDFFunctionFactory({ + xref: this.xref, + isEvalSupported: this.evaluatorOptions.isEvalSupported, + }), + ); + } +} +function getPdfColor(e, t) { + if (e[0] === e[1] && e[1] === e[2]) { + return `${numberToString(e[0] / 255)} ${t ? "g" : "G"}`; + } + return ( + Array.from(e, (e) => numberToString(e / 255)).join(" ") + + " " + + (t ? "rg" : "RG") + ); +} +class FakeUnicodeFont { + constructor(e, t) { + this.xref = e; + this.widths = null; + this.firstChar = 1 / 0; + this.lastChar = -1 / 0; + this.fontFamily = t; + const i = new OffscreenCanvas(1, 1); + this.ctxMeasure = i.getContext("2d"); + FakeUnicodeFont._fontNameId || (FakeUnicodeFont._fontNameId = 1); + this.fontName = Name.get( + `InvalidPDFjsFont_${t}_${FakeUnicodeFont._fontNameId++}`, + ); + } + get fontDescriptorRef() { + if (!FakeUnicodeFont._fontDescriptorRef) { + const e = new Dict(this.xref); + e.set("Type", Name.get("FontDescriptor")); + e.set("FontName", this.fontName); + e.set("FontFamily", "MyriadPro Regular"); + e.set("FontBBox", [0, 0, 0, 0]); + e.set("FontStretch", Name.get("Normal")); + e.set("FontWeight", 400); + e.set("ItalicAngle", 0); + FakeUnicodeFont._fontDescriptorRef = this.xref.getNewPersistentRef(e); + } + return FakeUnicodeFont._fontDescriptorRef; + } + get descendantFontRef() { + const e = new Dict(this.xref); + e.set("BaseFont", this.fontName); + e.set("Type", Name.get("Font")); + e.set("Subtype", Name.get("CIDFontType0")); + e.set("CIDToGIDMap", Name.get("Identity")); + e.set("FirstChar", this.firstChar); + e.set("LastChar", this.lastChar); + e.set("FontDescriptor", this.fontDescriptorRef); + e.set("DW", 1e3); + const t = [], + i = [...this.widths.entries()].sort(); + let a = null, + s = null; + for (const [e, r] of i) + if (a) + if (e === a + s.length) s.push(r); + else { + t.push(a, s); + a = e; + s = [r]; + } + else { + a = e; + s = [r]; + } + a && t.push(a, s); + e.set("W", t); + const r = new Dict(this.xref); + r.set("Ordering", "Identity"); + r.set("Registry", "Adobe"); + r.set("Supplement", 0); + e.set("CIDSystemInfo", r); + return this.xref.getNewPersistentRef(e); + } + get baseFontRef() { + const e = new Dict(this.xref); + e.set("BaseFont", this.fontName); + e.set("Type", Name.get("Font")); + e.set("Subtype", Name.get("Type0")); + e.set("Encoding", Name.get("Identity-H")); + e.set("DescendantFonts", [this.descendantFontRef]); + e.set("ToUnicode", Name.get("Identity-H")); + return this.xref.getNewPersistentRef(e); + } + get resources() { + const e = new Dict(this.xref), + t = new Dict(this.xref); + t.set(this.fontName.name, this.baseFontRef); + e.set("Font", t); + return e; + } + _createContext() { + this.widths = new Map(); + this.ctxMeasure.font = `1000px ${this.fontFamily}`; + return this.ctxMeasure; + } + createFontResources(e) { + const t = this._createContext(); + for (const i of e.split(/\r\n?|\n/)) + for (const e of i.split("")) { + const i = e.charCodeAt(0); + if (this.widths.has(i)) continue; + const a = t.measureText(e), + s = Math.ceil(a.width); + this.widths.set(i, s); + this.firstChar = Math.min(i, this.firstChar); + this.lastChar = Math.max(i, this.lastChar); + } + return this.resources; + } + static getFirstPositionInfo(e, t, i) { + const [a, n, o, g] = e; + let c = o - a, + h = g - n; + t % 180 != 0 && ([c, h] = [h, c]); + const l = s * i; + return { + coords: [0, h + r * i - l], + bbox: [0, 0, c, h], + matrix: 0 !== t ? getRotationMatrix(t, h, l) : void 0, + }; + } + createAppearance(e, t, i, a, n, o) { + const g = this._createContext(), + c = []; + let h = -1 / 0; + for (const t of e.split(/\r\n?|\n/)) { + c.push(t); + const e = g.measureText(t).width; + h = Math.max(h, e); + for (const e of codePointIter(t)) { + const t = String.fromCodePoint(e); + let i = this.widths.get(e); + if (void 0 === i) { + const a = g.measureText(t); + i = Math.ceil(a.width); + this.widths.set(e, i); + this.firstChar = Math.min(e, this.firstChar); + this.lastChar = Math.max(e, this.lastChar); + } + } + } + h *= a / 1e3; + const [l, C, Q, E] = t; + let u = Q - l, + d = E - C; + i % 180 != 0 && ([u, d] = [d, u]); + let f = 1; + h > u && (f = u / h); + let p = 1; + const m = s * a, + y = r * a, + w = m * c.length; + w > d && (p = d / w); + const b = a * Math.min(f, p), + D = [ + "q", + `0 0 ${numberToString(u)} ${numberToString(d)} re W n`, + "BT", + `1 0 0 1 0 ${numberToString(d + y)} Tm 0 Tc ${getPdfColor(n, !0)}`, + `/${this.fontName.name} ${numberToString(b)} Tf`, + ], + { resources: F } = this; + if (1 !== (o = "number" == typeof o && o >= 0 && o <= 1 ? o : 1)) { + D.push("/R0 gs"); + const e = new Dict(this.xref), + t = new Dict(this.xref); + t.set("ca", o); + t.set("CA", o); + t.set("Type", Name.get("ExtGState")); + e.set("R0", t); + F.set("ExtGState", e); + } + const S = numberToString(m); + for (const e of c) D.push(`0 -${S} Td <${stringToUTF16HexString(e)}> Tj`); + D.push("ET", "Q"); + const k = D.join("\n"), + R = new Dict(this.xref); + R.set("Subtype", Name.get("Form")); + R.set("Type", Name.get("XObject")); + R.set("BBox", [0, 0, u, d]); + R.set("Length", k.length); + R.set("Resources", F); + if (i) { + const e = getRotationMatrix(i, u, d); + R.set("Matrix", e); + } + const N = new StringStream(k); + N.dict = R; + return N; + } +} +class NameOrNumberTree { + constructor(e, t, i) { + this.constructor === NameOrNumberTree && + unreachable("Cannot initialize NameOrNumberTree."); + this.root = e; + this.xref = t; + this._type = i; + } + getAll() { + const e = new Map(); + if (!this.root) return e; + const t = this.xref, + i = new RefSet(); + i.put(this.root); + const a = [this.root]; + for (; a.length > 0; ) { + const s = t.fetchIfRef(a.shift()); + if (!(s instanceof Dict)) continue; + if (s.has("Kids")) { + const e = s.get("Kids"); + if (!Array.isArray(e)) continue; + for (const t of e) { + if (i.has(t)) + throw new FormatError(`Duplicate entry in "${this._type}" tree.`); + a.push(t); + i.put(t); + } + continue; + } + const r = s.get(this._type); + if (Array.isArray(r)) + for (let i = 0, a = r.length; i < a; i += 2) + e.set(t.fetchIfRef(r[i]), t.fetchIfRef(r[i + 1])); + } + return e; + } + get(e) { + if (!this.root) return null; + const t = this.xref; + let i = t.fetchIfRef(this.root), + a = 0; + for (; i.has("Kids"); ) { + if (++a > 10) { + warn(`Search depth limit reached for "${this._type}" tree.`); + return null; + } + const s = i.get("Kids"); + if (!Array.isArray(s)) return null; + let r = 0, + n = s.length - 1; + for (; r <= n; ) { + const a = (r + n) >> 1, + o = t.fetchIfRef(s[a]), + g = o.get("Limits"); + if (e < t.fetchIfRef(g[0])) n = a - 1; + else { + if (!(e > t.fetchIfRef(g[1]))) { + i = o; + break; + } + r = a + 1; + } + } + if (r > n) return null; + } + const s = i.get(this._type); + if (Array.isArray(s)) { + let i = 0, + a = s.length - 2; + for (; i <= a; ) { + const r = (i + a) >> 1, + n = r + (1 & r), + o = t.fetchIfRef(s[n]); + if (e < o) a = n - 2; + else { + if (!(e > o)) return t.fetchIfRef(s[n + 1]); + i = n + 2; + } + } + } + return null; + } +} +class NameTree extends NameOrNumberTree { + constructor(e, t) { + super(e, t, "Names"); + } +} +class NumberTree extends NameOrNumberTree { + constructor(e, t) { + super(e, t, "Nums"); + } +} +function clearGlobalCaches() { + !(function clearPatternCaches() { + ya = Object.create(null); + })(); + !(function clearPrimitiveCaches() { + mt = Object.create(null); + yt = Object.create(null); + wt = Object.create(null); + })(); + !(function clearUnicodeCaches() { + Hi.clear(); + })(); + JpxImage.cleanup(); +} +function pickPlatformItem(e) { + return e instanceof Dict + ? e.has("UF") + ? e.get("UF") + : e.has("F") + ? e.get("F") + : e.has("Unix") + ? e.get("Unix") + : e.has("Mac") + ? e.get("Mac") + : e.has("DOS") + ? e.get("DOS") + : null + : null; +} +class FileSpec { + #S = !1; + constructor(e, t, i = !1) { + if (e instanceof Dict) { + this.xref = t; + this.root = e; + e.has("FS") && (this.fs = e.get("FS")); + e.has("RF") && warn("Related file specifications are not supported"); + i || + (e.has("EF") + ? (this.#S = !0) + : warn("Non-embedded file specifications are not supported")); + } + } + get filename() { + let e = ""; + const t = pickPlatformItem(this.root); + t && + "string" == typeof t && + (e = stringToPDFString(t) + .replaceAll("\\\\", "\\") + .replaceAll("\\/", "/") + .replaceAll("\\", "/")); + return shadow(this, "filename", e || "unnamed"); + } + get content() { + if (!this.#S) return null; + this._contentRef ||= pickPlatformItem(this.root?.get("EF")); + let e = null; + if (this._contentRef) { + const t = this.xref.fetchIfRef(this._contentRef); + t instanceof BaseStream + ? (e = t.getBytes()) + : warn( + "Embedded file specification points to non-existing/invalid content", + ); + } else warn("Embedded file specification does not have any content"); + return e; + } + get description() { + let e = ""; + const t = this.root?.get("Desc"); + t && "string" == typeof t && (e = stringToPDFString(t)); + return shadow(this, "description", e); + } + get serializable() { + return { + rawFilename: this.filename, + filename: ((e = this.filename), e.substring(e.lastIndexOf("/") + 1)), + content: this.content, + description: this.description, + }; + var e; + } +} +const Rs = 0, + Ns = -2, + Gs = -3, + xs = -4, + Ms = -5, + Us = -6, + Ls = -9; +function isWhitespace(e, t) { + const i = e[t]; + return " " === i || "\n" === i || "\r" === i || "\t" === i; +} +class XMLParserBase { + _resolveEntities(e) { + return e.replaceAll(/&([^;]+);/g, (e, t) => { + if ("#x" === t.substring(0, 2)) + return String.fromCodePoint(parseInt(t.substring(2), 16)); + if ("#" === t.substring(0, 1)) + return String.fromCodePoint(parseInt(t.substring(1), 10)); + switch (t) { + case "lt": + return "<"; + case "gt": + return ">"; + case "amp": + return "&"; + case "quot": + return '"'; + case "apos": + return "'"; + } + return this.onResolveEntity(t); + }); + } + _parseContent(e, t) { + const i = []; + let a = t; + function skipWs() { + for (; a < e.length && isWhitespace(e, a); ) ++a; + } + for ( + ; + a < e.length && !isWhitespace(e, a) && ">" !== e[a] && "/" !== e[a]; + + ) + ++a; + const s = e.substring(t, a); + skipWs(); + for (; a < e.length && ">" !== e[a] && "/" !== e[a] && "?" !== e[a]; ) { + skipWs(); + let t = "", + s = ""; + for (; a < e.length && !isWhitespace(e, a) && "=" !== e[a]; ) { + t += e[a]; + ++a; + } + skipWs(); + if ("=" !== e[a]) return null; + ++a; + skipWs(); + const r = e[a]; + if ('"' !== r && "'" !== r) return null; + const n = e.indexOf(r, ++a); + if (n < 0) return null; + s = e.substring(a, n); + i.push({ name: t, value: this._resolveEntities(s) }); + a = n + 1; + skipWs(); + } + return { name: s, attributes: i, parsed: a - t }; + } + _parseProcessingInstruction(e, t) { + let i = t; + for ( + ; + i < e.length && + !isWhitespace(e, i) && + ">" !== e[i] && + "?" !== e[i] && + "/" !== e[i]; + + ) + ++i; + const a = e.substring(t, i); + !(function skipWs() { + for (; i < e.length && isWhitespace(e, i); ) ++i; + })(); + const s = i; + for (; i < e.length && ("?" !== e[i] || ">" !== e[i + 1]); ) ++i; + return { name: a, value: e.substring(s, i), parsed: i - t }; + } + parseXml(e) { + let t = 0; + for (; t < e.length; ) { + let i = t; + if ("<" === e[t]) { + ++i; + let t; + switch (e[i]) { + case "/": + ++i; + t = e.indexOf(">", i); + if (t < 0) { + this.onError(Ls); + return; + } + this.onEndElement(e.substring(i, t)); + i = t + 1; + break; + case "?": + ++i; + const a = this._parseProcessingInstruction(e, i); + if ("?>" !== e.substring(i + a.parsed, i + a.parsed + 2)) { + this.onError(Gs); + return; + } + this.onPi(a.name, a.value); + i += a.parsed + 2; + break; + case "!": + if ("--" === e.substring(i + 1, i + 3)) { + t = e.indexOf("--\x3e", i + 3); + if (t < 0) { + this.onError(Ms); + return; + } + this.onComment(e.substring(i + 3, t)); + i = t + 3; + } else if ("[CDATA[" === e.substring(i + 1, i + 8)) { + t = e.indexOf("]]>", i + 8); + if (t < 0) { + this.onError(Ns); + return; + } + this.onCdata(e.substring(i + 8, t)); + i = t + 3; + } else { + if ("DOCTYPE" !== e.substring(i + 1, i + 8)) { + this.onError(Us); + return; + } + { + const a = e.indexOf("[", i + 8); + let s = !1; + t = e.indexOf(">", i + 8); + if (t < 0) { + this.onError(xs); + return; + } + if (a > 0 && t > a) { + t = e.indexOf("]>", i + 8); + if (t < 0) { + this.onError(xs); + return; + } + s = !0; + } + const r = e.substring(i + 8, t + (s ? 1 : 0)); + this.onDoctype(r); + i = t + (s ? 2 : 1); + } + } + break; + default: + const s = this._parseContent(e, i); + if (null === s) { + this.onError(Us); + return; + } + let r = !1; + if ("/>" === e.substring(i + s.parsed, i + s.parsed + 2)) r = !0; + else if (">" !== e.substring(i + s.parsed, i + s.parsed + 1)) { + this.onError(Ls); + return; + } + this.onBeginElement(s.name, s.attributes, r); + i += s.parsed + (r ? 2 : 1); + } + } else { + for (; i < e.length && "<" !== e[i]; ) i++; + const a = e.substring(t, i); + this.onText(this._resolveEntities(a)); + } + t = i; + } + } + onResolveEntity(e) { + return `&${e};`; + } + onPi(e, t) {} + onComment(e) {} + onCdata(e) {} + onDoctype(e) {} + onText(e) {} + onBeginElement(e, t, i) {} + onEndElement(e) {} + onError(e) {} +} +class SimpleDOMNode { + constructor(e, t) { + this.nodeName = e; + this.nodeValue = t; + Object.defineProperty(this, "parentNode", { value: null, writable: !0 }); + } + get firstChild() { + return this.childNodes?.[0]; + } + get nextSibling() { + const e = this.parentNode.childNodes; + if (!e) return; + const t = e.indexOf(this); + return -1 !== t ? e[t + 1] : void 0; + } + get textContent() { + return this.childNodes + ? this.childNodes + .map(function (e) { + return e.textContent; + }) + .join("") + : this.nodeValue || ""; + } + get children() { + return this.childNodes || []; + } + hasChildNodes() { + return this.childNodes?.length > 0; + } + searchNode(e, t) { + if (t >= e.length) return this; + const i = e[t]; + if (i.name.startsWith("#") && t < e.length - 1) + return this.searchNode(e, t + 1); + const a = []; + let s = this; + for (;;) { + if (i.name === s.nodeName) { + if (0 !== i.pos) { + if (0 === a.length) return null; + { + const [r] = a.pop(); + let n = 0; + for (const a of r.childNodes) + if (i.name === a.nodeName) { + if (n === i.pos) return a.searchNode(e, t + 1); + n++; + } + return s.searchNode(e, t + 1); + } + } + { + const i = s.searchNode(e, t + 1); + if (null !== i) return i; + } + } + if (s.childNodes?.length > 0) { + a.push([s, 0]); + s = s.childNodes[0]; + } else { + if (0 === a.length) return null; + for (; 0 !== a.length; ) { + const [e, t] = a.pop(), + i = t + 1; + if (i < e.childNodes.length) { + a.push([e, i]); + s = e.childNodes[i]; + break; + } + } + if (0 === a.length) return null; + } + } + } + dump(e) { + if ("#text" !== this.nodeName) { + e.push(`<${this.nodeName}`); + if (this.attributes) + for (const t of this.attributes) + e.push(` ${t.name}="${encodeToXmlString(t.value)}"`); + if (this.hasChildNodes()) { + e.push(">"); + for (const t of this.childNodes) t.dump(e); + e.push(``); + } else + this.nodeValue + ? e.push(`>${encodeToXmlString(this.nodeValue)}`) + : e.push("/>"); + } else e.push(encodeToXmlString(this.nodeValue)); + } +} +class SimpleXMLParser extends XMLParserBase { + constructor({ hasAttributes: e = !1, lowerCaseName: t = !1 }) { + super(); + this._currentFragment = null; + this._stack = null; + this._errorCode = Rs; + this._hasAttributes = e; + this._lowerCaseName = t; + } + parseFromString(e) { + this._currentFragment = []; + this._stack = []; + this._errorCode = Rs; + this.parseXml(e); + if (this._errorCode !== Rs) return; + const [t] = this._currentFragment; + return t ? { documentElement: t } : void 0; + } + onText(e) { + if ( + (function isWhitespaceString(e) { + for (let t = 0, i = e.length; t < i; t++) + if (!isWhitespace(e, t)) return !1; + return !0; + })(e) + ) + return; + const t = new SimpleDOMNode("#text", e); + this._currentFragment.push(t); + } + onCdata(e) { + const t = new SimpleDOMNode("#text", e); + this._currentFragment.push(t); + } + onBeginElement(e, t, i) { + this._lowerCaseName && (e = e.toLowerCase()); + const a = new SimpleDOMNode(e); + a.childNodes = []; + this._hasAttributes && (a.attributes = t); + this._currentFragment.push(a); + if (!i) { + this._stack.push(this._currentFragment); + this._currentFragment = a.childNodes; + } + } + onEndElement(e) { + this._currentFragment = this._stack.pop() || []; + const t = this._currentFragment.at(-1); + if (!t) return null; + for (const e of t.childNodes) e.parentNode = t; + return t; + } + onError(e) { + this._errorCode = e; + } +} +class MetadataParser { + constructor(e) { + e = this._repair(e); + const t = new SimpleXMLParser({ lowerCaseName: !0 }).parseFromString(e); + this._metadataMap = new Map(); + this._data = e; + t && this._parse(t); + } + _repair(e) { + return e + .replace(/^[^<]+/, "") + .replaceAll(/>\\376\\377([^<]+)/g, function (e, t) { + const i = t + .replaceAll(/\\([0-3])([0-7])([0-7])/g, function (e, t, i, a) { + return String.fromCharCode(64 * t + 8 * i + 1 * a); + }) + .replaceAll(/&(amp|apos|gt|lt|quot);/g, function (e, t) { + switch (t) { + case "amp": + return "&"; + case "apos": + return "'"; + case "gt": + return ">"; + case "lt": + return "<"; + case "quot": + return '"'; + } + throw new Error(`_repair: ${t} isn't defined.`); + }), + a = [">"]; + for (let e = 0, t = i.length; e < t; e += 2) { + const t = 256 * i.charCodeAt(e) + i.charCodeAt(e + 1); + t >= 32 && t < 127 && 60 !== t && 62 !== t && 38 !== t + ? a.push(String.fromCharCode(t)) + : a.push("&#x" + (65536 + t).toString(16).substring(1) + ";"); + } + return a.join(""); + }); + } + _getSequence(e) { + const t = e.nodeName; + return "rdf:bag" !== t && "rdf:seq" !== t && "rdf:alt" !== t + ? null + : e.childNodes.filter((e) => "rdf:li" === e.nodeName); + } + _parseArray(e) { + if (!e.hasChildNodes()) return; + const [t] = e.childNodes, + i = this._getSequence(t) || []; + this._metadataMap.set( + e.nodeName, + i.map((e) => e.textContent.trim()), + ); + } + _parse(e) { + let t = e.documentElement; + if ("rdf:rdf" !== t.nodeName) { + t = t.firstChild; + for (; t && "rdf:rdf" !== t.nodeName; ) t = t.nextSibling; + } + if (t && "rdf:rdf" === t.nodeName && t.hasChildNodes()) + for (const e of t.childNodes) + if ("rdf:description" === e.nodeName) + for (const t of e.childNodes) { + const e = t.nodeName; + switch (e) { + case "#text": + continue; + case "dc:creator": + case "dc:subject": + this._parseArray(t); + continue; + } + this._metadataMap.set(e, t.textContent.trim()); + } + } + get serializable() { + return { parsedData: this._metadataMap, rawData: this._data }; + } +} +class DecryptStream extends DecodeStream { + constructor(e, t, i) { + super(t); + this.str = e; + this.dict = e.dict; + this.decrypt = i; + this.nextChunk = null; + this.initialized = !1; + } + readBlock() { + let e; + if (this.initialized) e = this.nextChunk; + else { + e = this.str.getBytes(512); + this.initialized = !0; + } + if (!e || 0 === e.length) { + this.eof = !0; + return; + } + this.nextChunk = this.str.getBytes(512); + const t = this.nextChunk?.length > 0; + e = (0, this.decrypt)(e, !t); + const i = this.bufferLength, + a = i + e.length; + this.ensureBuffer(a).set(e, i); + this.bufferLength = a; + } +} +class ARCFourCipher { + constructor(e) { + this.a = 0; + this.b = 0; + const t = new Uint8Array(256), + i = e.length; + for (let e = 0; e < 256; ++e) t[e] = e; + for (let a = 0, s = 0; a < 256; ++a) { + const r = t[a]; + s = (s + r + e[a % i]) & 255; + t[a] = t[s]; + t[s] = r; + } + this.s = t; + } + encryptBlock(e) { + let t = this.a, + i = this.b; + const a = this.s, + s = e.length, + r = new Uint8Array(s); + for (let n = 0; n < s; ++n) { + t = (t + 1) & 255; + const s = a[t]; + i = (i + s) & 255; + const o = a[i]; + a[t] = o; + a[i] = s; + r[n] = e[n] ^ a[(s + o) & 255]; + } + this.a = t; + this.b = i; + return r; + } + decryptBlock(e) { + return this.encryptBlock(e); + } + encrypt(e) { + return this.encryptBlock(e); + } +} +const Js = (function calculateMD5Closure() { + const e = new Uint8Array([ + 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, + 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, + 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, + 10, 15, 21, + ]), + t = new Int32Array([ + -680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426, + -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162, + 1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632, + 643717713, -373897302, -701558691, 38016083, -660478335, -405537848, + 568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784, + 1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556, + -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222, + -722521979, 76029189, -640364487, -421815835, 530742520, -995338651, + -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606, + -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649, + -145523070, -1120210379, 718787259, -343485551, + ]); + return function hash(i, a, s) { + let r = 1732584193, + n = -271733879, + o = -1732584194, + g = 271733878; + const c = (s + 72) & -64, + h = new Uint8Array(c); + let l, C; + for (l = 0; l < s; ++l) h[l] = i[a++]; + h[l++] = 128; + const Q = c - 8; + for (; l < Q; ) h[l++] = 0; + h[l++] = (s << 3) & 255; + h[l++] = (s >> 5) & 255; + h[l++] = (s >> 13) & 255; + h[l++] = (s >> 21) & 255; + h[l++] = (s >>> 29) & 255; + h[l++] = 0; + h[l++] = 0; + h[l++] = 0; + const E = new Int32Array(16); + for (l = 0; l < c; ) { + for (C = 0; C < 16; ++C, l += 4) + E[C] = h[l] | (h[l + 1] << 8) | (h[l + 2] << 16) | (h[l + 3] << 24); + let i, + a, + s = r, + c = n, + Q = o, + u = g; + for (C = 0; C < 64; ++C) { + if (C < 16) { + i = (c & Q) | (~c & u); + a = C; + } else if (C < 32) { + i = (u & c) | (~u & Q); + a = (5 * C + 1) & 15; + } else if (C < 48) { + i = c ^ Q ^ u; + a = (3 * C + 5) & 15; + } else { + i = Q ^ (c | ~u); + a = (7 * C) & 15; + } + const r = u, + n = (s + i + t[C] + E[a]) | 0, + o = e[C]; + u = Q; + Q = c; + c = (c + ((n << o) | (n >>> (32 - o)))) | 0; + s = r; + } + r = (r + s) | 0; + n = (n + c) | 0; + o = (o + Q) | 0; + g = (g + u) | 0; + } + return new Uint8Array([ + 255 & r, + (r >> 8) & 255, + (r >> 16) & 255, + (r >>> 24) & 255, + 255 & n, + (n >> 8) & 255, + (n >> 16) & 255, + (n >>> 24) & 255, + 255 & o, + (o >> 8) & 255, + (o >> 16) & 255, + (o >>> 24) & 255, + 255 & g, + (g >> 8) & 255, + (g >> 16) & 255, + (g >>> 24) & 255, + ]); + }; +})(); +class Word64 { + constructor(e, t) { + this.high = 0 | e; + this.low = 0 | t; + } + and(e) { + this.high &= e.high; + this.low &= e.low; + } + xor(e) { + this.high ^= e.high; + this.low ^= e.low; + } + or(e) { + this.high |= e.high; + this.low |= e.low; + } + shiftRight(e) { + if (e >= 32) { + this.low = (this.high >>> (e - 32)) | 0; + this.high = 0; + } else { + this.low = (this.low >>> e) | (this.high << (32 - e)); + this.high = (this.high >>> e) | 0; + } + } + shiftLeft(e) { + if (e >= 32) { + this.high = this.low << (e - 32); + this.low = 0; + } else { + this.high = (this.high << e) | (this.low >>> (32 - e)); + this.low <<= e; + } + } + rotateRight(e) { + let t, i; + if (32 & e) { + i = this.low; + t = this.high; + } else { + t = this.low; + i = this.high; + } + e &= 31; + this.low = (t >>> e) | (i << (32 - e)); + this.high = (i >>> e) | (t << (32 - e)); + } + not() { + this.high = ~this.high; + this.low = ~this.low; + } + add(e) { + const t = (this.low >>> 0) + (e.low >>> 0); + let i = (this.high >>> 0) + (e.high >>> 0); + t > 4294967295 && (i += 1); + this.low = 0 | t; + this.high = 0 | i; + } + copyTo(e, t) { + e[t] = (this.high >>> 24) & 255; + e[t + 1] = (this.high >> 16) & 255; + e[t + 2] = (this.high >> 8) & 255; + e[t + 3] = 255 & this.high; + e[t + 4] = (this.low >>> 24) & 255; + e[t + 5] = (this.low >> 16) & 255; + e[t + 6] = (this.low >> 8) & 255; + e[t + 7] = 255 & this.low; + } + assign(e) { + this.high = e.high; + this.low = e.low; + } +} +const Hs = (function calculateSHA256Closure() { + function rotr(e, t) { + return (e >>> t) | (e << (32 - t)); + } + function ch(e, t, i) { + return (e & t) ^ (~e & i); + } + function maj(e, t, i) { + return (e & t) ^ (e & i) ^ (t & i); + } + function sigma(e) { + return rotr(e, 2) ^ rotr(e, 13) ^ rotr(e, 22); + } + function sigmaPrime(e) { + return rotr(e, 6) ^ rotr(e, 11) ^ rotr(e, 25); + } + function littleSigma(e) { + return rotr(e, 7) ^ rotr(e, 18) ^ (e >>> 3); + } + const e = [ + 1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, + 2453635748, 2870763221, 3624381080, 310598401, 607225278, 1426881987, + 1925078388, 2162078206, 2614888103, 3248222580, 3835390401, 4022224774, + 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, + 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, + 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, + 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, + 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, + 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, + 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, + 2428436474, 2756734187, 3204031479, 3329325298, + ]; + return function hash(t, i, a) { + let s = 1779033703, + r = 3144134277, + n = 1013904242, + o = 2773480762, + g = 1359893119, + c = 2600822924, + h = 528734635, + l = 1541459225; + const C = 64 * Math.ceil((a + 9) / 64), + Q = new Uint8Array(C); + let E, u; + for (E = 0; E < a; ++E) Q[E] = t[i++]; + Q[E++] = 128; + const d = C - 8; + for (; E < d; ) Q[E++] = 0; + Q[E++] = 0; + Q[E++] = 0; + Q[E++] = 0; + Q[E++] = (a >>> 29) & 255; + Q[E++] = (a >> 21) & 255; + Q[E++] = (a >> 13) & 255; + Q[E++] = (a >> 5) & 255; + Q[E++] = (a << 3) & 255; + const f = new Uint32Array(64); + for (E = 0; E < C; ) { + for (u = 0; u < 16; ++u) { + f[u] = (Q[E] << 24) | (Q[E + 1] << 16) | (Q[E + 2] << 8) | Q[E + 3]; + E += 4; + } + for (u = 16; u < 64; ++u) + f[u] = + ((rotr((p = f[u - 2]), 17) ^ rotr(p, 19) ^ (p >>> 10)) + + f[u - 7] + + littleSigma(f[u - 15]) + + f[u - 16]) | + 0; + let t, + i, + a = s, + C = r, + d = n, + m = o, + y = g, + w = c, + b = h, + D = l; + for (u = 0; u < 64; ++u) { + t = D + sigmaPrime(y) + ch(y, w, b) + e[u] + f[u]; + i = sigma(a) + maj(a, C, d); + D = b; + b = w; + w = y; + y = (m + t) | 0; + m = d; + d = C; + C = a; + a = (t + i) | 0; + } + s = (s + a) | 0; + r = (r + C) | 0; + n = (n + d) | 0; + o = (o + m) | 0; + g = (g + y) | 0; + c = (c + w) | 0; + h = (h + b) | 0; + l = (l + D) | 0; + } + var p; + return new Uint8Array([ + (s >> 24) & 255, + (s >> 16) & 255, + (s >> 8) & 255, + 255 & s, + (r >> 24) & 255, + (r >> 16) & 255, + (r >> 8) & 255, + 255 & r, + (n >> 24) & 255, + (n >> 16) & 255, + (n >> 8) & 255, + 255 & n, + (o >> 24) & 255, + (o >> 16) & 255, + (o >> 8) & 255, + 255 & o, + (g >> 24) & 255, + (g >> 16) & 255, + (g >> 8) & 255, + 255 & g, + (c >> 24) & 255, + (c >> 16) & 255, + (c >> 8) & 255, + 255 & c, + (h >> 24) & 255, + (h >> 16) & 255, + (h >> 8) & 255, + 255 & h, + (l >> 24) & 255, + (l >> 16) & 255, + (l >> 8) & 255, + 255 & l, + ]); + }; + })(), + Ys = (function calculateSHA512Closure() { + function ch(e, t, i, a, s) { + e.assign(t); + e.and(i); + s.assign(t); + s.not(); + s.and(a); + e.xor(s); + } + function maj(e, t, i, a, s) { + e.assign(t); + e.and(i); + s.assign(t); + s.and(a); + e.xor(s); + s.assign(i); + s.and(a); + e.xor(s); + } + function sigma(e, t, i) { + e.assign(t); + e.rotateRight(28); + i.assign(t); + i.rotateRight(34); + e.xor(i); + i.assign(t); + i.rotateRight(39); + e.xor(i); + } + function sigmaPrime(e, t, i) { + e.assign(t); + e.rotateRight(14); + i.assign(t); + i.rotateRight(18); + e.xor(i); + i.assign(t); + i.rotateRight(41); + e.xor(i); + } + function littleSigma(e, t, i) { + e.assign(t); + e.rotateRight(1); + i.assign(t); + i.rotateRight(8); + e.xor(i); + i.assign(t); + i.shiftRight(7); + e.xor(i); + } + function littleSigmaPrime(e, t, i) { + e.assign(t); + e.rotateRight(19); + i.assign(t); + i.rotateRight(61); + e.xor(i); + i.assign(t); + i.shiftRight(6); + e.xor(i); + } + const e = [ + new Word64(1116352408, 3609767458), + new Word64(1899447441, 602891725), + new Word64(3049323471, 3964484399), + new Word64(3921009573, 2173295548), + new Word64(961987163, 4081628472), + new Word64(1508970993, 3053834265), + new Word64(2453635748, 2937671579), + new Word64(2870763221, 3664609560), + new Word64(3624381080, 2734883394), + new Word64(310598401, 1164996542), + new Word64(607225278, 1323610764), + new Word64(1426881987, 3590304994), + new Word64(1925078388, 4068182383), + new Word64(2162078206, 991336113), + new Word64(2614888103, 633803317), + new Word64(3248222580, 3479774868), + new Word64(3835390401, 2666613458), + new Word64(4022224774, 944711139), + new Word64(264347078, 2341262773), + new Word64(604807628, 2007800933), + new Word64(770255983, 1495990901), + new Word64(1249150122, 1856431235), + new Word64(1555081692, 3175218132), + new Word64(1996064986, 2198950837), + new Word64(2554220882, 3999719339), + new Word64(2821834349, 766784016), + new Word64(2952996808, 2566594879), + new Word64(3210313671, 3203337956), + new Word64(3336571891, 1034457026), + new Word64(3584528711, 2466948901), + new Word64(113926993, 3758326383), + new Word64(338241895, 168717936), + new Word64(666307205, 1188179964), + new Word64(773529912, 1546045734), + new Word64(1294757372, 1522805485), + new Word64(1396182291, 2643833823), + new Word64(1695183700, 2343527390), + new Word64(1986661051, 1014477480), + new Word64(2177026350, 1206759142), + new Word64(2456956037, 344077627), + new Word64(2730485921, 1290863460), + new Word64(2820302411, 3158454273), + new Word64(3259730800, 3505952657), + new Word64(3345764771, 106217008), + new Word64(3516065817, 3606008344), + new Word64(3600352804, 1432725776), + new Word64(4094571909, 1467031594), + new Word64(275423344, 851169720), + new Word64(430227734, 3100823752), + new Word64(506948616, 1363258195), + new Word64(659060556, 3750685593), + new Word64(883997877, 3785050280), + new Word64(958139571, 3318307427), + new Word64(1322822218, 3812723403), + new Word64(1537002063, 2003034995), + new Word64(1747873779, 3602036899), + new Word64(1955562222, 1575990012), + new Word64(2024104815, 1125592928), + new Word64(2227730452, 2716904306), + new Word64(2361852424, 442776044), + new Word64(2428436474, 593698344), + new Word64(2756734187, 3733110249), + new Word64(3204031479, 2999351573), + new Word64(3329325298, 3815920427), + new Word64(3391569614, 3928383900), + new Word64(3515267271, 566280711), + new Word64(3940187606, 3454069534), + new Word64(4118630271, 4000239992), + new Word64(116418474, 1914138554), + new Word64(174292421, 2731055270), + new Word64(289380356, 3203993006), + new Word64(460393269, 320620315), + new Word64(685471733, 587496836), + new Word64(852142971, 1086792851), + new Word64(1017036298, 365543100), + new Word64(1126000580, 2618297676), + new Word64(1288033470, 3409855158), + new Word64(1501505948, 4234509866), + new Word64(1607167915, 987167468), + new Word64(1816402316, 1246189591), + ]; + return function hash(t, i, a, s = !1) { + let r, n, o, g, c, h, l, C; + if (s) { + r = new Word64(3418070365, 3238371032); + n = new Word64(1654270250, 914150663); + o = new Word64(2438529370, 812702999); + g = new Word64(355462360, 4144912697); + c = new Word64(1731405415, 4290775857); + h = new Word64(2394180231, 1750603025); + l = new Word64(3675008525, 1694076839); + C = new Word64(1203062813, 3204075428); + } else { + r = new Word64(1779033703, 4089235720); + n = new Word64(3144134277, 2227873595); + o = new Word64(1013904242, 4271175723); + g = new Word64(2773480762, 1595750129); + c = new Word64(1359893119, 2917565137); + h = new Word64(2600822924, 725511199); + l = new Word64(528734635, 4215389547); + C = new Word64(1541459225, 327033209); + } + const Q = 128 * Math.ceil((a + 17) / 128), + E = new Uint8Array(Q); + let u, d; + for (u = 0; u < a; ++u) E[u] = t[i++]; + E[u++] = 128; + const f = Q - 16; + for (; u < f; ) E[u++] = 0; + E[u++] = 0; + E[u++] = 0; + E[u++] = 0; + E[u++] = 0; + E[u++] = 0; + E[u++] = 0; + E[u++] = 0; + E[u++] = 0; + E[u++] = 0; + E[u++] = 0; + E[u++] = 0; + E[u++] = (a >>> 29) & 255; + E[u++] = (a >> 21) & 255; + E[u++] = (a >> 13) & 255; + E[u++] = (a >> 5) & 255; + E[u++] = (a << 3) & 255; + const p = new Array(80); + for (u = 0; u < 80; u++) p[u] = new Word64(0, 0); + let m = new Word64(0, 0), + y = new Word64(0, 0), + w = new Word64(0, 0), + b = new Word64(0, 0), + D = new Word64(0, 0), + F = new Word64(0, 0), + S = new Word64(0, 0), + k = new Word64(0, 0); + const R = new Word64(0, 0), + N = new Word64(0, 0), + G = new Word64(0, 0), + x = new Word64(0, 0); + let M, U; + for (u = 0; u < Q; ) { + for (d = 0; d < 16; ++d) { + p[d].high = + (E[u] << 24) | (E[u + 1] << 16) | (E[u + 2] << 8) | E[u + 3]; + p[d].low = + (E[u + 4] << 24) | (E[u + 5] << 16) | (E[u + 6] << 8) | E[u + 7]; + u += 8; + } + for (d = 16; d < 80; ++d) { + M = p[d]; + littleSigmaPrime(M, p[d - 2], x); + M.add(p[d - 7]); + littleSigma(G, p[d - 15], x); + M.add(G); + M.add(p[d - 16]); + } + m.assign(r); + y.assign(n); + w.assign(o); + b.assign(g); + D.assign(c); + F.assign(h); + S.assign(l); + k.assign(C); + for (d = 0; d < 80; ++d) { + R.assign(k); + sigmaPrime(G, D, x); + R.add(G); + ch(G, D, F, S, x); + R.add(G); + R.add(e[d]); + R.add(p[d]); + sigma(N, m, x); + maj(G, m, y, w, x); + N.add(G); + M = k; + k = S; + S = F; + F = D; + b.add(R); + D = b; + b = w; + w = y; + y = m; + M.assign(R); + M.add(N); + m = M; + } + r.add(m); + n.add(y); + o.add(w); + g.add(b); + c.add(D); + h.add(F); + l.add(S); + C.add(k); + } + if (s) { + U = new Uint8Array(48); + r.copyTo(U, 0); + n.copyTo(U, 8); + o.copyTo(U, 16); + g.copyTo(U, 24); + c.copyTo(U, 32); + h.copyTo(U, 40); + } else { + U = new Uint8Array(64); + r.copyTo(U, 0); + n.copyTo(U, 8); + o.copyTo(U, 16); + g.copyTo(U, 24); + c.copyTo(U, 32); + h.copyTo(U, 40); + l.copyTo(U, 48); + C.copyTo(U, 56); + } + return U; + }; + })(); +class NullCipher { + decryptBlock(e) { + return e; + } + encrypt(e) { + return e; + } +} +class AESBaseCipher { + constructor() { + this.constructor === AESBaseCipher && + unreachable("Cannot initialize AESBaseCipher."); + this._s = new Uint8Array([ + 99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118, + 202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, + 192, 183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, + 21, 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117, + 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132, 83, + 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207, 208, + 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168, 81, + 163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 255, 243, 210, + 205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115, + 96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219, + 224, 50, 58, 10, 73, 6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121, + 231, 200, 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8, + 186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189, 139, 138, + 112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158, + 225, 248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, + 223, 140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187, + 22, + ]); + this._inv_s = new Uint8Array([ + 82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129, 243, 215, 251, + 124, 227, 57, 130, 155, 47, 255, 135, 52, 142, 67, 68, 196, 222, 233, 203, + 84, 123, 148, 50, 166, 194, 35, 61, 238, 76, 149, 11, 66, 250, 195, 78, 8, + 46, 161, 102, 40, 217, 36, 178, 118, 91, 162, 73, 109, 139, 209, 37, 114, + 248, 246, 100, 134, 104, 152, 22, 212, 164, 92, 204, 93, 101, 182, 146, + 108, 112, 72, 80, 253, 237, 185, 218, 94, 21, 70, 87, 167, 141, 157, 132, + 144, 216, 171, 0, 140, 188, 211, 10, 247, 228, 88, 5, 184, 179, 69, 6, + 208, 44, 30, 143, 202, 63, 15, 2, 193, 175, 189, 3, 1, 19, 138, 107, 58, + 145, 17, 65, 79, 103, 220, 234, 151, 242, 207, 206, 240, 180, 230, 115, + 150, 172, 116, 34, 231, 173, 53, 133, 226, 249, 55, 232, 28, 117, 223, + 110, 71, 241, 26, 113, 29, 41, 197, 137, 111, 183, 98, 14, 170, 24, 190, + 27, 252, 86, 62, 75, 198, 210, 121, 32, 154, 219, 192, 254, 120, 205, 90, + 244, 31, 221, 168, 51, 136, 7, 199, 49, 177, 18, 16, 89, 39, 128, 236, 95, + 96, 81, 127, 169, 25, 181, 74, 13, 45, 229, 122, 159, 147, 201, 156, 239, + 160, 224, 59, 77, 174, 42, 245, 176, 200, 235, 187, 60, 131, 83, 153, 97, + 23, 43, 4, 126, 186, 119, 214, 38, 225, 105, 20, 99, 85, 33, 12, 125, + ]); + this._mix = new Uint32Array([ + 0, 235474187, 470948374, 303765277, 941896748, 908933415, 607530554, + 708780849, 1883793496, 2118214995, 1817866830, 1649639237, 1215061108, + 1181045119, 1417561698, 1517767529, 3767586992, 4003061179, 4236429990, + 4069246893, 3635733660, 3602770327, 3299278474, 3400528769, 2430122216, + 2664543715, 2362090238, 2193862645, 2835123396, 2801107407, 3035535058, + 3135740889, 3678124923, 3576870512, 3341394285, 3374361702, 3810496343, + 3977675356, 4279080257, 4043610186, 2876494627, 2776292904, 3076639029, + 3110650942, 2472011535, 2640243204, 2403728665, 2169303058, 1001089995, + 899835584, 666464733, 699432150, 59727847, 226906860, 530400753, + 294930682, 1273168787, 1172967064, 1475418501, 1509430414, 1942435775, + 2110667444, 1876241833, 1641816226, 2910219766, 2743034109, 2976151520, + 3211623147, 2505202138, 2606453969, 2302690252, 2269728455, 3711829422, + 3543599269, 3240894392, 3475313331, 3843699074, 3943906441, 4178062228, + 4144047775, 1306967366, 1139781709, 1374988112, 1610459739, 1975683434, + 2076935265, 1775276924, 1742315127, 1034867998, 866637845, 566021896, + 800440835, 92987698, 193195065, 429456164, 395441711, 1984812685, + 2017778566, 1784663195, 1683407248, 1315562145, 1080094634, 1383856311, + 1551037884, 101039829, 135050206, 437757123, 337553864, 1042385657, + 807962610, 573804783, 742039012, 2531067453, 2564033334, 2328828971, + 2227573024, 2935566865, 2700099354, 3001755655, 3168937228, 3868552805, + 3902563182, 4203181171, 4102977912, 3736164937, 3501741890, 3265478751, + 3433712980, 1106041591, 1340463100, 1576976609, 1408749034, 2043211483, + 2009195472, 1708848333, 1809054150, 832877231, 1068351396, 766945465, + 599762354, 159417987, 126454664, 361929877, 463180190, 2709260871, + 2943682380, 3178106961, 3009879386, 2572697195, 2538681184, 2236228733, + 2336434550, 3509871135, 3745345300, 3441850377, 3274667266, 3910161971, + 3877198648, 4110568485, 4211818798, 2597806476, 2497604743, 2261089178, + 2295101073, 2733856160, 2902087851, 3202437046, 2968011453, 3936291284, + 3835036895, 4136440770, 4169408201, 3535486456, 3702665459, 3467192302, + 3231722213, 2051518780, 1951317047, 1716890410, 1750902305, 1113818384, + 1282050075, 1584504582, 1350078989, 168810852, 67556463, 371049330, + 404016761, 841739592, 1008918595, 775550814, 540080725, 3969562369, + 3801332234, 4035489047, 4269907996, 3569255213, 3669462566, 3366754619, + 3332740144, 2631065433, 2463879762, 2160117071, 2395588676, 2767645557, + 2868897406, 3102011747, 3069049960, 202008497, 33778362, 270040487, + 504459436, 875451293, 975658646, 675039627, 641025152, 2084704233, + 1917518562, 1615861247, 1851332852, 1147550661, 1248802510, 1484005843, + 1451044056, 933301370, 967311729, 733156972, 632953703, 260388950, + 25965917, 328671808, 496906059, 1206477858, 1239443753, 1543208500, + 1441952575, 2144161806, 1908694277, 1675577880, 1842759443, 3610369226, + 3644379585, 3408119516, 3307916247, 4011190502, 3776767469, 4077384432, + 4245618683, 2809771154, 2842737049, 3144396420, 3043140495, 2673705150, + 2438237621, 2203032232, 2370213795, + ]); + this._mixCol = new Uint8Array(256); + for (let e = 0; e < 256; e++) + this._mixCol[e] = e < 128 ? e << 1 : (e << 1) ^ 27; + this.buffer = new Uint8Array(16); + this.bufferPosition = 0; + } + _expandKey(e) { + unreachable("Cannot call `_expandKey` on the base class"); + } + _decrypt(e, t) { + let i, a, s; + const r = new Uint8Array(16); + r.set(e); + for (let e = 0, i = this._keySize; e < 16; ++e, ++i) r[e] ^= t[i]; + for (let e = this._cyclesOfRepetition - 1; e >= 1; --e) { + i = r[13]; + r[13] = r[9]; + r[9] = r[5]; + r[5] = r[1]; + r[1] = i; + i = r[14]; + a = r[10]; + r[14] = r[6]; + r[10] = r[2]; + r[6] = i; + r[2] = a; + i = r[15]; + a = r[11]; + s = r[7]; + r[15] = r[3]; + r[11] = i; + r[7] = a; + r[3] = s; + for (let e = 0; e < 16; ++e) r[e] = this._inv_s[r[e]]; + for (let i = 0, a = 16 * e; i < 16; ++i, ++a) r[i] ^= t[a]; + for (let e = 0; e < 16; e += 4) { + const t = this._mix[r[e]], + a = this._mix[r[e + 1]], + s = this._mix[r[e + 2]], + n = this._mix[r[e + 3]]; + i = + t ^ + (a >>> 8) ^ + (a << 24) ^ + (s >>> 16) ^ + (s << 16) ^ + (n >>> 24) ^ + (n << 8); + r[e] = (i >>> 24) & 255; + r[e + 1] = (i >> 16) & 255; + r[e + 2] = (i >> 8) & 255; + r[e + 3] = 255 & i; + } + } + i = r[13]; + r[13] = r[9]; + r[9] = r[5]; + r[5] = r[1]; + r[1] = i; + i = r[14]; + a = r[10]; + r[14] = r[6]; + r[10] = r[2]; + r[6] = i; + r[2] = a; + i = r[15]; + a = r[11]; + s = r[7]; + r[15] = r[3]; + r[11] = i; + r[7] = a; + r[3] = s; + for (let e = 0; e < 16; ++e) { + r[e] = this._inv_s[r[e]]; + r[e] ^= t[e]; + } + return r; + } + _encrypt(e, t) { + const i = this._s; + let a, s, r; + const n = new Uint8Array(16); + n.set(e); + for (let e = 0; e < 16; ++e) n[e] ^= t[e]; + for (let e = 1; e < this._cyclesOfRepetition; e++) { + for (let e = 0; e < 16; ++e) n[e] = i[n[e]]; + r = n[1]; + n[1] = n[5]; + n[5] = n[9]; + n[9] = n[13]; + n[13] = r; + r = n[2]; + s = n[6]; + n[2] = n[10]; + n[6] = n[14]; + n[10] = r; + n[14] = s; + r = n[3]; + s = n[7]; + a = n[11]; + n[3] = n[15]; + n[7] = r; + n[11] = s; + n[15] = a; + for (let e = 0; e < 16; e += 4) { + const t = n[e + 0], + i = n[e + 1], + s = n[e + 2], + r = n[e + 3]; + a = t ^ i ^ s ^ r; + n[e + 0] ^= a ^ this._mixCol[t ^ i]; + n[e + 1] ^= a ^ this._mixCol[i ^ s]; + n[e + 2] ^= a ^ this._mixCol[s ^ r]; + n[e + 3] ^= a ^ this._mixCol[r ^ t]; + } + for (let i = 0, a = 16 * e; i < 16; ++i, ++a) n[i] ^= t[a]; + } + for (let e = 0; e < 16; ++e) n[e] = i[n[e]]; + r = n[1]; + n[1] = n[5]; + n[5] = n[9]; + n[9] = n[13]; + n[13] = r; + r = n[2]; + s = n[6]; + n[2] = n[10]; + n[6] = n[14]; + n[10] = r; + n[14] = s; + r = n[3]; + s = n[7]; + a = n[11]; + n[3] = n[15]; + n[7] = r; + n[11] = s; + n[15] = a; + for (let e = 0, i = this._keySize; e < 16; ++e, ++i) n[e] ^= t[i]; + return n; + } + _decryptBlock2(e, t) { + const i = e.length; + let a = this.buffer, + s = this.bufferPosition; + const r = []; + let n = this.iv; + for (let t = 0; t < i; ++t) { + a[s] = e[t]; + ++s; + if (s < 16) continue; + const i = this._decrypt(a, this._key); + for (let e = 0; e < 16; ++e) i[e] ^= n[e]; + n = a; + r.push(i); + a = new Uint8Array(16); + s = 0; + } + this.buffer = a; + this.bufferLength = s; + this.iv = n; + if (0 === r.length) return new Uint8Array(0); + let o = 16 * r.length; + if (t) { + const e = r.at(-1); + let t = e[15]; + if (t <= 16) { + for (let i = 15, a = 16 - t; i >= a; --i) + if (e[i] !== t) { + t = 0; + break; + } + o -= t; + r[r.length - 1] = e.subarray(0, 16 - t); + } + } + const g = new Uint8Array(o); + for (let e = 0, t = 0, i = r.length; e < i; ++e, t += 16) g.set(r[e], t); + return g; + } + decryptBlock(e, t, i = null) { + const a = e.length, + s = this.buffer; + let r = this.bufferPosition; + if (i) this.iv = i; + else { + for (let t = 0; r < 16 && t < a; ++t, ++r) s[r] = e[t]; + if (r < 16) { + this.bufferLength = r; + return new Uint8Array(0); + } + this.iv = s; + e = e.subarray(16); + } + this.buffer = new Uint8Array(16); + this.bufferLength = 0; + this.decryptBlock = this._decryptBlock2; + return this.decryptBlock(e, t); + } + encrypt(e, t) { + const i = e.length; + let a = this.buffer, + s = this.bufferPosition; + const r = []; + t || (t = new Uint8Array(16)); + for (let n = 0; n < i; ++n) { + a[s] = e[n]; + ++s; + if (s < 16) continue; + for (let e = 0; e < 16; ++e) a[e] ^= t[e]; + const i = this._encrypt(a, this._key); + t = i; + r.push(i); + a = new Uint8Array(16); + s = 0; + } + this.buffer = a; + this.bufferLength = s; + this.iv = t; + if (0 === r.length) return new Uint8Array(0); + const n = 16 * r.length, + o = new Uint8Array(n); + for (let e = 0, t = 0, i = r.length; e < i; ++e, t += 16) o.set(r[e], t); + return o; + } +} +class AES128Cipher extends AESBaseCipher { + constructor(e) { + super(); + this._cyclesOfRepetition = 10; + this._keySize = 160; + this._rcon = new Uint8Array([ + 141, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, 216, 171, 77, 154, 47, 94, + 188, 99, 198, 151, 53, 106, 212, 179, 125, 250, 239, 197, 145, 57, 114, + 228, 211, 189, 97, 194, 159, 37, 74, 148, 51, 102, 204, 131, 29, 58, 116, + 232, 203, 141, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, 216, 171, 77, + 154, 47, 94, 188, 99, 198, 151, 53, 106, 212, 179, 125, 250, 239, 197, + 145, 57, 114, 228, 211, 189, 97, 194, 159, 37, 74, 148, 51, 102, 204, 131, + 29, 58, 116, 232, 203, 141, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, 216, + 171, 77, 154, 47, 94, 188, 99, 198, 151, 53, 106, 212, 179, 125, 250, 239, + 197, 145, 57, 114, 228, 211, 189, 97, 194, 159, 37, 74, 148, 51, 102, 204, + 131, 29, 58, 116, 232, 203, 141, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, + 216, 171, 77, 154, 47, 94, 188, 99, 198, 151, 53, 106, 212, 179, 125, 250, + 239, 197, 145, 57, 114, 228, 211, 189, 97, 194, 159, 37, 74, 148, 51, 102, + 204, 131, 29, 58, 116, 232, 203, 141, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54, + 108, 216, 171, 77, 154, 47, 94, 188, 99, 198, 151, 53, 106, 212, 179, 125, + 250, 239, 197, 145, 57, 114, 228, 211, 189, 97, 194, 159, 37, 74, 148, 51, + 102, 204, 131, 29, 58, 116, 232, 203, 141, + ]); + this._key = this._expandKey(e); + } + _expandKey(e) { + const t = this._s, + i = this._rcon, + a = new Uint8Array(176); + a.set(e); + for (let e = 16, s = 1; e < 176; ++s) { + let r = a[e - 3], + n = a[e - 2], + o = a[e - 1], + g = a[e - 4]; + r = t[r]; + n = t[n]; + o = t[o]; + g = t[g]; + r ^= i[s]; + for (let t = 0; t < 4; ++t) { + a[e] = r ^= a[e - 16]; + e++; + a[e] = n ^= a[e - 16]; + e++; + a[e] = o ^= a[e - 16]; + e++; + a[e] = g ^= a[e - 16]; + e++; + } + } + return a; + } +} +class AES256Cipher extends AESBaseCipher { + constructor(e) { + super(); + this._cyclesOfRepetition = 14; + this._keySize = 224; + this._key = this._expandKey(e); + } + _expandKey(e) { + const t = this._s, + i = new Uint8Array(240); + i.set(e); + let a, + s, + r, + n, + o = 1; + for (let e = 32, g = 1; e < 240; ++g) { + if (e % 32 == 16) { + a = t[a]; + s = t[s]; + r = t[r]; + n = t[n]; + } else if (e % 32 == 0) { + a = i[e - 3]; + s = i[e - 2]; + r = i[e - 1]; + n = i[e - 4]; + a = t[a]; + s = t[s]; + r = t[r]; + n = t[n]; + a ^= o; + (o <<= 1) >= 256 && (o = 255 & (27 ^ o)); + } + for (let t = 0; t < 4; ++t) { + i[e] = a ^= i[e - 32]; + e++; + i[e] = s ^= i[e - 32]; + e++; + i[e] = r ^= i[e - 32]; + e++; + i[e] = n ^= i[e - 32]; + e++; + } + } + return i; + } +} +class PDF17 { + checkOwnerPassword(e, t, i, a) { + const s = new Uint8Array(e.length + 56); + s.set(e, 0); + s.set(t, e.length); + s.set(i, e.length + t.length); + return isArrayEqual(Hs(s, 0, s.length), a); + } + checkUserPassword(e, t, i) { + const a = new Uint8Array(e.length + 8); + a.set(e, 0); + a.set(t, e.length); + return isArrayEqual(Hs(a, 0, a.length), i); + } + getOwnerKey(e, t, i, a) { + const s = new Uint8Array(e.length + 56); + s.set(e, 0); + s.set(t, e.length); + s.set(i, e.length + t.length); + const r = Hs(s, 0, s.length); + return new AES256Cipher(r).decryptBlock(a, !1, new Uint8Array(16)); + } + getUserKey(e, t, i) { + const a = new Uint8Array(e.length + 8); + a.set(e, 0); + a.set(t, e.length); + const s = Hs(a, 0, a.length); + return new AES256Cipher(s).decryptBlock(i, !1, new Uint8Array(16)); + } +} +class PDF20 { + _hash(e, t, i) { + let a = Hs(t, 0, t.length).subarray(0, 32), + s = [0], + r = 0; + for (; r < 64 || s.at(-1) > r - 32; ) { + const t = e.length + a.length + i.length, + c = new Uint8Array(t); + let h = 0; + c.set(e, h); + h += e.length; + c.set(a, h); + h += a.length; + c.set(i, h); + const l = new Uint8Array(64 * t); + for (let e = 0, i = 0; e < 64; e++, i += t) l.set(c, i); + s = new AES128Cipher(a.subarray(0, 16)).encrypt(l, a.subarray(16, 32)); + const C = s.slice(0, 16).reduce((e, t) => e + t, 0) % 3; + 0 === C + ? (a = Hs(s, 0, s.length)) + : 1 === C + ? (a = ((n = s), (o = 0), (g = s.length), Ys(n, o, g, !0))) + : 2 === C && (a = Ys(s, 0, s.length)); + r++; + } + var n, o, g; + return a.subarray(0, 32); + } + checkOwnerPassword(e, t, i, a) { + const s = new Uint8Array(e.length + 56); + s.set(e, 0); + s.set(t, e.length); + s.set(i, e.length + t.length); + return isArrayEqual(this._hash(e, s, i), a); + } + checkUserPassword(e, t, i) { + const a = new Uint8Array(e.length + 8); + a.set(e, 0); + a.set(t, e.length); + return isArrayEqual(this._hash(e, a, []), i); + } + getOwnerKey(e, t, i, a) { + const s = new Uint8Array(e.length + 56); + s.set(e, 0); + s.set(t, e.length); + s.set(i, e.length + t.length); + const r = this._hash(e, s, i); + return new AES256Cipher(r).decryptBlock(a, !1, new Uint8Array(16)); + } + getUserKey(e, t, i) { + const a = new Uint8Array(e.length + 8); + a.set(e, 0); + a.set(t, e.length); + const s = this._hash(e, a, []); + return new AES256Cipher(s).decryptBlock(i, !1, new Uint8Array(16)); + } +} +class CipherTransform { + constructor(e, t) { + this.StringCipherConstructor = e; + this.StreamCipherConstructor = t; + } + createStream(e, t) { + const i = new this.StreamCipherConstructor(); + return new DecryptStream(e, t, function cipherTransformDecryptStream(e, t) { + return i.decryptBlock(e, t); + }); + } + decryptString(e) { + const t = new this.StringCipherConstructor(); + let i = stringToBytes(e); + i = t.decryptBlock(i, !0); + return bytesToString(i); + } + encryptString(e) { + const t = new this.StringCipherConstructor(); + if (t instanceof AESBaseCipher) { + const i = 16 - (e.length % 16); + e += String.fromCharCode(i).repeat(i); + const a = new Uint8Array(16); + if ("undefined" != typeof crypto) crypto.getRandomValues(a); + else for (let e = 0; e < 16; e++) a[e] = Math.floor(256 * Math.random()); + let s = stringToBytes(e); + s = t.encrypt(s, a); + const r = new Uint8Array(16 + s.length); + r.set(a); + r.set(s, 16); + return bytesToString(r); + } + let i = stringToBytes(e); + i = t.encrypt(i); + return bytesToString(i); + } +} +class CipherTransformFactory { + static #k = new Uint8Array([ + 40, 191, 78, 94, 78, 117, 138, 65, 100, 0, 78, 86, 255, 250, 1, 8, 46, 46, + 0, 182, 208, 104, 62, 128, 47, 12, 169, 254, 100, 83, 105, 122, + ]); + #R(e, t, i, a, s, r, n, o, g, c, h, l) { + if (t) { + const e = Math.min(127, t.length); + t = t.subarray(0, e); + } else t = []; + const C = 6 === e ? new PDF20() : new PDF17(); + return C.checkUserPassword(t, o, n) + ? C.getUserKey(t, g, h) + : t.length && C.checkOwnerPassword(t, a, r, i) + ? C.getOwnerKey(t, s, r, c) + : null; + } + #N(e, t, i, a, s, r, n, o) { + const g = 40 + i.length + e.length, + c = new Uint8Array(g); + let h, + l, + C = 0; + if (t) { + l = Math.min(32, t.length); + for (; C < l; ++C) c[C] = t[C]; + } + h = 0; + for (; C < 32; ) c[C++] = CipherTransformFactory.#k[h++]; + for (h = 0, l = i.length; h < l; ++h) c[C++] = i[h]; + c[C++] = 255 & s; + c[C++] = (s >> 8) & 255; + c[C++] = (s >> 16) & 255; + c[C++] = (s >>> 24) & 255; + for (h = 0, l = e.length; h < l; ++h) c[C++] = e[h]; + if (r >= 4 && !o) { + c[C++] = 255; + c[C++] = 255; + c[C++] = 255; + c[C++] = 255; + } + let Q = Js(c, 0, C); + const E = n >> 3; + if (r >= 3) for (h = 0; h < 50; ++h) Q = Js(Q, 0, E); + const u = Q.subarray(0, E); + let d, f; + if (r >= 3) { + for (C = 0; C < 32; ++C) c[C] = CipherTransformFactory.#k[C]; + for (h = 0, l = e.length; h < l; ++h) c[C++] = e[h]; + d = new ARCFourCipher(u); + f = d.encryptBlock(Js(c, 0, C)); + l = u.length; + const t = new Uint8Array(l); + for (h = 1; h <= 19; ++h) { + for (let e = 0; e < l; ++e) t[e] = u[e] ^ h; + d = new ARCFourCipher(t); + f = d.encryptBlock(f); + } + for (h = 0, l = f.length; h < l; ++h) if (a[h] !== f[h]) return null; + } else { + d = new ARCFourCipher(u); + f = d.encryptBlock(CipherTransformFactory.#k); + for (h = 0, l = f.length; h < l; ++h) if (a[h] !== f[h]) return null; + } + return u; + } + #G(e, t, i, a) { + const s = new Uint8Array(32); + let r = 0; + const n = Math.min(32, e.length); + for (; r < n; ++r) s[r] = e[r]; + let o = 0; + for (; r < 32; ) s[r++] = CipherTransformFactory.#k[o++]; + let g = Js(s, 0, r); + const c = a >> 3; + if (i >= 3) for (o = 0; o < 50; ++o) g = Js(g, 0, g.length); + let h, l; + if (i >= 3) { + l = t; + const e = new Uint8Array(c); + for (o = 19; o >= 0; o--) { + for (let t = 0; t < c; ++t) e[t] = g[t] ^ o; + h = new ARCFourCipher(e); + l = h.encryptBlock(l); + } + } else { + h = new ARCFourCipher(g.subarray(0, c)); + l = h.encryptBlock(t); + } + return l; + } + #x(e, t, i, a = !1) { + const s = new Uint8Array(i.length + 9), + r = i.length; + let n; + for (n = 0; n < r; ++n) s[n] = i[n]; + s[n++] = 255 & e; + s[n++] = (e >> 8) & 255; + s[n++] = (e >> 16) & 255; + s[n++] = 255 & t; + s[n++] = (t >> 8) & 255; + if (a) { + s[n++] = 115; + s[n++] = 65; + s[n++] = 108; + s[n++] = 84; + } + return Js(s, 0, n).subarray(0, Math.min(i.length + 5, 16)); + } + #M(e, t, i, a, s) { + if (!(t instanceof Name)) + throw new FormatError("Invalid crypt filter name."); + const r = this, + n = e.get(t.name), + o = n?.get("CFM"); + if (!o || "None" === o.name) + return function () { + return new NullCipher(); + }; + if ("V2" === o.name) + return function () { + return new ARCFourCipher(r.#x(i, a, s, !1)); + }; + if ("AESV2" === o.name) + return function () { + return new AES128Cipher(r.#x(i, a, s, !0)); + }; + if ("AESV3" === o.name) + return function () { + return new AES256Cipher(s); + }; + throw new FormatError("Unknown crypto method"); + } + constructor(e, t, i) { + const a = e.get("Filter"); + if (!isName(a, "Standard")) + throw new FormatError("unknown encryption method"); + this.filterName = a.name; + this.dict = e; + const s = e.get("V"); + if (!Number.isInteger(s) || (1 !== s && 2 !== s && 4 !== s && 5 !== s)) + throw new FormatError("unsupported encryption algorithm"); + this.algorithm = s; + let r = e.get("Length"); + if (!r) + if (s <= 3) r = 40; + else { + const t = e.get("CF"), + i = e.get("StmF"); + if (t instanceof Dict && i instanceof Name) { + t.suppressEncryption = !0; + const e = t.get(i.name); + r = e?.get("Length") || 128; + r < 40 && (r <<= 3); + } + } + if (!Number.isInteger(r) || r < 40 || r % 8 != 0) + throw new FormatError("invalid key length"); + const n = stringToBytes(e.get("O")), + o = stringToBytes(e.get("U")), + g = n.subarray(0, 32), + c = o.subarray(0, 32), + h = e.get("P"), + l = e.get("R"), + C = (4 === s || 5 === s) && !1 !== e.get("EncryptMetadata"); + this.encryptMetadata = C; + const Q = stringToBytes(t); + let E, u; + if (i) { + if (6 === l) + try { + i = utf8StringToString(i); + } catch { + warn( + "CipherTransformFactory: Unable to convert UTF8 encoded password.", + ); + } + E = stringToBytes(i); + } + if (5 !== s) u = this.#N(Q, E, g, c, h, l, r, C); + else { + const t = n.subarray(32, 40), + i = n.subarray(40, 48), + a = o.subarray(0, 48), + s = o.subarray(32, 40), + r = o.subarray(40, 48), + h = stringToBytes(e.get("OE")), + C = stringToBytes(e.get("UE")), + Q = stringToBytes(e.get("Perms")); + u = this.#R(l, E, g, t, i, a, c, s, r, h, C, Q); + } + if (!u && !i) throw new PasswordException("No password given", it); + if (!u && i) { + const e = this.#G(E, g, l, r); + u = this.#N(Q, e, g, c, h, l, r, C); + } + if (!u) throw new PasswordException("Incorrect Password", at); + this.encryptionKey = u; + if (s >= 4) { + const t = e.get("CF"); + t instanceof Dict && (t.suppressEncryption = !0); + this.cf = t; + this.stmf = e.get("StmF") || Name.get("Identity"); + this.strf = e.get("StrF") || Name.get("Identity"); + this.eff = e.get("EFF") || this.stmf; + } + } + createCipherTransform(e, t) { + if (4 === this.algorithm || 5 === this.algorithm) + return new CipherTransform( + this.#M(this.cf, this.strf, e, t, this.encryptionKey), + this.#M(this.cf, this.stmf, e, t, this.encryptionKey), + ); + const i = this.#x(e, t, this.encryptionKey, !1), + cipherConstructor = function () { + return new ARCFourCipher(i); + }; + return new CipherTransform(cipherConstructor, cipherConstructor); + } +} +async function writeObject(e, t, i, { encrypt: a = null }) { + const s = a?.createCipherTransform(e.num, e.gen); + i.push(`${e.num} ${e.gen} obj\n`); + t instanceof Dict + ? await writeDict(t, i, s) + : t instanceof BaseStream + ? await writeStream(t, i, s) + : (Array.isArray(t) || ArrayBuffer.isView(t)) && + (await writeArray(t, i, s)); + i.push("\nendobj\n"); +} +async function writeDict(e, t, i) { + t.push("<<"); + for (const a of e.getKeys()) { + t.push(` /${escapePDFName(a)} `); + await writeValue(e.getRaw(a), t, i); + } + t.push(">>"); +} +async function writeStream(e, t, i) { + let a = e.getBytes(); + const { dict: s } = e, + [r, n] = await Promise.all([ + s.getAsync("Filter"), + s.getAsync("DecodeParms"), + ]), + o = isName( + Array.isArray(r) ? await s.xref.fetchIfRefAsync(r[0]) : r, + "FlateDecode", + ); + if (a.length >= 256 || o) + try { + const e = new CompressionStream("deflate"), + t = e.writable.getWriter(); + t.write(a); + t.close(); + const i = await new Response(e.readable).arrayBuffer(); + a = new Uint8Array(i); + let g, c; + if (r) { + if (!o) { + g = Array.isArray(r) + ? [Name.get("FlateDecode"), ...r] + : [Name.get("FlateDecode"), r]; + n && (c = Array.isArray(n) ? [null, ...n] : [null, n]); + } + } else g = Name.get("FlateDecode"); + g && s.set("Filter", g); + c && s.set("DecodeParms", c); + } catch (e) { + info(`writeStream - cannot compress data: "${e}".`); + } + let g = bytesToString(a); + i && (g = i.encryptString(g)); + s.set("Length", g.length); + await writeDict(s, t, i); + t.push(" stream\n", g, "\nendstream"); +} +async function writeArray(e, t, i) { + t.push("["); + let a = !0; + for (const s of e) { + a ? (a = !1) : t.push(" "); + await writeValue(s, t, i); + } + t.push("]"); +} +async function writeValue(e, t, i) { + if (e instanceof Name) t.push(`/${escapePDFName(e.name)}`); + else if (e instanceof Ref) t.push(`${e.num} ${e.gen} R`); + else if (Array.isArray(e) || ArrayBuffer.isView(e)) await writeArray(e, t, i); + else if ("string" == typeof e) { + i && (e = i.encryptString(e)); + t.push(`(${escapeString(e)})`); + } else + "number" == typeof e + ? t.push(numberToString(e)) + : "boolean" == typeof e + ? t.push(e.toString()) + : e instanceof Dict + ? await writeDict(e, t, i) + : e instanceof BaseStream + ? await writeStream(e, t, i) + : null === e + ? t.push("null") + : warn( + `Unhandled value in writer: ${typeof e}, please file a bug.`, + ); +} +function writeInt(e, t, i, a) { + for (let s = t + i - 1; s > i - 1; s--) { + a[s] = 255 & e; + e >>= 8; + } + return i + t; +} +function writeString(e, t, i) { + for (let a = 0, s = e.length; a < s; a++) i[t + a] = 255 & e.charCodeAt(a); +} +function updateXFA({ xfaData: e, xfaDatasetsRef: t, newRefs: i, xref: a }) { + if (null === e) { + e = (function writeXFADataForAcroform(e, t) { + const i = new SimpleXMLParser({ hasAttributes: !0 }).parseFromString(e); + for (const { xfa: e } of t) { + if (!e) continue; + const { path: t, value: a } = e; + if (!t) continue; + const s = parseXFAPath(t); + let r = i.documentElement.searchNode(s, 0); + !r && s.length > 1 && (r = i.documentElement.searchNode([s.at(-1)], 0)); + r + ? (r.childNodes = Array.isArray(a) + ? a.map((e) => new SimpleDOMNode("value", e)) + : [new SimpleDOMNode("#text", a)]) + : warn(`Node not found for path: ${t}`); + } + const a = []; + i.documentElement.dump(a); + return a.join(""); + })(a.fetchIfRef(t).getString(), i); + } + const s = a.encrypt; + if (s) { + e = s.createCipherTransform(t.num, t.gen).encryptString(e); + } + const r = + `${t.num} ${t.gen} obj\n<< /Type /EmbeddedFile /Length ${e.length}>>\nstream\n` + + e + + "\nendstream\nendobj\n"; + i.push({ ref: t, data: r }); +} +function getIndexes(e) { + const t = []; + for (const { ref: i } of e) + i.num === t.at(-2) + t.at(-1) ? (t[t.length - 1] += 1) : t.push(i.num, 1); + return t; +} +function computeIDs(e, t, i) { + if (Array.isArray(t.fileIds) && t.fileIds.length > 0) { + const a = (function computeMD5(e, t) { + const i = Math.floor(Date.now() / 1e3), + a = t.filename || "", + s = [i.toString(), a, e.toString()]; + let r = s.reduce((e, t) => e + t.length, 0); + for (const e of Object.values(t.info)) { + s.push(e); + r += e.length; + } + const n = new Uint8Array(r); + let o = 0; + for (const e of s) { + writeString(e, o, n); + o += e.length; + } + return bytesToString(Js(n)); + })(e, t); + i.set("ID", [t.fileIds[0], a]); + } +} +async function incrementalUpdate({ + originalData: e, + xrefInfo: t, + newRefs: i, + xref: a = null, + hasXfa: s = !1, + xfaDatasetsRef: r = null, + hasXfaDatasetsEntry: n = !1, + needAppearances: o, + acroFormRef: g = null, + acroForm: c = null, + xfaData: h = null, + useXrefStream: l = !1, +}) { + await (async function updateAcroform({ + xref: e, + acroForm: t, + acroFormRef: i, + hasXfa: a, + hasXfaDatasetsEntry: s, + xfaDatasetsRef: r, + needAppearances: n, + newRefs: o, + }) { + !a || s || r || warn("XFA - Cannot save it"); + if (!n && (!a || !r || s)) return; + const g = t.clone(); + if (a && !s) { + const e = t.get("XFA").slice(); + e.splice(2, 0, "datasets"); + e.splice(3, 0, r); + g.set("XFA", e); + } + n && g.set("NeedAppearances", !0); + const c = []; + await writeObject(i, g, c, e); + o.push({ ref: i, data: c.join("") }); + })({ + xref: a, + acroForm: c, + acroFormRef: g, + hasXfa: s, + hasXfaDatasetsEntry: n, + xfaDatasetsRef: r, + needAppearances: o, + newRefs: i, + }); + s && updateXFA({ xfaData: h, xfaDatasetsRef: r, newRefs: i, xref: a }); + const C = []; + let Q = e.length; + const E = e.at(-1); + if (10 !== E && 13 !== E) { + C.push("\n"); + Q += 1; + } + const u = (function getTrailerDict(e, t, i) { + const a = new Dict(null); + a.set("Prev", e.startXRef); + const s = e.newRef; + if (i) { + t.push({ ref: s, data: "" }); + a.set("Size", s.num + 1); + a.set("Type", Name.get("XRef")); + } else a.set("Size", s.num); + null !== e.rootRef && a.set("Root", e.rootRef); + null !== e.infoRef && a.set("Info", e.infoRef); + null !== e.encryptRef && a.set("Encrypt", e.encryptRef); + return a; + })(t, i, l); + i = i.sort((e, t) => e.ref.num - t.ref.num); + for (const { data: e } of i) null !== e && C.push(e); + await (l + ? (async function getXRefStreamTable(e, t, i, a, s) { + const r = []; + let n = 0, + o = 0; + for (const { ref: e, data: a } of i) { + let i; + n = Math.max(n, t); + if (null !== a) { + i = Math.min(e.gen, 65535); + r.push([1, t, i]); + t += a.length; + } else { + i = Math.min(e.gen + 1, 65535); + r.push([0, 0, i]); + } + o = Math.max(o, i); + } + a.set("Index", getIndexes(i)); + const g = [1, getSizeInBytes(n), getSizeInBytes(o)]; + a.set("W", g); + computeIDs(t, e, a); + const c = g.reduce((e, t) => e + t, 0), + h = new Uint8Array(c * r.length), + l = new Stream(h); + l.dict = a; + let C = 0; + for (const [e, t, i] of r) { + C = writeInt(e, g[0], C, h); + C = writeInt(t, g[1], C, h); + C = writeInt(i, g[2], C, h); + } + await writeObject(e.newRef, l, s, {}); + s.push("startxref\n", t.toString(), "\n%%EOF\n"); + })(t, Q, i, u, C) + : (async function getXRefTable(e, t, i, a, s) { + s.push("xref\n"); + const r = getIndexes(i); + let n = 0; + for (const { ref: e, data: a } of i) { + if (e.num === r[n]) { + s.push(`${r[n]} ${r[n + 1]}\n`); + n += 2; + } + if (null !== a) { + s.push( + `${t.toString().padStart(10, "0")} ${Math.min(e.gen, 65535).toString().padStart(5, "0")} n\r\n`, + ); + t += a.length; + } else + s.push( + `0000000000 ${Math.min(e.gen + 1, 65535) + .toString() + .padStart(5, "0")} f\r\n`, + ); + } + computeIDs(t, e, a); + s.push("trailer\n"); + await writeDict(a, s); + s.push("\nstartxref\n", t.toString(), "\n%%EOF\n"); + })(t, Q, i, u, C)); + const d = C.reduce((e, t) => e + t.length, e.length), + f = new Uint8Array(d); + f.set(e); + let p = e.length; + for (const e of C) { + writeString(e, p, f); + p += e.length; + } + return f; +} +const vs = 1, + Ks = 2, + Ts = 3, + qs = 4, + Os = 5; +class StructTreeRoot { + constructor(e, t) { + this.dict = e; + this.ref = t instanceof Ref ? t : null; + this.roleMap = new Map(); + this.structParentIds = null; + } + init() { + this.readRoleMap(); + } + #U(e, t, i) { + if (!(e instanceof Ref) || t < 0) return; + this.structParentIds ||= new RefSetCache(); + let a = this.structParentIds.get(e); + if (!a) { + a = []; + this.structParentIds.put(e, a); + } + a.push([t, i]); + } + addAnnotationIdToPage(e, t) { + this.#U(e, t, qs); + } + readRoleMap() { + const e = this.dict.get("RoleMap"); + e instanceof Dict && + e.forEach((e, t) => { + t instanceof Name && this.roleMap.set(e, t.name); + }); + } + static async canCreateStructureTree({ + catalogRef: e, + pdfManager: t, + newAnnotationsByPage: i, + }) { + if (!(e instanceof Ref)) { + warn("Cannot save the struct tree: no catalog reference."); + return !1; + } + let a = 0, + s = !0; + for (const [e, r] of i) { + const { ref: i } = await t.getPage(e); + if (!(i instanceof Ref)) { + warn(`Cannot save the struct tree: page ${e} has no ref.`); + s = !0; + break; + } + for (const e of r) + if (e.accessibilityData?.type) { + e.parentTreeId = a++; + s = !1; + } + } + if (s) { + for (const e of i.values()) for (const t of e) delete t.parentTreeId; + return !1; + } + return !0; + } + static async createStructureTree({ + newAnnotationsByPage: e, + xref: t, + catalogRef: i, + pdfManager: a, + newRefs: s, + }) { + const r = a.catalog.cloneDict(), + n = new RefSetCache(); + n.put(i, r); + const o = t.getNewTemporaryRef(); + r.set("StructTreeRoot", o); + const g = new Dict(t); + g.set("Type", Name.get("StructTreeRoot")); + const c = t.getNewTemporaryRef(); + g.set("ParentTree", c); + const h = []; + g.set("K", h); + n.put(o, g); + const l = new Dict(t), + C = []; + l.set("Nums", C); + const Q = await this.#L({ + newAnnotationsByPage: e, + structTreeRootRef: o, + kids: h, + nums: C, + xref: t, + pdfManager: a, + cache: n, + }); + g.set("ParentTreeNextKey", Q); + n.put(c, l); + const E = []; + for (const [e, i] of n.items()) { + E.length = 0; + await writeObject(e, i, E, t); + s.push({ ref: e, data: E.join("") }); + } + } + async canUpdateStructTree({ + pdfManager: e, + xref: t, + newAnnotationsByPage: i, + }) { + if (!this.ref) { + warn("Cannot update the struct tree: no root reference."); + return !1; + } + let a = this.dict.get("ParentTreeNextKey"); + if (!Number.isInteger(a) || a < 0) { + warn("Cannot update the struct tree: invalid next key."); + return !1; + } + const s = this.dict.get("ParentTree"); + if (!(s instanceof Dict)) { + warn("Cannot update the struct tree: ParentTree isn't a dict."); + return !1; + } + const r = s.get("Nums"); + if (!Array.isArray(r)) { + warn("Cannot update the struct tree: nums isn't an array."); + return !1; + } + const n = new NumberTree(s, t); + for (const t of i.keys()) { + const { pageDict: i } = await e.getPage(t); + if (!i.has("StructParents")) continue; + const a = i.get("StructParents"); + if (!Number.isInteger(a) || !Array.isArray(n.get(a))) { + warn(`Cannot save the struct tree: page ${t} has a wrong id.`); + return !1; + } + } + let o = !0; + for (const [t, s] of i) { + const { pageDict: i } = await e.getPage(t); + StructTreeRoot.#J({ + elements: s, + xref: this.dict.xref, + pageDict: i, + numberTree: n, + }); + for (const e of s) + if (e.accessibilityData?.type) { + e.parentTreeId = a++; + o = !1; + } + } + if (o) { + for (const e of i.values()) + for (const t of e) { + delete t.parentTreeId; + delete t.structTreeParent; + } + return !1; + } + return !0; + } + async updateStructureTree({ + newAnnotationsByPage: e, + pdfManager: t, + newRefs: i, + }) { + const a = this.dict.xref, + s = this.dict.clone(), + r = this.ref, + n = new RefSetCache(); + n.put(r, s); + let o, + g = s.getRaw("ParentTree"); + if (g instanceof Ref) o = a.fetch(g); + else { + o = g; + g = a.getNewTemporaryRef(); + s.set("ParentTree", g); + } + o = o.clone(); + n.put(g, o); + let c = o.getRaw("Nums"), + h = null; + if (c instanceof Ref) { + h = c; + c = a.fetch(h); + } + c = c.slice(); + h || o.set("Nums", c); + const l = await StructTreeRoot.#L({ + newAnnotationsByPage: e, + structTreeRootRef: r, + kids: null, + nums: c, + xref: a, + pdfManager: t, + cache: n, + }); + s.set("ParentTreeNextKey", l); + h && n.put(h, c); + const C = []; + for (const [e, t] of n.items()) { + C.length = 0; + await writeObject(e, t, C, a); + i.push({ ref: e, data: C.join("") }); + } + } + static async #L({ + newAnnotationsByPage: e, + structTreeRootRef: t, + kids: i, + nums: a, + xref: s, + pdfManager: r, + cache: n, + }) { + const o = Name.get("OBJR"); + let g = -1 / 0; + for (const [c, h] of e) { + const { ref: e } = await r.getPage(c), + l = e instanceof Ref; + for (const { + accessibilityData: r, + ref: c, + parentTreeId: C, + structTreeParent: Q, + } of h) { + if (!r?.type) continue; + const { + type: h, + title: E, + lang: u, + alt: d, + expanded: f, + actualText: p, + } = r; + g = Math.max(g, C); + const m = s.getNewTemporaryRef(), + y = new Dict(s); + y.set("S", Name.get(h)); + E && y.set("T", E); + u && y.set("Lang", u); + d && y.set("Alt", d); + f && y.set("E", f); + p && y.set("ActualText", p); + await this.#H({ + structTreeParent: Q, + tagDict: y, + newTagRef: m, + structTreeRootRef: t, + fallbackKids: i, + xref: s, + cache: n, + }); + const w = new Dict(s); + y.set("K", w); + w.set("Type", o); + l && w.set("Pg", e); + w.set("Obj", c); + n.put(m, y); + a.push(C, m); + } + } + return g + 1; + } + static #J({ elements: e, xref: t, pageDict: i, numberTree: a }) { + const s = new Map(); + for (const t of e) + if (t.structTreeParentId) { + const e = parseInt(t.structTreeParentId.split("_mc")[1], 10); + let i = s.get(e); + if (!i) { + i = []; + s.set(e, i); + } + i.push(t); + } + const r = i.get("StructParents"); + if (!Number.isInteger(r)) return; + const n = a.get(r), + updateElement = (e, i, a) => { + const r = s.get(e); + if (r) { + const e = i.getRaw("P"), + s = t.fetchIfRef(e); + if (e instanceof Ref && s instanceof Dict) { + const e = { ref: a, dict: i }; + for (const t of r) t.structTreeParent = e; + } + return !0; + } + return !1; + }; + for (const e of n) { + if (!(e instanceof Ref)) continue; + const i = t.fetch(e), + a = i.get("K"); + if (Number.isInteger(a)) updateElement(a, i, e); + else if (Array.isArray(a)) + for (let s of a) { + s = t.fetchIfRef(s); + if (Number.isInteger(s) && updateElement(s, i, e)) break; + if (!(s instanceof Dict)) continue; + if (!isName(s.get("Type"), "MCR")) break; + const a = s.get("MCID"); + if (Number.isInteger(a) && updateElement(a, i, e)) break; + } + } + } + static async #H({ + structTreeParent: e, + tagDict: t, + newTagRef: i, + structTreeRootRef: a, + fallbackKids: s, + xref: r, + cache: n, + }) { + let o, + g = null; + if (e) { + ({ ref: g } = e); + o = e.dict.getRaw("P") || a; + } else o = a; + t.set("P", o); + const c = r.fetchIfRef(o); + if (!c) { + s.push(i); + return; + } + let h = n.get(o); + if (!h) { + h = c.clone(); + n.put(o, h); + } + const l = h.getRaw("K"); + let C = l instanceof Ref ? n.get(l) : null; + if (!C) { + C = r.fetchIfRef(l); + C = Array.isArray(C) ? C.slice() : [l]; + const e = r.getNewTemporaryRef(); + h.set("K", e); + n.put(e, C); + } + const Q = C.indexOf(g); + C.splice(Q >= 0 ? Q + 1 : C.length, 0, i); + } +} +class StructElementNode { + constructor(e, t) { + this.tree = e; + this.dict = t; + this.kids = []; + this.parseKids(); + } + get role() { + const e = this.dict.get("S"), + t = e instanceof Name ? e.name : "", + { root: i } = this.tree; + return i.roleMap.has(t) ? i.roleMap.get(t) : t; + } + parseKids() { + let e = null; + const t = this.dict.getRaw("Pg"); + t instanceof Ref && (e = t.toString()); + const i = this.dict.get("K"); + if (Array.isArray(i)) + for (const t of i) { + const i = this.parseKid(e, t); + i && this.kids.push(i); + } + else { + const t = this.parseKid(e, i); + t && this.kids.push(t); + } + } + parseKid(e, t) { + if (Number.isInteger(t)) + return this.tree.pageDict.objId !== e + ? null + : new StructElement({ type: vs, mcid: t, pageObjId: e }); + let i = null; + t instanceof Ref + ? (i = this.dict.xref.fetch(t)) + : t instanceof Dict && (i = t); + if (!i) return null; + const a = i.getRaw("Pg"); + a instanceof Ref && (e = a.toString()); + const s = i.get("Type") instanceof Name ? i.get("Type").name : null; + if ("MCR" === s) { + if (this.tree.pageDict.objId !== e) return null; + const t = i.getRaw("Stm"); + return new StructElement({ + type: Ks, + refObjId: t instanceof Ref ? t.toString() : null, + pageObjId: e, + mcid: i.get("MCID"), + }); + } + if ("OBJR" === s) { + if (this.tree.pageDict.objId !== e) return null; + const t = i.getRaw("Obj"); + return new StructElement({ + type: Ts, + refObjId: t instanceof Ref ? t.toString() : null, + pageObjId: e, + }); + } + return new StructElement({ type: Os, dict: i }); + } +} +class StructElement { + constructor({ + type: e, + dict: t = null, + mcid: i = null, + pageObjId: a = null, + refObjId: s = null, + }) { + this.type = e; + this.dict = t; + this.mcid = i; + this.pageObjId = a; + this.refObjId = s; + this.parentNode = null; + } +} +class StructTreePage { + constructor(e, t) { + this.root = e; + this.rootDict = e ? e.dict : null; + this.pageDict = t; + this.nodes = []; + } + parse(e) { + if (!this.root || !this.rootDict) return; + const t = this.rootDict.get("ParentTree"); + if (!t) return; + const i = this.pageDict.get("StructParents"), + a = e instanceof Ref && this.root.structParentIds?.get(e); + if (!Number.isInteger(i) && !a) return; + const s = new Map(), + r = new NumberTree(t, this.rootDict.xref); + if (Number.isInteger(i)) { + const e = r.get(i); + if (Array.isArray(e)) + for (const t of e) + t instanceof Ref && this.addNode(this.rootDict.xref.fetch(t), s); + } + if (a) + for (const [e, t] of a) { + const i = r.get(e); + if (i) { + const e = this.addNode(this.rootDict.xref.fetchIfRef(i), s); + 1 === e?.kids?.length && + e.kids[0].type === Ts && + (e.kids[0].type = t); + } + } + } + addNode(e, t, i = 0) { + if (i > 40) { + warn("StructTree MAX_DEPTH reached."); + return null; + } + if (t.has(e)) return t.get(e); + const a = new StructElementNode(this, e); + t.set(e, a); + const s = e.get("P"); + if (!s || isName(s.get("Type"), "StructTreeRoot")) { + this.addTopLevelNode(e, a) || t.delete(e); + return a; + } + const r = this.addNode(s, t, i + 1); + if (!r) return a; + let n = !1; + for (const t of r.kids) + if (t.type === Os && t.dict === e) { + t.parentNode = a; + n = !0; + } + n || t.delete(e); + return a; + } + addTopLevelNode(e, t) { + const i = this.rootDict.get("K"); + if (!i) return !1; + if (i instanceof Dict) { + if (i.objId !== e.objId) return !1; + this.nodes[0] = t; + return !0; + } + if (!Array.isArray(i)) return !0; + let a = !1; + for (let s = 0; s < i.length; s++) { + const r = i[s]; + if (r?.toString() === e.objId) { + this.nodes[s] = t; + a = !0; + } + } + return a; + } + get serializable() { + function nodeToSerializable(e, t, i = 0) { + if (i > 40) { + warn("StructTree too deep to be fully serialized."); + return; + } + const a = Object.create(null); + a.role = e.role; + a.children = []; + t.children.push(a); + const s = e.dict.get("Alt"); + "string" == typeof s && (a.alt = stringToPDFString(s)); + const r = e.dict.get("Lang"); + "string" == typeof r && (a.lang = stringToPDFString(r)); + for (const t of e.kids) { + const e = t.type === Os ? t.parentNode : null; + e + ? nodeToSerializable(e, a, i + 1) + : t.type === vs || t.type === Ks + ? a.children.push({ + type: "content", + id: `p${t.pageObjId}_mc${t.mcid}`, + }) + : t.type === Ts + ? a.children.push({ type: "object", id: t.refObjId }) + : t.type === qs && + a.children.push({ + type: "annotation", + id: `pdfjs_internal_id_${t.refObjId}`, + }); + } + } + const e = Object.create(null); + e.children = []; + e.role = "Root"; + for (const t of this.nodes) t && nodeToSerializable(t, e); + return e; + } +} +function isValidExplicitDest(e) { + if (!Array.isArray(e) || e.length < 2) return !1; + const [t, i, ...a] = e; + if (!(t instanceof Ref || Number.isInteger(t))) return !1; + if (!(i instanceof Name)) return !1; + let s = !0; + switch (i.name) { + case "XYZ": + if (3 !== a.length) return !1; + break; + case "Fit": + case "FitB": + return 0 === a.length; + case "FitH": + case "FitBH": + case "FitV": + case "FitBV": + if (1 !== a.length) return !1; + break; + case "FitR": + if (4 !== a.length) return !1; + s = !1; + break; + default: + return !1; + } + for (const e of a) + if (!("number" == typeof e || (s && null === e))) return !1; + return !0; +} +function fetchDest(e) { + e instanceof Dict && (e = e.get("D")); + return isValidExplicitDest(e) ? e : null; +} +function fetchRemoteDest(e) { + let t = e.get("D"); + if (t) { + t instanceof Name && (t = t.name); + if ("string" == typeof t) return stringToPDFString(t); + if (isValidExplicitDest(t)) return JSON.stringify(t); + } + return null; +} +class Catalog { + constructor(e, t) { + this.pdfManager = e; + this.xref = t; + this._catDict = t.getCatalogObj(); + if (!(this._catDict instanceof Dict)) + throw new FormatError("Catalog object is not a dictionary."); + this.toplevelPagesDict; + this._actualNumPages = null; + this.fontCache = new RefSetCache(); + this.builtInCMapCache = new Map(); + this.standardFontDataCache = new Map(); + this.globalImageCache = new GlobalImageCache(); + this.pageKidsCountCache = new RefSetCache(); + this.pageIndexCache = new RefSetCache(); + this.nonBlendModesSet = new RefSet(); + this.systemFontCache = new Map(); + } + cloneDict() { + return this._catDict.clone(); + } + get version() { + const e = this._catDict.get("Version"); + if (e instanceof Name) { + if (Dt.test(e.name)) return shadow(this, "version", e.name); + warn(`Invalid PDF catalog version: ${e.name}`); + } + return shadow(this, "version", null); + } + get lang() { + const e = this._catDict.get("Lang"); + return shadow( + this, + "lang", + e && "string" == typeof e ? stringToPDFString(e) : null, + ); + } + get needsRendering() { + const e = this._catDict.get("NeedsRendering"); + return shadow(this, "needsRendering", "boolean" == typeof e && e); + } + get collection() { + let e = null; + try { + const t = this._catDict.get("Collection"); + t instanceof Dict && t.size > 0 && (e = t); + } catch (e) { + if (e instanceof MissingDataException) throw e; + info("Cannot fetch Collection entry; assuming no collection is present."); + } + return shadow(this, "collection", e); + } + get acroForm() { + let e = null; + try { + const t = this._catDict.get("AcroForm"); + t instanceof Dict && t.size > 0 && (e = t); + } catch (e) { + if (e instanceof MissingDataException) throw e; + info("Cannot fetch AcroForm entry; assuming no forms are present."); + } + return shadow(this, "acroForm", e); + } + get acroFormRef() { + const e = this._catDict.getRaw("AcroForm"); + return shadow(this, "acroFormRef", e instanceof Ref ? e : null); + } + get metadata() { + const e = this._catDict.getRaw("Metadata"); + if (!(e instanceof Ref)) return shadow(this, "metadata", null); + let t = null; + try { + const i = this.xref.fetch(e, !this.xref.encrypt?.encryptMetadata); + if (i instanceof BaseStream && i.dict instanceof Dict) { + const e = i.dict.get("Type"), + a = i.dict.get("Subtype"); + if (isName(e, "Metadata") && isName(a, "XML")) { + const e = stringToUTF8String(i.getString()); + e && (t = new MetadataParser(e).serializable); + } + } + } catch (e) { + if (e instanceof MissingDataException) throw e; + info(`Skipping invalid Metadata: "${e}".`); + } + return shadow(this, "metadata", t); + } + get markInfo() { + let e = null; + try { + e = this._readMarkInfo(); + } catch (e) { + if (e instanceof MissingDataException) throw e; + warn("Unable to read mark info."); + } + return shadow(this, "markInfo", e); + } + _readMarkInfo() { + const e = this._catDict.get("MarkInfo"); + if (!(e instanceof Dict)) return null; + const t = { Marked: !1, UserProperties: !1, Suspects: !1 }; + for (const i in t) { + const a = e.get(i); + "boolean" == typeof a && (t[i] = a); + } + return t; + } + get structTreeRoot() { + let e = null; + try { + e = this._readStructTreeRoot(); + } catch (e) { + if (e instanceof MissingDataException) throw e; + warn("Unable read to structTreeRoot info."); + } + return shadow(this, "structTreeRoot", e); + } + _readStructTreeRoot() { + const e = this._catDict.getRaw("StructTreeRoot"), + t = this.xref.fetchIfRef(e); + if (!(t instanceof Dict)) return null; + const i = new StructTreeRoot(t, e); + i.init(); + return i; + } + get toplevelPagesDict() { + const e = this._catDict.get("Pages"); + if (!(e instanceof Dict)) + throw new FormatError("Invalid top-level pages dictionary."); + return shadow(this, "toplevelPagesDict", e); + } + get documentOutline() { + let e = null; + try { + e = this._readDocumentOutline(); + } catch (e) { + if (e instanceof MissingDataException) throw e; + warn("Unable to read document outline."); + } + return shadow(this, "documentOutline", e); + } + _readDocumentOutline() { + let e = this._catDict.get("Outlines"); + if (!(e instanceof Dict)) return null; + e = e.getRaw("First"); + if (!(e instanceof Ref)) return null; + const t = { items: [] }, + i = [{ obj: e, parent: t }], + a = new RefSet(); + a.put(e); + const s = this.xref, + r = new Uint8ClampedArray(3); + for (; i.length > 0; ) { + const t = i.shift(), + n = s.fetchIfRef(t.obj); + if (null === n) continue; + n.has("Title") || warn("Invalid outline item encountered."); + const o = { url: null, dest: null, action: null }; + Catalog.parseDestDictionary({ + destDict: n, + resultObj: o, + docBaseUrl: this.baseUrl, + docAttachments: this.attachments, + }); + const g = n.get("Title"), + c = n.get("F") || 0, + h = n.getArray("C"), + l = n.get("Count"); + let C = r; + !isNumberArray(h, 3) || + (0 === h[0] && 0 === h[1] && 0 === h[2]) || + (C = ColorSpace.singletons.rgb.getRgb(h, 0)); + const Q = { + action: o.action, + attachment: o.attachment, + dest: o.dest, + url: o.url, + unsafeUrl: o.unsafeUrl, + newWindow: o.newWindow, + setOCGState: o.setOCGState, + title: "string" == typeof g ? stringToPDFString(g) : "", + color: C, + count: Number.isInteger(l) ? l : void 0, + bold: !!(2 & c), + italic: !!(1 & c), + items: [], + }; + t.parent.items.push(Q); + e = n.getRaw("First"); + if (e instanceof Ref && !a.has(e)) { + i.push({ obj: e, parent: Q }); + a.put(e); + } + e = n.getRaw("Next"); + if (e instanceof Ref && !a.has(e)) { + i.push({ obj: e, parent: t.parent }); + a.put(e); + } + } + return t.items.length > 0 ? t.items : null; + } + get permissions() { + let e = null; + try { + e = this._readPermissions(); + } catch (e) { + if (e instanceof MissingDataException) throw e; + warn("Unable to read permissions."); + } + return shadow(this, "permissions", e); + } + _readPermissions() { + const e = this.xref.trailer.get("Encrypt"); + if (!(e instanceof Dict)) return null; + let t = e.get("P"); + if ("number" != typeof t) return null; + t += 2 ** 32; + const i = []; + for (const e in m) { + const a = m[e]; + t & a && i.push(a); + } + return i; + } + get optionalContentConfig() { + let e = null; + try { + const t = this._catDict.get("OCProperties"); + if (!t) return shadow(this, "optionalContentConfig", null); + const i = t.get("D"); + if (!i) return shadow(this, "optionalContentConfig", null); + const a = t.get("OCGs"); + if (!Array.isArray(a)) return shadow(this, "optionalContentConfig", null); + const s = [], + r = new RefSet(); + for (const e of a) + if (e instanceof Ref && !r.has(e)) { + r.put(e); + s.push(this.#Y(e)); + } + e = this.#v(i, r); + e.groups = s; + } catch (e) { + if (e instanceof MissingDataException) throw e; + warn(`Unable to read optional content config: ${e}`); + } + return shadow(this, "optionalContentConfig", e); + } + #Y(e) { + const t = this.xref.fetch(e), + i = { + id: e.toString(), + name: null, + intent: null, + usage: { print: null, view: null }, + }, + a = t.get("Name"); + "string" == typeof a && (i.name = stringToPDFString(a)); + let s = t.getArray("Intent"); + Array.isArray(s) || (s = [s]); + s.every((e) => e instanceof Name) && (i.intent = s.map((e) => e.name)); + const r = t.get("Usage"); + if (!(r instanceof Dict)) return i; + const n = i.usage, + o = r.get("Print"); + if (o instanceof Dict) { + const e = o.get("PrintState"); + if (e instanceof Name) + switch (e.name) { + case "ON": + case "OFF": + n.print = { printState: e.name }; + } + } + const g = r.get("View"); + if (g instanceof Dict) { + const e = g.get("ViewState"); + if (e instanceof Name) + switch (e.name) { + case "ON": + case "OFF": + n.view = { viewState: e.name }; + } + } + return i; + } + #v(e, t) { + function parseOnOff(e) { + const i = []; + if (Array.isArray(e)) + for (const a of e) a instanceof Ref && t.has(a) && i.push(a.toString()); + return i; + } + function parseOrder(e, i = 0) { + if (!Array.isArray(e)) return null; + const s = []; + for (const r of e) { + if (r instanceof Ref && t.has(r)) { + a.put(r); + s.push(r.toString()); + continue; + } + const e = parseNestedOrder(r, i); + e && s.push(e); + } + if (i > 0) return s; + const r = []; + for (const e of t) a.has(e) || r.push(e.toString()); + r.length && s.push({ name: null, order: r }); + return s; + } + function parseNestedOrder(e, t) { + if (++t > s) { + warn("parseNestedOrder - reached MAX_NESTED_LEVELS."); + return null; + } + const a = i.fetchIfRef(e); + if (!Array.isArray(a)) return null; + const r = i.fetchIfRef(a[0]); + if ("string" != typeof r) return null; + const n = parseOrder(a.slice(1), t); + return n && n.length ? { name: stringToPDFString(r), order: n } : null; + } + const i = this.xref, + a = new RefSet(), + s = 10; + return { + name: + "string" == typeof e.get("Name") + ? stringToPDFString(e.get("Name")) + : null, + creator: + "string" == typeof e.get("Creator") + ? stringToPDFString(e.get("Creator")) + : null, + baseState: + e.get("BaseState") instanceof Name ? e.get("BaseState").name : null, + on: parseOnOff(e.get("ON")), + off: parseOnOff(e.get("OFF")), + order: parseOrder(e.get("Order")), + groups: null, + }; + } + setActualNumPages(e = null) { + this._actualNumPages = e; + } + get hasActualNumPages() { + return null !== this._actualNumPages; + } + get _pagesCount() { + const e = this.toplevelPagesDict.get("Count"); + if (!Number.isInteger(e)) + throw new FormatError( + "Page count in top-level pages dictionary is not an integer.", + ); + return shadow(this, "_pagesCount", e); + } + get numPages() { + return this.hasActualNumPages ? this._actualNumPages : this._pagesCount; + } + get destinations() { + const e = this._readDests(), + t = Object.create(null); + if (e instanceof NameTree) + for (const [i, a] of e.getAll()) { + const e = fetchDest(a); + e && (t[stringToPDFString(i)] = e); + } + else + e instanceof Dict && + e.forEach(function (e, i) { + const a = fetchDest(i); + a && (t[e] = a); + }); + return shadow(this, "destinations", t); + } + getDestination(e) { + const t = this._readDests(); + if (t instanceof NameTree) { + const i = fetchDest(t.get(e)); + if (i) return i; + const a = this.destinations[e]; + if (a) { + warn(`Found "${e}" at an incorrect position in the NameTree.`); + return a; + } + } else if (t instanceof Dict) { + const i = fetchDest(t.get(e)); + if (i) return i; + } + return null; + } + _readDests() { + const e = this._catDict.get("Names"); + return e?.has("Dests") + ? new NameTree(e.getRaw("Dests"), this.xref) + : this._catDict.has("Dests") + ? this._catDict.get("Dests") + : void 0; + } + get pageLabels() { + let e = null; + try { + e = this._readPageLabels(); + } catch (e) { + if (e instanceof MissingDataException) throw e; + warn("Unable to read page labels."); + } + return shadow(this, "pageLabels", e); + } + _readPageLabels() { + const e = this._catDict.getRaw("PageLabels"); + if (!e) return null; + const t = new Array(this.numPages); + let i = null, + a = ""; + const s = new NumberTree(e, this.xref).getAll(); + let r = "", + n = 1; + for (let e = 0, o = this.numPages; e < o; e++) { + const o = s.get(e); + if (void 0 !== o) { + if (!(o instanceof Dict)) + throw new FormatError("PageLabel is not a dictionary."); + if (o.has("Type") && !isName(o.get("Type"), "PageLabel")) + throw new FormatError("Invalid type in PageLabel dictionary."); + if (o.has("S")) { + const e = o.get("S"); + if (!(e instanceof Name)) + throw new FormatError("Invalid style in PageLabel dictionary."); + i = e.name; + } else i = null; + if (o.has("P")) { + const e = o.get("P"); + if ("string" != typeof e) + throw new FormatError("Invalid prefix in PageLabel dictionary."); + a = stringToPDFString(e); + } else a = ""; + if (o.has("St")) { + const e = o.get("St"); + if (!(Number.isInteger(e) && e >= 1)) + throw new FormatError("Invalid start in PageLabel dictionary."); + n = e; + } else n = 1; + } + switch (i) { + case "D": + r = n; + break; + case "R": + case "r": + r = toRomanNumerals(n, "r" === i); + break; + case "A": + case "a": + const e = 26, + t = "a" === i ? 97 : 65, + a = n - 1; + r = String.fromCharCode(t + (a % e)).repeat(Math.floor(a / e) + 1); + break; + default: + if (i) + throw new FormatError( + `Invalid style "${i}" in PageLabel dictionary.`, + ); + r = ""; + } + t[e] = a + r; + n++; + } + return t; + } + get pageLayout() { + const e = this._catDict.get("PageLayout"); + let t = ""; + if (e instanceof Name) + switch (e.name) { + case "SinglePage": + case "OneColumn": + case "TwoColumnLeft": + case "TwoColumnRight": + case "TwoPageLeft": + case "TwoPageRight": + t = e.name; + } + return shadow(this, "pageLayout", t); + } + get pageMode() { + const e = this._catDict.get("PageMode"); + let t = "UseNone"; + if (e instanceof Name) + switch (e.name) { + case "UseNone": + case "UseOutlines": + case "UseThumbs": + case "FullScreen": + case "UseOC": + case "UseAttachments": + t = e.name; + } + return shadow(this, "pageMode", t); + } + get viewerPreferences() { + const e = this._catDict.get("ViewerPreferences"); + if (!(e instanceof Dict)) return shadow(this, "viewerPreferences", null); + let t = null; + for (const i of e.getKeys()) { + const a = e.get(i); + let s; + switch (i) { + case "HideToolbar": + case "HideMenubar": + case "HideWindowUI": + case "FitWindow": + case "CenterWindow": + case "DisplayDocTitle": + case "PickTrayByPDFSize": + "boolean" == typeof a && (s = a); + break; + case "NonFullScreenPageMode": + if (a instanceof Name) + switch (a.name) { + case "UseNone": + case "UseOutlines": + case "UseThumbs": + case "UseOC": + s = a.name; + break; + default: + s = "UseNone"; + } + break; + case "Direction": + if (a instanceof Name) + switch (a.name) { + case "L2R": + case "R2L": + s = a.name; + break; + default: + s = "L2R"; + } + break; + case "ViewArea": + case "ViewClip": + case "PrintArea": + case "PrintClip": + if (a instanceof Name) + switch (a.name) { + case "MediaBox": + case "CropBox": + case "BleedBox": + case "TrimBox": + case "ArtBox": + s = a.name; + break; + default: + s = "CropBox"; + } + break; + case "PrintScaling": + if (a instanceof Name) + switch (a.name) { + case "None": + case "AppDefault": + s = a.name; + break; + default: + s = "AppDefault"; + } + break; + case "Duplex": + if (a instanceof Name) + switch (a.name) { + case "Simplex": + case "DuplexFlipShortEdge": + case "DuplexFlipLongEdge": + s = a.name; + break; + default: + s = "None"; + } + break; + case "PrintPageRange": + if (Array.isArray(a) && a.length % 2 == 0) { + a.every( + (e, t, i) => + Number.isInteger(e) && + e > 0 && + (0 === t || e >= i[t - 1]) && + e <= this.numPages, + ) && (s = a); + } + break; + case "NumCopies": + Number.isInteger(a) && a > 0 && (s = a); + break; + default: + warn(`Ignoring non-standard key in ViewerPreferences: ${i}.`); + continue; + } + if (void 0 !== s) { + t || (t = Object.create(null)); + t[i] = s; + } else warn(`Bad value, for key "${i}", in ViewerPreferences: ${a}.`); + } + return shadow(this, "viewerPreferences", t); + } + get openAction() { + const e = this._catDict.get("OpenAction"), + t = Object.create(null); + if (e instanceof Dict) { + const i = new Dict(this.xref); + i.set("A", e); + const a = { url: null, dest: null, action: null }; + Catalog.parseDestDictionary({ destDict: i, resultObj: a }); + Array.isArray(a.dest) + ? (t.dest = a.dest) + : a.action && (t.action = a.action); + } else Array.isArray(e) && (t.dest = e); + return shadow(this, "openAction", objectSize(t) > 0 ? t : null); + } + get attachments() { + const e = this._catDict.get("Names"); + let t = null; + if (e instanceof Dict && e.has("EmbeddedFiles")) { + const i = new NameTree(e.getRaw("EmbeddedFiles"), this.xref); + for (const [e, a] of i.getAll()) { + const i = new FileSpec(a, this.xref); + t || (t = Object.create(null)); + t[stringToPDFString(e)] = i.serializable; + } + } + return shadow(this, "attachments", t); + } + get xfaImages() { + const e = this._catDict.get("Names"); + let t = null; + if (e instanceof Dict && e.has("XFAImages")) { + const i = new NameTree(e.getRaw("XFAImages"), this.xref); + for (const [e, a] of i.getAll()) { + t || (t = new Dict(this.xref)); + t.set(stringToPDFString(e), a); + } + } + return shadow(this, "xfaImages", t); + } + _collectJavaScript() { + const e = this._catDict.get("Names"); + let t = null; + function appendIfJavaScriptDict(e, i) { + if (!(i instanceof Dict)) return; + if (!isName(i.get("S"), "JavaScript")) return; + let a = i.get("JS"); + if (a instanceof BaseStream) a = a.getString(); + else if ("string" != typeof a) return; + a = stringToPDFString(a).replaceAll("\0", ""); + a && (t ||= new Map()).set(e, a); + } + if (e instanceof Dict && e.has("JavaScript")) { + const t = new NameTree(e.getRaw("JavaScript"), this.xref); + for (const [e, i] of t.getAll()) + appendIfJavaScriptDict(stringToPDFString(e), i); + } + const i = this._catDict.get("OpenAction"); + i && appendIfJavaScriptDict("OpenAction", i); + return t; + } + get jsActions() { + const e = this._collectJavaScript(); + let t = collectActions(this.xref, this._catDict, dA); + if (e) { + t ||= Object.create(null); + for (const [i, a] of e) i in t ? t[i].push(a) : (t[i] = [a]); + } + return shadow(this, "jsActions", t); + } + async fontFallback(e, t) { + const i = await Promise.all(this.fontCache); + for (const a of i) + if (a.loadedName === e) { + a.fallback(t); + return; + } + } + async cleanup(e = !1) { + clearGlobalCaches(); + this.globalImageCache.clear(e); + this.pageKidsCountCache.clear(); + this.pageIndexCache.clear(); + this.nonBlendModesSet.clear(); + const t = await Promise.all(this.fontCache); + for (const { dict: e } of t) delete e.cacheKey; + this.fontCache.clear(); + this.builtInCMapCache.clear(); + this.standardFontDataCache.clear(); + this.systemFontCache.clear(); + } + async getPageDict(e) { + const t = [this.toplevelPagesDict], + i = new RefSet(), + a = this._catDict.getRaw("Pages"); + a instanceof Ref && i.put(a); + const s = this.xref, + r = this.pageKidsCountCache, + n = this.pageIndexCache; + let o = 0; + for (; t.length; ) { + const a = t.pop(); + if (a instanceof Ref) { + const g = r.get(a); + if (g >= 0 && o + g <= e) { + o += g; + continue; + } + if (i.has(a)) + throw new FormatError("Pages tree contains circular reference."); + i.put(a); + const c = await s.fetchAsync(a); + if (c instanceof Dict) { + let t = c.getRaw("Type"); + t instanceof Ref && (t = await s.fetchAsync(t)); + if (isName(t, "Page") || !c.has("Kids")) { + r.has(a) || r.put(a, 1); + n.has(a) || n.put(a, o); + if (o === e) return [c, a]; + o++; + continue; + } + } + t.push(c); + continue; + } + if (!(a instanceof Dict)) + throw new FormatError( + "Page dictionary kid reference points to wrong type of object.", + ); + const { objId: g } = a; + let c = a.getRaw("Count"); + c instanceof Ref && (c = await s.fetchAsync(c)); + if (Number.isInteger(c) && c >= 0) { + g && !r.has(g) && r.put(g, c); + if (o + c <= e) { + o += c; + continue; + } + } + let h = a.getRaw("Kids"); + h instanceof Ref && (h = await s.fetchAsync(h)); + if (!Array.isArray(h)) { + let t = a.getRaw("Type"); + t instanceof Ref && (t = await s.fetchAsync(t)); + if (isName(t, "Page") || !a.has("Kids")) { + if (o === e) return [a, null]; + o++; + continue; + } + throw new FormatError("Page dictionary kids object is not an array."); + } + for (let e = h.length - 1; e >= 0; e--) t.push(h[e]); + } + throw new Error(`Page index ${e} not found.`); + } + async getAllPageDicts(e = !1) { + const { ignoreErrors: t } = this.pdfManager.evaluatorOptions, + i = [{ currentNode: this.toplevelPagesDict, posInKids: 0 }], + a = new RefSet(), + s = this._catDict.getRaw("Pages"); + s instanceof Ref && a.put(s); + const r = new Map(), + n = this.xref, + o = this.pageIndexCache; + let g = 0; + function addPageDict(e, t) { + t && !o.has(t) && o.put(t, g); + r.set(g++, [e, t]); + } + function addPageError(i) { + if (i instanceof XRefEntryException && !e) throw i; + if (e && t && 0 === g) { + warn(`getAllPageDicts - Skipping invalid first page: "${i}".`); + i = Dict.empty; + } + r.set(g++, [i, null]); + } + for (; i.length > 0; ) { + const e = i.at(-1), + { currentNode: t, posInKids: s } = e; + let r = t.getRaw("Kids"); + if (r instanceof Ref) + try { + r = await n.fetchAsync(r); + } catch (e) { + addPageError(e); + break; + } + if (!Array.isArray(r)) { + addPageError( + new FormatError("Page dictionary kids object is not an array."), + ); + break; + } + if (s >= r.length) { + i.pop(); + continue; + } + const o = r[s]; + let g; + if (o instanceof Ref) { + if (a.has(o)) { + addPageError( + new FormatError("Pages tree contains circular reference."), + ); + break; + } + a.put(o); + try { + g = await n.fetchAsync(o); + } catch (e) { + addPageError(e); + break; + } + } else g = o; + if (!(g instanceof Dict)) { + addPageError( + new FormatError( + "Page dictionary kid reference points to wrong type of object.", + ), + ); + break; + } + let c = g.getRaw("Type"); + if (c instanceof Ref) + try { + c = await n.fetchAsync(c); + } catch (e) { + addPageError(e); + break; + } + isName(c, "Page") || !g.has("Kids") + ? addPageDict(g, o instanceof Ref ? o : null) + : i.push({ currentNode: g, posInKids: 0 }); + e.posInKids++; + } + return r; + } + getPageIndex(e) { + const t = this.pageIndexCache.get(e); + if (void 0 !== t) return Promise.resolve(t); + const i = this.xref; + let a = 0; + const next = (t) => + (function pagesBeforeRef(t) { + let a, + s = 0; + return i + .fetchAsync(t) + .then(function (i) { + if ( + isRefsEqual(t, e) && + !isDict(i, "Page") && + !(i instanceof Dict && !i.has("Type") && i.has("Contents")) + ) + throw new FormatError( + "The reference does not point to a /Page dictionary.", + ); + if (!i) return null; + if (!(i instanceof Dict)) + throw new FormatError("Node must be a dictionary."); + a = i.getRaw("Parent"); + return i.getAsync("Parent"); + }) + .then(function (e) { + if (!e) return null; + if (!(e instanceof Dict)) + throw new FormatError("Parent must be a dictionary."); + return e.getAsync("Kids"); + }) + .then(function (e) { + if (!e) return null; + const r = []; + let n = !1; + for (const a of e) { + if (!(a instanceof Ref)) + throw new FormatError("Kid must be a reference."); + if (isRefsEqual(a, t)) { + n = !0; + break; + } + r.push( + i.fetchAsync(a).then(function (e) { + if (!(e instanceof Dict)) + throw new FormatError("Kid node must be a dictionary."); + e.has("Count") ? (s += e.get("Count")) : s++; + }), + ); + } + if (!n) + throw new FormatError( + "Kid reference not found in parent's kids.", + ); + return Promise.all(r).then(function () { + return [s, a]; + }); + }); + })(t).then((t) => { + if (!t) { + this.pageIndexCache.put(e, a); + return a; + } + const [i, s] = t; + a += i; + return next(s); + }); + return next(e); + } + get baseUrl() { + const e = this._catDict.get("URI"); + if (e instanceof Dict) { + const t = e.get("Base"); + if ("string" == typeof t) { + const e = createValidAbsoluteUrl(t, null, { tryConvertEncoding: !0 }); + if (e) return shadow(this, "baseUrl", e.href); + } + } + return shadow(this, "baseUrl", this.pdfManager.docBaseUrl); + } + static parseDestDictionary({ + destDict: e, + resultObj: t, + docBaseUrl: i = null, + docAttachments: a = null, + }) { + if (!(e instanceof Dict)) { + warn("parseDestDictionary: `destDict` must be a dictionary."); + return; + } + let s, + r, + n = e.get("A"); + if (!(n instanceof Dict)) + if (e.has("Dest")) n = e.get("Dest"); + else { + n = e.get("AA"); + n instanceof Dict && + (n.has("D") ? (n = n.get("D")) : n.has("U") && (n = n.get("U"))); + } + if (n instanceof Dict) { + const e = n.get("S"); + if (!(e instanceof Name)) { + warn("parseDestDictionary: Invalid type in Action dictionary."); + return; + } + const i = e.name; + switch (i) { + case "ResetForm": + const e = n.get("Flags"), + o = 0 == (1 & ("number" == typeof e ? e : 0)), + g = [], + c = []; + for (const e of n.get("Fields") || []) + e instanceof Ref + ? c.push(e.toString()) + : "string" == typeof e && g.push(stringToPDFString(e)); + t.resetForm = { fields: g, refs: c, include: o }; + break; + case "URI": + s = n.get("URI"); + s instanceof Name && (s = "/" + s.name); + break; + case "GoTo": + r = n.get("D"); + break; + case "Launch": + case "GoToR": + const h = n.get("F"); + if (h instanceof Dict) { + const e = new FileSpec(h, null, !0), + { rawFilename: t } = e.serializable; + s = t; + } else "string" == typeof h && (s = h); + const l = fetchRemoteDest(n); + l && "string" == typeof s && (s = s.split("#", 1)[0] + "#" + l); + const C = n.get("NewWindow"); + "boolean" == typeof C && (t.newWindow = C); + break; + case "GoToE": + const Q = n.get("T"); + let E; + if (a && Q instanceof Dict) { + const e = Q.get("R"), + t = Q.get("N"); + isName(e, "C") && + "string" == typeof t && + (E = a[stringToPDFString(t)]); + } + if (E) { + t.attachment = E; + const e = fetchRemoteDest(n); + e && (t.attachmentDest = e); + } else warn('parseDestDictionary - unimplemented "GoToE" action.'); + break; + case "Named": + const u = n.get("N"); + u instanceof Name && (t.action = u.name); + break; + case "SetOCGState": + const d = n.get("State"), + f = n.get("PreserveRB"); + if (!Array.isArray(d) || 0 === d.length) break; + const p = []; + for (const e of d) + if (e instanceof Name) + switch (e.name) { + case "ON": + case "OFF": + case "Toggle": + p.push(e.name); + } + else e instanceof Ref && p.push(e.toString()); + if (p.length !== d.length) break; + t.setOCGState = { state: p, preserveRB: "boolean" != typeof f || f }; + break; + case "JavaScript": + const m = n.get("JS"); + let y; + m instanceof BaseStream + ? (y = m.getString()) + : "string" == typeof m && (y = m); + const w = y && recoverJsURL(stringToPDFString(y)); + if (w) { + s = w.url; + t.newWindow = w.newWindow; + break; + } + default: + if ("JavaScript" === i || "SubmitForm" === i) break; + warn(`parseDestDictionary - unsupported action: "${i}".`); + } + } else e.has("Dest") && (r = e.get("Dest")); + if ("string" == typeof s) { + const e = createValidAbsoluteUrl(s, i, { + addDefaultProtocol: !0, + tryConvertEncoding: !0, + }); + e && (t.url = e.href); + t.unsafeUrl = s; + } + if (r) { + r instanceof Name && (r = r.name); + "string" == typeof r + ? (t.dest = stringToPDFString(r)) + : isValidExplicitDest(r) && (t.dest = r); + } + } +} +function addChildren(e, t) { + if (e instanceof Dict) e = e.getRawValues(); + else if (e instanceof BaseStream) e = e.dict.getRawValues(); + else if (!Array.isArray(e)) return; + for (const a of e) + ((i = a) instanceof Ref || + i instanceof Dict || + i instanceof BaseStream || + Array.isArray(i)) && + t.push(a); + var i; +} +class ObjectLoader { + constructor(e, t, i) { + this.dict = e; + this.keys = t; + this.xref = i; + this.refSet = null; + } + async load() { + if (this.xref.stream.isDataLoaded) return; + const { keys: e, dict: t } = this; + this.refSet = new RefSet(); + const i = []; + for (const a of e) { + const e = t.getRaw(a); + void 0 !== e && i.push(e); + } + return this._walk(i); + } + async _walk(e) { + const t = [], + i = []; + for (; e.length; ) { + let a = e.pop(); + if (a instanceof Ref) { + if (this.refSet.has(a)) continue; + try { + this.refSet.put(a); + a = this.xref.fetch(a); + } catch (e) { + if (!(e instanceof MissingDataException)) { + warn(`ObjectLoader._walk - requesting all data: "${e}".`); + this.refSet = null; + const { manager: t } = this.xref.stream; + return t.requestAllChunks(); + } + t.push(a); + i.push({ begin: e.begin, end: e.end }); + } + } + if (a instanceof BaseStream) { + const e = a.getBaseStreams(); + if (e) { + let s = !1; + for (const t of e) + if (!t.isDataLoaded) { + s = !0; + i.push({ begin: t.start, end: t.end }); + } + s && t.push(a); + } + } + addChildren(a, e); + } + if (i.length) { + await this.xref.stream.manager.requestRanges(i); + for (const e of t) e instanceof Ref && this.refSet.remove(e); + return this._walk(t); + } + this.refSet = null; + } +} +const Ws = Symbol(), + Xs = Symbol(), + js = Symbol(), + Zs = Symbol(), + Vs = Symbol(), + zs = Symbol(), + _s = Symbol(), + $s = Symbol(), + Ar = Symbol(), + er = Symbol("content"), + tr = Symbol("data"), + ir = Symbol(), + ar = Symbol("extra"), + sr = Symbol(), + rr = Symbol(), + nr = Symbol(), + or = Symbol(), + gr = Symbol(), + Ir = Symbol(), + cr = Symbol(), + hr = Symbol(), + lr = Symbol(), + Cr = Symbol(), + Qr = Symbol(), + Er = Symbol(), + ur = Symbol(), + dr = Symbol(), + fr = Symbol(), + pr = Symbol(), + mr = Symbol(), + yr = Symbol(), + wr = Symbol(), + br = Symbol(), + Dr = Symbol(), + Fr = Symbol(), + Sr = Symbol(), + kr = Symbol(), + Rr = Symbol(), + Nr = Symbol(), + Gr = Symbol(), + xr = Symbol(), + Mr = Symbol(), + Ur = Symbol(), + Lr = Symbol(), + Jr = Symbol(), + Hr = Symbol("namespaceId"), + Yr = Symbol("nodeName"), + vr = Symbol(), + Kr = Symbol(), + Tr = Symbol(), + qr = Symbol(), + Or = Symbol(), + Pr = Symbol(), + Wr = Symbol(), + Xr = Symbol(), + jr = Symbol("root"), + Zr = Symbol(), + Vr = Symbol(), + zr = Symbol(), + _r = Symbol(), + $r = Symbol(), + An = Symbol(), + en = Symbol(), + tn = Symbol(), + an = Symbol(), + sn = Symbol(), + rn = Symbol(), + nn = Symbol("uid"), + on = Symbol(), + gn = { + config: { + id: 0, + check: (e) => e.startsWith("http://www.xfa.org/schema/xci/"), + }, + connectionSet: { + id: 1, + check: (e) => + e.startsWith("http://www.xfa.org/schema/xfa-connection-set/"), + }, + datasets: { + id: 2, + check: (e) => e.startsWith("http://www.xfa.org/schema/xfa-data/"), + }, + form: { + id: 3, + check: (e) => e.startsWith("http://www.xfa.org/schema/xfa-form/"), + }, + localeSet: { + id: 4, + check: (e) => e.startsWith("http://www.xfa.org/schema/xfa-locale-set/"), + }, + pdf: { id: 5, check: (e) => "http://ns.adobe.com/xdp/pdf/" === e }, + signature: { + id: 6, + check: (e) => "http://www.w3.org/2000/09/xmldsig#" === e, + }, + sourceSet: { + id: 7, + check: (e) => e.startsWith("http://www.xfa.org/schema/xfa-source-set/"), + }, + stylesheet: { + id: 8, + check: (e) => "http://www.w3.org/1999/XSL/Transform" === e, + }, + template: { + id: 9, + check: (e) => e.startsWith("http://www.xfa.org/schema/xfa-template/"), + }, + xdc: { + id: 10, + check: (e) => e.startsWith("http://www.xfa.org/schema/xdc/"), + }, + xdp: { id: 11, check: (e) => "http://ns.adobe.com/xdp/" === e }, + xfdf: { id: 12, check: (e) => "http://ns.adobe.com/xfdf/" === e }, + xhtml: { id: 13, check: (e) => "http://www.w3.org/1999/xhtml" === e }, + xmpmeta: { id: 14, check: (e) => "http://ns.adobe.com/xmpmeta/" === e }, + }, + In = { + pt: (e) => e, + cm: (e) => (e / 2.54) * 72, + mm: (e) => (e / 25.4) * 72, + in: (e) => 72 * e, + px: (e) => e, + }, + cn = /([+-]?\d+\.?\d*)(.*)/; +function stripQuotes(e) { + return e.startsWith("'") || e.startsWith('"') ? e.slice(1, -1) : e; +} +function getInteger({ data: e, defaultValue: t, validate: i }) { + if (!e) return t; + e = e.trim(); + const a = parseInt(e, 10); + return !isNaN(a) && i(a) ? a : t; +} +function getFloat({ data: e, defaultValue: t, validate: i }) { + if (!e) return t; + e = e.trim(); + const a = parseFloat(e); + return !isNaN(a) && i(a) ? a : t; +} +function getKeyword({ data: e, defaultValue: t, validate: i }) { + return e && i((e = e.trim())) ? e : t; +} +function getStringOption(e, t) { + return getKeyword({ + data: e, + defaultValue: t[0], + validate: (e) => t.includes(e), + }); +} +function getMeasurement(e, t = "0") { + t ||= "0"; + if (!e) return getMeasurement(t); + const i = e.trim().match(cn); + if (!i) return getMeasurement(t); + const [, a, s] = i, + r = parseFloat(a); + if (isNaN(r)) return getMeasurement(t); + if (0 === r) return 0; + const n = In[s]; + return n ? n(r) : r; +} +function getRatio(e) { + if (!e) return { num: 1, den: 1 }; + const t = e + .trim() + .split(/\s*:\s*/) + .map((e) => parseFloat(e)) + .filter((e) => !isNaN(e)); + 1 === t.length && t.push(1); + if (0 === t.length) return { num: 1, den: 1 }; + const [i, a] = t; + return { num: i, den: a }; +} +function getRelevant(e) { + return e + ? e + .trim() + .split(/\s+/) + .map((e) => ({ excluded: "-" === e[0], viewname: e.substring(1) })) + : []; +} +class HTMLResult { + static get FAILURE() { + return shadow(this, "FAILURE", new HTMLResult(!1, null, null, null)); + } + static get EMPTY() { + return shadow(this, "EMPTY", new HTMLResult(!0, null, null, null)); + } + constructor(e, t, i, a) { + this.success = e; + this.html = t; + this.bbox = i; + this.breakNode = a; + } + isBreak() { + return !!this.breakNode; + } + static breakNode(e) { + return new HTMLResult(!1, null, null, e); + } + static success(e, t = null) { + return new HTMLResult(!0, e, t, null); + } +} +class FontFinder { + constructor(e) { + this.fonts = new Map(); + this.cache = new Map(); + this.warned = new Set(); + this.defaultFont = null; + this.add(e); + } + add(e, t = null) { + for (const t of e) this.addPdfFont(t); + for (const e of this.fonts.values()) + e.regular || (e.regular = e.italic || e.bold || e.bolditalic); + if (!t || 0 === t.size) return; + const i = this.fonts.get("PdfJS-Fallback-PdfJS-XFA"); + for (const e of t) this.fonts.set(e, i); + } + addPdfFont(e) { + const t = e.cssFontInfo, + i = t.fontFamily; + let a = this.fonts.get(i); + if (!a) { + a = Object.create(null); + this.fonts.set(i, a); + this.defaultFont || (this.defaultFont = a); + } + let s = ""; + const r = parseFloat(t.fontWeight); + 0 !== parseFloat(t.italicAngle) + ? (s = r >= 700 ? "bolditalic" : "italic") + : r >= 700 && (s = "bold"); + if (!s) { + (e.name.includes("Bold") || e.psName?.includes("Bold")) && (s = "bold"); + (e.name.includes("Italic") || + e.name.endsWith("It") || + e.psName?.includes("Italic") || + e.psName?.endsWith("It")) && + (s += "italic"); + } + s || (s = "regular"); + a[s] = e; + } + getDefault() { + return this.defaultFont; + } + find(e, t = !0) { + let i = this.fonts.get(e) || this.cache.get(e); + if (i) return i; + const a = /,|-|_| |bolditalic|bold|italic|regular|it/gi; + let s = e.replaceAll(a, ""); + i = this.fonts.get(s); + if (i) { + this.cache.set(e, i); + return i; + } + s = s.toLowerCase(); + const r = []; + for (const [e, t] of this.fonts.entries()) + e.replaceAll(a, "").toLowerCase().startsWith(s) && r.push(t); + if (0 === r.length) + for (const [, e] of this.fonts.entries()) + e.regular.name?.replaceAll(a, "").toLowerCase().startsWith(s) && + r.push(e); + if (0 === r.length) { + s = s.replaceAll(/psmt|mt/gi, ""); + for (const [e, t] of this.fonts.entries()) + e.replaceAll(a, "").toLowerCase().startsWith(s) && r.push(t); + } + if (0 === r.length) + for (const e of this.fonts.values()) + e.regular.name?.replaceAll(a, "").toLowerCase().startsWith(s) && + r.push(e); + if (r.length >= 1) { + 1 !== r.length && + t && + warn(`XFA - Too many choices to guess the correct font: ${e}`); + this.cache.set(e, r[0]); + return r[0]; + } + if (t && !this.warned.has(e)) { + this.warned.add(e); + warn(`XFA - Cannot find the font: ${e}`); + } + return null; + } +} +function selectFont(e, t) { + return "italic" === e.posture + ? "bold" === e.weight + ? t.bolditalic + : t.italic + : "bold" === e.weight + ? t.bold + : t.regular; +} +class FontInfo { + constructor(e, t, i, a) { + this.lineHeight = i; + this.paraMargin = t || { top: 0, bottom: 0, left: 0, right: 0 }; + if (!e) { + [this.pdfFont, this.xfaFont] = this.defaultFont(a); + return; + } + this.xfaFont = { + typeface: e.typeface, + posture: e.posture, + weight: e.weight, + size: e.size, + letterSpacing: e.letterSpacing, + }; + const s = a.find(e.typeface); + if (s) { + this.pdfFont = selectFont(e, s); + this.pdfFont || ([this.pdfFont, this.xfaFont] = this.defaultFont(a)); + } else [this.pdfFont, this.xfaFont] = this.defaultFont(a); + } + defaultFont(e) { + const t = + e.find("Helvetica", !1) || + e.find("Myriad Pro", !1) || + e.find("Arial", !1) || + e.getDefault(); + if (t?.regular) { + const e = t.regular; + return [ + e, + { + typeface: e.cssFontInfo.fontFamily, + posture: "normal", + weight: "normal", + size: 10, + letterSpacing: 0, + }, + ]; + } + return [ + null, + { + typeface: "Courier", + posture: "normal", + weight: "normal", + size: 10, + letterSpacing: 0, + }, + ]; + } +} +class FontSelector { + constructor(e, t, i, a) { + this.fontFinder = a; + this.stack = [new FontInfo(e, t, i, a)]; + } + pushData(e, t, i) { + const a = this.stack.at(-1); + for (const t of ["typeface", "posture", "weight", "size", "letterSpacing"]) + e[t] || (e[t] = a.xfaFont[t]); + for (const e of ["top", "bottom", "left", "right"]) + isNaN(t[e]) && (t[e] = a.paraMargin[e]); + const s = new FontInfo(e, t, i || a.lineHeight, this.fontFinder); + s.pdfFont || (s.pdfFont = a.pdfFont); + this.stack.push(s); + } + popFont() { + this.stack.pop(); + } + topFont() { + return this.stack.at(-1); + } +} +class TextMeasure { + constructor(e, t, i, a) { + this.glyphs = []; + this.fontSelector = new FontSelector(e, t, i, a); + this.extraHeight = 0; + } + pushData(e, t, i) { + this.fontSelector.pushData(e, t, i); + } + popFont(e) { + return this.fontSelector.popFont(); + } + addPara() { + const e = this.fontSelector.topFont(); + this.extraHeight += e.paraMargin.top + e.paraMargin.bottom; + } + addString(e) { + if (!e) return; + const t = this.fontSelector.topFont(), + i = t.xfaFont.size; + if (t.pdfFont) { + const a = t.xfaFont.letterSpacing, + s = t.pdfFont, + r = s.lineHeight || 1.2, + n = t.lineHeight || Math.max(1.2, r) * i, + o = r - (void 0 === s.lineGap ? 0.2 : s.lineGap), + g = Math.max(1, o) * i, + c = i / 1e3, + h = s.defaultWidth || s.charsToGlyphs(" ")[0].width; + for (const t of e.split(/[\u2029\n]/)) { + const e = s.encodeString(t).join(""), + i = s.charsToGlyphs(e); + for (const e of i) { + const t = e.width || h; + this.glyphs.push([t * c + a, n, g, e.unicode, !1]); + } + this.glyphs.push([0, 0, 0, "\n", !0]); + } + this.glyphs.pop(); + } else { + for (const t of e.split(/[\u2029\n]/)) { + for (const e of t.split("")) this.glyphs.push([i, 1.2 * i, i, e, !1]); + this.glyphs.push([0, 0, 0, "\n", !0]); + } + this.glyphs.pop(); + } + } + compute(e) { + let t = -1, + i = 0, + a = 0, + s = 0, + r = 0, + n = 0, + o = !1, + g = !0; + for (let c = 0, h = this.glyphs.length; c < h; c++) { + const [h, l, C, Q, E] = this.glyphs[c], + u = " " === Q, + d = g ? C : l; + if (E) { + a = Math.max(a, r); + r = 0; + s += n; + n = d; + t = -1; + i = 0; + g = !1; + } else if (u) + if (r + h > e) { + a = Math.max(a, r); + r = 0; + s += n; + n = d; + t = -1; + i = 0; + o = !0; + g = !1; + } else { + n = Math.max(d, n); + i = r; + r += h; + t = c; + } + else if (r + h > e) { + s += n; + n = d; + if (-1 !== t) { + c = t; + a = Math.max(a, i); + r = 0; + t = -1; + i = 0; + } else { + a = Math.max(a, r); + r = h; + } + o = !0; + g = !1; + } else { + r += h; + n = Math.max(d, n); + } + } + a = Math.max(a, r); + s += n + this.extraHeight; + return { width: 1.02 * a, height: s, isBroken: o }; + } +} +const hn = /^[^.[]+/, + ln = /^[^\]]+/, + Cn = { dot: 0, dotDot: 1, dotHash: 2, dotBracket: 3, dotParen: 4 }, + Bn = new Map([ + ["$data", (e, t) => (e.datasets ? e.datasets.data : e)], + ["$record", (e, t) => (e.datasets ? e.datasets.data : e)[Er]()[0]], + ["$template", (e, t) => e.template], + ["$connectionSet", (e, t) => e.connectionSet], + ["$form", (e, t) => e.form], + ["$layout", (e, t) => e.layout], + ["$host", (e, t) => e.host], + ["$dataWindow", (e, t) => e.dataWindow], + ["$event", (e, t) => e.event], + ["!", (e, t) => e.datasets], + ["$xfa", (e, t) => e], + ["xfa", (e, t) => e], + ["$", (e, t) => t], + ]), + Qn = new WeakMap(); +function parseExpression(e, t, i = !0) { + let a = e.match(hn); + if (!a) return null; + let [s] = a; + const r = [ + { + name: s, + cacheName: "." + s, + index: 0, + js: null, + formCalc: null, + operator: Cn.dot, + }, + ]; + let n = s.length; + for (; n < e.length; ) { + const g = n; + if ("[" === e.charAt(n++)) { + a = e.slice(n).match(ln); + if (!a) { + warn("XFA - Invalid index in SOM expression"); + return null; + } + r.at(-1).index = + "*" === (o = (o = a[0]).trim()) ? 1 / 0 : parseInt(o, 10) || 0; + n += a[0].length + 1; + continue; + } + let c; + switch (e.charAt(n)) { + case ".": + if (!t) return null; + n++; + c = Cn.dotDot; + break; + case "#": + n++; + c = Cn.dotHash; + break; + case "[": + if (i) { + warn( + "XFA - SOM expression contains a FormCalc subexpression which is not supported for now.", + ); + return null; + } + c = Cn.dotBracket; + break; + case "(": + if (i) { + warn( + "XFA - SOM expression contains a JavaScript subexpression which is not supported for now.", + ); + return null; + } + c = Cn.dotParen; + break; + default: + c = Cn.dot; + } + a = e.slice(n).match(hn); + if (!a) break; + [s] = a; + n += s.length; + r.push({ + name: s, + cacheName: e.slice(g, n), + operator: c, + index: 0, + js: null, + formCalc: null, + }); + } + var o; + return r; +} +function searchNode(e, t, i, a = !0, s = !0) { + const r = parseExpression(i, a); + if (!r) return null; + const n = Bn.get(r[0].name); + let o, + g = 0; + if (n) { + o = !0; + e = [n(e, t)]; + g = 1; + } else { + o = null === t; + e = [t || e]; + } + for (let i = r.length; g < i; g++) { + const { name: i, cacheName: a, operator: n, index: c } = r[g], + h = []; + for (const t of e) { + if (!t.isXFAObject) continue; + let e, r; + if (s) { + r = Qn.get(t); + if (!r) { + r = new Map(); + Qn.set(t, r); + } + e = r.get(a); + } + if (!e) { + switch (n) { + case Cn.dot: + e = t[cr](i, !1); + break; + case Cn.dotDot: + e = t[cr](i, !0); + break; + case Cn.dotHash: + e = t[Ir](i); + e = e.isXFAObjectArray ? e.children : [e]; + } + s && r.set(a, e); + } + e.length > 0 && h.push(e); + } + if (0 !== h.length || o || 0 !== g) + e = isFinite(c) + ? h.filter((e) => c < e.length).map((e) => e[c]) + : h.flat(); + else { + const i = t[pr](); + if (!(t = i)) return null; + g = -1; + e = [t]; + } + } + return 0 === e.length ? null : e; +} +function createDataNode(e, t, i) { + const a = parseExpression(i); + if (!a) return null; + if (a.some((e) => e.operator === Cn.dotDot)) return null; + const s = Bn.get(a[0].name); + let r = 0; + if (s) { + e = s(e, t); + r = 1; + } else e = t || e; + for (let t = a.length; r < t; r++) { + const { name: t, operator: i, index: s } = a[r]; + if (!isFinite(s)) { + a[r].index = 0; + return e.createNodes(a.slice(r)); + } + let n; + switch (i) { + case Cn.dot: + n = e[cr](t, !1); + break; + case Cn.dotDot: + n = e[cr](t, !0); + break; + case Cn.dotHash: + n = e[Ir](t); + n = n.isXFAObjectArray ? n.children : [n]; + } + if (0 === n.length) return e.createNodes(a.slice(r)); + if (!(s < n.length)) { + a[r].index = s - n.length; + return e.createNodes(a.slice(r)); + } + { + const t = n[s]; + if (!t.isXFAObject) { + warn("XFA - Cannot create a node."); + return null; + } + e = t; + } + } + return null; +} +const En = Symbol(), + un = Symbol(), + dn = Symbol(), + fn = Symbol("_children"), + pn = Symbol(), + mn = Symbol(), + yn = Symbol(), + wn = Symbol(), + bn = Symbol(), + Dn = Symbol(), + Fn = Symbol(), + Sn = Symbol(), + kn = Symbol(), + Rn = Symbol("parent"), + Nn = Symbol(), + Gn = Symbol(), + xn = Symbol(); +let Mn = 0; +const Un = gn.datasets.id; +class XFAObject { + constructor(e, t, i = !1) { + this[Hr] = e; + this[Yr] = t; + this[Fn] = i; + this[Rn] = null; + this[fn] = []; + this[nn] = `${t}${Mn++}`; + this[yr] = null; + } + get isXFAObject() { + return !0; + } + get isXFAObjectArray() { + return !1; + } + createNodes(e) { + let t = this, + i = null; + for (const { name: a, index: s } of e) { + for (let e = 0, r = isFinite(s) ? s : 0; e <= r; e++) { + const e = t[Hr] === Un ? -1 : t[Hr]; + i = new XmlObject(e, a); + t[js](i); + } + t = i; + } + return i; + } + [Kr](e) { + if (!this[Fn] || !this[Tr](e)) return !1; + const t = e[Yr], + i = this[t]; + if (!(i instanceof XFAObjectArray)) { + null !== i && this[Xr](i); + this[t] = e; + this[js](e); + return !0; + } + if (i.push(e)) { + this[js](e); + return !0; + } + let a = ""; + this.id + ? (a = ` (id: ${this.id})`) + : this.name && (a = ` (name: ${this.name} ${this.h.value})`); + warn(`XFA - node "${this[Yr]}"${a} has already enough "${t}"!`); + return !1; + } + [Tr](e) { + return this.hasOwnProperty(e[Yr]) && e[Hr] === this[Hr]; + } + [Gr]() { + return !1; + } + [Ws]() { + return !1; + } + [Sr]() { + return !1; + } + [kr]() { + return !1; + } + [Pr]() { + this.para && this[mr]()[ar].paraStack.pop(); + } + [Wr]() { + this[mr]()[ar].paraStack.push(this.para); + } + [zr](e) { + this.id && this[Hr] === gn.template.id && e.set(this.id, this); + } + [mr]() { + return this[yr].template; + } + [xr]() { + return !1; + } + [Mr]() { + return !1; + } + [js](e) { + e[Rn] = this; + this[fn].push(e); + !e[yr] && this[yr] && (e[yr] = this[yr]); + } + [Xr](e) { + const t = this[fn].indexOf(e); + this[fn].splice(t, 1); + } + [wr]() { + return this.hasOwnProperty("value"); + } + [$r](e) {} + [qr](e) {} + [sr]() {} + [Vs](e) { + delete this[Fn]; + if (this[_s]) { + e.clean(this[_s]); + delete this[_s]; + } + } + [Dr](e) { + return this[fn].indexOf(e); + } + [Fr](e, t) { + t[Rn] = this; + this[fn].splice(e, 0, t); + !t[yr] && this[yr] && (t[yr] = this[yr]); + } + [Ur]() { + return !this.name; + } + [Jr]() { + return ""; + } + [en]() { + return 0 === this[fn].length + ? this[er] + : this[fn].map((e) => e[en]()).join(""); + } + get [dn]() { + const e = Object.getPrototypeOf(this); + if (!e._attributes) { + const t = (e._attributes = new Set()); + for (const e of Object.getOwnPropertyNames(this)) { + if ( + null === this[e] || + this[e] instanceof XFAObject || + this[e] instanceof XFAObjectArray + ) + break; + t.add(e); + } + } + return shadow(this, dn, e._attributes); + } + [Nr](e) { + let t = this; + for (; t; ) { + if (t === e) return !0; + t = t[pr](); + } + return !1; + } + [pr]() { + return this[Rn]; + } + [fr]() { + return this[pr](); + } + [Er](e = null) { + return e ? this[e] : this[fn]; + } + [ir]() { + const e = Object.create(null); + this[er] && (e.$content = this[er]); + for (const t of Object.getOwnPropertyNames(this)) { + const i = this[t]; + null !== i && + (i instanceof XFAObject + ? (e[t] = i[ir]()) + : i instanceof XFAObjectArray + ? i.isEmpty() || (e[t] = i.dump()) + : (e[t] = i)); + } + return e; + } + [rn]() { + return null; + } + [an]() { + return HTMLResult.EMPTY; + } + *[ur]() { + for (const e of this[Er]()) yield e; + } + *[wn](e, t) { + for (const i of this[ur]()) + if (!e || t === e.has(i[Yr])) { + const e = this[gr](), + t = i[an](e); + t.success || (this[ar].failingNode = i); + yield t; + } + } + [rr]() { + return null; + } + [Xs](e, t) { + this[ar].children.push(e); + } + [gr]() {} + [Zs]({ filter: e = null, include: t = !0 }) { + if (this[ar].generator) { + const e = this[gr](), + t = this[ar].failingNode[an](e); + if (!t.success) return t; + t.html && this[Xs](t.html, t.bbox); + delete this[ar].failingNode; + } else this[ar].generator = this[wn](e, t); + for (;;) { + const e = this[ar].generator.next(); + if (e.done) break; + const t = e.value; + if (!t.success) return t; + t.html && this[Xs](t.html, t.bbox); + } + this[ar].generator = null; + return HTMLResult.EMPTY; + } + [_r](e) { + this[Gn] = new Set(Object.keys(e)); + } + [Dn](e) { + const t = this[dn], + i = this[Gn]; + return [...e].filter((e) => t.has(e) && !i.has(e)); + } + [Zr](e, t = new Set()) { + for (const i of this[fn]) i[Nn](e, t); + } + [Nn](e, t) { + const i = this[bn](e, t); + i ? this[En](i, e, t) : this[Zr](e, t); + } + [bn](e, t) { + const { use: i, usehref: a } = this; + if (!i && !a) return null; + let s = null, + r = null, + n = null, + o = i; + if (a) { + o = a; + a.startsWith("#som(") && a.endsWith(")") + ? (r = a.slice(5, -1)) + : a.startsWith(".#som(") && a.endsWith(")") + ? (r = a.slice(6, -1)) + : a.startsWith("#") + ? (n = a.slice(1)) + : a.startsWith(".#") && (n = a.slice(2)); + } else i.startsWith("#") ? (n = i.slice(1)) : (r = i); + this.use = this.usehref = ""; + if (n) s = e.get(n); + else { + s = searchNode(e.get(jr), this, r, !0, !1); + s && (s = s[0]); + } + if (!s) { + warn(`XFA - Invalid prototype reference: ${o}.`); + return null; + } + if (s[Yr] !== this[Yr]) { + warn(`XFA - Incompatible prototype: ${s[Yr]} !== ${this[Yr]}.`); + return null; + } + if (t.has(s)) { + warn("XFA - Cycle detected in prototypes use."); + return null; + } + t.add(s); + const g = s[bn](e, t); + g && s[En](g, e, t); + s[Zr](e, t); + t.delete(s); + return s; + } + [En](e, t, i) { + if (i.has(e)) { + warn("XFA - Cycle detected in prototypes use."); + return; + } + !this[er] && e[er] && (this[er] = e[er]); + new Set(i).add(e); + for (const t of this[Dn](e[Gn])) { + this[t] = e[t]; + this[Gn] && this[Gn].add(t); + } + for (const a of Object.getOwnPropertyNames(this)) { + if (this[dn].has(a)) continue; + const s = this[a], + r = e[a]; + if (s instanceof XFAObjectArray) { + for (const e of s[fn]) e[Nn](t, i); + for (let a = s[fn].length, n = r[fn].length; a < n; a++) { + const r = e[fn][a][$s](); + if (!s.push(r)) break; + r[Rn] = this; + this[fn].push(r); + r[Nn](t, i); + } + } else if (null === s) { + if (null !== r) { + const e = r[$s](); + e[Rn] = this; + this[a] = e; + this[fn].push(e); + e[Nn](t, i); + } + } else { + s[Zr](t, i); + r && s[En](r, t, i); + } + } + } + static [pn](e) { + return Array.isArray(e) + ? e.map((e) => XFAObject[pn](e)) + : "object" == typeof e && null !== e + ? Object.assign({}, e) + : e; + } + [$s]() { + const e = Object.create(Object.getPrototypeOf(this)); + for (const t of Object.getOwnPropertySymbols(this)) + try { + e[t] = this[t]; + } catch { + shadow(e, t, this[t]); + } + e[nn] = `${e[Yr]}${Mn++}`; + e[fn] = []; + for (const t of Object.getOwnPropertyNames(this)) { + if (this[dn].has(t)) { + e[t] = XFAObject[pn](this[t]); + continue; + } + const i = this[t]; + e[t] = i instanceof XFAObjectArray ? new XFAObjectArray(i[Sn]) : null; + } + for (const t of this[fn]) { + const i = t[Yr], + a = t[$s](); + e[fn].push(a); + a[Rn] = e; + null === e[i] ? (e[i] = a) : e[i][fn].push(a); + } + return e; + } + [Er](e = null) { + return e ? this[fn].filter((t) => t[Yr] === e) : this[fn]; + } + [Ir](e) { + return this[e]; + } + [cr](e, t, i = !0) { + return Array.from(this[hr](e, t, i)); + } + *[hr](e, t, i = !0) { + if ("parent" !== e) { + for (const i of this[fn]) { + i[Yr] === e && (yield i); + i.name === e && (yield i); + (t || i[Ur]()) && (yield* i[hr](e, t, !1)); + } + i && this[dn].has(e) && (yield new XFAAttribute(this, e, this[e])); + } else yield this[Rn]; + } +} +class XFAObjectArray { + constructor(e = 1 / 0) { + this[Sn] = e; + this[fn] = []; + } + get isXFAObject() { + return !1; + } + get isXFAObjectArray() { + return !0; + } + push(e) { + if (this[fn].length <= this[Sn]) { + this[fn].push(e); + return !0; + } + warn(`XFA - node "${e[Yr]}" accepts no more than ${this[Sn]} children`); + return !1; + } + isEmpty() { + return 0 === this[fn].length; + } + dump() { + return 1 === this[fn].length + ? this[fn][0][ir]() + : this[fn].map((e) => e[ir]()); + } + [$s]() { + const e = new XFAObjectArray(this[Sn]); + e[fn] = this[fn].map((e) => e[$s]()); + return e; + } + get children() { + return this[fn]; + } + clear() { + this[fn].length = 0; + } +} +class XFAAttribute { + constructor(e, t, i) { + this[Rn] = e; + this[Yr] = t; + this[er] = i; + this[Ar] = !1; + this[nn] = "attribute" + Mn++; + } + [pr]() { + return this[Rn]; + } + [Rr]() { + return !0; + } + [lr]() { + return this[er].trim(); + } + [$r](e) { + e = e.value || ""; + this[er] = e.toString(); + } + [en]() { + return this[er]; + } + [Nr](e) { + return this[Rn] === e || this[Rn][Nr](e); + } +} +class XmlObject extends XFAObject { + constructor(e, t, i = {}) { + super(e, t); + this[er] = ""; + this[mn] = null; + if ("#text" !== t) { + const e = new Map(); + this[un] = e; + for (const [t, a] of Object.entries(i)) + e.set(t, new XFAAttribute(this, t, a)); + if (i.hasOwnProperty(vr)) { + const e = i[vr].xfa.dataNode; + void 0 !== e && + ("dataGroup" === e + ? (this[mn] = !1) + : "dataValue" === e && (this[mn] = !0)); + } + } + this[Ar] = !1; + } + [sn](e) { + const t = this[Yr]; + if ("#text" === t) { + e.push(encodeToXmlString(this[er])); + return; + } + const i = utf8StringToString(t), + a = this[Hr] === Un ? "xfa:" : ""; + e.push(`<${a}${i}`); + for (const [t, i] of this[un].entries()) { + const a = utf8StringToString(t); + e.push(` ${a}="${encodeToXmlString(i[er])}"`); + } + null !== this[mn] && + (this[mn] + ? e.push(' xfa:dataNode="dataValue"') + : e.push(' xfa:dataNode="dataGroup"')); + if (this[er] || 0 !== this[fn].length) { + e.push(">"); + if (this[er]) + "string" == typeof this[er] + ? e.push(encodeToXmlString(this[er])) + : this[er][sn](e); + else for (const t of this[fn]) t[sn](e); + e.push(``); + } else e.push("/>"); + } + [Kr](e) { + if (this[er]) { + const e = new XmlObject(this[Hr], "#text"); + this[js](e); + e[er] = this[er]; + this[er] = ""; + } + this[js](e); + return !0; + } + [qr](e) { + this[er] += e; + } + [sr]() { + if (this[er] && this[fn].length > 0) { + const e = new XmlObject(this[Hr], "#text"); + this[js](e); + e[er] = this[er]; + delete this[er]; + } + } + [an]() { + return "#text" === this[Yr] + ? HTMLResult.success({ name: "#text", value: this[er] }) + : HTMLResult.EMPTY; + } + [Er](e = null) { + return e ? this[fn].filter((t) => t[Yr] === e) : this[fn]; + } + [or]() { + return this[un]; + } + [Ir](e) { + const t = this[un].get(e); + return void 0 !== t ? t : this[Er](e); + } + *[hr](e, t) { + const i = this[un].get(e); + i && (yield i); + for (const i of this[fn]) { + i[Yr] === e && (yield i); + t && (yield* i[hr](e, t)); + } + } + *[nr](e, t) { + const i = this[un].get(e); + !i || (t && i[Ar]) || (yield i); + for (const i of this[fn]) yield* i[nr](e, t); + } + *[Qr](e, t, i) { + for (const a of this[fn]) { + a[Yr] !== e || (i && a[Ar]) || (yield a); + t && (yield* a[Qr](e, t, i)); + } + } + [Rr]() { + return null === this[mn] + ? 0 === this[fn].length || this[fn][0][Hr] === gn.xhtml.id + : this[mn]; + } + [lr]() { + return null === this[mn] + ? 0 === this[fn].length + ? this[er].trim() + : this[fn][0][Hr] === gn.xhtml.id + ? this[fn][0][en]().trim() + : null + : this[er].trim(); + } + [$r](e) { + e = e.value || ""; + this[er] = e.toString(); + } + [ir](e = !1) { + const t = Object.create(null); + e && (t.$ns = this[Hr]); + this[er] && (t.$content = this[er]); + t.$name = this[Yr]; + t.children = []; + for (const i of this[fn]) t.children.push(i[ir](e)); + t.attributes = Object.create(null); + for (const [e, i] of this[un]) t.attributes[e] = i[er]; + return t; + } +} +class ContentObject extends XFAObject { + constructor(e, t) { + super(e, t); + this[er] = ""; + } + [qr](e) { + this[er] += e; + } + [sr]() {} +} +class OptionObject extends ContentObject { + constructor(e, t, i) { + super(e, t); + this[kn] = i; + } + [sr]() { + this[er] = getKeyword({ + data: this[er], + defaultValue: this[kn][0], + validate: (e) => this[kn].includes(e), + }); + } + [Vs](e) { + super[Vs](e); + delete this[kn]; + } +} +class StringObject extends ContentObject { + [sr]() { + this[er] = this[er].trim(); + } +} +class IntegerObject extends ContentObject { + constructor(e, t, i, a) { + super(e, t); + this[yn] = i; + this[xn] = a; + } + [sr]() { + this[er] = getInteger({ + data: this[er], + defaultValue: this[yn], + validate: this[xn], + }); + } + [Vs](e) { + super[Vs](e); + delete this[yn]; + delete this[xn]; + } +} +class Option01 extends IntegerObject { + constructor(e, t) { + super(e, t, 0, (e) => 1 === e); + } +} +class Option10 extends IntegerObject { + constructor(e, t) { + super(e, t, 1, (e) => 0 === e); + } +} +function measureToString(e) { + return "string" == typeof e + ? "0px" + : Number.isInteger(e) + ? `${e}px` + : `${e.toFixed(2)}px`; +} +const Ln = { + anchorType(e, t) { + const i = e[fr](); + if (i && (!i.layout || "position" === i.layout)) { + "transform" in t || (t.transform = ""); + switch (e.anchorType) { + case "bottomCenter": + t.transform += "translate(-50%, -100%)"; + break; + case "bottomLeft": + t.transform += "translate(0,-100%)"; + break; + case "bottomRight": + t.transform += "translate(-100%,-100%)"; + break; + case "middleCenter": + t.transform += "translate(-50%,-50%)"; + break; + case "middleLeft": + t.transform += "translate(0,-50%)"; + break; + case "middleRight": + t.transform += "translate(-100%,-50%)"; + break; + case "topCenter": + t.transform += "translate(-50%,0)"; + break; + case "topRight": + t.transform += "translate(-100%,0)"; + } + } + }, + dimensions(e, t) { + const i = e[fr](); + let a = e.w; + const s = e.h; + if (i.layout?.includes("row")) { + const t = i[ar], + s = e.colSpan; + let r; + if (-1 === s) { + r = t.columnWidths.slice(t.currentColumn).reduce((e, t) => e + t, 0); + t.currentColumn = 0; + } else { + r = t.columnWidths + .slice(t.currentColumn, t.currentColumn + s) + .reduce((e, t) => e + t, 0); + t.currentColumn = (t.currentColumn + e.colSpan) % t.columnWidths.length; + } + isNaN(r) || (a = e.w = r); + } + t.width = "" !== a ? measureToString(a) : "auto"; + t.height = "" !== s ? measureToString(s) : "auto"; + }, + position(e, t) { + const i = e[fr](); + if (!i?.layout || "position" === i.layout) { + t.position = "absolute"; + t.left = measureToString(e.x); + t.top = measureToString(e.y); + } + }, + rotate(e, t) { + if (e.rotate) { + "transform" in t || (t.transform = ""); + t.transform += `rotate(-${e.rotate}deg)`; + t.transformOrigin = "top left"; + } + }, + presence(e, t) { + switch (e.presence) { + case "invisible": + t.visibility = "hidden"; + break; + case "hidden": + case "inactive": + t.display = "none"; + } + }, + hAlign(e, t) { + if ("para" === e[Yr]) + switch (e.hAlign) { + case "justifyAll": + t.textAlign = "justify-all"; + break; + case "radix": + t.textAlign = "left"; + break; + default: + t.textAlign = e.hAlign; + } + else + switch (e.hAlign) { + case "left": + t.alignSelf = "start"; + break; + case "center": + t.alignSelf = "center"; + break; + case "right": + t.alignSelf = "end"; + } + }, + margin(e, t) { + e.margin && (t.margin = e.margin[rn]().margin); + }, +}; +function setMinMaxDimensions(e, t) { + if ("position" === e[fr]().layout) { + e.minW > 0 && (t.minWidth = measureToString(e.minW)); + e.maxW > 0 && (t.maxWidth = measureToString(e.maxW)); + e.minH > 0 && (t.minHeight = measureToString(e.minH)); + e.maxH > 0 && (t.maxHeight = measureToString(e.maxH)); + } +} +function layoutText(e, t, i, a, s, r) { + const n = new TextMeasure(t, i, a, s); + "string" == typeof e ? n.addString(e) : e[Or](n); + return n.compute(r); +} +function layoutNode(e, t) { + let i = null, + a = null, + s = !1; + if ((!e.w || !e.h) && e.value) { + let r = 0, + n = 0; + if (e.margin) { + r = e.margin.leftInset + e.margin.rightInset; + n = e.margin.topInset + e.margin.bottomInset; + } + let o = null, + g = null; + if (e.para) { + g = Object.create(null); + o = "" === e.para.lineHeight ? null : e.para.lineHeight; + g.top = "" === e.para.spaceAbove ? 0 : e.para.spaceAbove; + g.bottom = "" === e.para.spaceBelow ? 0 : e.para.spaceBelow; + g.left = "" === e.para.marginLeft ? 0 : e.para.marginLeft; + g.right = "" === e.para.marginRight ? 0 : e.para.marginRight; + } + let c = e.font; + if (!c) { + const t = e[mr](); + let i = e[pr](); + for (; i && i !== t; ) { + if (i.font) { + c = i.font; + break; + } + i = i[pr](); + } + } + const h = (e.w || t.width) - r, + l = e[yr].fontFinder; + if ( + e.value.exData && + e.value.exData[er] && + "text/html" === e.value.exData.contentType + ) { + const t = layoutText(e.value.exData[er], c, g, o, l, h); + a = t.width; + i = t.height; + s = t.isBroken; + } else { + const t = e.value[en](); + if (t) { + const e = layoutText(t, c, g, o, l, h); + a = e.width; + i = e.height; + s = e.isBroken; + } + } + null === a || e.w || (a += r); + null === i || e.h || (i += n); + } + return { w: a, h: i, isBroken: s }; +} +function computeBbox(e, t, i) { + let a; + if ("" !== e.w && "" !== e.h) a = [e.x, e.y, e.w, e.h]; + else { + if (!i) return null; + let s = e.w; + if ("" === s) { + if (0 === e.maxW) { + const t = e[fr](); + s = "position" === t.layout && "" !== t.w ? 0 : e.minW; + } else s = Math.min(e.maxW, i.width); + t.attributes.style.width = measureToString(s); + } + let r = e.h; + if ("" === r) { + if (0 === e.maxH) { + const t = e[fr](); + r = "position" === t.layout && "" !== t.h ? 0 : e.minH; + } else r = Math.min(e.maxH, i.height); + t.attributes.style.height = measureToString(r); + } + a = [e.x, e.y, s, r]; + } + return a; +} +function fixDimensions(e) { + const t = e[fr](); + if (t.layout?.includes("row")) { + const i = t[ar], + a = e.colSpan; + let s; + s = + -1 === a + ? i.columnWidths.slice(i.currentColumn).reduce((e, t) => e + t, 0) + : i.columnWidths + .slice(i.currentColumn, i.currentColumn + a) + .reduce((e, t) => e + t, 0); + isNaN(s) || (e.w = s); + } + t.layout && "position" !== t.layout && (e.x = e.y = 0); + "table" === e.layout && + "" === e.w && + Array.isArray(e.columnWidths) && + (e.w = e.columnWidths.reduce((e, t) => e + t, 0)); +} +function layoutClass(e) { + switch (e.layout) { + case "position": + default: + return "xfaPosition"; + case "lr-tb": + return "xfaLrTb"; + case "rl-row": + return "xfaRlRow"; + case "rl-tb": + return "xfaRlTb"; + case "row": + return "xfaRow"; + case "table": + return "xfaTable"; + case "tb": + return "xfaTb"; + } +} +function toStyle(e, ...t) { + const i = Object.create(null); + for (const a of t) { + const t = e[a]; + if (null !== t) + if (Ln.hasOwnProperty(a)) Ln[a](e, i); + else if (t instanceof XFAObject) { + const e = t[rn](); + e + ? Object.assign(i, e) + : warn(`(DEBUG) - XFA - style for ${a} not implemented yet`); + } + } + return i; +} +function createWrapper(e, t) { + const { attributes: i } = t, + { style: a } = i, + s = { + name: "div", + attributes: { class: ["xfaWrapper"], style: Object.create(null) }, + children: [], + }; + i.class.push("xfaWrapped"); + if (e.border) { + const { widths: i, insets: r } = e.border[ar]; + let n, + o, + g = r[0], + c = r[3]; + const h = r[0] + r[2], + l = r[1] + r[3]; + switch (e.border.hand) { + case "even": + g -= i[0] / 2; + c -= i[3] / 2; + n = `calc(100% + ${(i[1] + i[3]) / 2 - l}px)`; + o = `calc(100% + ${(i[0] + i[2]) / 2 - h}px)`; + break; + case "left": + g -= i[0]; + c -= i[3]; + n = `calc(100% + ${i[1] + i[3] - l}px)`; + o = `calc(100% + ${i[0] + i[2] - h}px)`; + break; + case "right": + n = l ? `calc(100% - ${l}px)` : "100%"; + o = h ? `calc(100% - ${h}px)` : "100%"; + } + const C = ["xfaBorder"]; + isPrintOnly(e.border) && C.push("xfaPrintOnly"); + const Q = { + name: "div", + attributes: { + class: C, + style: { top: `${g}px`, left: `${c}px`, width: n, height: o }, + }, + children: [], + }; + for (const e of [ + "border", + "borderWidth", + "borderColor", + "borderRadius", + "borderStyle", + ]) + if (void 0 !== a[e]) { + Q.attributes.style[e] = a[e]; + delete a[e]; + } + s.children.push(Q, t); + } else s.children.push(t); + for (const e of [ + "background", + "backgroundClip", + "top", + "left", + "width", + "height", + "minWidth", + "minHeight", + "maxWidth", + "maxHeight", + "transform", + "transformOrigin", + "visibility", + ]) + if (void 0 !== a[e]) { + s.attributes.style[e] = a[e]; + delete a[e]; + } + s.attributes.style.position = + "absolute" === a.position ? "absolute" : "relative"; + delete a.position; + if (a.alignSelf) { + s.attributes.style.alignSelf = a.alignSelf; + delete a.alignSelf; + } + return s; +} +function fixTextIndent(e) { + const t = getMeasurement(e.textIndent, "0px"); + if (t >= 0) return; + const i = + "padding" + + ("left" === ("right" === e.textAlign ? "right" : "left") + ? "Left" + : "Right"), + a = getMeasurement(e[i], "0px"); + e[i] = a - t + "px"; +} +function setAccess(e, t) { + switch (e.access) { + case "nonInteractive": + t.push("xfaNonInteractive"); + break; + case "readOnly": + t.push("xfaReadOnly"); + break; + case "protected": + t.push("xfaDisabled"); + } +} +function isPrintOnly(e) { + return ( + e.relevant.length > 0 && + !e.relevant[0].excluded && + "print" === e.relevant[0].viewname + ); +} +function getCurrentPara(e) { + const t = e[mr]()[ar].paraStack; + return t.length ? t.at(-1) : null; +} +function setPara(e, t, i) { + if (i.attributes.class?.includes("xfaRich")) { + if (t) { + "" === e.h && (t.height = "auto"); + "" === e.w && (t.width = "auto"); + } + const a = getCurrentPara(e); + if (a) { + const e = i.attributes.style; + e.display = "flex"; + e.flexDirection = "column"; + switch (a.vAlign) { + case "top": + e.justifyContent = "start"; + break; + case "bottom": + e.justifyContent = "end"; + break; + case "middle": + e.justifyContent = "center"; + } + const t = a[rn](); + for (const [i, a] of Object.entries(t)) i in e || (e[i] = a); + } + } +} +function setFontFamily(e, t, i, a) { + if (!i) { + delete a.fontFamily; + return; + } + const s = stripQuotes(e.typeface); + a.fontFamily = `"${s}"`; + const r = i.find(s); + if (r) { + const { fontFamily: i } = r.regular.cssFontInfo; + i !== s && (a.fontFamily = `"${i}"`); + const n = getCurrentPara(t); + if (n && "" !== n.lineHeight) return; + if (a.lineHeight) return; + const o = selectFont(e, r); + o && (a.lineHeight = Math.max(1.2, o.lineHeight)); + } +} +function fixURL(e) { + const t = createValidAbsoluteUrl(e, null, { + addDefaultProtocol: !0, + tryConvertEncoding: !0, + }); + return t ? t.href : null; +} +function createLine(e, t) { + return { + name: "div", + attributes: { class: ["lr-tb" === e.layout ? "xfaLr" : "xfaRl"] }, + children: t, + }; +} +function flushHTML(e) { + if (!e[ar]) return null; + const t = { + name: "div", + attributes: e[ar].attributes, + children: e[ar].children, + }; + if (e[ar].failingNode) { + const i = e[ar].failingNode[rr](); + i && + (e.layout.endsWith("-tb") + ? t.children.push(createLine(e, [i])) + : t.children.push(i)); + } + return 0 === t.children.length ? null : t; +} +function addHTML(e, t, i) { + const a = e[ar], + s = a.availableSpace, + [r, n, o, g] = i; + switch (e.layout) { + case "position": + a.width = Math.max(a.width, r + o); + a.height = Math.max(a.height, n + g); + a.children.push(t); + break; + case "lr-tb": + case "rl-tb": + if (!a.line || 1 === a.attempt) { + a.line = createLine(e, []); + a.children.push(a.line); + a.numberInLine = 0; + } + a.numberInLine += 1; + a.line.children.push(t); + if (0 === a.attempt) { + a.currentWidth += o; + a.height = Math.max(a.height, a.prevHeight + g); + } else { + a.currentWidth = o; + a.prevHeight = a.height; + a.height += g; + a.attempt = 0; + } + a.width = Math.max(a.width, a.currentWidth); + break; + case "rl-row": + case "row": { + a.children.push(t); + a.width += o; + a.height = Math.max(a.height, g); + const e = measureToString(a.height); + for (const t of a.children) t.attributes.style.height = e; + break; + } + case "table": + case "tb": + a.width = Math.min(s.width, Math.max(a.width, o)); + a.height += g; + a.children.push(t); + } +} +function getAvailableSpace(e) { + const t = e[ar].availableSpace, + i = e.margin ? e.margin.topInset + e.margin.bottomInset : 0, + a = e.margin ? e.margin.leftInset + e.margin.rightInset : 0; + switch (e.layout) { + case "lr-tb": + case "rl-tb": + return 0 === e[ar].attempt + ? { + width: t.width - a - e[ar].currentWidth, + height: t.height - i - e[ar].prevHeight, + } + : { width: t.width - a, height: t.height - i - e[ar].height }; + case "rl-row": + case "row": + return { + width: e[ar].columnWidths + .slice(e[ar].currentColumn) + .reduce((e, t) => e + t), + height: t.height - a, + }; + case "table": + case "tb": + return { width: t.width - a, height: t.height - i - e[ar].height }; + default: + return t; + } +} +function checkDimensions(e, t) { + if (null === e[mr]()[ar].firstUnsplittable) return !0; + if (0 === e.w || 0 === e.h) return !0; + const i = e[fr](), + a = i[ar]?.attempt || 0, + [, s, r, n] = (function getTransformedBBox(e) { + let t, + i, + a = "" === e.w ? NaN : e.w, + s = "" === e.h ? NaN : e.h, + [r, n] = [0, 0]; + switch (e.anchorType || "") { + case "bottomCenter": + [r, n] = [a / 2, s]; + break; + case "bottomLeft": + [r, n] = [0, s]; + break; + case "bottomRight": + [r, n] = [a, s]; + break; + case "middleCenter": + [r, n] = [a / 2, s / 2]; + break; + case "middleLeft": + [r, n] = [0, s / 2]; + break; + case "middleRight": + [r, n] = [a, s / 2]; + break; + case "topCenter": + [r, n] = [a / 2, 0]; + break; + case "topRight": + [r, n] = [a, 0]; + } + switch (e.rotate || 0) { + case 0: + [t, i] = [-r, -n]; + break; + case 90: + [t, i] = [-n, r]; + [a, s] = [s, -a]; + break; + case 180: + [t, i] = [r, n]; + [a, s] = [-a, -s]; + break; + case 270: + [t, i] = [n, -r]; + [a, s] = [-s, a]; + } + return [ + e.x + t + Math.min(0, a), + e.y + i + Math.min(0, s), + Math.abs(a), + Math.abs(s), + ]; + })(e); + switch (i.layout) { + case "lr-tb": + case "rl-tb": + return 0 === a + ? e[mr]()[ar].noLayoutFailure + ? "" !== e.w + ? Math.round(r - t.width) <= 2 + : t.width > 2 + : !("" !== e.h && Math.round(n - t.height) > 2) && + ("" !== e.w + ? Math.round(r - t.width) <= 2 || + (0 === i[ar].numberInLine && t.height > 2) + : t.width > 2) + : !!e[mr]()[ar].noLayoutFailure || + (!("" !== e.h && Math.round(n - t.height) > 2) && + ("" === e.w || Math.round(r - t.width) <= 2 || !i[Mr]()) && + t.height > 2); + case "table": + case "tb": + return ( + !!e[mr]()[ar].noLayoutFailure || + ("" === e.h || e[xr]() + ? ("" === e.w || Math.round(r - t.width) <= 2 || !i[Mr]()) && + t.height > 2 + : Math.round(n - t.height) <= 2) + ); + case "position": + if (e[mr]()[ar].noLayoutFailure) return !0; + if ("" === e.h || Math.round(n + s - t.height) <= 2) return !0; + return n + s > e[mr]()[ar].currentContentArea.h; + case "rl-row": + case "row": + return ( + !!e[mr]()[ar].noLayoutFailure || + "" === e.h || + Math.round(n - t.height) <= 2 + ); + default: + return !0; + } +} +const Jn = gn.template.id, + Hn = "http://www.w3.org/2000/svg", + Yn = /^H(\d+)$/, + vn = new Set([ + "image/gif", + "image/jpeg", + "image/jpg", + "image/pjpeg", + "image/png", + "image/apng", + "image/x-png", + "image/bmp", + "image/x-ms-bmp", + "image/tiff", + "image/tif", + "application/octet-stream", + ]), + Kn = [ + [[66, 77], "image/bmp"], + [[255, 216, 255], "image/jpeg"], + [[73, 73, 42, 0], "image/tiff"], + [[77, 77, 0, 42], "image/tiff"], + [[71, 73, 70, 56, 57, 97], "image/gif"], + [[137, 80, 78, 71, 13, 10, 26, 10], "image/png"], + ]; +function getBorderDims(e) { + if (!e || !e.border) return { w: 0, h: 0 }; + const t = e.border[Cr](); + return t + ? { + w: t.widths[0] + t.widths[2] + t.insets[0] + t.insets[2], + h: t.widths[1] + t.widths[3] + t.insets[1] + t.insets[3], + } + : { w: 0, h: 0 }; +} +function hasMargin(e) { + return ( + e.margin && + (e.margin.topInset || + e.margin.rightInset || + e.margin.bottomInset || + e.margin.leftInset) + ); +} +function _setValue(e, t) { + if (!e.value) { + const t = new Value({}); + e[js](t); + e.value = t; + } + e.value[$r](t); +} +function* getContainedChildren(e) { + for (const t of e[Er]()) t instanceof SubformSet ? yield* t[ur]() : yield t; +} +function isRequired(e) { + return "error" === e.validate?.nullTest; +} +function setTabIndex(e) { + for (; e; ) { + if (!e.traversal) { + e[An] = e[pr]()[An]; + return; + } + if (e[An]) return; + let t = null; + for (const i of e.traversal[Er]()) + if ("next" === i.operation) { + t = i; + break; + } + if (!t || !t.ref) { + e[An] = e[pr]()[An]; + return; + } + const i = e[mr](); + e[An] = ++i[An]; + const a = i[Vr](t.ref, e); + if (!a) return; + e = a[0]; + } +} +function applyAssist(e, t) { + const i = e.assist; + if (i) { + const e = i[an](); + e && (t.title = e); + const a = i.role.match(Yn); + if (a) { + const e = "heading", + i = a[1]; + t.role = e; + t["aria-level"] = i; + } + } + if ("table" === e.layout) t.role = "table"; + else if ("row" === e.layout) t.role = "row"; + else { + const i = e[pr](); + "row" === i.layout && + (t.role = "TH" === i.assist?.role ? "columnheader" : "cell"); + } +} +function ariaLabel(e) { + if (!e.assist) return null; + const t = e.assist; + return t.speak && "" !== t.speak[er] + ? t.speak[er] + : t.toolTip + ? t.toolTip[er] + : null; +} +function valueToHtml(e) { + return HTMLResult.success({ + name: "div", + attributes: { class: ["xfaRich"], style: Object.create(null) }, + children: [ + { name: "span", attributes: { style: Object.create(null) }, value: e }, + ], + }); +} +function setFirstUnsplittable(e) { + const t = e[mr](); + if (null === t[ar].firstUnsplittable) { + t[ar].firstUnsplittable = e; + t[ar].noLayoutFailure = !0; + } +} +function unsetFirstUnsplittable(e) { + const t = e[mr](); + t[ar].firstUnsplittable === e && (t[ar].noLayoutFailure = !1); +} +function handleBreak(e) { + if (e[ar]) return !1; + e[ar] = Object.create(null); + if ("auto" === e.targetType) return !1; + const t = e[mr](); + let i = null; + if (e.target) { + i = t[Vr](e.target, e[pr]()); + if (!i) return !1; + i = i[0]; + } + const { currentPageArea: a, currentContentArea: s } = t[ar]; + if ("pageArea" === e.targetType) { + i instanceof PageArea || (i = null); + if (e.startNew) { + e[ar].target = i || a; + return !0; + } + if (i && i !== a) { + e[ar].target = i; + return !0; + } + return !1; + } + i instanceof ContentArea || (i = null); + const r = i && i[pr](); + let n, + o = r; + if (e.startNew) + if (i) { + const e = r.contentArea.children, + t = e.indexOf(s), + a = e.indexOf(i); + -1 !== t && t < a && (o = null); + n = a - 1; + } else n = a.contentArea.children.indexOf(s); + else { + if (!i || i === s) return !1; + n = r.contentArea.children.indexOf(i) - 1; + o = r === a ? null : r; + } + e[ar].target = o; + e[ar].index = n; + return !0; +} +function handleOverflow(e, t, i) { + const a = e[mr](), + s = a[ar].noLayoutFailure, + r = t[fr]; + t[fr] = () => e; + a[ar].noLayoutFailure = !0; + const n = t[an](i); + e[Xs](n.html, n.bbox); + a[ar].noLayoutFailure = s; + t[fr] = r; +} +class AppearanceFilter extends StringObject { + constructor(e) { + super(Jn, "appearanceFilter"); + this.id = e.id || ""; + this.type = getStringOption(e.type, ["optional", "required"]); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class Arc extends XFAObject { + constructor(e) { + super(Jn, "arc", !0); + this.circular = getInteger({ + data: e.circular, + defaultValue: 0, + validate: (e) => 1 === e, + }); + this.hand = getStringOption(e.hand, ["even", "left", "right"]); + this.id = e.id || ""; + this.startAngle = getFloat({ + data: e.startAngle, + defaultValue: 0, + validate: (e) => !0, + }); + this.sweepAngle = getFloat({ + data: e.sweepAngle, + defaultValue: 360, + validate: (e) => !0, + }); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.edge = null; + this.fill = null; + } + [an]() { + const e = this.edge || new Edge({}), + t = e[rn](), + i = Object.create(null); + "visible" === this.fill?.presence + ? Object.assign(i, this.fill[rn]()) + : (i.fill = "transparent"); + i.strokeWidth = measureToString("visible" === e.presence ? e.thickness : 0); + i.stroke = t.color; + let a; + const s = { + xmlns: Hn, + style: { width: "100%", height: "100%", overflow: "visible" }, + }; + if (360 === this.sweepAngle) + a = { + name: "ellipse", + attributes: { + xmlns: Hn, + cx: "50%", + cy: "50%", + rx: "50%", + ry: "50%", + style: i, + }, + }; + else { + const e = (this.startAngle * Math.PI) / 180, + t = (this.sweepAngle * Math.PI) / 180, + r = this.sweepAngle > 180 ? 1 : 0, + [n, o, g, c] = [ + 50 * (1 + Math.cos(e)), + 50 * (1 - Math.sin(e)), + 50 * (1 + Math.cos(e + t)), + 50 * (1 - Math.sin(e + t)), + ]; + a = { + name: "path", + attributes: { + xmlns: Hn, + d: `M ${n} ${o} A 50 50 0 ${r} 0 ${g} ${c}`, + vectorEffect: "non-scaling-stroke", + style: i, + }, + }; + Object.assign(s, { viewBox: "0 0 100 100", preserveAspectRatio: "none" }); + } + const r = { name: "svg", children: [a], attributes: s }; + if (hasMargin(this[pr]()[pr]())) + return HTMLResult.success({ + name: "div", + attributes: { + style: { display: "inline", width: "100%", height: "100%" }, + }, + children: [r], + }); + r.attributes.style.position = "absolute"; + return HTMLResult.success(r); + } +} +class Area extends XFAObject { + constructor(e) { + super(Jn, "area", !0); + this.colSpan = getInteger({ + data: e.colSpan, + defaultValue: 1, + validate: (e) => e >= 1 || -1 === e, + }); + this.id = e.id || ""; + this.name = e.name || ""; + this.relevant = getRelevant(e.relevant); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.x = getMeasurement(e.x, "0pt"); + this.y = getMeasurement(e.y, "0pt"); + this.desc = null; + this.extras = null; + this.area = new XFAObjectArray(); + this.draw = new XFAObjectArray(); + this.exObject = new XFAObjectArray(); + this.exclGroup = new XFAObjectArray(); + this.field = new XFAObjectArray(); + this.subform = new XFAObjectArray(); + this.subformSet = new XFAObjectArray(); + } + *[ur]() { + yield* getContainedChildren(this); + } + [Ur]() { + return !0; + } + [kr]() { + return !0; + } + [Xs](e, t) { + const [i, a, s, r] = t; + this[ar].width = Math.max(this[ar].width, i + s); + this[ar].height = Math.max(this[ar].height, a + r); + this[ar].children.push(e); + } + [gr]() { + return this[ar].availableSpace; + } + [an](e) { + const t = toStyle(this, "position"), + i = { style: t, id: this[nn], class: ["xfaArea"] }; + isPrintOnly(this) && i.class.push("xfaPrintOnly"); + this.name && (i.xfaName = this.name); + const a = []; + this[ar] = { children: a, width: 0, height: 0, availableSpace: e }; + const s = this[Zs]({ + filter: new Set([ + "area", + "draw", + "field", + "exclGroup", + "subform", + "subformSet", + ]), + include: !0, + }); + if (!s.success) { + if (s.isBreak()) return s; + delete this[ar]; + return HTMLResult.FAILURE; + } + t.width = measureToString(this[ar].width); + t.height = measureToString(this[ar].height); + const r = { name: "div", attributes: i, children: a }, + n = [this.x, this.y, this[ar].width, this[ar].height]; + delete this[ar]; + return HTMLResult.success(r, n); + } +} +class Assist extends XFAObject { + constructor(e) { + super(Jn, "assist", !0); + this.id = e.id || ""; + this.role = e.role || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.speak = null; + this.toolTip = null; + } + [an]() { + return this.toolTip?.[er] || null; + } +} +class Barcode extends XFAObject { + constructor(e) { + super(Jn, "barcode", !0); + this.charEncoding = getKeyword({ + data: e.charEncoding ? e.charEncoding.toLowerCase() : "", + defaultValue: "", + validate: (e) => + [ + "utf-8", + "big-five", + "fontspecific", + "gbk", + "gb-18030", + "gb-2312", + "ksc-5601", + "none", + "shift-jis", + "ucs-2", + "utf-16", + ].includes(e) || e.match(/iso-8859-\d{2}/), + }); + this.checksum = getStringOption(e.checksum, [ + "none", + "1mod10", + "1mod10_1mod11", + "2mod10", + "auto", + ]); + this.dataColumnCount = getInteger({ + data: e.dataColumnCount, + defaultValue: -1, + validate: (e) => e >= 0, + }); + this.dataLength = getInteger({ + data: e.dataLength, + defaultValue: -1, + validate: (e) => e >= 0, + }); + this.dataPrep = getStringOption(e.dataPrep, ["none", "flateCompress"]); + this.dataRowCount = getInteger({ + data: e.dataRowCount, + defaultValue: -1, + validate: (e) => e >= 0, + }); + this.endChar = e.endChar || ""; + this.errorCorrectionLevel = getInteger({ + data: e.errorCorrectionLevel, + defaultValue: -1, + validate: (e) => e >= 0 && e <= 8, + }); + this.id = e.id || ""; + this.moduleHeight = getMeasurement(e.moduleHeight, "5mm"); + this.moduleWidth = getMeasurement(e.moduleWidth, "0.25mm"); + this.printCheckDigit = getInteger({ + data: e.printCheckDigit, + defaultValue: 0, + validate: (e) => 1 === e, + }); + this.rowColumnRatio = getRatio(e.rowColumnRatio); + this.startChar = e.startChar || ""; + this.textLocation = getStringOption(e.textLocation, [ + "below", + "above", + "aboveEmbedded", + "belowEmbedded", + "none", + ]); + this.truncate = getInteger({ + data: e.truncate, + defaultValue: 0, + validate: (e) => 1 === e, + }); + this.type = getStringOption(e.type ? e.type.toLowerCase() : "", [ + "aztec", + "codabar", + "code2of5industrial", + "code2of5interleaved", + "code2of5matrix", + "code2of5standard", + "code3of9", + "code3of9extended", + "code11", + "code49", + "code93", + "code128", + "code128a", + "code128b", + "code128c", + "code128sscc", + "datamatrix", + "ean8", + "ean8add2", + "ean8add5", + "ean13", + "ean13add2", + "ean13add5", + "ean13pwcd", + "fim", + "logmars", + "maxicode", + "msi", + "pdf417", + "pdf417macro", + "plessey", + "postauscust2", + "postauscust3", + "postausreplypaid", + "postausstandard", + "postukrm4scc", + "postusdpbc", + "postusimb", + "postusstandard", + "postus5zip", + "qrcode", + "rfid", + "rss14", + "rss14expanded", + "rss14limited", + "rss14stacked", + "rss14stackedomni", + "rss14truncated", + "telepen", + "ucc128", + "ucc128random", + "ucc128sscc", + "upca", + "upcaadd2", + "upcaadd5", + "upcapwcd", + "upce", + "upceadd2", + "upceadd5", + "upcean2", + "upcean5", + "upsmaxicode", + ]); + this.upsMode = getStringOption(e.upsMode, [ + "usCarrier", + "internationalCarrier", + "secureSymbol", + "standardSymbol", + ]); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.wideNarrowRatio = getRatio(e.wideNarrowRatio); + this.encrypt = null; + this.extras = null; + } +} +class Bind extends XFAObject { + constructor(e) { + super(Jn, "bind", !0); + this.match = getStringOption(e.match, [ + "once", + "dataRef", + "global", + "none", + ]); + this.ref = e.ref || ""; + this.picture = null; + } +} +class BindItems extends XFAObject { + constructor(e) { + super(Jn, "bindItems"); + this.connection = e.connection || ""; + this.labelRef = e.labelRef || ""; + this.ref = e.ref || ""; + this.valueRef = e.valueRef || ""; + } +} +class Bookend extends XFAObject { + constructor(e) { + super(Jn, "bookend"); + this.id = e.id || ""; + this.leader = e.leader || ""; + this.trailer = e.trailer || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class BooleanElement extends Option01 { + constructor(e) { + super(Jn, "boolean"); + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } + [an](e) { + return valueToHtml(1 === this[er] ? "1" : "0"); + } +} +class Border extends XFAObject { + constructor(e) { + super(Jn, "border", !0); + this.break = getStringOption(e.break, ["close", "open"]); + this.hand = getStringOption(e.hand, ["even", "left", "right"]); + this.id = e.id || ""; + this.presence = getStringOption(e.presence, [ + "visible", + "hidden", + "inactive", + "invisible", + ]); + this.relevant = getRelevant(e.relevant); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.corner = new XFAObjectArray(4); + this.edge = new XFAObjectArray(4); + this.extras = null; + this.fill = null; + this.margin = null; + } + [Cr]() { + if (!this[ar]) { + const e = this.edge.children.slice(); + if (e.length < 4) { + const t = e.at(-1) || new Edge({}); + for (let i = e.length; i < 4; i++) e.push(t); + } + const t = e.map((e) => e.thickness), + i = [0, 0, 0, 0]; + if (this.margin) { + i[0] = this.margin.topInset; + i[1] = this.margin.rightInset; + i[2] = this.margin.bottomInset; + i[3] = this.margin.leftInset; + } + this[ar] = { widths: t, insets: i, edges: e }; + } + return this[ar]; + } + [rn]() { + const { edges: e } = this[Cr](), + t = e.map((e) => { + const t = e[rn](); + t.color ||= "#000000"; + return t; + }), + i = Object.create(null); + this.margin && Object.assign(i, this.margin[rn]()); + "visible" === this.fill?.presence && Object.assign(i, this.fill[rn]()); + if (this.corner.children.some((e) => 0 !== e.radius)) { + const e = this.corner.children.map((e) => e[rn]()); + if (2 === e.length || 3 === e.length) { + const t = e.at(-1); + for (let i = e.length; i < 4; i++) e.push(t); + } + i.borderRadius = e.map((e) => e.radius).join(" "); + } + switch (this.presence) { + case "invisible": + case "hidden": + i.borderStyle = ""; + break; + case "inactive": + i.borderStyle = "none"; + break; + default: + i.borderStyle = t.map((e) => e.style).join(" "); + } + i.borderWidth = t.map((e) => e.width).join(" "); + i.borderColor = t.map((e) => e.color).join(" "); + return i; + } +} +class Break extends XFAObject { + constructor(e) { + super(Jn, "break", !0); + this.after = getStringOption(e.after, [ + "auto", + "contentArea", + "pageArea", + "pageEven", + "pageOdd", + ]); + this.afterTarget = e.afterTarget || ""; + this.before = getStringOption(e.before, [ + "auto", + "contentArea", + "pageArea", + "pageEven", + "pageOdd", + ]); + this.beforeTarget = e.beforeTarget || ""; + this.bookendLeader = e.bookendLeader || ""; + this.bookendTrailer = e.bookendTrailer || ""; + this.id = e.id || ""; + this.overflowLeader = e.overflowLeader || ""; + this.overflowTarget = e.overflowTarget || ""; + this.overflowTrailer = e.overflowTrailer || ""; + this.startNew = getInteger({ + data: e.startNew, + defaultValue: 0, + validate: (e) => 1 === e, + }); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.extras = null; + } +} +class BreakAfter extends XFAObject { + constructor(e) { + super(Jn, "breakAfter", !0); + this.id = e.id || ""; + this.leader = e.leader || ""; + this.startNew = getInteger({ + data: e.startNew, + defaultValue: 0, + validate: (e) => 1 === e, + }); + this.target = e.target || ""; + this.targetType = getStringOption(e.targetType, [ + "auto", + "contentArea", + "pageArea", + ]); + this.trailer = e.trailer || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.script = null; + } +} +class BreakBefore extends XFAObject { + constructor(e) { + super(Jn, "breakBefore", !0); + this.id = e.id || ""; + this.leader = e.leader || ""; + this.startNew = getInteger({ + data: e.startNew, + defaultValue: 0, + validate: (e) => 1 === e, + }); + this.target = e.target || ""; + this.targetType = getStringOption(e.targetType, [ + "auto", + "contentArea", + "pageArea", + ]); + this.trailer = e.trailer || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.script = null; + } + [an](e) { + this[ar] = {}; + return HTMLResult.FAILURE; + } +} +class Button extends XFAObject { + constructor(e) { + super(Jn, "button", !0); + this.highlight = getStringOption(e.highlight, [ + "inverted", + "none", + "outline", + "push", + ]); + this.id = e.id || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.extras = null; + } + [an](e) { + const t = this[pr]()[pr](), + i = { + name: "button", + attributes: { id: this[nn], class: ["xfaButton"], style: {} }, + children: [], + }; + for (const e of t.event.children) { + if ("click" !== e.activity || !e.script) continue; + const t = recoverJsURL(e.script[er]); + if (!t) continue; + const a = fixURL(t.url); + a && + i.children.push({ + name: "a", + attributes: { + id: "link" + this[nn], + href: a, + newWindow: t.newWindow, + class: ["xfaLink"], + style: {}, + }, + children: [], + }); + } + return HTMLResult.success(i); + } +} +class Calculate extends XFAObject { + constructor(e) { + super(Jn, "calculate", !0); + this.id = e.id || ""; + this.override = getStringOption(e.override, [ + "disabled", + "error", + "ignore", + "warning", + ]); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.extras = null; + this.message = null; + this.script = null; + } +} +class Caption extends XFAObject { + constructor(e) { + super(Jn, "caption", !0); + this.id = e.id || ""; + this.placement = getStringOption(e.placement, [ + "left", + "bottom", + "inline", + "right", + "top", + ]); + this.presence = getStringOption(e.presence, [ + "visible", + "hidden", + "inactive", + "invisible", + ]); + this.reserve = Math.ceil(getMeasurement(e.reserve)); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.extras = null; + this.font = null; + this.margin = null; + this.para = null; + this.value = null; + } + [$r](e) { + _setValue(this, e); + } + [Cr](e) { + if (!this[ar]) { + let { width: t, height: i } = e; + switch (this.placement) { + case "left": + case "right": + case "inline": + t = this.reserve <= 0 ? t : this.reserve; + break; + case "top": + case "bottom": + i = this.reserve <= 0 ? i : this.reserve; + } + this[ar] = layoutNode(this, { width: t, height: i }); + } + return this[ar]; + } + [an](e) { + if (!this.value) return HTMLResult.EMPTY; + this[Wr](); + const t = this.value[an](e).html; + if (!t) { + this[Pr](); + return HTMLResult.EMPTY; + } + const i = this.reserve; + if (this.reserve <= 0) { + const { w: t, h: i } = this[Cr](e); + switch (this.placement) { + case "left": + case "right": + case "inline": + this.reserve = t; + break; + case "top": + case "bottom": + this.reserve = i; + } + } + const a = []; + "string" == typeof t ? a.push({ name: "#text", value: t }) : a.push(t); + const s = toStyle(this, "font", "margin", "visibility"); + switch (this.placement) { + case "left": + case "right": + this.reserve > 0 && (s.width = measureToString(this.reserve)); + break; + case "top": + case "bottom": + this.reserve > 0 && (s.height = measureToString(this.reserve)); + } + setPara(this, null, t); + this[Pr](); + this.reserve = i; + return HTMLResult.success({ + name: "div", + attributes: { style: s, class: ["xfaCaption"] }, + children: a, + }); + } +} +class Certificate extends StringObject { + constructor(e) { + super(Jn, "certificate"); + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class Certificates extends XFAObject { + constructor(e) { + super(Jn, "certificates", !0); + this.credentialServerPolicy = getStringOption(e.credentialServerPolicy, [ + "optional", + "required", + ]); + this.id = e.id || ""; + this.url = e.url || ""; + this.urlPolicy = e.urlPolicy || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.encryption = null; + this.issuers = null; + this.keyUsage = null; + this.oids = null; + this.signing = null; + this.subjectDNs = null; + } +} +class CheckButton extends XFAObject { + constructor(e) { + super(Jn, "checkButton", !0); + this.id = e.id || ""; + this.mark = getStringOption(e.mark, [ + "default", + "check", + "circle", + "cross", + "diamond", + "square", + "star", + ]); + this.shape = getStringOption(e.shape, ["square", "round"]); + this.size = getMeasurement(e.size, "10pt"); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.border = null; + this.extras = null; + this.margin = null; + } + [an](e) { + const t = toStyle("margin"), + i = measureToString(this.size); + t.width = t.height = i; + let a, s, r; + const n = this[pr]()[pr](), + o = (n.items.children.length && n.items.children[0][an]().html) || [], + g = { + on: (void 0 !== o[0] ? o[0] : "on").toString(), + off: (void 0 !== o[1] ? o[1] : "off").toString(), + }, + c = (n.value?.[en]() || "off") === g.on || void 0, + h = n[fr](), + l = n[nn]; + let C; + if (h instanceof ExclGroup) { + r = h[nn]; + a = "radio"; + s = "xfaRadio"; + C = h[tr]?.[nn] || h[nn]; + } else { + a = "checkbox"; + s = "xfaCheckbox"; + C = n[tr]?.[nn] || n[nn]; + } + const Q = { + name: "input", + attributes: { + class: [s], + style: t, + fieldId: l, + dataId: C, + type: a, + checked: c, + xfaOn: g.on, + xfaOff: g.off, + "aria-label": ariaLabel(n), + "aria-required": !1, + }, + }; + r && (Q.attributes.name = r); + if (isRequired(n)) { + Q.attributes["aria-required"] = !0; + Q.attributes.required = !0; + } + return HTMLResult.success({ + name: "label", + attributes: { class: ["xfaLabel"] }, + children: [Q], + }); + } +} +class ChoiceList extends XFAObject { + constructor(e) { + super(Jn, "choiceList", !0); + this.commitOn = getStringOption(e.commitOn, ["select", "exit"]); + this.id = e.id || ""; + this.open = getStringOption(e.open, [ + "userControl", + "always", + "multiSelect", + "onEntry", + ]); + this.textEntry = getInteger({ + data: e.textEntry, + defaultValue: 0, + validate: (e) => 1 === e, + }); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.border = null; + this.extras = null; + this.margin = null; + } + [an](e) { + const t = toStyle(this, "border", "margin"), + i = this[pr]()[pr](), + a = { fontSize: `calc(${i.font?.size || 10}px * var(--scale-factor))` }, + s = []; + if (i.items.children.length > 0) { + const e = i.items; + let t = 0, + r = 0; + if (2 === e.children.length) { + t = e.children[0].save; + r = 1 - t; + } + const n = e.children[t][an]().html, + o = e.children[r][an]().html; + let g = !1; + const c = i.value?.[en]() || ""; + for (let e = 0, t = n.length; e < t; e++) { + const t = { + name: "option", + attributes: { value: o[e] || n[e], style: a }, + value: n[e], + }; + o[e] === c && (t.attributes.selected = g = !0); + s.push(t); + } + g || + s.splice(0, 0, { + name: "option", + attributes: { hidden: !0, selected: !0 }, + value: " ", + }); + } + const r = { + class: ["xfaSelect"], + fieldId: i[nn], + dataId: i[tr]?.[nn] || i[nn], + style: t, + "aria-label": ariaLabel(i), + "aria-required": !1, + }; + if (isRequired(i)) { + r["aria-required"] = !0; + r.required = !0; + } + "multiSelect" === this.open && (r.multiple = !0); + return HTMLResult.success({ + name: "label", + attributes: { class: ["xfaLabel"] }, + children: [{ name: "select", children: s, attributes: r }], + }); + } +} +class Color extends XFAObject { + constructor(e) { + super(Jn, "color", !0); + this.cSpace = getStringOption(e.cSpace, ["SRGB"]); + this.id = e.id || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.value = e.value + ? (function getColor(e, t = [0, 0, 0]) { + let [i, a, s] = t; + if (!e) return { r: i, g: a, b: s }; + const r = e + .trim() + .split(/\s*,\s*/) + .map((e) => Math.min(Math.max(0, parseInt(e.trim(), 10)), 255)) + .map((e) => (isNaN(e) ? 0 : e)); + if (r.length < 3) return { r: i, g: a, b: s }; + [i, a, s] = r; + return { r: i, g: a, b: s }; + })(e.value) + : ""; + this.extras = null; + } + [wr]() { + return !1; + } + [rn]() { + return this.value + ? Util.makeHexColor(this.value.r, this.value.g, this.value.b) + : null; + } +} +class Comb extends XFAObject { + constructor(e) { + super(Jn, "comb"); + this.id = e.id || ""; + this.numberOfCells = getInteger({ + data: e.numberOfCells, + defaultValue: 0, + validate: (e) => e >= 0, + }); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class Connect extends XFAObject { + constructor(e) { + super(Jn, "connect", !0); + this.connection = e.connection || ""; + this.id = e.id || ""; + this.ref = e.ref || ""; + this.usage = getStringOption(e.usage, [ + "exportAndImport", + "exportOnly", + "importOnly", + ]); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.picture = null; + } +} +class ContentArea extends XFAObject { + constructor(e) { + super(Jn, "contentArea", !0); + this.h = getMeasurement(e.h); + this.id = e.id || ""; + this.name = e.name || ""; + this.relevant = getRelevant(e.relevant); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.w = getMeasurement(e.w); + this.x = getMeasurement(e.x, "0pt"); + this.y = getMeasurement(e.y, "0pt"); + this.desc = null; + this.extras = null; + } + [an](e) { + const t = { + left: measureToString(this.x), + top: measureToString(this.y), + width: measureToString(this.w), + height: measureToString(this.h), + }, + i = ["xfaContentarea"]; + isPrintOnly(this) && i.push("xfaPrintOnly"); + return HTMLResult.success({ + name: "div", + children: [], + attributes: { style: t, class: i, id: this[nn] }, + }); + } +} +class Corner extends XFAObject { + constructor(e) { + super(Jn, "corner", !0); + this.id = e.id || ""; + this.inverted = getInteger({ + data: e.inverted, + defaultValue: 0, + validate: (e) => 1 === e, + }); + this.join = getStringOption(e.join, ["square", "round"]); + this.presence = getStringOption(e.presence, [ + "visible", + "hidden", + "inactive", + "invisible", + ]); + this.radius = getMeasurement(e.radius); + this.stroke = getStringOption(e.stroke, [ + "solid", + "dashDot", + "dashDotDot", + "dashed", + "dotted", + "embossed", + "etched", + "lowered", + "raised", + ]); + this.thickness = getMeasurement(e.thickness, "0.5pt"); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.color = null; + this.extras = null; + } + [rn]() { + const e = toStyle(this, "visibility"); + e.radius = measureToString("square" === this.join ? 0 : this.radius); + return e; + } +} +class DateElement extends ContentObject { + constructor(e) { + super(Jn, "date"); + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } + [sr]() { + const e = this[er].trim(); + this[er] = e ? new Date(e) : null; + } + [an](e) { + return valueToHtml(this[er] ? this[er].toString() : ""); + } +} +class DateTime extends ContentObject { + constructor(e) { + super(Jn, "dateTime"); + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } + [sr]() { + const e = this[er].trim(); + this[er] = e ? new Date(e) : null; + } + [an](e) { + return valueToHtml(this[er] ? this[er].toString() : ""); + } +} +class DateTimeEdit extends XFAObject { + constructor(e) { + super(Jn, "dateTimeEdit", !0); + this.hScrollPolicy = getStringOption(e.hScrollPolicy, [ + "auto", + "off", + "on", + ]); + this.id = e.id || ""; + this.picker = getStringOption(e.picker, ["host", "none"]); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.border = null; + this.comb = null; + this.extras = null; + this.margin = null; + } + [an](e) { + const t = toStyle(this, "border", "font", "margin"), + i = this[pr]()[pr](), + a = { + name: "input", + attributes: { + type: "text", + fieldId: i[nn], + dataId: i[tr]?.[nn] || i[nn], + class: ["xfaTextfield"], + style: t, + "aria-label": ariaLabel(i), + "aria-required": !1, + }, + }; + if (isRequired(i)) { + a.attributes["aria-required"] = !0; + a.attributes.required = !0; + } + return HTMLResult.success({ + name: "label", + attributes: { class: ["xfaLabel"] }, + children: [a], + }); + } +} +class Decimal extends ContentObject { + constructor(e) { + super(Jn, "decimal"); + this.fracDigits = getInteger({ + data: e.fracDigits, + defaultValue: 2, + validate: (e) => !0, + }); + this.id = e.id || ""; + this.leadDigits = getInteger({ + data: e.leadDigits, + defaultValue: -1, + validate: (e) => !0, + }); + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } + [sr]() { + const e = parseFloat(this[er].trim()); + this[er] = isNaN(e) ? null : e; + } + [an](e) { + return valueToHtml(null !== this[er] ? this[er].toString() : ""); + } +} +class DefaultUi extends XFAObject { + constructor(e) { + super(Jn, "defaultUi", !0); + this.id = e.id || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.extras = null; + } +} +class Desc extends XFAObject { + constructor(e) { + super(Jn, "desc", !0); + this.id = e.id || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.boolean = new XFAObjectArray(); + this.date = new XFAObjectArray(); + this.dateTime = new XFAObjectArray(); + this.decimal = new XFAObjectArray(); + this.exData = new XFAObjectArray(); + this.float = new XFAObjectArray(); + this.image = new XFAObjectArray(); + this.integer = new XFAObjectArray(); + this.text = new XFAObjectArray(); + this.time = new XFAObjectArray(); + } +} +class DigestMethod extends OptionObject { + constructor(e) { + super(Jn, "digestMethod", ["", "SHA1", "SHA256", "SHA512", "RIPEMD160"]); + this.id = e.id || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class DigestMethods extends XFAObject { + constructor(e) { + super(Jn, "digestMethods", !0); + this.id = e.id || ""; + this.type = getStringOption(e.type, ["optional", "required"]); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.digestMethod = new XFAObjectArray(); + } +} +class Draw extends XFAObject { + constructor(e) { + super(Jn, "draw", !0); + this.anchorType = getStringOption(e.anchorType, [ + "topLeft", + "bottomCenter", + "bottomLeft", + "bottomRight", + "middleCenter", + "middleLeft", + "middleRight", + "topCenter", + "topRight", + ]); + this.colSpan = getInteger({ + data: e.colSpan, + defaultValue: 1, + validate: (e) => e >= 1 || -1 === e, + }); + this.h = e.h ? getMeasurement(e.h) : ""; + this.hAlign = getStringOption(e.hAlign, [ + "left", + "center", + "justify", + "justifyAll", + "radix", + "right", + ]); + this.id = e.id || ""; + this.locale = e.locale || ""; + this.maxH = getMeasurement(e.maxH, "0pt"); + this.maxW = getMeasurement(e.maxW, "0pt"); + this.minH = getMeasurement(e.minH, "0pt"); + this.minW = getMeasurement(e.minW, "0pt"); + this.name = e.name || ""; + this.presence = getStringOption(e.presence, [ + "visible", + "hidden", + "inactive", + "invisible", + ]); + this.relevant = getRelevant(e.relevant); + this.rotate = getInteger({ + data: e.rotate, + defaultValue: 0, + validate: (e) => e % 90 == 0, + }); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.w = e.w ? getMeasurement(e.w) : ""; + this.x = getMeasurement(e.x, "0pt"); + this.y = getMeasurement(e.y, "0pt"); + this.assist = null; + this.border = null; + this.caption = null; + this.desc = null; + this.extras = null; + this.font = null; + this.keep = null; + this.margin = null; + this.para = null; + this.traversal = null; + this.ui = null; + this.value = null; + this.setProperty = new XFAObjectArray(); + } + [$r](e) { + _setValue(this, e); + } + [an](e) { + setTabIndex(this); + if ("hidden" === this.presence || "inactive" === this.presence) + return HTMLResult.EMPTY; + fixDimensions(this); + this[Wr](); + const t = this.w, + i = this.h, + { w: a, h: s, isBroken: r } = layoutNode(this, e); + if (a && "" === this.w) { + if (r && this[fr]()[Mr]()) { + this[Pr](); + return HTMLResult.FAILURE; + } + this.w = a; + } + s && "" === this.h && (this.h = s); + setFirstUnsplittable(this); + if (!checkDimensions(this, e)) { + this.w = t; + this.h = i; + this[Pr](); + return HTMLResult.FAILURE; + } + unsetFirstUnsplittable(this); + const n = toStyle( + this, + "font", + "hAlign", + "dimensions", + "position", + "presence", + "rotate", + "anchorType", + "border", + "margin", + ); + setMinMaxDimensions(this, n); + if (n.margin) { + n.padding = n.margin; + delete n.margin; + } + const o = ["xfaDraw"]; + this.font && o.push("xfaFont"); + isPrintOnly(this) && o.push("xfaPrintOnly"); + const g = { style: n, id: this[nn], class: o }; + this.name && (g.xfaName = this.name); + const c = { name: "div", attributes: g, children: [] }; + applyAssist(this, g); + const h = computeBbox(this, c, e), + l = this.value ? this.value[an](e).html : null; + if (null === l) { + this.w = t; + this.h = i; + this[Pr](); + return HTMLResult.success(createWrapper(this, c), h); + } + c.children.push(l); + setPara(this, n, l); + this.w = t; + this.h = i; + this[Pr](); + return HTMLResult.success(createWrapper(this, c), h); + } +} +class Edge extends XFAObject { + constructor(e) { + super(Jn, "edge", !0); + this.cap = getStringOption(e.cap, ["square", "butt", "round"]); + this.id = e.id || ""; + this.presence = getStringOption(e.presence, [ + "visible", + "hidden", + "inactive", + "invisible", + ]); + this.stroke = getStringOption(e.stroke, [ + "solid", + "dashDot", + "dashDotDot", + "dashed", + "dotted", + "embossed", + "etched", + "lowered", + "raised", + ]); + this.thickness = getMeasurement(e.thickness, "0.5pt"); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.color = null; + this.extras = null; + } + [rn]() { + const e = toStyle(this, "visibility"); + Object.assign(e, { + linecap: this.cap, + width: measureToString(this.thickness), + color: this.color ? this.color[rn]() : "#000000", + style: "", + }); + if ("visible" !== this.presence) e.style = "none"; + else + switch (this.stroke) { + case "solid": + e.style = "solid"; + break; + case "dashDot": + case "dashDotDot": + case "dashed": + e.style = "dashed"; + break; + case "dotted": + e.style = "dotted"; + break; + case "embossed": + e.style = "ridge"; + break; + case "etched": + e.style = "groove"; + break; + case "lowered": + e.style = "inset"; + break; + case "raised": + e.style = "outset"; + } + return e; + } +} +class Encoding extends OptionObject { + constructor(e) { + super(Jn, "encoding", [ + "adbe.x509.rsa_sha1", + "adbe.pkcs7.detached", + "adbe.pkcs7.sha1", + ]); + this.id = e.id || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class Encodings extends XFAObject { + constructor(e) { + super(Jn, "encodings", !0); + this.id = e.id || ""; + this.type = getStringOption(e.type, ["optional", "required"]); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.encoding = new XFAObjectArray(); + } +} +class Encrypt extends XFAObject { + constructor(e) { + super(Jn, "encrypt", !0); + this.id = e.id || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.certificate = null; + } +} +class EncryptData extends XFAObject { + constructor(e) { + super(Jn, "encryptData", !0); + this.id = e.id || ""; + this.operation = getStringOption(e.operation, ["encrypt", "decrypt"]); + this.target = e.target || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.filter = null; + this.manifest = null; + } +} +class Encryption extends XFAObject { + constructor(e) { + super(Jn, "encryption", !0); + this.id = e.id || ""; + this.type = getStringOption(e.type, ["optional", "required"]); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.certificate = new XFAObjectArray(); + } +} +class EncryptionMethod extends OptionObject { + constructor(e) { + super(Jn, "encryptionMethod", [ + "", + "AES256-CBC", + "TRIPLEDES-CBC", + "AES128-CBC", + "AES192-CBC", + ]); + this.id = e.id || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class EncryptionMethods extends XFAObject { + constructor(e) { + super(Jn, "encryptionMethods", !0); + this.id = e.id || ""; + this.type = getStringOption(e.type, ["optional", "required"]); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.encryptionMethod = new XFAObjectArray(); + } +} +class Event extends XFAObject { + constructor(e) { + super(Jn, "event", !0); + this.activity = getStringOption(e.activity, [ + "click", + "change", + "docClose", + "docReady", + "enter", + "exit", + "full", + "indexChange", + "initialize", + "mouseDown", + "mouseEnter", + "mouseExit", + "mouseUp", + "postExecute", + "postOpen", + "postPrint", + "postSave", + "postSign", + "postSubmit", + "preExecute", + "preOpen", + "prePrint", + "preSave", + "preSign", + "preSubmit", + "ready", + "validationState", + ]); + this.id = e.id || ""; + this.listen = getStringOption(e.listen, ["refOnly", "refAndDescendents"]); + this.name = e.name || ""; + this.ref = e.ref || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.extras = null; + this.encryptData = null; + this.execute = null; + this.script = null; + this.signData = null; + this.submit = null; + } +} +class ExData extends ContentObject { + constructor(e) { + super(Jn, "exData"); + this.contentType = e.contentType || ""; + this.href = e.href || ""; + this.id = e.id || ""; + this.maxLength = getInteger({ + data: e.maxLength, + defaultValue: -1, + validate: (e) => e >= -1, + }); + this.name = e.name || ""; + this.rid = e.rid || ""; + this.transferEncoding = getStringOption(e.transferEncoding, [ + "none", + "base64", + "package", + ]); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } + [Sr]() { + return "text/html" === this.contentType; + } + [Kr](e) { + if ("text/html" === this.contentType && e[Hr] === gn.xhtml.id) { + this[er] = e; + return !0; + } + if ("text/xml" === this.contentType) { + this[er] = e; + return !0; + } + return !1; + } + [an](e) { + return "text/html" === this.contentType && this[er] + ? this[er][an](e) + : HTMLResult.EMPTY; + } +} +class ExObject extends XFAObject { + constructor(e) { + super(Jn, "exObject", !0); + this.archive = e.archive || ""; + this.classId = e.classId || ""; + this.codeBase = e.codeBase || ""; + this.codeType = e.codeType || ""; + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.extras = null; + this.boolean = new XFAObjectArray(); + this.date = new XFAObjectArray(); + this.dateTime = new XFAObjectArray(); + this.decimal = new XFAObjectArray(); + this.exData = new XFAObjectArray(); + this.exObject = new XFAObjectArray(); + this.float = new XFAObjectArray(); + this.image = new XFAObjectArray(); + this.integer = new XFAObjectArray(); + this.text = new XFAObjectArray(); + this.time = new XFAObjectArray(); + } +} +class ExclGroup extends XFAObject { + constructor(e) { + super(Jn, "exclGroup", !0); + this.access = getStringOption(e.access, [ + "open", + "nonInteractive", + "protected", + "readOnly", + ]); + this.accessKey = e.accessKey || ""; + this.anchorType = getStringOption(e.anchorType, [ + "topLeft", + "bottomCenter", + "bottomLeft", + "bottomRight", + "middleCenter", + "middleLeft", + "middleRight", + "topCenter", + "topRight", + ]); + this.colSpan = getInteger({ + data: e.colSpan, + defaultValue: 1, + validate: (e) => e >= 1 || -1 === e, + }); + this.h = e.h ? getMeasurement(e.h) : ""; + this.hAlign = getStringOption(e.hAlign, [ + "left", + "center", + "justify", + "justifyAll", + "radix", + "right", + ]); + this.id = e.id || ""; + this.layout = getStringOption(e.layout, [ + "position", + "lr-tb", + "rl-row", + "rl-tb", + "row", + "table", + "tb", + ]); + this.maxH = getMeasurement(e.maxH, "0pt"); + this.maxW = getMeasurement(e.maxW, "0pt"); + this.minH = getMeasurement(e.minH, "0pt"); + this.minW = getMeasurement(e.minW, "0pt"); + this.name = e.name || ""; + this.presence = getStringOption(e.presence, [ + "visible", + "hidden", + "inactive", + "invisible", + ]); + this.relevant = getRelevant(e.relevant); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.w = e.w ? getMeasurement(e.w) : ""; + this.x = getMeasurement(e.x, "0pt"); + this.y = getMeasurement(e.y, "0pt"); + this.assist = null; + this.bind = null; + this.border = null; + this.calculate = null; + this.caption = null; + this.desc = null; + this.extras = null; + this.margin = null; + this.para = null; + this.traversal = null; + this.validate = null; + this.connect = new XFAObjectArray(); + this.event = new XFAObjectArray(); + this.field = new XFAObjectArray(); + this.setProperty = new XFAObjectArray(); + } + [kr]() { + return !0; + } + [wr]() { + return !0; + } + [$r](e) { + for (const t of this.field.children) { + if (!t.value) { + const e = new Value({}); + t[js](e); + t.value = e; + } + t.value[$r](e); + } + } + [Mr]() { + return ( + (this.layout.endsWith("-tb") && + 0 === this[ar].attempt && + this[ar].numberInLine > 0) || + this[pr]()[Mr]() + ); + } + [xr]() { + const e = this[fr](); + if (!e[xr]()) return !1; + if (void 0 !== this[ar]._isSplittable) return this[ar]._isSplittable; + if ("position" === this.layout || this.layout.includes("row")) { + this[ar]._isSplittable = !1; + return !1; + } + if (e.layout?.endsWith("-tb") && 0 !== e[ar].numberInLine) return !1; + this[ar]._isSplittable = !0; + return !0; + } + [rr]() { + return flushHTML(this); + } + [Xs](e, t) { + addHTML(this, e, t); + } + [gr]() { + return getAvailableSpace(this); + } + [an](e) { + setTabIndex(this); + if ( + "hidden" === this.presence || + "inactive" === this.presence || + 0 === this.h || + 0 === this.w + ) + return HTMLResult.EMPTY; + fixDimensions(this); + const t = [], + i = { id: this[nn], class: [] }; + setAccess(this, i.class); + this[ar] || (this[ar] = Object.create(null)); + Object.assign(this[ar], { + children: t, + attributes: i, + attempt: 0, + line: null, + numberInLine: 0, + availableSpace: { + width: Math.min(this.w || 1 / 0, e.width), + height: Math.min(this.h || 1 / 0, e.height), + }, + width: 0, + height: 0, + prevHeight: 0, + currentWidth: 0, + }); + const a = this[xr](); + a || setFirstUnsplittable(this); + if (!checkDimensions(this, e)) return HTMLResult.FAILURE; + const s = new Set(["field"]); + if (this.layout.includes("row")) { + const e = this[fr]().columnWidths; + if (Array.isArray(e) && e.length > 0) { + this[ar].columnWidths = e; + this[ar].currentColumn = 0; + } + } + const r = toStyle( + this, + "anchorType", + "dimensions", + "position", + "presence", + "border", + "margin", + "hAlign", + ), + n = ["xfaExclgroup"], + o = layoutClass(this); + o && n.push(o); + isPrintOnly(this) && n.push("xfaPrintOnly"); + i.style = r; + i.class = n; + this.name && (i.xfaName = this.name); + this[Wr](); + const g = "lr-tb" === this.layout || "rl-tb" === this.layout, + c = g ? 2 : 1; + for (; this[ar].attempt < c; this[ar].attempt++) { + g && 1 === this[ar].attempt && (this[ar].numberInLine = 0); + const e = this[Zs]({ filter: s, include: !0 }); + if (e.success) break; + if (e.isBreak()) { + this[Pr](); + return e; + } + if ( + g && + 0 === this[ar].attempt && + 0 === this[ar].numberInLine && + !this[mr]()[ar].noLayoutFailure + ) { + this[ar].attempt = c; + break; + } + } + this[Pr](); + a || unsetFirstUnsplittable(this); + if (this[ar].attempt === c) { + a || delete this[ar]; + return HTMLResult.FAILURE; + } + let h = 0, + l = 0; + if (this.margin) { + h = this.margin.leftInset + this.margin.rightInset; + l = this.margin.topInset + this.margin.bottomInset; + } + const C = Math.max(this[ar].width + h, this.w || 0), + Q = Math.max(this[ar].height + l, this.h || 0), + E = [this.x, this.y, C, Q]; + "" === this.w && (r.width = measureToString(C)); + "" === this.h && (r.height = measureToString(Q)); + const u = { name: "div", attributes: i, children: t }; + applyAssist(this, i); + delete this[ar]; + return HTMLResult.success(createWrapper(this, u), E); + } +} +class Execute extends XFAObject { + constructor(e) { + super(Jn, "execute"); + this.connection = e.connection || ""; + this.executeType = getStringOption(e.executeType, ["import", "remerge"]); + this.id = e.id || ""; + this.runAt = getStringOption(e.runAt, ["client", "both", "server"]); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class Extras extends XFAObject { + constructor(e) { + super(Jn, "extras", !0); + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.boolean = new XFAObjectArray(); + this.date = new XFAObjectArray(); + this.dateTime = new XFAObjectArray(); + this.decimal = new XFAObjectArray(); + this.exData = new XFAObjectArray(); + this.extras = new XFAObjectArray(); + this.float = new XFAObjectArray(); + this.image = new XFAObjectArray(); + this.integer = new XFAObjectArray(); + this.text = new XFAObjectArray(); + this.time = new XFAObjectArray(); + } +} +class Field extends XFAObject { + constructor(e) { + super(Jn, "field", !0); + this.access = getStringOption(e.access, [ + "open", + "nonInteractive", + "protected", + "readOnly", + ]); + this.accessKey = e.accessKey || ""; + this.anchorType = getStringOption(e.anchorType, [ + "topLeft", + "bottomCenter", + "bottomLeft", + "bottomRight", + "middleCenter", + "middleLeft", + "middleRight", + "topCenter", + "topRight", + ]); + this.colSpan = getInteger({ + data: e.colSpan, + defaultValue: 1, + validate: (e) => e >= 1 || -1 === e, + }); + this.h = e.h ? getMeasurement(e.h) : ""; + this.hAlign = getStringOption(e.hAlign, [ + "left", + "center", + "justify", + "justifyAll", + "radix", + "right", + ]); + this.id = e.id || ""; + this.locale = e.locale || ""; + this.maxH = getMeasurement(e.maxH, "0pt"); + this.maxW = getMeasurement(e.maxW, "0pt"); + this.minH = getMeasurement(e.minH, "0pt"); + this.minW = getMeasurement(e.minW, "0pt"); + this.name = e.name || ""; + this.presence = getStringOption(e.presence, [ + "visible", + "hidden", + "inactive", + "invisible", + ]); + this.relevant = getRelevant(e.relevant); + this.rotate = getInteger({ + data: e.rotate, + defaultValue: 0, + validate: (e) => e % 90 == 0, + }); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.w = e.w ? getMeasurement(e.w) : ""; + this.x = getMeasurement(e.x, "0pt"); + this.y = getMeasurement(e.y, "0pt"); + this.assist = null; + this.bind = null; + this.border = null; + this.calculate = null; + this.caption = null; + this.desc = null; + this.extras = null; + this.font = null; + this.format = null; + this.items = new XFAObjectArray(2); + this.keep = null; + this.margin = null; + this.para = null; + this.traversal = null; + this.ui = null; + this.validate = null; + this.value = null; + this.bindItems = new XFAObjectArray(); + this.connect = new XFAObjectArray(); + this.event = new XFAObjectArray(); + this.setProperty = new XFAObjectArray(); + } + [kr]() { + return !0; + } + [$r](e) { + _setValue(this, e); + } + [an](e) { + setTabIndex(this); + if (!this.ui) { + this.ui = new Ui({}); + this.ui[yr] = this[yr]; + this[js](this.ui); + let e; + switch (this.items.children.length) { + case 0: + e = new TextEdit({}); + this.ui.textEdit = e; + break; + case 1: + e = new CheckButton({}); + this.ui.checkButton = e; + break; + case 2: + e = new ChoiceList({}); + this.ui.choiceList = e; + } + this.ui[js](e); + } + if ( + !this.ui || + "hidden" === this.presence || + "inactive" === this.presence || + 0 === this.h || + 0 === this.w + ) + return HTMLResult.EMPTY; + this.caption && delete this.caption[ar]; + this[Wr](); + const t = this.caption ? this.caption[an](e).html : null, + i = this.w, + a = this.h; + let s = 0, + r = 0; + if (this.margin) { + s = this.margin.leftInset + this.margin.rightInset; + r = this.margin.topInset + this.margin.bottomInset; + } + let n = null; + if ("" === this.w || "" === this.h) { + let t = null, + i = null, + a = 0, + o = 0; + if (this.ui.checkButton) a = o = this.ui.checkButton.size; + else { + const { w: t, h: i } = layoutNode(this, e); + if (null !== t) { + a = t; + o = i; + } else + o = (function fonts_getMetrics(e, t = !1) { + let i = null; + if (e) { + const t = stripQuotes(e.typeface), + a = e[yr].fontFinder.find(t); + i = selectFont(e, a); + } + if (!i) return { lineHeight: 12, lineGap: 2, lineNoGap: 10 }; + const a = e.size || 10, + s = i.lineHeight ? Math.max(t ? 0 : 1.2, i.lineHeight) : 1.2, + r = void 0 === i.lineGap ? 0.2 : i.lineGap; + return { + lineHeight: s * a, + lineGap: r * a, + lineNoGap: Math.max(1, s - r) * a, + }; + })(this.font, !0).lineNoGap; + } + n = getBorderDims(this.ui[Cr]()); + a += n.w; + o += n.h; + if (this.caption) { + const { w: s, h: r, isBroken: n } = this.caption[Cr](e); + if (n && this[fr]()[Mr]()) { + this[Pr](); + return HTMLResult.FAILURE; + } + t = s; + i = r; + switch (this.caption.placement) { + case "left": + case "right": + case "inline": + t += a; + break; + case "top": + case "bottom": + i += o; + } + } else { + t = a; + i = o; + } + if (t && "" === this.w) { + t += s; + this.w = Math.min( + this.maxW <= 0 ? 1 / 0 : this.maxW, + this.minW + 1 < t ? t : this.minW, + ); + } + if (i && "" === this.h) { + i += r; + this.h = Math.min( + this.maxH <= 0 ? 1 / 0 : this.maxH, + this.minH + 1 < i ? i : this.minH, + ); + } + } + this[Pr](); + fixDimensions(this); + setFirstUnsplittable(this); + if (!checkDimensions(this, e)) { + this.w = i; + this.h = a; + this[Pr](); + return HTMLResult.FAILURE; + } + unsetFirstUnsplittable(this); + const o = toStyle( + this, + "font", + "dimensions", + "position", + "rotate", + "anchorType", + "presence", + "margin", + "hAlign", + ); + setMinMaxDimensions(this, o); + const g = ["xfaField"]; + this.font && g.push("xfaFont"); + isPrintOnly(this) && g.push("xfaPrintOnly"); + const c = { style: o, id: this[nn], class: g }; + if (o.margin) { + o.padding = o.margin; + delete o.margin; + } + setAccess(this, g); + this.name && (c.xfaName = this.name); + const h = [], + l = { name: "div", attributes: c, children: h }; + applyAssist(this, c); + const C = this.border ? this.border[rn]() : null, + Q = computeBbox(this, l, e), + E = this.ui[an]().html; + if (!E) { + Object.assign(o, C); + return HTMLResult.success(createWrapper(this, l), Q); + } + this[An] && + (E.children?.[0] + ? (E.children[0].attributes.tabindex = this[An]) + : (E.attributes.tabindex = this[An])); + E.attributes.style || (E.attributes.style = Object.create(null)); + let u = null; + if (this.ui.button) { + 1 === E.children.length && ([u] = E.children.splice(0, 1)); + Object.assign(E.attributes.style, C); + } else Object.assign(o, C); + h.push(E); + if (this.value) + if (this.ui.imageEdit) E.children.push(this.value[an]().html); + else if (!this.ui.button) { + let e = ""; + if (this.value.exData) e = this.value.exData[en](); + else if (this.value.text) e = this.value.text[Cr](); + else { + const t = this.value[an]().html; + null !== t && (e = t.children[0].value); + } + this.ui.textEdit && + this.value.text?.maxChars && + (E.children[0].attributes.maxLength = this.value.text.maxChars); + if (e) { + if (this.ui.numericEdit) { + e = parseFloat(e); + e = isNaN(e) ? "" : e.toString(); + } + "textarea" === E.children[0].name + ? (E.children[0].attributes.textContent = e) + : (E.children[0].attributes.value = e); + } + } + if (!this.ui.imageEdit && E.children?.[0] && this.h) { + n = n || getBorderDims(this.ui[Cr]()); + let t = 0; + if (this.caption && ["top", "bottom"].includes(this.caption.placement)) { + t = this.caption.reserve; + t <= 0 && (t = this.caption[Cr](e).h); + const i = this.h - t - r - n.h; + E.children[0].attributes.style.height = measureToString(i); + } else E.children[0].attributes.style.height = "100%"; + } + u && E.children.push(u); + if (!t) { + E.attributes.class && E.attributes.class.push("xfaLeft"); + this.w = i; + this.h = a; + return HTMLResult.success(createWrapper(this, l), Q); + } + if (this.ui.button) { + o.padding && delete o.padding; + "div" === t.name && (t.name = "span"); + E.children.push(t); + return HTMLResult.success(l, Q); + } + this.ui.checkButton && (t.attributes.class[0] = "xfaCaptionForCheckButton"); + E.attributes.class || (E.attributes.class = []); + E.children.splice(0, 0, t); + switch (this.caption.placement) { + case "left": + case "inline": + E.attributes.class.push("xfaLeft"); + break; + case "right": + E.attributes.class.push("xfaRight"); + break; + case "top": + E.attributes.class.push("xfaTop"); + break; + case "bottom": + E.attributes.class.push("xfaBottom"); + } + this.w = i; + this.h = a; + return HTMLResult.success(createWrapper(this, l), Q); + } +} +class Fill extends XFAObject { + constructor(e) { + super(Jn, "fill", !0); + this.id = e.id || ""; + this.presence = getStringOption(e.presence, [ + "visible", + "hidden", + "inactive", + "invisible", + ]); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.color = null; + this.extras = null; + this.linear = null; + this.pattern = null; + this.radial = null; + this.solid = null; + this.stipple = null; + } + [rn]() { + const e = this[pr](), + t = e[pr]()[pr](), + i = Object.create(null); + let a = "color", + s = a; + if (e instanceof Border) { + a = "background-color"; + s = "background"; + t instanceof Ui && (i.backgroundColor = "white"); + } + if (e instanceof Rectangle || e instanceof Arc) { + a = s = "fill"; + i.fill = "white"; + } + for (const e of Object.getOwnPropertyNames(this)) { + if ("extras" === e || "color" === e) continue; + const t = this[e]; + if (!(t instanceof XFAObject)) continue; + const r = t[rn](this.color); + r && (i[r.startsWith("#") ? a : s] = r); + return i; + } + if (this.color?.value) { + const e = this.color[rn](); + i[e.startsWith("#") ? a : s] = e; + } + return i; + } +} +class Filter extends XFAObject { + constructor(e) { + super(Jn, "filter", !0); + this.addRevocationInfo = getStringOption(e.addRevocationInfo, [ + "", + "required", + "optional", + "none", + ]); + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.version = getInteger({ + data: this.version, + defaultValue: 5, + validate: (e) => e >= 1 && e <= 5, + }); + this.appearanceFilter = null; + this.certificates = null; + this.digestMethods = null; + this.encodings = null; + this.encryptionMethods = null; + this.handler = null; + this.lockDocument = null; + this.mdp = null; + this.reasons = null; + this.timeStamp = null; + } +} +class Float extends ContentObject { + constructor(e) { + super(Jn, "float"); + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } + [sr]() { + const e = parseFloat(this[er].trim()); + this[er] = isNaN(e) ? null : e; + } + [an](e) { + return valueToHtml(null !== this[er] ? this[er].toString() : ""); + } +} +class template_Font extends XFAObject { + constructor(e) { + super(Jn, "font", !0); + this.baselineShift = getMeasurement(e.baselineShift); + this.fontHorizontalScale = getFloat({ + data: e.fontHorizontalScale, + defaultValue: 100, + validate: (e) => e >= 0, + }); + this.fontVerticalScale = getFloat({ + data: e.fontVerticalScale, + defaultValue: 100, + validate: (e) => e >= 0, + }); + this.id = e.id || ""; + this.kerningMode = getStringOption(e.kerningMode, ["none", "pair"]); + this.letterSpacing = getMeasurement(e.letterSpacing, "0"); + this.lineThrough = getInteger({ + data: e.lineThrough, + defaultValue: 0, + validate: (e) => 1 === e || 2 === e, + }); + this.lineThroughPeriod = getStringOption(e.lineThroughPeriod, [ + "all", + "word", + ]); + this.overline = getInteger({ + data: e.overline, + defaultValue: 0, + validate: (e) => 1 === e || 2 === e, + }); + this.overlinePeriod = getStringOption(e.overlinePeriod, ["all", "word"]); + this.posture = getStringOption(e.posture, ["normal", "italic"]); + this.size = getMeasurement(e.size, "10pt"); + this.typeface = e.typeface || "Courier"; + this.underline = getInteger({ + data: e.underline, + defaultValue: 0, + validate: (e) => 1 === e || 2 === e, + }); + this.underlinePeriod = getStringOption(e.underlinePeriod, ["all", "word"]); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.weight = getStringOption(e.weight, ["normal", "bold"]); + this.extras = null; + this.fill = null; + } + [Vs](e) { + super[Vs](e); + this[yr].usedTypefaces.add(this.typeface); + } + [rn]() { + const e = toStyle(this, "fill"), + t = e.color; + if (t) + if ("#000000" === t) delete e.color; + else if (!t.startsWith("#")) { + e.background = t; + e.backgroundClip = "text"; + e.color = "transparent"; + } + this.baselineShift && + (e.verticalAlign = measureToString(this.baselineShift)); + e.fontKerning = "none" === this.kerningMode ? "none" : "normal"; + e.letterSpacing = measureToString(this.letterSpacing); + if (0 !== this.lineThrough) { + e.textDecoration = "line-through"; + 2 === this.lineThrough && (e.textDecorationStyle = "double"); + } + if (0 !== this.overline) { + e.textDecoration = "overline"; + 2 === this.overline && (e.textDecorationStyle = "double"); + } + e.fontStyle = this.posture; + e.fontSize = measureToString(0.99 * this.size); + setFontFamily(this, this, this[yr].fontFinder, e); + if (0 !== this.underline) { + e.textDecoration = "underline"; + 2 === this.underline && (e.textDecorationStyle = "double"); + } + e.fontWeight = this.weight; + return e; + } +} +class Format extends XFAObject { + constructor(e) { + super(Jn, "format", !0); + this.id = e.id || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.extras = null; + this.picture = null; + } +} +class Handler extends StringObject { + constructor(e) { + super(Jn, "handler"); + this.id = e.id || ""; + this.type = getStringOption(e.type, ["optional", "required"]); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class Hyphenation extends XFAObject { + constructor(e) { + super(Jn, "hyphenation"); + this.excludeAllCaps = getInteger({ + data: e.excludeAllCaps, + defaultValue: 0, + validate: (e) => 1 === e, + }); + this.excludeInitialCap = getInteger({ + data: e.excludeInitialCap, + defaultValue: 0, + validate: (e) => 1 === e, + }); + this.hyphenate = getInteger({ + data: e.hyphenate, + defaultValue: 0, + validate: (e) => 1 === e, + }); + this.id = e.id || ""; + this.pushCharacterCount = getInteger({ + data: e.pushCharacterCount, + defaultValue: 3, + validate: (e) => e >= 0, + }); + this.remainCharacterCount = getInteger({ + data: e.remainCharacterCount, + defaultValue: 3, + validate: (e) => e >= 0, + }); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.wordCharacterCount = getInteger({ + data: e.wordCharacterCount, + defaultValue: 7, + validate: (e) => e >= 0, + }); + } +} +class Image extends StringObject { + constructor(e) { + super(Jn, "image"); + this.aspect = getStringOption(e.aspect, [ + "fit", + "actual", + "height", + "none", + "width", + ]); + this.contentType = e.contentType || ""; + this.href = e.href || ""; + this.id = e.id || ""; + this.name = e.name || ""; + this.transferEncoding = getStringOption(e.transferEncoding, [ + "base64", + "none", + "package", + ]); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } + [an]() { + if (this.contentType && !vn.has(this.contentType.toLowerCase())) + return HTMLResult.EMPTY; + let e = this[yr].images && this[yr].images.get(this.href); + if (!e && (this.href || !this[er])) return HTMLResult.EMPTY; + e || + "base64" !== this.transferEncoding || + (e = stringToBytes(atob(this[er]))); + if (!e) return HTMLResult.EMPTY; + if (!this.contentType) { + for (const [t, i] of Kn) + if (e.length > t.length && t.every((t, i) => t === e[i])) { + this.contentType = i; + break; + } + if (!this.contentType) return HTMLResult.EMPTY; + } + const t = new Blob([e], { type: this.contentType }); + let i; + switch (this.aspect) { + case "fit": + case "actual": + break; + case "height": + i = { height: "100%", objectFit: "fill" }; + break; + case "none": + i = { width: "100%", height: "100%", objectFit: "fill" }; + break; + case "width": + i = { width: "100%", objectFit: "fill" }; + } + const a = this[pr](); + return HTMLResult.success({ + name: "img", + attributes: { + class: ["xfaImage"], + style: i, + src: URL.createObjectURL(t), + alt: a ? ariaLabel(a[pr]()) : null, + }, + }); + } +} +class ImageEdit extends XFAObject { + constructor(e) { + super(Jn, "imageEdit", !0); + this.data = getStringOption(e.data, ["link", "embed"]); + this.id = e.id || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.border = null; + this.extras = null; + this.margin = null; + } + [an](e) { + return "embed" === this.data + ? HTMLResult.success({ name: "div", children: [], attributes: {} }) + : HTMLResult.EMPTY; + } +} +class Integer extends ContentObject { + constructor(e) { + super(Jn, "integer"); + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } + [sr]() { + const e = parseInt(this[er].trim(), 10); + this[er] = isNaN(e) ? null : e; + } + [an](e) { + return valueToHtml(null !== this[er] ? this[er].toString() : ""); + } +} +class Issuers extends XFAObject { + constructor(e) { + super(Jn, "issuers", !0); + this.id = e.id || ""; + this.type = getStringOption(e.type, ["optional", "required"]); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.certificate = new XFAObjectArray(); + } +} +class Items extends XFAObject { + constructor(e) { + super(Jn, "items", !0); + this.id = e.id || ""; + this.name = e.name || ""; + this.presence = getStringOption(e.presence, [ + "visible", + "hidden", + "inactive", + "invisible", + ]); + this.ref = e.ref || ""; + this.save = getInteger({ + data: e.save, + defaultValue: 0, + validate: (e) => 1 === e, + }); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.boolean = new XFAObjectArray(); + this.date = new XFAObjectArray(); + this.dateTime = new XFAObjectArray(); + this.decimal = new XFAObjectArray(); + this.exData = new XFAObjectArray(); + this.float = new XFAObjectArray(); + this.image = new XFAObjectArray(); + this.integer = new XFAObjectArray(); + this.text = new XFAObjectArray(); + this.time = new XFAObjectArray(); + } + [an]() { + const e = []; + for (const t of this[Er]()) e.push(t[en]()); + return HTMLResult.success(e); + } +} +class Keep extends XFAObject { + constructor(e) { + super(Jn, "keep", !0); + this.id = e.id || ""; + const t = ["none", "contentArea", "pageArea"]; + this.intact = getStringOption(e.intact, t); + this.next = getStringOption(e.next, t); + this.previous = getStringOption(e.previous, t); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.extras = null; + } +} +class KeyUsage extends XFAObject { + constructor(e) { + super(Jn, "keyUsage"); + const t = ["", "yes", "no"]; + this.crlSign = getStringOption(e.crlSign, t); + this.dataEncipherment = getStringOption(e.dataEncipherment, t); + this.decipherOnly = getStringOption(e.decipherOnly, t); + this.digitalSignature = getStringOption(e.digitalSignature, t); + this.encipherOnly = getStringOption(e.encipherOnly, t); + this.id = e.id || ""; + this.keyAgreement = getStringOption(e.keyAgreement, t); + this.keyCertSign = getStringOption(e.keyCertSign, t); + this.keyEncipherment = getStringOption(e.keyEncipherment, t); + this.nonRepudiation = getStringOption(e.nonRepudiation, t); + this.type = getStringOption(e.type, ["optional", "required"]); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class Line extends XFAObject { + constructor(e) { + super(Jn, "line", !0); + this.hand = getStringOption(e.hand, ["even", "left", "right"]); + this.id = e.id || ""; + this.slope = getStringOption(e.slope, ["\\", "/"]); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.edge = null; + } + [an]() { + const e = this[pr]()[pr](), + t = this.edge || new Edge({}), + i = t[rn](), + a = Object.create(null), + s = "visible" === t.presence ? t.thickness : 0; + a.strokeWidth = measureToString(s); + a.stroke = i.color; + let r, + n, + o, + g, + c = "100%", + h = "100%"; + if (e.w <= s) { + [r, n, o, g] = ["50%", 0, "50%", "100%"]; + c = a.strokeWidth; + } else if (e.h <= s) { + [r, n, o, g] = [0, "50%", "100%", "50%"]; + h = a.strokeWidth; + } else + "\\" === this.slope + ? ([r, n, o, g] = [0, 0, "100%", "100%"]) + : ([r, n, o, g] = [0, "100%", "100%", 0]); + const l = { + name: "svg", + children: [ + { + name: "line", + attributes: { xmlns: Hn, x1: r, y1: n, x2: o, y2: g, style: a }, + }, + ], + attributes: { + xmlns: Hn, + width: c, + height: h, + style: { overflow: "visible" }, + }, + }; + if (hasMargin(e)) + return HTMLResult.success({ + name: "div", + attributes: { + style: { display: "inline", width: "100%", height: "100%" }, + }, + children: [l], + }); + l.attributes.style.position = "absolute"; + return HTMLResult.success(l); + } +} +class Linear extends XFAObject { + constructor(e) { + super(Jn, "linear", !0); + this.id = e.id || ""; + this.type = getStringOption(e.type, [ + "toRight", + "toBottom", + "toLeft", + "toTop", + ]); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.color = null; + this.extras = null; + } + [rn](e) { + e = e ? e[rn]() : "#FFFFFF"; + return `linear-gradient(${this.type.replace(/([RBLT])/, " $1").toLowerCase()}, ${e}, ${this.color ? this.color[rn]() : "#000000"})`; + } +} +class LockDocument extends ContentObject { + constructor(e) { + super(Jn, "lockDocument"); + this.id = e.id || ""; + this.type = getStringOption(e.type, ["optional", "required"]); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } + [sr]() { + this[er] = getStringOption(this[er], ["auto", "0", "1"]); + } +} +class Manifest extends XFAObject { + constructor(e) { + super(Jn, "manifest", !0); + this.action = getStringOption(e.action, ["include", "all", "exclude"]); + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.extras = null; + this.ref = new XFAObjectArray(); + } +} +class Margin extends XFAObject { + constructor(e) { + super(Jn, "margin", !0); + this.bottomInset = getMeasurement(e.bottomInset, "0"); + this.id = e.id || ""; + this.leftInset = getMeasurement(e.leftInset, "0"); + this.rightInset = getMeasurement(e.rightInset, "0"); + this.topInset = getMeasurement(e.topInset, "0"); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.extras = null; + } + [rn]() { + return { + margin: + measureToString(this.topInset) + + " " + + measureToString(this.rightInset) + + " " + + measureToString(this.bottomInset) + + " " + + measureToString(this.leftInset), + }; + } +} +class Mdp extends XFAObject { + constructor(e) { + super(Jn, "mdp"); + this.id = e.id || ""; + this.permissions = getInteger({ + data: e.permissions, + defaultValue: 2, + validate: (e) => 1 === e || 3 === e, + }); + this.signatureType = getStringOption(e.signatureType, ["filler", "author"]); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class Medium extends XFAObject { + constructor(e) { + super(Jn, "medium"); + this.id = e.id || ""; + this.imagingBBox = (function getBBox(e) { + const t = -1; + if (!e) return { x: t, y: t, width: t, height: t }; + const i = e + .trim() + .split(/\s*,\s*/) + .map((e) => getMeasurement(e, "-1")); + if (i.length < 4 || i[2] < 0 || i[3] < 0) + return { x: t, y: t, width: t, height: t }; + const [a, s, r, n] = i; + return { x: a, y: s, width: r, height: n }; + })(e.imagingBBox); + this.long = getMeasurement(e.long); + this.orientation = getStringOption(e.orientation, [ + "portrait", + "landscape", + ]); + this.short = getMeasurement(e.short); + this.stock = e.stock || ""; + this.trayIn = getStringOption(e.trayIn, ["auto", "delegate", "pageFront"]); + this.trayOut = getStringOption(e.trayOut, ["auto", "delegate"]); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class Message extends XFAObject { + constructor(e) { + super(Jn, "message", !0); + this.id = e.id || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.text = new XFAObjectArray(); + } +} +class NumericEdit extends XFAObject { + constructor(e) { + super(Jn, "numericEdit", !0); + this.hScrollPolicy = getStringOption(e.hScrollPolicy, [ + "auto", + "off", + "on", + ]); + this.id = e.id || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.border = null; + this.comb = null; + this.extras = null; + this.margin = null; + } + [an](e) { + const t = toStyle(this, "border", "font", "margin"), + i = this[pr]()[pr](), + a = { + name: "input", + attributes: { + type: "text", + fieldId: i[nn], + dataId: i[tr]?.[nn] || i[nn], + class: ["xfaTextfield"], + style: t, + "aria-label": ariaLabel(i), + "aria-required": !1, + }, + }; + if (isRequired(i)) { + a.attributes["aria-required"] = !0; + a.attributes.required = !0; + } + return HTMLResult.success({ + name: "label", + attributes: { class: ["xfaLabel"] }, + children: [a], + }); + } +} +class Occur extends XFAObject { + constructor(e) { + super(Jn, "occur", !0); + this.id = e.id || ""; + this.initial = + "" !== e.initial + ? getInteger({ data: e.initial, defaultValue: "", validate: (e) => !0 }) + : ""; + this.max = + "" !== e.max + ? getInteger({ data: e.max, defaultValue: 1, validate: (e) => !0 }) + : ""; + this.min = + "" !== e.min + ? getInteger({ data: e.min, defaultValue: 1, validate: (e) => !0 }) + : ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.extras = null; + } + [Vs]() { + const e = this[pr](), + t = this.min; + "" === this.min && + (this.min = e instanceof PageArea || e instanceof PageSet ? 0 : 1); + "" === this.max && + (this.max = + "" === t + ? e instanceof PageArea || e instanceof PageSet + ? -1 + : 1 + : this.min); + -1 !== this.max && this.max < this.min && (this.max = this.min); + "" === this.initial && + (this.initial = e instanceof Template ? 1 : this.min); + } +} +class Oid extends StringObject { + constructor(e) { + super(Jn, "oid"); + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class Oids extends XFAObject { + constructor(e) { + super(Jn, "oids", !0); + this.id = e.id || ""; + this.type = getStringOption(e.type, ["optional", "required"]); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.oid = new XFAObjectArray(); + } +} +class Overflow extends XFAObject { + constructor(e) { + super(Jn, "overflow"); + this.id = e.id || ""; + this.leader = e.leader || ""; + this.target = e.target || ""; + this.trailer = e.trailer || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } + [Cr]() { + if (!this[ar]) { + const e = this[pr](), + t = this[mr](), + i = t[Vr](this.target, e), + a = t[Vr](this.leader, e), + s = t[Vr](this.trailer, e); + this[ar] = { + target: i?.[0] || null, + leader: a?.[0] || null, + trailer: s?.[0] || null, + addLeader: !1, + addTrailer: !1, + }; + } + return this[ar]; + } +} +class PageArea extends XFAObject { + constructor(e) { + super(Jn, "pageArea", !0); + this.blankOrNotBlank = getStringOption(e.blankOrNotBlank, [ + "any", + "blank", + "notBlank", + ]); + this.id = e.id || ""; + this.initialNumber = getInteger({ + data: e.initialNumber, + defaultValue: 1, + validate: (e) => !0, + }); + this.name = e.name || ""; + this.numbered = getInteger({ + data: e.numbered, + defaultValue: 1, + validate: (e) => !0, + }); + this.oddOrEven = getStringOption(e.oddOrEven, ["any", "even", "odd"]); + this.pagePosition = getStringOption(e.pagePosition, [ + "any", + "first", + "last", + "only", + "rest", + ]); + this.relevant = getRelevant(e.relevant); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.desc = null; + this.extras = null; + this.medium = null; + this.occur = null; + this.area = new XFAObjectArray(); + this.contentArea = new XFAObjectArray(); + this.draw = new XFAObjectArray(); + this.exclGroup = new XFAObjectArray(); + this.field = new XFAObjectArray(); + this.subform = new XFAObjectArray(); + } + [Lr]() { + if (!this[ar]) { + this[ar] = { numberOfUse: 0 }; + return !0; + } + return ( + !this.occur || + -1 === this.occur.max || + this[ar].numberOfUse < this.occur.max + ); + } + [zs]() { + delete this[ar]; + } + [dr]() { + this[ar] || (this[ar] = { numberOfUse: 0 }); + const e = this[pr](); + if ("orderedOccurrence" === e.relation && this[Lr]()) { + this[ar].numberOfUse += 1; + return this; + } + return e[dr](); + } + [gr]() { + return this[ar].space || { width: 0, height: 0 }; + } + [an]() { + this[ar] || (this[ar] = { numberOfUse: 1 }); + const e = []; + this[ar].children = e; + const t = Object.create(null); + if (this.medium && this.medium.short && this.medium.long) { + t.width = measureToString(this.medium.short); + t.height = measureToString(this.medium.long); + this[ar].space = { width: this.medium.short, height: this.medium.long }; + if ("landscape" === this.medium.orientation) { + const e = t.width; + t.width = t.height; + t.height = e; + this[ar].space = { width: this.medium.long, height: this.medium.short }; + } + } else warn("XFA - No medium specified in pageArea: please file a bug."); + this[Zs]({ + filter: new Set(["area", "draw", "field", "subform"]), + include: !0, + }); + this[Zs]({ filter: new Set(["contentArea"]), include: !0 }); + return HTMLResult.success({ + name: "div", + children: e, + attributes: { + class: ["xfaPage"], + id: this[nn], + style: t, + xfaName: this.name, + }, + }); + } +} +class PageSet extends XFAObject { + constructor(e) { + super(Jn, "pageSet", !0); + this.duplexImposition = getStringOption(e.duplexImposition, [ + "longEdge", + "shortEdge", + ]); + this.id = e.id || ""; + this.name = e.name || ""; + this.relation = getStringOption(e.relation, [ + "orderedOccurrence", + "duplexPaginated", + "simplexPaginated", + ]); + this.relevant = getRelevant(e.relevant); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.extras = null; + this.occur = null; + this.pageArea = new XFAObjectArray(); + this.pageSet = new XFAObjectArray(); + } + [zs]() { + for (const e of this.pageArea.children) e[zs](); + for (const e of this.pageSet.children) e[zs](); + } + [Lr]() { + return ( + !this.occur || + -1 === this.occur.max || + this[ar].numberOfUse < this.occur.max + ); + } + [dr]() { + this[ar] || + (this[ar] = { numberOfUse: 1, pageIndex: -1, pageSetIndex: -1 }); + if ("orderedOccurrence" === this.relation) { + if (this[ar].pageIndex + 1 < this.pageArea.children.length) { + this[ar].pageIndex += 1; + return this.pageArea.children[this[ar].pageIndex][dr](); + } + if (this[ar].pageSetIndex + 1 < this.pageSet.children.length) { + this[ar].pageSetIndex += 1; + return this.pageSet.children[this[ar].pageSetIndex][dr](); + } + if (this[Lr]()) { + this[ar].numberOfUse += 1; + this[ar].pageIndex = -1; + this[ar].pageSetIndex = -1; + return this[dr](); + } + const e = this[pr](); + if (e instanceof PageSet) return e[dr](); + this[zs](); + return this[dr](); + } + const e = this[mr]()[ar].pageNumber, + t = e % 2 == 0 ? "even" : "odd", + i = 0 === e ? "first" : "rest"; + let a = this.pageArea.children.find( + (e) => e.oddOrEven === t && e.pagePosition === i, + ); + if (a) return a; + a = this.pageArea.children.find( + (e) => "any" === e.oddOrEven && e.pagePosition === i, + ); + if (a) return a; + a = this.pageArea.children.find( + (e) => "any" === e.oddOrEven && "any" === e.pagePosition, + ); + return a || this.pageArea.children[0]; + } +} +class Para extends XFAObject { + constructor(e) { + super(Jn, "para", !0); + this.hAlign = getStringOption(e.hAlign, [ + "left", + "center", + "justify", + "justifyAll", + "radix", + "right", + ]); + this.id = e.id || ""; + this.lineHeight = e.lineHeight ? getMeasurement(e.lineHeight, "0pt") : ""; + this.marginLeft = e.marginLeft ? getMeasurement(e.marginLeft, "0pt") : ""; + this.marginRight = e.marginRight + ? getMeasurement(e.marginRight, "0pt") + : ""; + this.orphans = getInteger({ + data: e.orphans, + defaultValue: 0, + validate: (e) => e >= 0, + }); + this.preserve = e.preserve || ""; + this.radixOffset = e.radixOffset + ? getMeasurement(e.radixOffset, "0pt") + : ""; + this.spaceAbove = e.spaceAbove ? getMeasurement(e.spaceAbove, "0pt") : ""; + this.spaceBelow = e.spaceBelow ? getMeasurement(e.spaceBelow, "0pt") : ""; + this.tabDefault = e.tabDefault ? getMeasurement(this.tabDefault) : ""; + this.tabStops = (e.tabStops || "") + .trim() + .split(/\s+/) + .map((e, t) => (t % 2 == 1 ? getMeasurement(e) : e)); + this.textIndent = e.textIndent ? getMeasurement(e.textIndent, "0pt") : ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.vAlign = getStringOption(e.vAlign, ["top", "bottom", "middle"]); + this.widows = getInteger({ + data: e.widows, + defaultValue: 0, + validate: (e) => e >= 0, + }); + this.hyphenation = null; + } + [rn]() { + const e = toStyle(this, "hAlign"); + "" !== this.marginLeft && + (e.paddingLeft = measureToString(this.marginLeft)); + "" !== this.marginRight && + (e.paddingight = measureToString(this.marginRight)); + "" !== this.spaceAbove && (e.paddingTop = measureToString(this.spaceAbove)); + "" !== this.spaceBelow && + (e.paddingBottom = measureToString(this.spaceBelow)); + if ("" !== this.textIndent) { + e.textIndent = measureToString(this.textIndent); + fixTextIndent(e); + } + this.lineHeight > 0 && (e.lineHeight = measureToString(this.lineHeight)); + "" !== this.tabDefault && (e.tabSize = measureToString(this.tabDefault)); + this.tabStops.length; + this.hyphenatation && Object.assign(e, this.hyphenatation[rn]()); + return e; + } +} +class PasswordEdit extends XFAObject { + constructor(e) { + super(Jn, "passwordEdit", !0); + this.hScrollPolicy = getStringOption(e.hScrollPolicy, [ + "auto", + "off", + "on", + ]); + this.id = e.id || ""; + this.passwordChar = e.passwordChar || "*"; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.border = null; + this.extras = null; + this.margin = null; + } +} +class template_Pattern extends XFAObject { + constructor(e) { + super(Jn, "pattern", !0); + this.id = e.id || ""; + this.type = getStringOption(e.type, [ + "crossHatch", + "crossDiagonal", + "diagonalLeft", + "diagonalRight", + "horizontal", + "vertical", + ]); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.color = null; + this.extras = null; + } + [rn](e) { + e = e ? e[rn]() : "#FFFFFF"; + const t = this.color ? this.color[rn]() : "#000000", + i = "repeating-linear-gradient", + a = `${e},${e} 5px,${t} 5px,${t} 10px`; + switch (this.type) { + case "crossHatch": + return `${i}(to top,${a}) ${i}(to right,${a})`; + case "crossDiagonal": + return `${i}(45deg,${a}) ${i}(-45deg,${a})`; + case "diagonalLeft": + return `${i}(45deg,${a})`; + case "diagonalRight": + return `${i}(-45deg,${a})`; + case "horizontal": + return `${i}(to top,${a})`; + case "vertical": + return `${i}(to right,${a})`; + } + return ""; + } +} +class Picture extends StringObject { + constructor(e) { + super(Jn, "picture"); + this.id = e.id || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class Proto extends XFAObject { + constructor(e) { + super(Jn, "proto", !0); + this.appearanceFilter = new XFAObjectArray(); + this.arc = new XFAObjectArray(); + this.area = new XFAObjectArray(); + this.assist = new XFAObjectArray(); + this.barcode = new XFAObjectArray(); + this.bindItems = new XFAObjectArray(); + this.bookend = new XFAObjectArray(); + this.boolean = new XFAObjectArray(); + this.border = new XFAObjectArray(); + this.break = new XFAObjectArray(); + this.breakAfter = new XFAObjectArray(); + this.breakBefore = new XFAObjectArray(); + this.button = new XFAObjectArray(); + this.calculate = new XFAObjectArray(); + this.caption = new XFAObjectArray(); + this.certificate = new XFAObjectArray(); + this.certificates = new XFAObjectArray(); + this.checkButton = new XFAObjectArray(); + this.choiceList = new XFAObjectArray(); + this.color = new XFAObjectArray(); + this.comb = new XFAObjectArray(); + this.connect = new XFAObjectArray(); + this.contentArea = new XFAObjectArray(); + this.corner = new XFAObjectArray(); + this.date = new XFAObjectArray(); + this.dateTime = new XFAObjectArray(); + this.dateTimeEdit = new XFAObjectArray(); + this.decimal = new XFAObjectArray(); + this.defaultUi = new XFAObjectArray(); + this.desc = new XFAObjectArray(); + this.digestMethod = new XFAObjectArray(); + this.digestMethods = new XFAObjectArray(); + this.draw = new XFAObjectArray(); + this.edge = new XFAObjectArray(); + this.encoding = new XFAObjectArray(); + this.encodings = new XFAObjectArray(); + this.encrypt = new XFAObjectArray(); + this.encryptData = new XFAObjectArray(); + this.encryption = new XFAObjectArray(); + this.encryptionMethod = new XFAObjectArray(); + this.encryptionMethods = new XFAObjectArray(); + this.event = new XFAObjectArray(); + this.exData = new XFAObjectArray(); + this.exObject = new XFAObjectArray(); + this.exclGroup = new XFAObjectArray(); + this.execute = new XFAObjectArray(); + this.extras = new XFAObjectArray(); + this.field = new XFAObjectArray(); + this.fill = new XFAObjectArray(); + this.filter = new XFAObjectArray(); + this.float = new XFAObjectArray(); + this.font = new XFAObjectArray(); + this.format = new XFAObjectArray(); + this.handler = new XFAObjectArray(); + this.hyphenation = new XFAObjectArray(); + this.image = new XFAObjectArray(); + this.imageEdit = new XFAObjectArray(); + this.integer = new XFAObjectArray(); + this.issuers = new XFAObjectArray(); + this.items = new XFAObjectArray(); + this.keep = new XFAObjectArray(); + this.keyUsage = new XFAObjectArray(); + this.line = new XFAObjectArray(); + this.linear = new XFAObjectArray(); + this.lockDocument = new XFAObjectArray(); + this.manifest = new XFAObjectArray(); + this.margin = new XFAObjectArray(); + this.mdp = new XFAObjectArray(); + this.medium = new XFAObjectArray(); + this.message = new XFAObjectArray(); + this.numericEdit = new XFAObjectArray(); + this.occur = new XFAObjectArray(); + this.oid = new XFAObjectArray(); + this.oids = new XFAObjectArray(); + this.overflow = new XFAObjectArray(); + this.pageArea = new XFAObjectArray(); + this.pageSet = new XFAObjectArray(); + this.para = new XFAObjectArray(); + this.passwordEdit = new XFAObjectArray(); + this.pattern = new XFAObjectArray(); + this.picture = new XFAObjectArray(); + this.radial = new XFAObjectArray(); + this.reason = new XFAObjectArray(); + this.reasons = new XFAObjectArray(); + this.rectangle = new XFAObjectArray(); + this.ref = new XFAObjectArray(); + this.script = new XFAObjectArray(); + this.setProperty = new XFAObjectArray(); + this.signData = new XFAObjectArray(); + this.signature = new XFAObjectArray(); + this.signing = new XFAObjectArray(); + this.solid = new XFAObjectArray(); + this.speak = new XFAObjectArray(); + this.stipple = new XFAObjectArray(); + this.subform = new XFAObjectArray(); + this.subformSet = new XFAObjectArray(); + this.subjectDN = new XFAObjectArray(); + this.subjectDNs = new XFAObjectArray(); + this.submit = new XFAObjectArray(); + this.text = new XFAObjectArray(); + this.textEdit = new XFAObjectArray(); + this.time = new XFAObjectArray(); + this.timeStamp = new XFAObjectArray(); + this.toolTip = new XFAObjectArray(); + this.traversal = new XFAObjectArray(); + this.traverse = new XFAObjectArray(); + this.ui = new XFAObjectArray(); + this.validate = new XFAObjectArray(); + this.value = new XFAObjectArray(); + this.variables = new XFAObjectArray(); + } +} +class Radial extends XFAObject { + constructor(e) { + super(Jn, "radial", !0); + this.id = e.id || ""; + this.type = getStringOption(e.type, ["toEdge", "toCenter"]); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.color = null; + this.extras = null; + } + [rn](e) { + e = e ? e[rn]() : "#FFFFFF"; + const t = this.color ? this.color[rn]() : "#000000"; + return `radial-gradient(circle at center, ${"toEdge" === this.type ? `${e},${t}` : `${t},${e}`})`; + } +} +class Reason extends StringObject { + constructor(e) { + super(Jn, "reason"); + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class Reasons extends XFAObject { + constructor(e) { + super(Jn, "reasons", !0); + this.id = e.id || ""; + this.type = getStringOption(e.type, ["optional", "required"]); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.reason = new XFAObjectArray(); + } +} +class Rectangle extends XFAObject { + constructor(e) { + super(Jn, "rectangle", !0); + this.hand = getStringOption(e.hand, ["even", "left", "right"]); + this.id = e.id || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.corner = new XFAObjectArray(4); + this.edge = new XFAObjectArray(4); + this.fill = null; + } + [an]() { + const e = this.edge.children.length ? this.edge.children[0] : new Edge({}), + t = e[rn](), + i = Object.create(null); + "visible" === this.fill?.presence + ? Object.assign(i, this.fill[rn]()) + : (i.fill = "transparent"); + i.strokeWidth = measureToString("visible" === e.presence ? e.thickness : 0); + i.stroke = t.color; + const a = ( + this.corner.children.length ? this.corner.children[0] : new Corner({}) + )[rn](), + s = { + name: "svg", + children: [ + { + name: "rect", + attributes: { + xmlns: Hn, + width: "100%", + height: "100%", + x: 0, + y: 0, + rx: a.radius, + ry: a.radius, + style: i, + }, + }, + ], + attributes: { + xmlns: Hn, + style: { overflow: "visible" }, + width: "100%", + height: "100%", + }, + }; + if (hasMargin(this[pr]()[pr]())) + return HTMLResult.success({ + name: "div", + attributes: { + style: { display: "inline", width: "100%", height: "100%" }, + }, + children: [s], + }); + s.attributes.style.position = "absolute"; + return HTMLResult.success(s); + } +} +class RefElement extends StringObject { + constructor(e) { + super(Jn, "ref"); + this.id = e.id || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class Script extends StringObject { + constructor(e) { + super(Jn, "script"); + this.binding = e.binding || ""; + this.contentType = e.contentType || ""; + this.id = e.id || ""; + this.name = e.name || ""; + this.runAt = getStringOption(e.runAt, ["client", "both", "server"]); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class SetProperty extends XFAObject { + constructor(e) { + super(Jn, "setProperty"); + this.connection = e.connection || ""; + this.ref = e.ref || ""; + this.target = e.target || ""; + } +} +class SignData extends XFAObject { + constructor(e) { + super(Jn, "signData", !0); + this.id = e.id || ""; + this.operation = getStringOption(e.operation, ["sign", "clear", "verify"]); + this.ref = e.ref || ""; + this.target = e.target || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.filter = null; + this.manifest = null; + } +} +class Signature extends XFAObject { + constructor(e) { + super(Jn, "signature", !0); + this.id = e.id || ""; + this.type = getStringOption(e.type, ["PDF1.3", "PDF1.6"]); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.border = null; + this.extras = null; + this.filter = null; + this.manifest = null; + this.margin = null; + } +} +class Signing extends XFAObject { + constructor(e) { + super(Jn, "signing", !0); + this.id = e.id || ""; + this.type = getStringOption(e.type, ["optional", "required"]); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.certificate = new XFAObjectArray(); + } +} +class Solid extends XFAObject { + constructor(e) { + super(Jn, "solid", !0); + this.id = e.id || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.extras = null; + } + [rn](e) { + return e ? e[rn]() : "#FFFFFF"; + } +} +class Speak extends StringObject { + constructor(e) { + super(Jn, "speak"); + this.disable = getInteger({ + data: e.disable, + defaultValue: 0, + validate: (e) => 1 === e, + }); + this.id = e.id || ""; + this.priority = getStringOption(e.priority, [ + "custom", + "caption", + "name", + "toolTip", + ]); + this.rid = e.rid || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class Stipple extends XFAObject { + constructor(e) { + super(Jn, "stipple", !0); + this.id = e.id || ""; + this.rate = getInteger({ + data: e.rate, + defaultValue: 50, + validate: (e) => e >= 0 && e <= 100, + }); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.color = null; + this.extras = null; + } + [rn](e) { + const t = this.rate / 100; + return Util.makeHexColor( + Math.round(e.value.r * (1 - t) + this.value.r * t), + Math.round(e.value.g * (1 - t) + this.value.g * t), + Math.round(e.value.b * (1 - t) + this.value.b * t), + ); + } +} +class Subform extends XFAObject { + constructor(e) { + super(Jn, "subform", !0); + this.access = getStringOption(e.access, [ + "open", + "nonInteractive", + "protected", + "readOnly", + ]); + this.allowMacro = getInteger({ + data: e.allowMacro, + defaultValue: 0, + validate: (e) => 1 === e, + }); + this.anchorType = getStringOption(e.anchorType, [ + "topLeft", + "bottomCenter", + "bottomLeft", + "bottomRight", + "middleCenter", + "middleLeft", + "middleRight", + "topCenter", + "topRight", + ]); + this.colSpan = getInteger({ + data: e.colSpan, + defaultValue: 1, + validate: (e) => e >= 1 || -1 === e, + }); + this.columnWidths = (e.columnWidths || "") + .trim() + .split(/\s+/) + .map((e) => ("-1" === e ? -1 : getMeasurement(e))); + this.h = e.h ? getMeasurement(e.h) : ""; + this.hAlign = getStringOption(e.hAlign, [ + "left", + "center", + "justify", + "justifyAll", + "radix", + "right", + ]); + this.id = e.id || ""; + this.layout = getStringOption(e.layout, [ + "position", + "lr-tb", + "rl-row", + "rl-tb", + "row", + "table", + "tb", + ]); + this.locale = e.locale || ""; + this.maxH = getMeasurement(e.maxH, "0pt"); + this.maxW = getMeasurement(e.maxW, "0pt"); + this.mergeMode = getStringOption(e.mergeMode, [ + "consumeData", + "matchTemplate", + ]); + this.minH = getMeasurement(e.minH, "0pt"); + this.minW = getMeasurement(e.minW, "0pt"); + this.name = e.name || ""; + this.presence = getStringOption(e.presence, [ + "visible", + "hidden", + "inactive", + "invisible", + ]); + this.relevant = getRelevant(e.relevant); + this.restoreState = getStringOption(e.restoreState, ["manual", "auto"]); + this.scope = getStringOption(e.scope, ["name", "none"]); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.w = e.w ? getMeasurement(e.w) : ""; + this.x = getMeasurement(e.x, "0pt"); + this.y = getMeasurement(e.y, "0pt"); + this.assist = null; + this.bind = null; + this.bookend = null; + this.border = null; + this.break = null; + this.calculate = null; + this.desc = null; + this.extras = null; + this.keep = null; + this.margin = null; + this.occur = null; + this.overflow = null; + this.pageSet = null; + this.para = null; + this.traversal = null; + this.validate = null; + this.variables = null; + this.area = new XFAObjectArray(); + this.breakAfter = new XFAObjectArray(); + this.breakBefore = new XFAObjectArray(); + this.connect = new XFAObjectArray(); + this.draw = new XFAObjectArray(); + this.event = new XFAObjectArray(); + this.exObject = new XFAObjectArray(); + this.exclGroup = new XFAObjectArray(); + this.field = new XFAObjectArray(); + this.proto = new XFAObjectArray(); + this.setProperty = new XFAObjectArray(); + this.subform = new XFAObjectArray(); + this.subformSet = new XFAObjectArray(); + } + [fr]() { + const e = this[pr](); + return e instanceof SubformSet ? e[fr]() : e; + } + [kr]() { + return !0; + } + [Mr]() { + return ( + (this.layout.endsWith("-tb") && + 0 === this[ar].attempt && + this[ar].numberInLine > 0) || + this[pr]()[Mr]() + ); + } + *[ur]() { + yield* getContainedChildren(this); + } + [rr]() { + return flushHTML(this); + } + [Xs](e, t) { + addHTML(this, e, t); + } + [gr]() { + return getAvailableSpace(this); + } + [xr]() { + const e = this[fr](); + if (!e[xr]()) return !1; + if (void 0 !== this[ar]._isSplittable) return this[ar]._isSplittable; + if ("position" === this.layout || this.layout.includes("row")) { + this[ar]._isSplittable = !1; + return !1; + } + if (this.keep && "none" !== this.keep.intact) { + this[ar]._isSplittable = !1; + return !1; + } + if (e.layout?.endsWith("-tb") && 0 !== e[ar].numberInLine) return !1; + this[ar]._isSplittable = !0; + return !0; + } + [an](e) { + setTabIndex(this); + if (this.break) { + if ("auto" !== this.break.after || "" !== this.break.afterTarget) { + const e = new BreakAfter({ + targetType: this.break.after, + target: this.break.afterTarget, + startNew: this.break.startNew.toString(), + }); + e[yr] = this[yr]; + this[js](e); + this.breakAfter.push(e); + } + if ("auto" !== this.break.before || "" !== this.break.beforeTarget) { + const e = new BreakBefore({ + targetType: this.break.before, + target: this.break.beforeTarget, + startNew: this.break.startNew.toString(), + }); + e[yr] = this[yr]; + this[js](e); + this.breakBefore.push(e); + } + if ("" !== this.break.overflowTarget) { + const e = new Overflow({ + target: this.break.overflowTarget, + leader: this.break.overflowLeader, + trailer: this.break.overflowTrailer, + }); + e[yr] = this[yr]; + this[js](e); + this.overflow.push(e); + } + this[Xr](this.break); + this.break = null; + } + if ("hidden" === this.presence || "inactive" === this.presence) + return HTMLResult.EMPTY; + (this.breakBefore.children.length > 1 || + this.breakAfter.children.length > 1) && + warn( + "XFA - Several breakBefore or breakAfter in subforms: please file a bug.", + ); + if (this.breakBefore.children.length >= 1) { + const e = this.breakBefore.children[0]; + if (handleBreak(e)) return HTMLResult.breakNode(e); + } + if (this[ar]?.afterBreakAfter) return HTMLResult.EMPTY; + fixDimensions(this); + const t = [], + i = { id: this[nn], class: [] }; + setAccess(this, i.class); + this[ar] || (this[ar] = Object.create(null)); + Object.assign(this[ar], { + children: t, + line: null, + attributes: i, + attempt: 0, + numberInLine: 0, + availableSpace: { + width: Math.min(this.w || 1 / 0, e.width), + height: Math.min(this.h || 1 / 0, e.height), + }, + width: 0, + height: 0, + prevHeight: 0, + currentWidth: 0, + }); + const a = this[mr](), + s = a[ar].noLayoutFailure, + r = this[xr](); + r || setFirstUnsplittable(this); + if (!checkDimensions(this, e)) return HTMLResult.FAILURE; + const n = new Set([ + "area", + "draw", + "exclGroup", + "field", + "subform", + "subformSet", + ]); + if (this.layout.includes("row")) { + const e = this[fr]().columnWidths; + if (Array.isArray(e) && e.length > 0) { + this[ar].columnWidths = e; + this[ar].currentColumn = 0; + } + } + const o = toStyle( + this, + "anchorType", + "dimensions", + "position", + "presence", + "border", + "margin", + "hAlign", + ), + g = ["xfaSubform"], + c = layoutClass(this); + c && g.push(c); + i.style = o; + i.class = g; + this.name && (i.xfaName = this.name); + if (this.overflow) { + const t = this.overflow[Cr](); + if (t.addLeader) { + t.addLeader = !1; + handleOverflow(this, t.leader, e); + } + } + this[Wr](); + const h = "lr-tb" === this.layout || "rl-tb" === this.layout, + l = h ? 2 : 1; + for (; this[ar].attempt < l; this[ar].attempt++) { + h && 1 === this[ar].attempt && (this[ar].numberInLine = 0); + const e = this[Zs]({ filter: n, include: !0 }); + if (e.success) break; + if (e.isBreak()) { + this[Pr](); + return e; + } + if ( + h && + 0 === this[ar].attempt && + 0 === this[ar].numberInLine && + !a[ar].noLayoutFailure + ) { + this[ar].attempt = l; + break; + } + } + this[Pr](); + r || unsetFirstUnsplittable(this); + a[ar].noLayoutFailure = s; + if (this[ar].attempt === l) { + this.overflow && (this[mr]()[ar].overflowNode = this.overflow); + r || delete this[ar]; + return HTMLResult.FAILURE; + } + if (this.overflow) { + const t = this.overflow[Cr](); + if (t.addTrailer) { + t.addTrailer = !1; + handleOverflow(this, t.trailer, e); + } + } + let C = 0, + Q = 0; + if (this.margin) { + C = this.margin.leftInset + this.margin.rightInset; + Q = this.margin.topInset + this.margin.bottomInset; + } + const E = Math.max(this[ar].width + C, this.w || 0), + u = Math.max(this[ar].height + Q, this.h || 0), + d = [this.x, this.y, E, u]; + "" === this.w && (o.width = measureToString(E)); + "" === this.h && (o.height = measureToString(u)); + if (("0px" === o.width || "0px" === o.height) && 0 === t.length) + return HTMLResult.EMPTY; + const f = { name: "div", attributes: i, children: t }; + applyAssist(this, i); + const p = HTMLResult.success(createWrapper(this, f), d); + if (this.breakAfter.children.length >= 1) { + const e = this.breakAfter.children[0]; + if (handleBreak(e)) { + this[ar].afterBreakAfter = p; + return HTMLResult.breakNode(e); + } + } + delete this[ar]; + return p; + } +} +class SubformSet extends XFAObject { + constructor(e) { + super(Jn, "subformSet", !0); + this.id = e.id || ""; + this.name = e.name || ""; + this.relation = getStringOption(e.relation, [ + "ordered", + "choice", + "unordered", + ]); + this.relevant = getRelevant(e.relevant); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.bookend = null; + this.break = null; + this.desc = null; + this.extras = null; + this.occur = null; + this.overflow = null; + this.breakAfter = new XFAObjectArray(); + this.breakBefore = new XFAObjectArray(); + this.subform = new XFAObjectArray(); + this.subformSet = new XFAObjectArray(); + } + *[ur]() { + yield* getContainedChildren(this); + } + [fr]() { + let e = this[pr](); + for (; !(e instanceof Subform); ) e = e[pr](); + return e; + } + [kr]() { + return !0; + } +} +class SubjectDN extends ContentObject { + constructor(e) { + super(Jn, "subjectDN"); + this.delimiter = e.delimiter || ","; + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } + [sr]() { + this[er] = new Map( + this[er].split(this.delimiter).map((e) => { + (e = e.split("=", 2))[0] = e[0].trim(); + return e; + }), + ); + } +} +class SubjectDNs extends XFAObject { + constructor(e) { + super(Jn, "subjectDNs", !0); + this.id = e.id || ""; + this.type = getStringOption(e.type, ["optional", "required"]); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.subjectDN = new XFAObjectArray(); + } +} +class Submit extends XFAObject { + constructor(e) { + super(Jn, "submit", !0); + this.embedPDF = getInteger({ + data: e.embedPDF, + defaultValue: 0, + validate: (e) => 1 === e, + }); + this.format = getStringOption(e.format, [ + "xdp", + "formdata", + "pdf", + "urlencoded", + "xfd", + "xml", + ]); + this.id = e.id || ""; + this.target = e.target || ""; + this.textEncoding = getKeyword({ + data: e.textEncoding ? e.textEncoding.toLowerCase() : "", + defaultValue: "", + validate: (e) => + [ + "utf-8", + "big-five", + "fontspecific", + "gbk", + "gb-18030", + "gb-2312", + "ksc-5601", + "none", + "shift-jis", + "ucs-2", + "utf-16", + ].includes(e) || e.match(/iso-8859-\d{2}/), + }); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.xdpContent = e.xdpContent || ""; + this.encrypt = null; + this.encryptData = new XFAObjectArray(); + this.signData = new XFAObjectArray(); + } +} +class Template extends XFAObject { + constructor(e) { + super(Jn, "template", !0); + this.baseProfile = getStringOption(e.baseProfile, [ + "full", + "interactiveForms", + ]); + this.extras = null; + this.subform = new XFAObjectArray(); + } + [sr]() { + 0 === this.subform.children.length && + warn("XFA - No subforms in template node."); + this.subform.children.length >= 2 && + warn("XFA - Several subforms in template node: please file a bug."); + this[An] = 5e3; + } + [xr]() { + return !0; + } + [Vr](e, t) { + return e.startsWith("#") + ? [this[br].get(e.slice(1))] + : searchNode(this, t, e, !0, !0); + } + *[tn]() { + if (!this.subform.children.length) + return HTMLResult.success({ name: "div", children: [] }); + this[ar] = { + overflowNode: null, + firstUnsplittable: null, + currentContentArea: null, + currentPageArea: null, + noLayoutFailure: !1, + pageNumber: 1, + pagePosition: "first", + oddOrEven: "odd", + blankOrNotBlank: "nonBlank", + paraStack: [], + }; + const e = this.subform.children[0]; + e.pageSet[zs](); + const t = e.pageSet.pageArea.children, + i = { name: "div", children: [] }; + let a = null, + s = null, + r = null; + if (e.breakBefore.children.length >= 1) { + s = e.breakBefore.children[0]; + r = s.target; + } else if ( + e.subform.children.length >= 1 && + e.subform.children[0].breakBefore.children.length >= 1 + ) { + s = e.subform.children[0].breakBefore.children[0]; + r = s.target; + } else if (e.break?.beforeTarget) { + s = e.break; + r = s.beforeTarget; + } else if ( + e.subform.children.length >= 1 && + e.subform.children[0].break?.beforeTarget + ) { + s = e.subform.children[0].break; + r = s.beforeTarget; + } + if (s) { + const e = this[Vr](r, s[pr]()); + if (e instanceof PageArea) { + a = e; + s[ar] = {}; + } + } + a || (a = t[0]); + a[ar] = { numberOfUse: 1 }; + const n = a[pr](); + n[ar] = { + numberOfUse: 1, + pageIndex: n.pageArea.children.indexOf(a), + pageSetIndex: 0, + }; + let o, + g = null, + c = null, + h = !0, + l = 0, + C = 0; + for (;;) { + if (h) l = 0; + else { + i.children.pop(); + if (3 == ++l) { + warn("XFA - Something goes wrong: please file a bug."); + return i; + } + } + o = null; + this[ar].currentPageArea = a; + const t = a[an]().html; + i.children.push(t); + if (g) { + this[ar].noLayoutFailure = !0; + t.children.push(g[an](a[ar].space).html); + g = null; + } + if (c) { + this[ar].noLayoutFailure = !0; + t.children.push(c[an](a[ar].space).html); + c = null; + } + const s = a.contentArea.children, + r = t.children.filter((e) => + e.attributes.class.includes("xfaContentarea"), + ); + h = !1; + this[ar].firstUnsplittable = null; + this[ar].noLayoutFailure = !1; + const flush = (t) => { + const i = e[rr](); + if (i) { + h ||= i.children?.length > 0; + r[t].children.push(i); + } + }; + for (let t = C, a = s.length; t < a; t++) { + const a = (this[ar].currentContentArea = s[t]), + n = { width: a.w, height: a.h }; + C = 0; + if (g) { + r[t].children.push(g[an](n).html); + g = null; + } + if (c) { + r[t].children.push(c[an](n).html); + c = null; + } + const l = e[an](n); + if (l.success) { + if (l.html) { + h ||= l.html.children?.length > 0; + r[t].children.push(l.html); + } else !h && i.children.length > 1 && i.children.pop(); + return i; + } + if (l.isBreak()) { + const e = l.breakNode; + flush(t); + if ("auto" === e.targetType) continue; + if (e.leader) { + g = this[Vr](e.leader, e[pr]()); + g = g ? g[0] : null; + } + if (e.trailer) { + c = this[Vr](e.trailer, e[pr]()); + c = c ? c[0] : null; + } + if ("pageArea" === e.targetType) { + o = e[ar].target; + t = 1 / 0; + } else if (e[ar].target) { + o = e[ar].target; + C = e[ar].index + 1; + t = 1 / 0; + } else t = e[ar].index; + } else if (this[ar].overflowNode) { + const e = this[ar].overflowNode; + this[ar].overflowNode = null; + const i = e[Cr](), + a = i.target; + i.addLeader = null !== i.leader; + i.addTrailer = null !== i.trailer; + flush(t); + const r = t; + t = 1 / 0; + if (a instanceof PageArea) o = a; + else if (a instanceof ContentArea) { + const e = s.indexOf(a); + if (-1 !== e) e > r ? (t = e - 1) : (C = e); + else { + o = a[pr](); + C = o.contentArea.children.indexOf(a); + } + } + } else flush(t); + } + this[ar].pageNumber += 1; + o && (o[Lr]() ? (o[ar].numberOfUse += 1) : (o = null)); + a = o || a[dr](); + yield null; + } + } +} +class Text extends ContentObject { + constructor(e) { + super(Jn, "text"); + this.id = e.id || ""; + this.maxChars = getInteger({ + data: e.maxChars, + defaultValue: 0, + validate: (e) => e >= 0, + }); + this.name = e.name || ""; + this.rid = e.rid || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } + [Ws]() { + return !0; + } + [Kr](e) { + if (e[Hr] === gn.xhtml.id) { + this[er] = e; + return !0; + } + warn(`XFA - Invalid content in Text: ${e[Yr]}.`); + return !1; + } + [qr](e) { + this[er] instanceof XFAObject || super[qr](e); + } + [sr]() { + "string" == typeof this[er] && + (this[er] = this[er].replaceAll("\r\n", "\n")); + } + [Cr]() { + return "string" == typeof this[er] + ? this[er] + .split(/[\u2029\u2028\n]/) + .reduce((e, t) => { + t && e.push(t); + return e; + }, []) + .join("\n") + : this[er][en](); + } + [an](e) { + if ("string" == typeof this[er]) { + const e = valueToHtml(this[er]).html; + if (this[er].includes("\u2029")) { + e.name = "div"; + e.children = []; + this[er] + .split("\u2029") + .map((e) => + e.split(/[\u2028\n]/).reduce((e, t) => { + e.push({ name: "span", value: t }, { name: "br" }); + return e; + }, []), + ) + .forEach((t) => { + e.children.push({ name: "p", children: t }); + }); + } else if (/[\u2028\n]/.test(this[er])) { + e.name = "div"; + e.children = []; + this[er].split(/[\u2028\n]/).forEach((t) => { + e.children.push({ name: "span", value: t }, { name: "br" }); + }); + } + return HTMLResult.success(e); + } + return this[er][an](e); + } +} +class TextEdit extends XFAObject { + constructor(e) { + super(Jn, "textEdit", !0); + this.allowRichText = getInteger({ + data: e.allowRichText, + defaultValue: 0, + validate: (e) => 1 === e, + }); + this.hScrollPolicy = getStringOption(e.hScrollPolicy, [ + "auto", + "off", + "on", + ]); + this.id = e.id || ""; + this.multiLine = getInteger({ + data: e.multiLine, + defaultValue: "", + validate: (e) => 0 === e || 1 === e, + }); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.vScrollPolicy = getStringOption(e.vScrollPolicy, [ + "auto", + "off", + "on", + ]); + this.border = null; + this.comb = null; + this.extras = null; + this.margin = null; + } + [an](e) { + const t = toStyle(this, "border", "font", "margin"); + let i; + const a = this[pr]()[pr](); + "" === this.multiLine && (this.multiLine = a instanceof Draw ? 1 : 0); + i = + 1 === this.multiLine + ? { + name: "textarea", + attributes: { + dataId: a[tr]?.[nn] || a[nn], + fieldId: a[nn], + class: ["xfaTextfield"], + style: t, + "aria-label": ariaLabel(a), + "aria-required": !1, + }, + } + : { + name: "input", + attributes: { + type: "text", + dataId: a[tr]?.[nn] || a[nn], + fieldId: a[nn], + class: ["xfaTextfield"], + style: t, + "aria-label": ariaLabel(a), + "aria-required": !1, + }, + }; + if (isRequired(a)) { + i.attributes["aria-required"] = !0; + i.attributes.required = !0; + } + return HTMLResult.success({ + name: "label", + attributes: { class: ["xfaLabel"] }, + children: [i], + }); + } +} +class Time extends StringObject { + constructor(e) { + super(Jn, "time"); + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } + [sr]() { + const e = this[er].trim(); + this[er] = e ? new Date(e) : null; + } + [an](e) { + return valueToHtml(this[er] ? this[er].toString() : ""); + } +} +class TimeStamp extends XFAObject { + constructor(e) { + super(Jn, "timeStamp"); + this.id = e.id || ""; + this.server = e.server || ""; + this.type = getStringOption(e.type, ["optional", "required"]); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class ToolTip extends StringObject { + constructor(e) { + super(Jn, "toolTip"); + this.id = e.id || ""; + this.rid = e.rid || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class Traversal extends XFAObject { + constructor(e) { + super(Jn, "traversal", !0); + this.id = e.id || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.extras = null; + this.traverse = new XFAObjectArray(); + } +} +class Traverse extends XFAObject { + constructor(e) { + super(Jn, "traverse", !0); + this.id = e.id || ""; + this.operation = getStringOption(e.operation, [ + "next", + "back", + "down", + "first", + "left", + "right", + "up", + ]); + this.ref = e.ref || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.extras = null; + this.script = null; + } + get name() { + return this.operation; + } + [Ur]() { + return !1; + } +} +class Ui extends XFAObject { + constructor(e) { + super(Jn, "ui", !0); + this.id = e.id || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.extras = null; + this.picture = null; + this.barcode = null; + this.button = null; + this.checkButton = null; + this.choiceList = null; + this.dateTimeEdit = null; + this.defaultUi = null; + this.imageEdit = null; + this.numericEdit = null; + this.passwordEdit = null; + this.signature = null; + this.textEdit = null; + } + [Cr]() { + if (void 0 === this[ar]) { + for (const e of Object.getOwnPropertyNames(this)) { + if ("extras" === e || "picture" === e) continue; + const t = this[e]; + if (t instanceof XFAObject) { + this[ar] = t; + return t; + } + } + this[ar] = null; + } + return this[ar]; + } + [an](e) { + const t = this[Cr](); + return t ? t[an](e) : HTMLResult.EMPTY; + } +} +class Validate extends XFAObject { + constructor(e) { + super(Jn, "validate", !0); + this.formatTest = getStringOption(e.formatTest, [ + "warning", + "disabled", + "error", + ]); + this.id = e.id || ""; + this.nullTest = getStringOption(e.nullTest, [ + "disabled", + "error", + "warning", + ]); + this.scriptTest = getStringOption(e.scriptTest, [ + "error", + "disabled", + "warning", + ]); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.extras = null; + this.message = null; + this.picture = null; + this.script = null; + } +} +class Value extends XFAObject { + constructor(e) { + super(Jn, "value", !0); + this.id = e.id || ""; + this.override = getInteger({ + data: e.override, + defaultValue: 0, + validate: (e) => 1 === e, + }); + this.relevant = getRelevant(e.relevant); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.arc = null; + this.boolean = null; + this.date = null; + this.dateTime = null; + this.decimal = null; + this.exData = null; + this.float = null; + this.image = null; + this.integer = null; + this.line = null; + this.rectangle = null; + this.text = null; + this.time = null; + } + [$r](e) { + const t = this[pr](); + if (t instanceof Field && t.ui?.imageEdit) { + if (!this.image) { + this.image = new Image({}); + this[js](this.image); + } + this.image[er] = e[er]; + return; + } + const i = e[Yr]; + if (null === this[i]) { + for (const e of Object.getOwnPropertyNames(this)) { + const t = this[e]; + if (t instanceof XFAObject) { + this[e] = null; + this[Xr](t); + } + } + this[e[Yr]] = e; + this[js](e); + } else this[i][er] = e[er]; + } + [en]() { + if (this.exData) + return "string" == typeof this.exData[er] + ? this.exData[er].trim() + : this.exData[er][en]().trim(); + for (const e of Object.getOwnPropertyNames(this)) { + if ("image" === e) continue; + const t = this[e]; + if (t instanceof XFAObject) return (t[er] || "").toString().trim(); + } + return null; + } + [an](e) { + for (const t of Object.getOwnPropertyNames(this)) { + const i = this[t]; + if (i instanceof XFAObject) return i[an](e); + } + return HTMLResult.EMPTY; + } +} +class Variables extends XFAObject { + constructor(e) { + super(Jn, "variables", !0); + this.id = e.id || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.boolean = new XFAObjectArray(); + this.date = new XFAObjectArray(); + this.dateTime = new XFAObjectArray(); + this.decimal = new XFAObjectArray(); + this.exData = new XFAObjectArray(); + this.float = new XFAObjectArray(); + this.image = new XFAObjectArray(); + this.integer = new XFAObjectArray(); + this.manifest = new XFAObjectArray(); + this.script = new XFAObjectArray(); + this.text = new XFAObjectArray(); + this.time = new XFAObjectArray(); + } + [Ur]() { + return !0; + } +} +class TemplateNamespace { + static [on](e, t) { + if (TemplateNamespace.hasOwnProperty(e)) { + const i = TemplateNamespace[e](t); + i[_r](t); + return i; + } + } + static appearanceFilter(e) { + return new AppearanceFilter(e); + } + static arc(e) { + return new Arc(e); + } + static area(e) { + return new Area(e); + } + static assist(e) { + return new Assist(e); + } + static barcode(e) { + return new Barcode(e); + } + static bind(e) { + return new Bind(e); + } + static bindItems(e) { + return new BindItems(e); + } + static bookend(e) { + return new Bookend(e); + } + static boolean(e) { + return new BooleanElement(e); + } + static border(e) { + return new Border(e); + } + static break(e) { + return new Break(e); + } + static breakAfter(e) { + return new BreakAfter(e); + } + static breakBefore(e) { + return new BreakBefore(e); + } + static button(e) { + return new Button(e); + } + static calculate(e) { + return new Calculate(e); + } + static caption(e) { + return new Caption(e); + } + static certificate(e) { + return new Certificate(e); + } + static certificates(e) { + return new Certificates(e); + } + static checkButton(e) { + return new CheckButton(e); + } + static choiceList(e) { + return new ChoiceList(e); + } + static color(e) { + return new Color(e); + } + static comb(e) { + return new Comb(e); + } + static connect(e) { + return new Connect(e); + } + static contentArea(e) { + return new ContentArea(e); + } + static corner(e) { + return new Corner(e); + } + static date(e) { + return new DateElement(e); + } + static dateTime(e) { + return new DateTime(e); + } + static dateTimeEdit(e) { + return new DateTimeEdit(e); + } + static decimal(e) { + return new Decimal(e); + } + static defaultUi(e) { + return new DefaultUi(e); + } + static desc(e) { + return new Desc(e); + } + static digestMethod(e) { + return new DigestMethod(e); + } + static digestMethods(e) { + return new DigestMethods(e); + } + static draw(e) { + return new Draw(e); + } + static edge(e) { + return new Edge(e); + } + static encoding(e) { + return new Encoding(e); + } + static encodings(e) { + return new Encodings(e); + } + static encrypt(e) { + return new Encrypt(e); + } + static encryptData(e) { + return new EncryptData(e); + } + static encryption(e) { + return new Encryption(e); + } + static encryptionMethod(e) { + return new EncryptionMethod(e); + } + static encryptionMethods(e) { + return new EncryptionMethods(e); + } + static event(e) { + return new Event(e); + } + static exData(e) { + return new ExData(e); + } + static exObject(e) { + return new ExObject(e); + } + static exclGroup(e) { + return new ExclGroup(e); + } + static execute(e) { + return new Execute(e); + } + static extras(e) { + return new Extras(e); + } + static field(e) { + return new Field(e); + } + static fill(e) { + return new Fill(e); + } + static filter(e) { + return new Filter(e); + } + static float(e) { + return new Float(e); + } + static font(e) { + return new template_Font(e); + } + static format(e) { + return new Format(e); + } + static handler(e) { + return new Handler(e); + } + static hyphenation(e) { + return new Hyphenation(e); + } + static image(e) { + return new Image(e); + } + static imageEdit(e) { + return new ImageEdit(e); + } + static integer(e) { + return new Integer(e); + } + static issuers(e) { + return new Issuers(e); + } + static items(e) { + return new Items(e); + } + static keep(e) { + return new Keep(e); + } + static keyUsage(e) { + return new KeyUsage(e); + } + static line(e) { + return new Line(e); + } + static linear(e) { + return new Linear(e); + } + static lockDocument(e) { + return new LockDocument(e); + } + static manifest(e) { + return new Manifest(e); + } + static margin(e) { + return new Margin(e); + } + static mdp(e) { + return new Mdp(e); + } + static medium(e) { + return new Medium(e); + } + static message(e) { + return new Message(e); + } + static numericEdit(e) { + return new NumericEdit(e); + } + static occur(e) { + return new Occur(e); + } + static oid(e) { + return new Oid(e); + } + static oids(e) { + return new Oids(e); + } + static overflow(e) { + return new Overflow(e); + } + static pageArea(e) { + return new PageArea(e); + } + static pageSet(e) { + return new PageSet(e); + } + static para(e) { + return new Para(e); + } + static passwordEdit(e) { + return new PasswordEdit(e); + } + static pattern(e) { + return new template_Pattern(e); + } + static picture(e) { + return new Picture(e); + } + static proto(e) { + return new Proto(e); + } + static radial(e) { + return new Radial(e); + } + static reason(e) { + return new Reason(e); + } + static reasons(e) { + return new Reasons(e); + } + static rectangle(e) { + return new Rectangle(e); + } + static ref(e) { + return new RefElement(e); + } + static script(e) { + return new Script(e); + } + static setProperty(e) { + return new SetProperty(e); + } + static signData(e) { + return new SignData(e); + } + static signature(e) { + return new Signature(e); + } + static signing(e) { + return new Signing(e); + } + static solid(e) { + return new Solid(e); + } + static speak(e) { + return new Speak(e); + } + static stipple(e) { + return new Stipple(e); + } + static subform(e) { + return new Subform(e); + } + static subformSet(e) { + return new SubformSet(e); + } + static subjectDN(e) { + return new SubjectDN(e); + } + static subjectDNs(e) { + return new SubjectDNs(e); + } + static submit(e) { + return new Submit(e); + } + static template(e) { + return new Template(e); + } + static text(e) { + return new Text(e); + } + static textEdit(e) { + return new TextEdit(e); + } + static time(e) { + return new Time(e); + } + static timeStamp(e) { + return new TimeStamp(e); + } + static toolTip(e) { + return new ToolTip(e); + } + static traversal(e) { + return new Traversal(e); + } + static traverse(e) { + return new Traverse(e); + } + static ui(e) { + return new Ui(e); + } + static validate(e) { + return new Validate(e); + } + static value(e) { + return new Value(e); + } + static variables(e) { + return new Variables(e); + } +} +const Tn = gn.datasets.id; +function createText(e) { + const t = new Text({}); + t[er] = e; + return t; +} +class Binder { + constructor(e) { + this.root = e; + this.datasets = e.datasets; + this.data = e.datasets?.data || new XmlObject(gn.datasets.id, "data"); + this.emptyMerge = 0 === this.data[Er]().length; + this.root.form = this.form = e.template[$s](); + } + _isConsumeData() { + return !this.emptyMerge && this._mergeMode; + } + _isMatchTemplate() { + return !this._isConsumeData(); + } + bind() { + this._bindElement(this.form, this.data); + return this.form; + } + getData() { + return this.data; + } + _bindValue(e, t, i) { + e[tr] = t; + if (e[wr]()) + if (t[Rr]()) { + const i = t[lr](); + e[$r](createText(i)); + } else if ( + e instanceof Field && + "multiSelect" === e.ui?.choiceList?.open + ) { + const i = t[Er]() + .map((e) => e[er].trim()) + .join("\n"); + e[$r](createText(i)); + } else + this._isConsumeData() && warn("XFA - Nodes haven't the same type."); + else + !t[Rr]() || this._isMatchTemplate() + ? this._bindElement(e, t) + : warn("XFA - Nodes haven't the same type."); + } + _findDataByNameToConsume(e, t, i, a) { + if (!e) return null; + let s, r; + for (let a = 0; a < 3; a++) { + s = i[Qr](e, !1, !0); + for (;;) { + r = s.next().value; + if (!r) break; + if (t === r[Rr]()) return r; + } + if (i[Hr] === gn.datasets.id && "data" === i[Yr]) break; + i = i[pr](); + } + if (!a) return null; + s = this.data[Qr](e, !0, !1); + r = s.next().value; + if (r) return r; + s = this.data[nr](e, !0); + r = s.next().value; + return r?.[Rr]() ? r : null; + } + _setProperties(e, t) { + if (e.hasOwnProperty("setProperty")) + for (const { ref: i, target: a, connection: s } of e.setProperty + .children) { + if (s) continue; + if (!i) continue; + const r = searchNode(this.root, t, i, !1, !1); + if (!r) { + warn(`XFA - Invalid reference: ${i}.`); + continue; + } + const [n] = r; + if (!n[Nr](this.data)) { + warn("XFA - Invalid node: must be a data node."); + continue; + } + const o = searchNode(this.root, e, a, !1, !1); + if (!o) { + warn(`XFA - Invalid target: ${a}.`); + continue; + } + const [g] = o; + if (!g[Nr](e)) { + warn("XFA - Invalid target: must be a property or subproperty."); + continue; + } + const c = g[pr](); + if (g instanceof SetProperty || c instanceof SetProperty) { + warn( + "XFA - Invalid target: cannot be a setProperty or one of its properties.", + ); + continue; + } + if (g instanceof BindItems || c instanceof BindItems) { + warn( + "XFA - Invalid target: cannot be a bindItems or one of its properties.", + ); + continue; + } + const h = n[en](), + l = g[Yr]; + if (g instanceof XFAAttribute) { + const e = Object.create(null); + e[l] = h; + const t = Reflect.construct(Object.getPrototypeOf(c).constructor, [ + e, + ]); + c[l] = t[l]; + } else if (g.hasOwnProperty(er)) { + g[tr] = n; + g[er] = h; + g[sr](); + } else warn("XFA - Invalid node to use in setProperty"); + } + } + _bindItems(e, t) { + if ( + !e.hasOwnProperty("items") || + !e.hasOwnProperty("bindItems") || + e.bindItems.isEmpty() + ) + return; + for (const t of e.items.children) e[Xr](t); + e.items.clear(); + const i = new Items({}), + a = new Items({}); + e[js](i); + e.items.push(i); + e[js](a); + e.items.push(a); + for (const { ref: s, labelRef: r, valueRef: n, connection: o } of e + .bindItems.children) { + if (o) continue; + if (!s) continue; + const e = searchNode(this.root, t, s, !1, !1); + if (e) + for (const t of e) { + if (!t[Nr](this.datasets)) { + warn(`XFA - Invalid ref (${s}): must be a datasets child.`); + continue; + } + const e = searchNode(this.root, t, r, !0, !1); + if (!e) { + warn(`XFA - Invalid label: ${r}.`); + continue; + } + const [o] = e; + if (!o[Nr](this.datasets)) { + warn("XFA - Invalid label: must be a datasets child."); + continue; + } + const g = searchNode(this.root, t, n, !0, !1); + if (!g) { + warn(`XFA - Invalid value: ${n}.`); + continue; + } + const [c] = g; + if (!c[Nr](this.datasets)) { + warn("XFA - Invalid value: must be a datasets child."); + continue; + } + const h = createText(o[en]()), + l = createText(c[en]()); + i[js](h); + i.text.push(h); + a[js](l); + a.text.push(l); + } + else warn(`XFA - Invalid reference: ${s}.`); + } + } + _bindOccurrences(e, t, i) { + let a; + if (t.length > 1) { + a = e[$s](); + a[Xr](a.occur); + a.occur = null; + } + this._bindValue(e, t[0], i); + this._setProperties(e, t[0]); + this._bindItems(e, t[0]); + if (1 === t.length) return; + const s = e[pr](), + r = e[Yr], + n = s[Dr](e); + for (let e = 1, o = t.length; e < o; e++) { + const o = t[e], + g = a[$s](); + s[r].push(g); + s[Fr](n + e, g); + this._bindValue(g, o, i); + this._setProperties(g, o); + this._bindItems(g, o); + } + } + _createOccurrences(e) { + if (!this.emptyMerge) return; + const { occur: t } = e; + if (!t || t.initial <= 1) return; + const i = e[pr](), + a = e[Yr]; + if (!(i[a] instanceof XFAObjectArray)) return; + let s; + s = e.name + ? i[a].children.filter((t) => t.name === e.name).length + : i[a].children.length; + const r = i[Dr](e) + 1, + n = t.initial - s; + if (n) { + const t = e[$s](); + t[Xr](t.occur); + t.occur = null; + i[a].push(t); + i[Fr](r, t); + for (let e = 1; e < n; e++) { + const s = t[$s](); + i[a].push(s); + i[Fr](r + e, s); + } + } + } + _getOccurInfo(e) { + const { name: t, occur: i } = e; + if (!i || !t) return [1, 1]; + const a = -1 === i.max ? 1 / 0 : i.max; + return [i.min, a]; + } + _setAndBind(e, t) { + this._setProperties(e, t); + this._bindItems(e, t); + this._bindElement(e, t); + } + _bindElement(e, t) { + const i = []; + this._createOccurrences(e); + for (const a of e[Er]()) { + if (a[tr]) continue; + if (void 0 === this._mergeMode && "subform" === a[Yr]) { + this._mergeMode = "consumeData" === a.mergeMode; + const e = t[Er](); + if (e.length > 0) this._bindOccurrences(a, [e[0]], null); + else if (this.emptyMerge) { + const e = t[Hr] === Tn ? -1 : t[Hr], + i = (a[tr] = new XmlObject(e, a.name || "root")); + t[js](i); + this._bindElement(a, i); + } + continue; + } + if (!a[kr]()) continue; + let e = !1, + s = null, + r = null, + n = null; + if (a.bind) { + switch (a.bind.match) { + case "none": + this._setAndBind(a, t); + continue; + case "global": + e = !0; + break; + case "dataRef": + if (!a.bind.ref) { + warn(`XFA - ref is empty in node ${a[Yr]}.`); + this._setAndBind(a, t); + continue; + } + r = a.bind.ref; + } + a.bind.picture && (s = a.bind.picture[er]); + } + const [o, g] = this._getOccurInfo(a); + if (r) { + n = searchNode(this.root, t, r, !0, !1); + if (null === n) { + n = createDataNode(this.data, t, r); + if (!n) continue; + this._isConsumeData() && (n[Ar] = !0); + this._setAndBind(a, n); + continue; + } + this._isConsumeData() && (n = n.filter((e) => !e[Ar])); + n.length > g ? (n = n.slice(0, g)) : 0 === n.length && (n = null); + n && + this._isConsumeData() && + n.forEach((e) => { + e[Ar] = !0; + }); + } else { + if (!a.name) { + this._setAndBind(a, t); + continue; + } + if (this._isConsumeData()) { + const i = []; + for (; i.length < g; ) { + const s = this._findDataByNameToConsume(a.name, a[wr](), t, e); + if (!s) break; + s[Ar] = !0; + i.push(s); + } + n = i.length > 0 ? i : null; + } else { + n = t[Qr](a.name, !1, this.emptyMerge).next().value; + if (!n) { + if (0 === o) { + i.push(a); + continue; + } + const e = t[Hr] === Tn ? -1 : t[Hr]; + n = a[tr] = new XmlObject(e, a.name); + this.emptyMerge && (n[Ar] = !0); + t[js](n); + this._setAndBind(a, n); + continue; + } + this.emptyMerge && (n[Ar] = !0); + n = [n]; + } + } + n + ? this._bindOccurrences(a, n, s) + : o > 0 + ? this._setAndBind(a, t) + : i.push(a); + } + i.forEach((e) => e[pr]()[Xr](e)); + } +} +class DataHandler { + constructor(e, t) { + this.data = t; + this.dataset = e.datasets || null; + } + serialize(e) { + const t = [[-1, this.data[Er]()]]; + for (; t.length > 0; ) { + const i = t.at(-1), + [a, s] = i; + if (a + 1 === s.length) { + t.pop(); + continue; + } + const r = s[++i[0]], + n = e.get(r[nn]); + if (n) r[$r](n); + else { + const t = r[or](); + for (const i of t.values()) { + const t = e.get(i[nn]); + if (t) { + i[$r](t); + break; + } + } + } + const o = r[Er](); + o.length > 0 && t.push([-1, o]); + } + const i = [ + '', + ]; + if (this.dataset) + for (const e of this.dataset[Er]()) "data" !== e[Yr] && e[sn](i); + this.data[sn](i); + i.push(""); + return i.join(""); + } +} +const qn = gn.config.id; +class Acrobat extends XFAObject { + constructor(e) { + super(qn, "acrobat", !0); + this.acrobat7 = null; + this.autoSave = null; + this.common = null; + this.validate = null; + this.validateApprovalSignatures = null; + this.submitUrl = new XFAObjectArray(); + } +} +class Acrobat7 extends XFAObject { + constructor(e) { + super(qn, "acrobat7", !0); + this.dynamicRender = null; + } +} +class ADBE_JSConsole extends OptionObject { + constructor(e) { + super(qn, "ADBE_JSConsole", ["delegate", "Enable", "Disable"]); + } +} +class ADBE_JSDebugger extends OptionObject { + constructor(e) { + super(qn, "ADBE_JSDebugger", ["delegate", "Enable", "Disable"]); + } +} +class AddSilentPrint extends Option01 { + constructor(e) { + super(qn, "addSilentPrint"); + } +} +class AddViewerPreferences extends Option01 { + constructor(e) { + super(qn, "addViewerPreferences"); + } +} +class AdjustData extends Option10 { + constructor(e) { + super(qn, "adjustData"); + } +} +class AdobeExtensionLevel extends IntegerObject { + constructor(e) { + super(qn, "adobeExtensionLevel", 0, (e) => e >= 1 && e <= 8); + } +} +class Agent extends XFAObject { + constructor(e) { + super(qn, "agent", !0); + this.name = e.name ? e.name.trim() : ""; + this.common = new XFAObjectArray(); + } +} +class AlwaysEmbed extends ContentObject { + constructor(e) { + super(qn, "alwaysEmbed"); + } +} +class Amd extends StringObject { + constructor(e) { + super(qn, "amd"); + } +} +class config_Area extends XFAObject { + constructor(e) { + super(qn, "area"); + this.level = getInteger({ + data: e.level, + defaultValue: 0, + validate: (e) => e >= 1 && e <= 3, + }); + this.name = getStringOption(e.name, [ + "", + "barcode", + "coreinit", + "deviceDriver", + "font", + "general", + "layout", + "merge", + "script", + "signature", + "sourceSet", + "templateCache", + ]); + } +} +class Attributes extends OptionObject { + constructor(e) { + super(qn, "attributes", ["preserve", "delegate", "ignore"]); + } +} +class AutoSave extends OptionObject { + constructor(e) { + super(qn, "autoSave", ["disabled", "enabled"]); + } +} +class Base extends StringObject { + constructor(e) { + super(qn, "base"); + } +} +class BatchOutput extends XFAObject { + constructor(e) { + super(qn, "batchOutput"); + this.format = getStringOption(e.format, [ + "none", + "concat", + "zip", + "zipCompress", + ]); + } +} +class BehaviorOverride extends ContentObject { + constructor(e) { + super(qn, "behaviorOverride"); + } + [sr]() { + this[er] = new Map( + this[er] + .trim() + .split(/\s+/) + .filter((e) => e.includes(":")) + .map((e) => e.split(":", 2)), + ); + } +} +class Cache extends XFAObject { + constructor(e) { + super(qn, "cache", !0); + this.templateCache = null; + } +} +class Change extends Option01 { + constructor(e) { + super(qn, "change"); + } +} +class Common extends XFAObject { + constructor(e) { + super(qn, "common", !0); + this.data = null; + this.locale = null; + this.localeSet = null; + this.messaging = null; + this.suppressBanner = null; + this.template = null; + this.validationMessaging = null; + this.versionControl = null; + this.log = new XFAObjectArray(); + } +} +class Compress extends XFAObject { + constructor(e) { + super(qn, "compress"); + this.scope = getStringOption(e.scope, ["imageOnly", "document"]); + } +} +class CompressLogicalStructure extends Option01 { + constructor(e) { + super(qn, "compressLogicalStructure"); + } +} +class CompressObjectStream extends Option10 { + constructor(e) { + super(qn, "compressObjectStream"); + } +} +class Compression extends XFAObject { + constructor(e) { + super(qn, "compression", !0); + this.compressLogicalStructure = null; + this.compressObjectStream = null; + this.level = null; + this.type = null; + } +} +class Config extends XFAObject { + constructor(e) { + super(qn, "config", !0); + this.acrobat = null; + this.present = null; + this.trace = null; + this.agent = new XFAObjectArray(); + } +} +class Conformance extends OptionObject { + constructor(e) { + super(qn, "conformance", ["A", "B"]); + } +} +class ContentCopy extends Option01 { + constructor(e) { + super(qn, "contentCopy"); + } +} +class Copies extends IntegerObject { + constructor(e) { + super(qn, "copies", 1, (e) => e >= 1); + } +} +class Creator extends StringObject { + constructor(e) { + super(qn, "creator"); + } +} +class CurrentPage extends IntegerObject { + constructor(e) { + super(qn, "currentPage", 0, (e) => e >= 0); + } +} +class Data extends XFAObject { + constructor(e) { + super(qn, "data", !0); + this.adjustData = null; + this.attributes = null; + this.incrementalLoad = null; + this.outputXSL = null; + this.range = null; + this.record = null; + this.startNode = null; + this.uri = null; + this.window = null; + this.xsl = null; + this.excludeNS = new XFAObjectArray(); + this.transform = new XFAObjectArray(); + } +} +class Debug extends XFAObject { + constructor(e) { + super(qn, "debug", !0); + this.uri = null; + } +} +class DefaultTypeface extends ContentObject { + constructor(e) { + super(qn, "defaultTypeface"); + this.writingScript = getStringOption(e.writingScript, [ + "*", + "Arabic", + "Cyrillic", + "EastEuropeanRoman", + "Greek", + "Hebrew", + "Japanese", + "Korean", + "Roman", + "SimplifiedChinese", + "Thai", + "TraditionalChinese", + "Vietnamese", + ]); + } +} +class Destination extends OptionObject { + constructor(e) { + super(qn, "destination", ["pdf", "pcl", "ps", "webClient", "zpl"]); + } +} +class DocumentAssembly extends Option01 { + constructor(e) { + super(qn, "documentAssembly"); + } +} +class Driver extends XFAObject { + constructor(e) { + super(qn, "driver", !0); + this.name = e.name ? e.name.trim() : ""; + this.fontInfo = null; + this.xdc = null; + } +} +class DuplexOption extends OptionObject { + constructor(e) { + super(qn, "duplexOption", [ + "simplex", + "duplexFlipLongEdge", + "duplexFlipShortEdge", + ]); + } +} +class DynamicRender extends OptionObject { + constructor(e) { + super(qn, "dynamicRender", ["forbidden", "required"]); + } +} +class Embed extends Option01 { + constructor(e) { + super(qn, "embed"); + } +} +class config_Encrypt extends Option01 { + constructor(e) { + super(qn, "encrypt"); + } +} +class config_Encryption extends XFAObject { + constructor(e) { + super(qn, "encryption", !0); + this.encrypt = null; + this.encryptionLevel = null; + this.permissions = null; + } +} +class EncryptionLevel extends OptionObject { + constructor(e) { + super(qn, "encryptionLevel", ["40bit", "128bit"]); + } +} +class Enforce extends StringObject { + constructor(e) { + super(qn, "enforce"); + } +} +class Equate extends XFAObject { + constructor(e) { + super(qn, "equate"); + this.force = getInteger({ + data: e.force, + defaultValue: 1, + validate: (e) => 0 === e, + }); + this.from = e.from || ""; + this.to = e.to || ""; + } +} +class EquateRange extends XFAObject { + constructor(e) { + super(qn, "equateRange"); + this.from = e.from || ""; + this.to = e.to || ""; + this._unicodeRange = e.unicodeRange || ""; + } + get unicodeRange() { + const e = [], + t = /U\+([0-9a-fA-F]+)/, + i = this._unicodeRange; + for (let a of i + .split(",") + .map((e) => e.trim()) + .filter((e) => !!e)) { + a = a.split("-", 2).map((e) => { + const i = e.match(t); + return i ? parseInt(i[1], 16) : 0; + }); + 1 === a.length && a.push(a[0]); + e.push(a); + } + return shadow(this, "unicodeRange", e); + } +} +class Exclude extends ContentObject { + constructor(e) { + super(qn, "exclude"); + } + [sr]() { + this[er] = this[er] + .trim() + .split(/\s+/) + .filter( + (e) => + e && + [ + "calculate", + "close", + "enter", + "exit", + "initialize", + "ready", + "validate", + ].includes(e), + ); + } +} +class ExcludeNS extends StringObject { + constructor(e) { + super(qn, "excludeNS"); + } +} +class FlipLabel extends OptionObject { + constructor(e) { + super(qn, "flipLabel", ["usePrinterSetting", "on", "off"]); + } +} +class config_FontInfo extends XFAObject { + constructor(e) { + super(qn, "fontInfo", !0); + this.embed = null; + this.map = null; + this.subsetBelow = null; + this.alwaysEmbed = new XFAObjectArray(); + this.defaultTypeface = new XFAObjectArray(); + this.neverEmbed = new XFAObjectArray(); + } +} +class FormFieldFilling extends Option01 { + constructor(e) { + super(qn, "formFieldFilling"); + } +} +class GroupParent extends StringObject { + constructor(e) { + super(qn, "groupParent"); + } +} +class IfEmpty extends OptionObject { + constructor(e) { + super(qn, "ifEmpty", ["dataValue", "dataGroup", "ignore", "remove"]); + } +} +class IncludeXDPContent extends StringObject { + constructor(e) { + super(qn, "includeXDPContent"); + } +} +class IncrementalLoad extends OptionObject { + constructor(e) { + super(qn, "incrementalLoad", ["none", "forwardOnly"]); + } +} +class IncrementalMerge extends Option01 { + constructor(e) { + super(qn, "incrementalMerge"); + } +} +class Interactive extends Option01 { + constructor(e) { + super(qn, "interactive"); + } +} +class Jog extends OptionObject { + constructor(e) { + super(qn, "jog", ["usePrinterSetting", "none", "pageSet"]); + } +} +class LabelPrinter extends XFAObject { + constructor(e) { + super(qn, "labelPrinter", !0); + this.name = getStringOption(e.name, ["zpl", "dpl", "ipl", "tcpl"]); + this.batchOutput = null; + this.flipLabel = null; + this.fontInfo = null; + this.xdc = null; + } +} +class Layout extends OptionObject { + constructor(e) { + super(qn, "layout", ["paginate", "panel"]); + } +} +class Level extends IntegerObject { + constructor(e) { + super(qn, "level", 0, (e) => e > 0); + } +} +class Linearized extends Option01 { + constructor(e) { + super(qn, "linearized"); + } +} +class Locale extends StringObject { + constructor(e) { + super(qn, "locale"); + } +} +class LocaleSet extends StringObject { + constructor(e) { + super(qn, "localeSet"); + } +} +class Log extends XFAObject { + constructor(e) { + super(qn, "log", !0); + this.mode = null; + this.threshold = null; + this.to = null; + this.uri = null; + } +} +class MapElement extends XFAObject { + constructor(e) { + super(qn, "map", !0); + this.equate = new XFAObjectArray(); + this.equateRange = new XFAObjectArray(); + } +} +class MediumInfo extends XFAObject { + constructor(e) { + super(qn, "mediumInfo", !0); + this.map = null; + } +} +class config_Message extends XFAObject { + constructor(e) { + super(qn, "message", !0); + this.msgId = null; + this.severity = null; + } +} +class Messaging extends XFAObject { + constructor(e) { + super(qn, "messaging", !0); + this.message = new XFAObjectArray(); + } +} +class Mode extends OptionObject { + constructor(e) { + super(qn, "mode", ["append", "overwrite"]); + } +} +class ModifyAnnots extends Option01 { + constructor(e) { + super(qn, "modifyAnnots"); + } +} +class MsgId extends IntegerObject { + constructor(e) { + super(qn, "msgId", 1, (e) => e >= 1); + } +} +class NameAttr extends StringObject { + constructor(e) { + super(qn, "nameAttr"); + } +} +class NeverEmbed extends ContentObject { + constructor(e) { + super(qn, "neverEmbed"); + } +} +class NumberOfCopies extends IntegerObject { + constructor(e) { + super(qn, "numberOfCopies", null, (e) => e >= 2 && e <= 5); + } +} +class OpenAction extends XFAObject { + constructor(e) { + super(qn, "openAction", !0); + this.destination = null; + } +} +class Output extends XFAObject { + constructor(e) { + super(qn, "output", !0); + this.to = null; + this.type = null; + this.uri = null; + } +} +class OutputBin extends StringObject { + constructor(e) { + super(qn, "outputBin"); + } +} +class OutputXSL extends XFAObject { + constructor(e) { + super(qn, "outputXSL", !0); + this.uri = null; + } +} +class Overprint extends OptionObject { + constructor(e) { + super(qn, "overprint", ["none", "both", "draw", "field"]); + } +} +class Packets extends StringObject { + constructor(e) { + super(qn, "packets"); + } + [sr]() { + "*" !== this[er] && + (this[er] = this[er] + .trim() + .split(/\s+/) + .filter((e) => + ["config", "datasets", "template", "xfdf", "xslt"].includes(e), + )); + } +} +class PageOffset extends XFAObject { + constructor(e) { + super(qn, "pageOffset"); + this.x = getInteger({ + data: e.x, + defaultValue: "useXDCSetting", + validate: (e) => !0, + }); + this.y = getInteger({ + data: e.y, + defaultValue: "useXDCSetting", + validate: (e) => !0, + }); + } +} +class PageRange extends StringObject { + constructor(e) { + super(qn, "pageRange"); + } + [sr]() { + const e = this[er] + .trim() + .split(/\s+/) + .map((e) => parseInt(e, 10)), + t = []; + for (let i = 0, a = e.length; i < a; i += 2) t.push(e.slice(i, i + 2)); + this[er] = t; + } +} +class Pagination extends OptionObject { + constructor(e) { + super(qn, "pagination", ["simplex", "duplexShortEdge", "duplexLongEdge"]); + } +} +class PaginationOverride extends OptionObject { + constructor(e) { + super(qn, "paginationOverride", [ + "none", + "forceDuplex", + "forceDuplexLongEdge", + "forceDuplexShortEdge", + "forceSimplex", + ]); + } +} +class Part extends IntegerObject { + constructor(e) { + super(qn, "part", 1, (e) => !1); + } +} +class Pcl extends XFAObject { + constructor(e) { + super(qn, "pcl", !0); + this.name = e.name || ""; + this.batchOutput = null; + this.fontInfo = null; + this.jog = null; + this.mediumInfo = null; + this.outputBin = null; + this.pageOffset = null; + this.staple = null; + this.xdc = null; + } +} +class Pdf extends XFAObject { + constructor(e) { + super(qn, "pdf", !0); + this.name = e.name || ""; + this.adobeExtensionLevel = null; + this.batchOutput = null; + this.compression = null; + this.creator = null; + this.encryption = null; + this.fontInfo = null; + this.interactive = null; + this.linearized = null; + this.openAction = null; + this.pdfa = null; + this.producer = null; + this.renderPolicy = null; + this.scriptModel = null; + this.silentPrint = null; + this.submitFormat = null; + this.tagged = null; + this.version = null; + this.viewerPreferences = null; + this.xdc = null; + } +} +class Pdfa extends XFAObject { + constructor(e) { + super(qn, "pdfa", !0); + this.amd = null; + this.conformance = null; + this.includeXDPContent = null; + this.part = null; + } +} +class Permissions extends XFAObject { + constructor(e) { + super(qn, "permissions", !0); + this.accessibleContent = null; + this.change = null; + this.contentCopy = null; + this.documentAssembly = null; + this.formFieldFilling = null; + this.modifyAnnots = null; + this.plaintextMetadata = null; + this.print = null; + this.printHighQuality = null; + } +} +class PickTrayByPDFSize extends Option01 { + constructor(e) { + super(qn, "pickTrayByPDFSize"); + } +} +class config_Picture extends StringObject { + constructor(e) { + super(qn, "picture"); + } +} +class PlaintextMetadata extends Option01 { + constructor(e) { + super(qn, "plaintextMetadata"); + } +} +class Presence extends OptionObject { + constructor(e) { + super(qn, "presence", [ + "preserve", + "dissolve", + "dissolveStructure", + "ignore", + "remove", + ]); + } +} +class Present extends XFAObject { + constructor(e) { + super(qn, "present", !0); + this.behaviorOverride = null; + this.cache = null; + this.common = null; + this.copies = null; + this.destination = null; + this.incrementalMerge = null; + this.layout = null; + this.output = null; + this.overprint = null; + this.pagination = null; + this.paginationOverride = null; + this.script = null; + this.validate = null; + this.xdp = null; + this.driver = new XFAObjectArray(); + this.labelPrinter = new XFAObjectArray(); + this.pcl = new XFAObjectArray(); + this.pdf = new XFAObjectArray(); + this.ps = new XFAObjectArray(); + this.submitUrl = new XFAObjectArray(); + this.webClient = new XFAObjectArray(); + this.zpl = new XFAObjectArray(); + } +} +class Print extends Option01 { + constructor(e) { + super(qn, "print"); + } +} +class PrintHighQuality extends Option01 { + constructor(e) { + super(qn, "printHighQuality"); + } +} +class PrintScaling extends OptionObject { + constructor(e) { + super(qn, "printScaling", ["appdefault", "noScaling"]); + } +} +class PrinterName extends StringObject { + constructor(e) { + super(qn, "printerName"); + } +} +class Producer extends StringObject { + constructor(e) { + super(qn, "producer"); + } +} +class Ps extends XFAObject { + constructor(e) { + super(qn, "ps", !0); + this.name = e.name || ""; + this.batchOutput = null; + this.fontInfo = null; + this.jog = null; + this.mediumInfo = null; + this.outputBin = null; + this.staple = null; + this.xdc = null; + } +} +class Range extends ContentObject { + constructor(e) { + super(qn, "range"); + } + [sr]() { + this[er] = this[er] + .trim() + .split(/\s*,\s*/, 2) + .map((e) => e.split("-").map((e) => parseInt(e.trim(), 10))) + .filter((e) => e.every((e) => !isNaN(e))) + .map((e) => { + 1 === e.length && e.push(e[0]); + return e; + }); + } +} +class Record extends ContentObject { + constructor(e) { + super(qn, "record"); + } + [sr]() { + this[er] = this[er].trim(); + const e = parseInt(this[er], 10); + !isNaN(e) && e >= 0 && (this[er] = e); + } +} +class Relevant extends ContentObject { + constructor(e) { + super(qn, "relevant"); + } + [sr]() { + this[er] = this[er].trim().split(/\s+/); + } +} +class Rename extends ContentObject { + constructor(e) { + super(qn, "rename"); + } + [sr]() { + this[er] = this[er].trim(); + (this[er].toLowerCase().startsWith("xml") || + new RegExp("[\\p{L}_][\\p{L}\\d._\\p{M}-]*", "u").test(this[er])) && + warn("XFA - Rename: invalid XFA name"); + } +} +class RenderPolicy extends OptionObject { + constructor(e) { + super(qn, "renderPolicy", ["server", "client"]); + } +} +class RunScripts extends OptionObject { + constructor(e) { + super(qn, "runScripts", ["both", "client", "none", "server"]); + } +} +class config_Script extends XFAObject { + constructor(e) { + super(qn, "script", !0); + this.currentPage = null; + this.exclude = null; + this.runScripts = null; + } +} +class ScriptModel extends OptionObject { + constructor(e) { + super(qn, "scriptModel", ["XFA", "none"]); + } +} +class Severity extends OptionObject { + constructor(e) { + super(qn, "severity", [ + "ignore", + "error", + "information", + "trace", + "warning", + ]); + } +} +class SilentPrint extends XFAObject { + constructor(e) { + super(qn, "silentPrint", !0); + this.addSilentPrint = null; + this.printerName = null; + } +} +class Staple extends XFAObject { + constructor(e) { + super(qn, "staple"); + this.mode = getStringOption(e.mode, ["usePrinterSetting", "on", "off"]); + } +} +class StartNode extends StringObject { + constructor(e) { + super(qn, "startNode"); + } +} +class StartPage extends IntegerObject { + constructor(e) { + super(qn, "startPage", 0, (e) => !0); + } +} +class SubmitFormat extends OptionObject { + constructor(e) { + super(qn, "submitFormat", ["html", "delegate", "fdf", "xml", "pdf"]); + } +} +class SubmitUrl extends StringObject { + constructor(e) { + super(qn, "submitUrl"); + } +} +class SubsetBelow extends IntegerObject { + constructor(e) { + super(qn, "subsetBelow", 100, (e) => e >= 0 && e <= 100); + } +} +class SuppressBanner extends Option01 { + constructor(e) { + super(qn, "suppressBanner"); + } +} +class Tagged extends Option01 { + constructor(e) { + super(qn, "tagged"); + } +} +class config_Template extends XFAObject { + constructor(e) { + super(qn, "template", !0); + this.base = null; + this.relevant = null; + this.startPage = null; + this.uri = null; + this.xsl = null; + } +} +class Threshold extends OptionObject { + constructor(e) { + super(qn, "threshold", ["trace", "error", "information", "warning"]); + } +} +class To extends OptionObject { + constructor(e) { + super(qn, "to", ["null", "memory", "stderr", "stdout", "system", "uri"]); + } +} +class TemplateCache extends XFAObject { + constructor(e) { + super(qn, "templateCache"); + this.maxEntries = getInteger({ + data: e.maxEntries, + defaultValue: 5, + validate: (e) => e >= 0, + }); + } +} +class Trace extends XFAObject { + constructor(e) { + super(qn, "trace", !0); + this.area = new XFAObjectArray(); + } +} +class Transform extends XFAObject { + constructor(e) { + super(qn, "transform", !0); + this.groupParent = null; + this.ifEmpty = null; + this.nameAttr = null; + this.picture = null; + this.presence = null; + this.rename = null; + this.whitespace = null; + } +} +class Type extends OptionObject { + constructor(e) { + super(qn, "type", [ + "none", + "ascii85", + "asciiHex", + "ccittfax", + "flate", + "lzw", + "runLength", + "native", + "xdp", + "mergedXDP", + ]); + } +} +class Uri extends StringObject { + constructor(e) { + super(qn, "uri"); + } +} +class config_Validate extends OptionObject { + constructor(e) { + super(qn, "validate", ["preSubmit", "prePrint", "preExecute", "preSave"]); + } +} +class ValidateApprovalSignatures extends ContentObject { + constructor(e) { + super(qn, "validateApprovalSignatures"); + } + [sr]() { + this[er] = this[er] + .trim() + .split(/\s+/) + .filter((e) => ["docReady", "postSign"].includes(e)); + } +} +class ValidationMessaging extends OptionObject { + constructor(e) { + super(qn, "validationMessaging", [ + "allMessagesIndividually", + "allMessagesTogether", + "firstMessageOnly", + "noMessages", + ]); + } +} +class Version extends OptionObject { + constructor(e) { + super(qn, "version", ["1.7", "1.6", "1.5", "1.4", "1.3", "1.2"]); + } +} +class VersionControl extends XFAObject { + constructor(e) { + super(qn, "VersionControl"); + this.outputBelow = getStringOption(e.outputBelow, [ + "warn", + "error", + "update", + ]); + this.sourceAbove = getStringOption(e.sourceAbove, ["warn", "error"]); + this.sourceBelow = getStringOption(e.sourceBelow, ["update", "maintain"]); + } +} +class ViewerPreferences extends XFAObject { + constructor(e) { + super(qn, "viewerPreferences", !0); + this.ADBE_JSConsole = null; + this.ADBE_JSDebugger = null; + this.addViewerPreferences = null; + this.duplexOption = null; + this.enforce = null; + this.numberOfCopies = null; + this.pageRange = null; + this.pickTrayByPDFSize = null; + this.printScaling = null; + } +} +class WebClient extends XFAObject { + constructor(e) { + super(qn, "webClient", !0); + this.name = e.name ? e.name.trim() : ""; + this.fontInfo = null; + this.xdc = null; + } +} +class Whitespace extends OptionObject { + constructor(e) { + super(qn, "whitespace", [ + "preserve", + "ltrim", + "normalize", + "rtrim", + "trim", + ]); + } +} +class Window extends ContentObject { + constructor(e) { + super(qn, "window"); + } + [sr]() { + const e = this[er] + .trim() + .split(/\s*,\s*/, 2) + .map((e) => parseInt(e, 10)); + if (e.some((e) => isNaN(e))) this[er] = [0, 0]; + else { + 1 === e.length && e.push(e[0]); + this[er] = e; + } + } +} +class Xdc extends XFAObject { + constructor(e) { + super(qn, "xdc", !0); + this.uri = new XFAObjectArray(); + this.xsl = new XFAObjectArray(); + } +} +class Xdp extends XFAObject { + constructor(e) { + super(qn, "xdp", !0); + this.packets = null; + } +} +class Xsl extends XFAObject { + constructor(e) { + super(qn, "xsl", !0); + this.debug = null; + this.uri = null; + } +} +class Zpl extends XFAObject { + constructor(e) { + super(qn, "zpl", !0); + this.name = e.name ? e.name.trim() : ""; + this.batchOutput = null; + this.flipLabel = null; + this.fontInfo = null; + this.xdc = null; + } +} +class ConfigNamespace { + static [on](e, t) { + if (ConfigNamespace.hasOwnProperty(e)) return ConfigNamespace[e](t); + } + static acrobat(e) { + return new Acrobat(e); + } + static acrobat7(e) { + return new Acrobat7(e); + } + static ADBE_JSConsole(e) { + return new ADBE_JSConsole(e); + } + static ADBE_JSDebugger(e) { + return new ADBE_JSDebugger(e); + } + static addSilentPrint(e) { + return new AddSilentPrint(e); + } + static addViewerPreferences(e) { + return new AddViewerPreferences(e); + } + static adjustData(e) { + return new AdjustData(e); + } + static adobeExtensionLevel(e) { + return new AdobeExtensionLevel(e); + } + static agent(e) { + return new Agent(e); + } + static alwaysEmbed(e) { + return new AlwaysEmbed(e); + } + static amd(e) { + return new Amd(e); + } + static area(e) { + return new config_Area(e); + } + static attributes(e) { + return new Attributes(e); + } + static autoSave(e) { + return new AutoSave(e); + } + static base(e) { + return new Base(e); + } + static batchOutput(e) { + return new BatchOutput(e); + } + static behaviorOverride(e) { + return new BehaviorOverride(e); + } + static cache(e) { + return new Cache(e); + } + static change(e) { + return new Change(e); + } + static common(e) { + return new Common(e); + } + static compress(e) { + return new Compress(e); + } + static compressLogicalStructure(e) { + return new CompressLogicalStructure(e); + } + static compressObjectStream(e) { + return new CompressObjectStream(e); + } + static compression(e) { + return new Compression(e); + } + static config(e) { + return new Config(e); + } + static conformance(e) { + return new Conformance(e); + } + static contentCopy(e) { + return new ContentCopy(e); + } + static copies(e) { + return new Copies(e); + } + static creator(e) { + return new Creator(e); + } + static currentPage(e) { + return new CurrentPage(e); + } + static data(e) { + return new Data(e); + } + static debug(e) { + return new Debug(e); + } + static defaultTypeface(e) { + return new DefaultTypeface(e); + } + static destination(e) { + return new Destination(e); + } + static documentAssembly(e) { + return new DocumentAssembly(e); + } + static driver(e) { + return new Driver(e); + } + static duplexOption(e) { + return new DuplexOption(e); + } + static dynamicRender(e) { + return new DynamicRender(e); + } + static embed(e) { + return new Embed(e); + } + static encrypt(e) { + return new config_Encrypt(e); + } + static encryption(e) { + return new config_Encryption(e); + } + static encryptionLevel(e) { + return new EncryptionLevel(e); + } + static enforce(e) { + return new Enforce(e); + } + static equate(e) { + return new Equate(e); + } + static equateRange(e) { + return new EquateRange(e); + } + static exclude(e) { + return new Exclude(e); + } + static excludeNS(e) { + return new ExcludeNS(e); + } + static flipLabel(e) { + return new FlipLabel(e); + } + static fontInfo(e) { + return new config_FontInfo(e); + } + static formFieldFilling(e) { + return new FormFieldFilling(e); + } + static groupParent(e) { + return new GroupParent(e); + } + static ifEmpty(e) { + return new IfEmpty(e); + } + static includeXDPContent(e) { + return new IncludeXDPContent(e); + } + static incrementalLoad(e) { + return new IncrementalLoad(e); + } + static incrementalMerge(e) { + return new IncrementalMerge(e); + } + static interactive(e) { + return new Interactive(e); + } + static jog(e) { + return new Jog(e); + } + static labelPrinter(e) { + return new LabelPrinter(e); + } + static layout(e) { + return new Layout(e); + } + static level(e) { + return new Level(e); + } + static linearized(e) { + return new Linearized(e); + } + static locale(e) { + return new Locale(e); + } + static localeSet(e) { + return new LocaleSet(e); + } + static log(e) { + return new Log(e); + } + static map(e) { + return new MapElement(e); + } + static mediumInfo(e) { + return new MediumInfo(e); + } + static message(e) { + return new config_Message(e); + } + static messaging(e) { + return new Messaging(e); + } + static mode(e) { + return new Mode(e); + } + static modifyAnnots(e) { + return new ModifyAnnots(e); + } + static msgId(e) { + return new MsgId(e); + } + static nameAttr(e) { + return new NameAttr(e); + } + static neverEmbed(e) { + return new NeverEmbed(e); + } + static numberOfCopies(e) { + return new NumberOfCopies(e); + } + static openAction(e) { + return new OpenAction(e); + } + static output(e) { + return new Output(e); + } + static outputBin(e) { + return new OutputBin(e); + } + static outputXSL(e) { + return new OutputXSL(e); + } + static overprint(e) { + return new Overprint(e); + } + static packets(e) { + return new Packets(e); + } + static pageOffset(e) { + return new PageOffset(e); + } + static pageRange(e) { + return new PageRange(e); + } + static pagination(e) { + return new Pagination(e); + } + static paginationOverride(e) { + return new PaginationOverride(e); + } + static part(e) { + return new Part(e); + } + static pcl(e) { + return new Pcl(e); + } + static pdf(e) { + return new Pdf(e); + } + static pdfa(e) { + return new Pdfa(e); + } + static permissions(e) { + return new Permissions(e); + } + static pickTrayByPDFSize(e) { + return new PickTrayByPDFSize(e); + } + static picture(e) { + return new config_Picture(e); + } + static plaintextMetadata(e) { + return new PlaintextMetadata(e); + } + static presence(e) { + return new Presence(e); + } + static present(e) { + return new Present(e); + } + static print(e) { + return new Print(e); + } + static printHighQuality(e) { + return new PrintHighQuality(e); + } + static printScaling(e) { + return new PrintScaling(e); + } + static printerName(e) { + return new PrinterName(e); + } + static producer(e) { + return new Producer(e); + } + static ps(e) { + return new Ps(e); + } + static range(e) { + return new Range(e); + } + static record(e) { + return new Record(e); + } + static relevant(e) { + return new Relevant(e); + } + static rename(e) { + return new Rename(e); + } + static renderPolicy(e) { + return new RenderPolicy(e); + } + static runScripts(e) { + return new RunScripts(e); + } + static script(e) { + return new config_Script(e); + } + static scriptModel(e) { + return new ScriptModel(e); + } + static severity(e) { + return new Severity(e); + } + static silentPrint(e) { + return new SilentPrint(e); + } + static staple(e) { + return new Staple(e); + } + static startNode(e) { + return new StartNode(e); + } + static startPage(e) { + return new StartPage(e); + } + static submitFormat(e) { + return new SubmitFormat(e); + } + static submitUrl(e) { + return new SubmitUrl(e); + } + static subsetBelow(e) { + return new SubsetBelow(e); + } + static suppressBanner(e) { + return new SuppressBanner(e); + } + static tagged(e) { + return new Tagged(e); + } + static template(e) { + return new config_Template(e); + } + static templateCache(e) { + return new TemplateCache(e); + } + static threshold(e) { + return new Threshold(e); + } + static to(e) { + return new To(e); + } + static trace(e) { + return new Trace(e); + } + static transform(e) { + return new Transform(e); + } + static type(e) { + return new Type(e); + } + static uri(e) { + return new Uri(e); + } + static validate(e) { + return new config_Validate(e); + } + static validateApprovalSignatures(e) { + return new ValidateApprovalSignatures(e); + } + static validationMessaging(e) { + return new ValidationMessaging(e); + } + static version(e) { + return new Version(e); + } + static versionControl(e) { + return new VersionControl(e); + } + static viewerPreferences(e) { + return new ViewerPreferences(e); + } + static webClient(e) { + return new WebClient(e); + } + static whitespace(e) { + return new Whitespace(e); + } + static window(e) { + return new Window(e); + } + static xdc(e) { + return new Xdc(e); + } + static xdp(e) { + return new Xdp(e); + } + static xsl(e) { + return new Xsl(e); + } + static zpl(e) { + return new Zpl(e); + } +} +const On = gn.connectionSet.id; +class ConnectionSet extends XFAObject { + constructor(e) { + super(On, "connectionSet", !0); + this.wsdlConnection = new XFAObjectArray(); + this.xmlConnection = new XFAObjectArray(); + this.xsdConnection = new XFAObjectArray(); + } +} +class EffectiveInputPolicy extends XFAObject { + constructor(e) { + super(On, "effectiveInputPolicy"); + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class EffectiveOutputPolicy extends XFAObject { + constructor(e) { + super(On, "effectiveOutputPolicy"); + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class Operation extends StringObject { + constructor(e) { + super(On, "operation"); + this.id = e.id || ""; + this.input = e.input || ""; + this.name = e.name || ""; + this.output = e.output || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class RootElement extends StringObject { + constructor(e) { + super(On, "rootElement"); + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class SoapAction extends StringObject { + constructor(e) { + super(On, "soapAction"); + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class SoapAddress extends StringObject { + constructor(e) { + super(On, "soapAddress"); + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class connection_set_Uri extends StringObject { + constructor(e) { + super(On, "uri"); + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class WsdlAddress extends StringObject { + constructor(e) { + super(On, "wsdlAddress"); + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class WsdlConnection extends XFAObject { + constructor(e) { + super(On, "wsdlConnection", !0); + this.dataDescription = e.dataDescription || ""; + this.name = e.name || ""; + this.effectiveInputPolicy = null; + this.effectiveOutputPolicy = null; + this.operation = null; + this.soapAction = null; + this.soapAddress = null; + this.wsdlAddress = null; + } +} +class XmlConnection extends XFAObject { + constructor(e) { + super(On, "xmlConnection", !0); + this.dataDescription = e.dataDescription || ""; + this.name = e.name || ""; + this.uri = null; + } +} +class XsdConnection extends XFAObject { + constructor(e) { + super(On, "xsdConnection", !0); + this.dataDescription = e.dataDescription || ""; + this.name = e.name || ""; + this.rootElement = null; + this.uri = null; + } +} +class ConnectionSetNamespace { + static [on](e, t) { + if (ConnectionSetNamespace.hasOwnProperty(e)) + return ConnectionSetNamespace[e](t); + } + static connectionSet(e) { + return new ConnectionSet(e); + } + static effectiveInputPolicy(e) { + return new EffectiveInputPolicy(e); + } + static effectiveOutputPolicy(e) { + return new EffectiveOutputPolicy(e); + } + static operation(e) { + return new Operation(e); + } + static rootElement(e) { + return new RootElement(e); + } + static soapAction(e) { + return new SoapAction(e); + } + static soapAddress(e) { + return new SoapAddress(e); + } + static uri(e) { + return new connection_set_Uri(e); + } + static wsdlAddress(e) { + return new WsdlAddress(e); + } + static wsdlConnection(e) { + return new WsdlConnection(e); + } + static xmlConnection(e) { + return new XmlConnection(e); + } + static xsdConnection(e) { + return new XsdConnection(e); + } +} +const Pn = gn.datasets.id; +class datasets_Data extends XmlObject { + constructor(e) { + super(Pn, "data", e); + } + [Gr]() { + return !0; + } +} +class Datasets extends XFAObject { + constructor(e) { + super(Pn, "datasets", !0); + this.data = null; + this.Signature = null; + } + [Kr](e) { + const t = e[Yr]; + (("data" === t && e[Hr] === Pn) || + ("Signature" === t && e[Hr] === gn.signature.id)) && + (this[t] = e); + this[js](e); + } +} +class DatasetsNamespace { + static [on](e, t) { + if (DatasetsNamespace.hasOwnProperty(e)) return DatasetsNamespace[e](t); + } + static datasets(e) { + return new Datasets(e); + } + static data(e) { + return new datasets_Data(e); + } +} +const Wn = gn.localeSet.id; +class CalendarSymbols extends XFAObject { + constructor(e) { + super(Wn, "calendarSymbols", !0); + this.name = "gregorian"; + this.dayNames = new XFAObjectArray(2); + this.eraNames = null; + this.meridiemNames = null; + this.monthNames = new XFAObjectArray(2); + } +} +class CurrencySymbol extends StringObject { + constructor(e) { + super(Wn, "currencySymbol"); + this.name = getStringOption(e.name, ["symbol", "isoname", "decimal"]); + } +} +class CurrencySymbols extends XFAObject { + constructor(e) { + super(Wn, "currencySymbols", !0); + this.currencySymbol = new XFAObjectArray(3); + } +} +class DatePattern extends StringObject { + constructor(e) { + super(Wn, "datePattern"); + this.name = getStringOption(e.name, ["full", "long", "med", "short"]); + } +} +class DatePatterns extends XFAObject { + constructor(e) { + super(Wn, "datePatterns", !0); + this.datePattern = new XFAObjectArray(4); + } +} +class DateTimeSymbols extends ContentObject { + constructor(e) { + super(Wn, "dateTimeSymbols"); + } +} +class Day extends StringObject { + constructor(e) { + super(Wn, "day"); + } +} +class DayNames extends XFAObject { + constructor(e) { + super(Wn, "dayNames", !0); + this.abbr = getInteger({ + data: e.abbr, + defaultValue: 0, + validate: (e) => 1 === e, + }); + this.day = new XFAObjectArray(7); + } +} +class Era extends StringObject { + constructor(e) { + super(Wn, "era"); + } +} +class EraNames extends XFAObject { + constructor(e) { + super(Wn, "eraNames", !0); + this.era = new XFAObjectArray(2); + } +} +class locale_set_Locale extends XFAObject { + constructor(e) { + super(Wn, "locale", !0); + this.desc = e.desc || ""; + this.name = "isoname"; + this.calendarSymbols = null; + this.currencySymbols = null; + this.datePatterns = null; + this.dateTimeSymbols = null; + this.numberPatterns = null; + this.numberSymbols = null; + this.timePatterns = null; + this.typeFaces = null; + } +} +class locale_set_LocaleSet extends XFAObject { + constructor(e) { + super(Wn, "localeSet", !0); + this.locale = new XFAObjectArray(); + } +} +class Meridiem extends StringObject { + constructor(e) { + super(Wn, "meridiem"); + } +} +class MeridiemNames extends XFAObject { + constructor(e) { + super(Wn, "meridiemNames", !0); + this.meridiem = new XFAObjectArray(2); + } +} +class Month extends StringObject { + constructor(e) { + super(Wn, "month"); + } +} +class MonthNames extends XFAObject { + constructor(e) { + super(Wn, "monthNames", !0); + this.abbr = getInteger({ + data: e.abbr, + defaultValue: 0, + validate: (e) => 1 === e, + }); + this.month = new XFAObjectArray(12); + } +} +class NumberPattern extends StringObject { + constructor(e) { + super(Wn, "numberPattern"); + this.name = getStringOption(e.name, ["full", "long", "med", "short"]); + } +} +class NumberPatterns extends XFAObject { + constructor(e) { + super(Wn, "numberPatterns", !0); + this.numberPattern = new XFAObjectArray(4); + } +} +class NumberSymbol extends StringObject { + constructor(e) { + super(Wn, "numberSymbol"); + this.name = getStringOption(e.name, [ + "decimal", + "grouping", + "percent", + "minus", + "zero", + ]); + } +} +class NumberSymbols extends XFAObject { + constructor(e) { + super(Wn, "numberSymbols", !0); + this.numberSymbol = new XFAObjectArray(5); + } +} +class TimePattern extends StringObject { + constructor(e) { + super(Wn, "timePattern"); + this.name = getStringOption(e.name, ["full", "long", "med", "short"]); + } +} +class TimePatterns extends XFAObject { + constructor(e) { + super(Wn, "timePatterns", !0); + this.timePattern = new XFAObjectArray(4); + } +} +class TypeFace extends XFAObject { + constructor(e) { + super(Wn, "typeFace", !0); + this.name = "" | e.name; + } +} +class TypeFaces extends XFAObject { + constructor(e) { + super(Wn, "typeFaces", !0); + this.typeFace = new XFAObjectArray(); + } +} +class LocaleSetNamespace { + static [on](e, t) { + if (LocaleSetNamespace.hasOwnProperty(e)) return LocaleSetNamespace[e](t); + } + static calendarSymbols(e) { + return new CalendarSymbols(e); + } + static currencySymbol(e) { + return new CurrencySymbol(e); + } + static currencySymbols(e) { + return new CurrencySymbols(e); + } + static datePattern(e) { + return new DatePattern(e); + } + static datePatterns(e) { + return new DatePatterns(e); + } + static dateTimeSymbols(e) { + return new DateTimeSymbols(e); + } + static day(e) { + return new Day(e); + } + static dayNames(e) { + return new DayNames(e); + } + static era(e) { + return new Era(e); + } + static eraNames(e) { + return new EraNames(e); + } + static locale(e) { + return new locale_set_Locale(e); + } + static localeSet(e) { + return new locale_set_LocaleSet(e); + } + static meridiem(e) { + return new Meridiem(e); + } + static meridiemNames(e) { + return new MeridiemNames(e); + } + static month(e) { + return new Month(e); + } + static monthNames(e) { + return new MonthNames(e); + } + static numberPattern(e) { + return new NumberPattern(e); + } + static numberPatterns(e) { + return new NumberPatterns(e); + } + static numberSymbol(e) { + return new NumberSymbol(e); + } + static numberSymbols(e) { + return new NumberSymbols(e); + } + static timePattern(e) { + return new TimePattern(e); + } + static timePatterns(e) { + return new TimePatterns(e); + } + static typeFace(e) { + return new TypeFace(e); + } + static typeFaces(e) { + return new TypeFaces(e); + } +} +const Xn = gn.signature.id; +class signature_Signature extends XFAObject { + constructor(e) { + super(Xn, "signature", !0); + } +} +class SignatureNamespace { + static [on](e, t) { + if (SignatureNamespace.hasOwnProperty(e)) return SignatureNamespace[e](t); + } + static signature(e) { + return new signature_Signature(e); + } +} +const jn = gn.stylesheet.id; +class Stylesheet extends XFAObject { + constructor(e) { + super(jn, "stylesheet", !0); + } +} +class StylesheetNamespace { + static [on](e, t) { + if (StylesheetNamespace.hasOwnProperty(e)) return StylesheetNamespace[e](t); + } + static stylesheet(e) { + return new Stylesheet(e); + } +} +const Zn = gn.xdp.id; +class xdp_Xdp extends XFAObject { + constructor(e) { + super(Zn, "xdp", !0); + this.uuid = e.uuid || ""; + this.timeStamp = e.timeStamp || ""; + this.config = null; + this.connectionSet = null; + this.datasets = null; + this.localeSet = null; + this.stylesheet = new XFAObjectArray(); + this.template = null; + } + [Tr](e) { + const t = gn[e[Yr]]; + return t && e[Hr] === t.id; + } +} +class XdpNamespace { + static [on](e, t) { + if (XdpNamespace.hasOwnProperty(e)) return XdpNamespace[e](t); + } + static xdp(e) { + return new xdp_Xdp(e); + } +} +const Vn = gn.xhtml.id, + zn = Symbol(), + _n = new Set([ + "color", + "font", + "font-family", + "font-size", + "font-stretch", + "font-style", + "font-weight", + "margin", + "margin-bottom", + "margin-left", + "margin-right", + "margin-top", + "letter-spacing", + "line-height", + "orphans", + "page-break-after", + "page-break-before", + "page-break-inside", + "tab-interval", + "tab-stop", + "text-align", + "text-decoration", + "text-indent", + "vertical-align", + "widows", + "kerning-mode", + "xfa-font-horizontal-scale", + "xfa-font-vertical-scale", + "xfa-spacerun", + "xfa-tab-stops", + ]), + $n = new Map([ + ["page-break-after", "breakAfter"], + ["page-break-before", "breakBefore"], + ["page-break-inside", "breakInside"], + ["kerning-mode", (e) => ("none" === e ? "none" : "normal")], + [ + "xfa-font-horizontal-scale", + (e) => `scaleX(${Math.max(0, Math.min(parseInt(e) / 100)).toFixed(2)})`, + ], + [ + "xfa-font-vertical-scale", + (e) => `scaleY(${Math.max(0, Math.min(parseInt(e) / 100)).toFixed(2)})`, + ], + ["xfa-spacerun", ""], + ["xfa-tab-stops", ""], + [ + "font-size", + (e, t) => measureToString(0.99 * (e = t.fontSize = getMeasurement(e))), + ], + ["letter-spacing", (e) => measureToString(getMeasurement(e))], + ["line-height", (e) => measureToString(getMeasurement(e))], + ["margin", (e) => measureToString(getMeasurement(e))], + ["margin-bottom", (e) => measureToString(getMeasurement(e))], + ["margin-left", (e) => measureToString(getMeasurement(e))], + ["margin-right", (e) => measureToString(getMeasurement(e))], + ["margin-top", (e) => measureToString(getMeasurement(e))], + ["text-indent", (e) => measureToString(getMeasurement(e))], + ["font-family", (e) => e], + ["vertical-align", (e) => measureToString(getMeasurement(e))], + ]), + Ao = /\s+/g, + eo = /[\r\n]+/g, + to = /\r\n?/g; +function mapStyle(e, t, i) { + const a = Object.create(null); + if (!e) return a; + const s = Object.create(null); + for (const [t, i] of e.split(";").map((e) => e.split(":", 2))) { + const e = $n.get(t); + if ("" === e) continue; + let r = i; + e && (r = "string" == typeof e ? e : e(i, s)); + t.endsWith("scale") + ? (a.transform = a.transform ? `${a[t]} ${r}` : r) + : (a[t.replaceAll(/-([a-zA-Z])/g, (e, t) => t.toUpperCase())] = r); + } + a.fontFamily && + setFontFamily( + { + typeface: a.fontFamily, + weight: a.fontWeight || "normal", + posture: a.fontStyle || "normal", + size: s.fontSize || 0, + }, + t, + t[yr].fontFinder, + a, + ); + if (i && a.verticalAlign && "0px" !== a.verticalAlign && a.fontSize) { + const e = 0.583, + t = 0.333, + i = getMeasurement(a.fontSize); + a.fontSize = measureToString(i * e); + a.verticalAlign = measureToString( + Math.sign(getMeasurement(a.verticalAlign)) * i * t, + ); + } + i && a.fontSize && (a.fontSize = `calc(${a.fontSize} * var(--scale-factor))`); + fixTextIndent(a); + return a; +} +const io = new Set(["body", "html"]); +class XhtmlObject extends XmlObject { + constructor(e, t) { + super(Vn, t); + this[zn] = !1; + this.style = e.style || ""; + } + [Vs](e) { + super[Vs](e); + this.style = (function checkStyle(e) { + return e.style + ? e.style + .trim() + .split(/\s*;\s*/) + .filter((e) => !!e) + .map((e) => e.split(/\s*:\s*/, 2)) + .filter(([t, i]) => { + "font-family" === t && e[yr].usedTypefaces.add(i); + return _n.has(t); + }) + .map((e) => e.join(":")) + .join(";") + : ""; + })(this); + } + [Ws]() { + return !io.has(this[Yr]); + } + [qr](e, t = !1) { + if (t) this[zn] = !0; + else { + e = e.replaceAll(eo, ""); + this.style.includes("xfa-spacerun:yes") || (e = e.replaceAll(Ao, " ")); + } + e && (this[er] += e); + } + [Or](e, t = !0) { + const i = Object.create(null), + a = { top: NaN, bottom: NaN, left: NaN, right: NaN }; + let s = null; + for (const [e, t] of this.style.split(";").map((e) => e.split(":", 2))) + switch (e) { + case "font-family": + i.typeface = stripQuotes(t); + break; + case "font-size": + i.size = getMeasurement(t); + break; + case "font-weight": + i.weight = t; + break; + case "font-style": + i.posture = t; + break; + case "letter-spacing": + i.letterSpacing = getMeasurement(t); + break; + case "margin": + const e = t.split(/ \t/).map((e) => getMeasurement(e)); + switch (e.length) { + case 1: + a.top = a.bottom = a.left = a.right = e[0]; + break; + case 2: + a.top = a.bottom = e[0]; + a.left = a.right = e[1]; + break; + case 3: + a.top = e[0]; + a.bottom = e[2]; + a.left = a.right = e[1]; + break; + case 4: + a.top = e[0]; + a.left = e[1]; + a.bottom = e[2]; + a.right = e[3]; + } + break; + case "margin-top": + a.top = getMeasurement(t); + break; + case "margin-bottom": + a.bottom = getMeasurement(t); + break; + case "margin-left": + a.left = getMeasurement(t); + break; + case "margin-right": + a.right = getMeasurement(t); + break; + case "line-height": + s = getMeasurement(t); + } + e.pushData(i, a, s); + if (this[er]) e.addString(this[er]); + else + for (const t of this[Er]()) + "#text" !== t[Yr] ? t[Or](e) : e.addString(t[er]); + t && e.popFont(); + } + [an](e) { + const t = []; + this[ar] = { children: t }; + this[Zs]({}); + if (0 === t.length && !this[er]) return HTMLResult.EMPTY; + let i; + i = this[zn] + ? this[er] + ? this[er].replaceAll(to, "\n") + : void 0 + : this[er] || void 0; + return HTMLResult.success({ + name: this[Yr], + attributes: { + href: this.href, + style: mapStyle(this.style, this, this[zn]), + }, + children: t, + value: i, + }); + } +} +class A extends XhtmlObject { + constructor(e) { + super(e, "a"); + this.href = fixURL(e.href) || ""; + } +} +class B extends XhtmlObject { + constructor(e) { + super(e, "b"); + } + [Or](e) { + e.pushFont({ weight: "bold" }); + super[Or](e); + e.popFont(); + } +} +class Body extends XhtmlObject { + constructor(e) { + super(e, "body"); + } + [an](e) { + const t = super[an](e), + { html: i } = t; + if (!i) return HTMLResult.EMPTY; + i.name = "div"; + i.attributes.class = ["xfaRich"]; + return t; + } +} +class Br extends XhtmlObject { + constructor(e) { + super(e, "br"); + } + [en]() { + return "\n"; + } + [Or](e) { + e.addString("\n"); + } + [an](e) { + return HTMLResult.success({ name: "br" }); + } +} +class Html extends XhtmlObject { + constructor(e) { + super(e, "html"); + } + [an](e) { + const t = []; + this[ar] = { children: t }; + this[Zs]({}); + if (0 === t.length) + return HTMLResult.success({ + name: "div", + attributes: { class: ["xfaRich"], style: {} }, + value: this[er] || "", + }); + if (1 === t.length) { + const e = t[0]; + if (e.attributes?.class.includes("xfaRich")) return HTMLResult.success(e); + } + return HTMLResult.success({ + name: "div", + attributes: { class: ["xfaRich"], style: {} }, + children: t, + }); + } +} +class I extends XhtmlObject { + constructor(e) { + super(e, "i"); + } + [Or](e) { + e.pushFont({ posture: "italic" }); + super[Or](e); + e.popFont(); + } +} +class Li extends XhtmlObject { + constructor(e) { + super(e, "li"); + } +} +class Ol extends XhtmlObject { + constructor(e) { + super(e, "ol"); + } +} +class P extends XhtmlObject { + constructor(e) { + super(e, "p"); + } + [Or](e) { + super[Or](e, !1); + e.addString("\n"); + e.addPara(); + e.popFont(); + } + [en]() { + return this[pr]()[Er]().at(-1) === this ? super[en]() : super[en]() + "\n"; + } +} +class Span extends XhtmlObject { + constructor(e) { + super(e, "span"); + } +} +class Sub extends XhtmlObject { + constructor(e) { + super(e, "sub"); + } +} +class Sup extends XhtmlObject { + constructor(e) { + super(e, "sup"); + } +} +class Ul extends XhtmlObject { + constructor(e) { + super(e, "ul"); + } +} +class XhtmlNamespace { + static [on](e, t) { + if (XhtmlNamespace.hasOwnProperty(e)) return XhtmlNamespace[e](t); + } + static a(e) { + return new A(e); + } + static b(e) { + return new B(e); + } + static body(e) { + return new Body(e); + } + static br(e) { + return new Br(e); + } + static html(e) { + return new Html(e); + } + static i(e) { + return new I(e); + } + static li(e) { + return new Li(e); + } + static ol(e) { + return new Ol(e); + } + static p(e) { + return new P(e); + } + static span(e) { + return new Span(e); + } + static sub(e) { + return new Sub(e); + } + static sup(e) { + return new Sup(e); + } + static ul(e) { + return new Ul(e); + } +} +const ao = { + config: ConfigNamespace, + connection: ConnectionSetNamespace, + datasets: DatasetsNamespace, + localeSet: LocaleSetNamespace, + signature: SignatureNamespace, + stylesheet: StylesheetNamespace, + template: TemplateNamespace, + xdp: XdpNamespace, + xhtml: XhtmlNamespace, +}; +class UnknownNamespace { + constructor(e) { + this.namespaceId = e; + } + [on](e, t) { + return new XmlObject(this.namespaceId, e, t); + } +} +class Root extends XFAObject { + constructor(e) { + super(-1, "root", Object.create(null)); + this.element = null; + this[br] = e; + } + [Kr](e) { + this.element = e; + return !0; + } + [sr]() { + super[sr](); + if (this.element.template instanceof Template) { + this[br].set(jr, this.element); + this.element.template[Zr](this[br]); + this.element.template[br] = this[br]; + } + } +} +class Empty extends XFAObject { + constructor() { + super(-1, "", Object.create(null)); + } + [Kr](e) { + return !1; + } +} +class Builder { + constructor(e = null) { + this._namespaceStack = []; + this._nsAgnosticLevel = 0; + this._namespacePrefixes = new Map(); + this._namespaces = new Map(); + this._nextNsId = Math.max(...Object.values(gn).map(({ id: e }) => e)); + this._currentNamespace = e || new UnknownNamespace(++this._nextNsId); + } + buildRoot(e) { + return new Root(e); + } + build({ nsPrefix: e, name: t, attributes: i, namespace: a, prefixes: s }) { + const r = null !== a; + if (r) { + this._namespaceStack.push(this._currentNamespace); + this._currentNamespace = this._searchNamespace(a); + } + s && this._addNamespacePrefix(s); + if (i.hasOwnProperty(vr)) { + const e = ao.datasets, + t = i[vr]; + let a = null; + for (const [i, s] of Object.entries(t)) { + if (this._getNamespaceToUse(i) === e) { + a = { xfa: s }; + break; + } + } + a ? (i[vr] = a) : delete i[vr]; + } + const n = this._getNamespaceToUse(e), + o = n?.[on](t, i) || new Empty(); + o[Gr]() && this._nsAgnosticLevel++; + (r || s || o[Gr]()) && + (o[_s] = { hasNamespace: r, prefixes: s, nsAgnostic: o[Gr]() }); + return o; + } + isNsAgnostic() { + return this._nsAgnosticLevel > 0; + } + _searchNamespace(e) { + let t = this._namespaces.get(e); + if (t) return t; + for (const [i, { check: a }] of Object.entries(gn)) + if (a(e)) { + t = ao[i]; + if (t) { + this._namespaces.set(e, t); + return t; + } + break; + } + t = new UnknownNamespace(++this._nextNsId); + this._namespaces.set(e, t); + return t; + } + _addNamespacePrefix(e) { + for (const { prefix: t, value: i } of e) { + const e = this._searchNamespace(i); + let a = this._namespacePrefixes.get(t); + if (!a) { + a = []; + this._namespacePrefixes.set(t, a); + } + a.push(e); + } + } + _getNamespaceToUse(e) { + if (!e) return this._currentNamespace; + const t = this._namespacePrefixes.get(e); + if (t?.length > 0) return t.at(-1); + warn(`Unknown namespace prefix: ${e}.`); + return null; + } + clean(e) { + const { hasNamespace: t, prefixes: i, nsAgnostic: a } = e; + t && (this._currentNamespace = this._namespaceStack.pop()); + i && + i.forEach(({ prefix: e }) => { + this._namespacePrefixes.get(e).pop(); + }); + a && this._nsAgnosticLevel--; + } +} +class XFAParser extends XMLParserBase { + constructor(e = null, t = !1) { + super(); + this._builder = new Builder(e); + this._stack = []; + this._globalData = { usedTypefaces: new Set() }; + this._ids = new Map(); + this._current = this._builder.buildRoot(this._ids); + this._errorCode = Rs; + this._whiteRegex = /^\s+$/; + this._nbsps = /\xa0+/g; + this._richText = t; + } + parse(e) { + this.parseXml(e); + if (this._errorCode === Rs) { + this._current[sr](); + return this._current.element; + } + } + onText(e) { + e = e.replace(this._nbsps, (e) => e.slice(1) + " "); + this._richText || this._current[Ws]() + ? this._current[qr](e, this._richText) + : this._whiteRegex.test(e) || this._current[qr](e.trim()); + } + onCdata(e) { + this._current[qr](e); + } + _mkAttributes(e, t) { + let i = null, + a = null; + const s = Object.create({}); + for (const { name: r, value: n } of e) + if ("xmlns" === r) + i ? warn(`XFA - multiple namespace definition in <${t}>`) : (i = n); + else if (r.startsWith("xmlns:")) { + const e = r.substring(6); + a || (a = []); + a.push({ prefix: e, value: n }); + } else { + const e = r.indexOf(":"); + if (-1 === e) s[r] = n; + else { + let t = s[vr]; + t || (t = s[vr] = Object.create(null)); + const [i, a] = [r.slice(0, e), r.slice(e + 1)]; + (t[i] ||= Object.create(null))[a] = n; + } + } + return [i, a, s]; + } + _getNameAndPrefix(e, t) { + const i = e.indexOf(":"); + return -1 === i + ? [e, null] + : [e.substring(i + 1), t ? "" : e.substring(0, i)]; + } + onBeginElement(e, t, i) { + const [a, s, r] = this._mkAttributes(t, e), + [n, o] = this._getNameAndPrefix(e, this._builder.isNsAgnostic()), + g = this._builder.build({ + nsPrefix: o, + name: n, + attributes: r, + namespace: a, + prefixes: s, + }); + g[yr] = this._globalData; + if (i) { + g[sr](); + this._current[Kr](g) && g[zr](this._ids); + g[Vs](this._builder); + } else { + this._stack.push(this._current); + this._current = g; + } + } + onEndElement(e) { + const t = this._current; + if (t[Sr]() && "string" == typeof t[er]) { + const e = new XFAParser(); + e._globalData = this._globalData; + const i = e.parse(t[er]); + t[er] = null; + t[Kr](i); + } + t[sr](); + this._current = this._stack.pop(); + this._current[Kr](t) && t[zr](this._ids); + t[Vs](this._builder); + } + onError(e) { + this._errorCode = e; + } +} +class XFAFactory { + constructor(e) { + try { + this.root = new XFAParser().parse(XFAFactory._createDocument(e)); + const t = new Binder(this.root); + this.form = t.bind(); + this.dataHandler = new DataHandler(this.root, t.getData()); + this.form[yr].template = this.form; + } catch (e) { + warn(`XFA - an error occurred during parsing and binding: ${e}`); + } + } + isValid() { + return this.root && this.form; + } + _createPagesHelper() { + const e = this.form[tn](); + return new Promise((t, i) => { + const nextIteration = () => { + try { + const i = e.next(); + i.done ? t(i.value) : setTimeout(nextIteration, 0); + } catch (e) { + i(e); + } + }; + setTimeout(nextIteration, 0); + }); + } + async _createPages() { + try { + this.pages = await this._createPagesHelper(); + this.dims = this.pages.children.map((e) => { + const { width: t, height: i } = e.attributes.style; + return [0, 0, parseInt(t), parseInt(i)]; + }); + } catch (e) { + warn(`XFA - an error occurred during layout: ${e}`); + } + } + getBoundingBox(e) { + return this.dims[e]; + } + async getNumPages() { + this.pages || (await this._createPages()); + return this.dims.length; + } + setImages(e) { + this.form[yr].images = e; + } + setFonts(e) { + this.form[yr].fontFinder = new FontFinder(e); + const t = []; + for (let e of this.form[yr].usedTypefaces) { + e = stripQuotes(e); + this.form[yr].fontFinder.find(e) || t.push(e); + } + return t.length > 0 ? t : null; + } + appendFonts(e, t) { + this.form[yr].fontFinder.add(e, t); + } + async getPages() { + this.pages || (await this._createPages()); + const e = this.pages; + this.pages = null; + return e; + } + serializeData(e) { + return this.dataHandler.serialize(e); + } + static _createDocument(e) { + return e["/xdp:xdp"] ? Object.values(e).join("") : e["xdp:xdp"]; + } + static getRichTextAsHtml(e) { + if (!e || "string" != typeof e) return null; + try { + let t = new XFAParser(XhtmlNamespace, !0).parse(e); + if (!["body", "xhtml"].includes(t[Yr])) { + const e = XhtmlNamespace.body({}); + e[js](t); + t = e; + } + const i = t[an](); + if (!i.success) return null; + const { html: a } = i, + { attributes: s } = a; + if (s) { + s.class && (s.class = s.class.filter((e) => !e.startsWith("xfa"))); + s.dir = "auto"; + } + return { html: a, str: t[en]() }; + } catch (e) { + warn(`XFA - an error occurred during parsing of rich text: ${e}`); + } + return null; + } +} +class AnnotationFactory { + static createGlobals(e) { + return Promise.all([ + e.ensureCatalog("acroForm"), + e.ensureDoc("xfaDatasets"), + e.ensureCatalog("structTreeRoot"), + e.ensureCatalog("baseUrl"), + e.ensureCatalog("attachments"), + ]).then( + ([t, i, a, s, r]) => ({ + pdfManager: e, + acroForm: t instanceof Dict ? t : Dict.empty, + xfaDatasets: i, + structTreeRoot: a, + baseUrl: s, + attachments: r, + }), + (e) => { + warn(`createGlobals: "${e}".`); + return null; + }, + ); + } + static async create(e, t, i, a, s, r) { + const n = s ? await this._getPageIndex(e, t, i.pdfManager) : null; + return i.pdfManager.ensure(this, "_create", [e, t, i, a, s, n, r]); + } + static _create(e, t, i, a, s = !1, r = null, n = null) { + const o = e.fetchIfRef(t); + if (!(o instanceof Dict)) return; + const { acroForm: g, pdfManager: c } = i, + h = t instanceof Ref ? t.toString() : `annot_${a.createObjId()}`; + let l = o.get("Subtype"); + l = l instanceof Name ? l.name : null; + const C = { + xref: e, + ref: t, + dict: o, + subtype: l, + id: h, + annotationGlobals: i, + collectFields: s, + needAppearances: !s && !0 === g.get("NeedAppearances"), + pageIndex: r, + evaluatorOptions: c.evaluatorOptions, + pageRef: n, + }; + switch (l) { + case "Link": + return new LinkAnnotation(C); + case "Text": + return new TextAnnotation(C); + case "Widget": + let e = getInheritableProperty({ dict: o, key: "FT" }); + e = e instanceof Name ? e.name : null; + switch (e) { + case "Tx": + return new TextWidgetAnnotation(C); + case "Btn": + return new ButtonWidgetAnnotation(C); + case "Ch": + return new ChoiceWidgetAnnotation(C); + case "Sig": + return new SignatureWidgetAnnotation(C); + } + warn( + `Unimplemented widget field type "${e}", falling back to base field type.`, + ); + return new WidgetAnnotation(C); + case "Popup": + return new PopupAnnotation(C); + case "FreeText": + return new FreeTextAnnotation(C); + case "Line": + return new LineAnnotation(C); + case "Square": + return new SquareAnnotation(C); + case "Circle": + return new CircleAnnotation(C); + case "PolyLine": + return new PolylineAnnotation(C); + case "Polygon": + return new PolygonAnnotation(C); + case "Caret": + return new CaretAnnotation(C); + case "Ink": + return new InkAnnotation(C); + case "Highlight": + return new HighlightAnnotation(C); + case "Underline": + return new UnderlineAnnotation(C); + case "Squiggly": + return new SquigglyAnnotation(C); + case "StrikeOut": + return new StrikeOutAnnotation(C); + case "Stamp": + return new StampAnnotation(C); + case "FileAttachment": + return new FileAttachmentAnnotation(C); + default: + s || + warn( + l + ? `Unimplemented annotation type "${l}", falling back to base annotation.` + : "Annotation is missing the required /Subtype.", + ); + return new Annotation(C); + } + } + static async _getPageIndex(e, t, i) { + try { + const a = await e.fetchIfRefAsync(t); + if (!(a instanceof Dict)) return -1; + const s = a.getRaw("P"); + if (s instanceof Ref) + try { + return await i.ensureCatalog("getPageIndex", [s]); + } catch (e) { + info(`_getPageIndex -- not a valid page reference: "${e}".`); + } + if (a.has("Kids")) return -1; + const r = await i.ensureDoc("numPages"); + for (let e = 0; e < r; e++) { + const a = await i.getPage(e), + s = await i.ensure(a, "annotations"); + for (const i of s) if (i instanceof Ref && isRefsEqual(i, t)) return e; + } + } catch (e) { + warn(`_getPageIndex: "${e}".`); + } + return -1; + } + static generateImages(e, t, i) { + if (!i) { + warn( + "generateImages: OffscreenCanvas is not supported, cannot save or print some annotations with images.", + ); + return null; + } + let a; + for (const { bitmapId: i, bitmap: s } of e) + if (s) { + a ||= new Map(); + a.set(i, StampAnnotation.createImage(s, t)); + } + return a; + } + static async saveNewAnnotations(e, t, i, a) { + const s = e.xref; + let r; + const n = [], + o = [], + { isOffscreenCanvasSupported: g } = e.options; + for (const c of i) + if (!c.deleted) + switch (c.annotationType) { + case u: + if (!r) { + const e = new Dict(s); + e.set("BaseFont", Name.get("Helvetica")); + e.set("Type", Name.get("Font")); + e.set("Subtype", Name.get("Type1")); + e.set("Encoding", Name.get("WinAnsiEncoding")); + const t = []; + r = s.getNewTemporaryRef(); + await writeObject(r, e, t, s); + n.push({ ref: r, data: t.join("") }); + } + o.push( + FreeTextAnnotation.createNewAnnotation(s, c, n, { + evaluator: e, + task: t, + baseFontRef: r, + }), + ); + break; + case d: + c.quadPoints + ? o.push(HighlightAnnotation.createNewAnnotation(s, c, n)) + : o.push(InkAnnotation.createNewAnnotation(s, c, n)); + break; + case p: + o.push(InkAnnotation.createNewAnnotation(s, c, n)); + break; + case f: + if (!g) break; + const i = await a.get(c.bitmapId); + if (i.imageStream) { + const { imageStream: e, smaskStream: t } = i, + a = []; + if (t) { + const i = s.getNewTemporaryRef(); + await writeObject(i, t, a, s); + n.push({ ref: i, data: a.join("") }); + e.dict.set("SMask", i); + a.length = 0; + } + const r = (i.imageRef = s.getNewTemporaryRef()); + await writeObject(r, e, a, s); + n.push({ ref: r, data: a.join("") }); + i.imageStream = i.smaskStream = null; + } + o.push(StampAnnotation.createNewAnnotation(s, c, n, { image: i })); + } + return { annotations: await Promise.all(o), dependencies: n }; + } + static async printNewAnnotations(e, t, i, a, s) { + if (!a) return null; + const { options: r, xref: n } = t, + o = []; + for (const g of a) + if (!g.deleted) + switch (g.annotationType) { + case u: + o.push( + FreeTextAnnotation.createNewPrintAnnotation(e, n, g, { + evaluator: t, + task: i, + evaluatorOptions: r, + }), + ); + break; + case d: + g.quadPoints + ? o.push( + HighlightAnnotation.createNewPrintAnnotation(e, n, g, { + evaluatorOptions: r, + }), + ) + : o.push( + InkAnnotation.createNewPrintAnnotation(e, n, g, { + evaluatorOptions: r, + }), + ); + break; + case p: + o.push( + InkAnnotation.createNewPrintAnnotation(e, n, g, { + evaluatorOptions: r, + }), + ); + break; + case f: + if (!r.isOffscreenCanvasSupported) break; + const a = await s.get(g.bitmapId); + if (a.imageStream) { + const { imageStream: e, smaskStream: t } = a; + t && e.dict.set("SMask", t); + a.imageRef = new JpegStream(e, e.length); + a.imageStream = a.smaskStream = null; + } + o.push( + StampAnnotation.createNewPrintAnnotation(e, n, g, { + image: a, + evaluatorOptions: r, + }), + ); + } + return Promise.all(o); + } +} +function getRgbColor(e, t = new Uint8ClampedArray(3)) { + if (!Array.isArray(e)) return t; + const i = t || new Uint8ClampedArray(3); + switch (e.length) { + case 0: + return null; + case 1: + ColorSpace.singletons.gray.getRgbItem(e, 0, i, 0); + return i; + case 3: + ColorSpace.singletons.rgb.getRgbItem(e, 0, i, 0); + return i; + case 4: + ColorSpace.singletons.cmyk.getRgbItem(e, 0, i, 0); + return i; + default: + return t; + } +} +function getPdfColorArray(e) { + return Array.from(e, (e) => e / 255); +} +function getQuadPoints(e, t) { + const i = e.getArray("QuadPoints"); + if (!isNumberArray(i, null) || 0 === i.length || i.length % 8 > 0) + return null; + const a = []; + for (let e = 0, s = i.length / 8; e < s; e++) { + let s = 1 / 0, + r = -1 / 0, + n = 1 / 0, + o = -1 / 0; + for (let t = 8 * e, a = 8 * e + 8; t < a; t += 2) { + const e = i[t], + a = i[t + 1]; + s = Math.min(e, s); + r = Math.max(e, r); + n = Math.min(a, n); + o = Math.max(a, o); + } + if (null !== t && (s < t[0] || r > t[2] || n < t[1] || o > t[3])) + return null; + a.push([ + { x: s, y: o }, + { x: r, y: o }, + { x: s, y: n }, + { x: r, y: n }, + ]); + } + return a; +} +function getTransformMatrix(e, t, i) { + const [a, s, r, n] = Util.getAxialAlignedBoundingBox(t, i); + if (a === r || s === n) return [1, 0, 0, 1, e[0], e[1]]; + const o = (e[2] - e[0]) / (r - a), + g = (e[3] - e[1]) / (n - s); + return [o, 0, 0, g, e[0] - a * o, e[1] - s * g]; +} +class Annotation { + constructor(e) { + const { dict: t, xref: i, annotationGlobals: a } = e; + this.setTitle(t.get("T")); + this.setContents(t.get("Contents")); + this.setModificationDate(t.get("M")); + this.setFlags(t.get("F")); + this.setRectangle(t.getArray("Rect")); + this.setColor(t.getArray("C")); + this.setBorderStyle(t); + this.setAppearance(t); + this.setOptionalContent(t); + const s = t.get("MK"); + this.setBorderAndBackgroundColors(s); + this.setRotation(s, t); + this.ref = e.ref instanceof Ref ? e.ref : null; + this._streams = []; + this.appearance && this._streams.push(this.appearance); + const r = !!(this.flags & AA), + n = !!(this.flags & eA); + if (a.structTreeRoot) { + let i = t.get("StructParent"); + i = Number.isInteger(i) && i >= 0 ? i : -1; + a.structTreeRoot.addAnnotationIdToPage(e.pageRef, i); + } + this.data = { + annotationFlags: this.flags, + borderStyle: this.borderStyle, + color: this.color, + backgroundColor: this.backgroundColor, + borderColor: this.borderColor, + rotation: this.rotation, + contentsObj: this._contents, + hasAppearance: !!this.appearance, + id: e.id, + modificationDate: this.modificationDate, + rect: this.rectangle, + subtype: e.subtype, + hasOwnCanvas: !1, + noRotate: !!(this.flags & _), + noHTML: r && n, + }; + if (e.collectFields) { + const a = t.get("Kids"); + if (Array.isArray(a)) { + const e = []; + for (const t of a) t instanceof Ref && e.push(t.toString()); + 0 !== e.length && (this.data.kidIds = e); + } + this.data.actions = collectActions(i, t, uA); + this.data.fieldName = this._constructFieldName(t); + this.data.pageIndex = e.pageIndex; + } + this._isOffscreenCanvasSupported = + e.evaluatorOptions.isOffscreenCanvasSupported; + this._fallbackFontDict = null; + this._needAppearances = !1; + } + _hasFlag(e, t) { + return !!(e & t); + } + _isViewable(e) { + return !this._hasFlag(e, Z) && !this._hasFlag(e, $); + } + _isPrintable(e) { + return this._hasFlag(e, z) && !this._hasFlag(e, V) && !this._hasFlag(e, Z); + } + mustBeViewed(e, t) { + const i = e?.get(this.data.id)?.noView; + return void 0 !== i ? !i : this.viewable && !this._hasFlag(this.flags, V); + } + mustBePrinted(e) { + const t = e?.get(this.data.id)?.noPrint; + return void 0 !== t ? !t : this.printable; + } + get viewable() { + return ( + null !== this.data.quadPoints && + (0 === this.flags || this._isViewable(this.flags)) + ); + } + get printable() { + return ( + null !== this.data.quadPoints && + 0 !== this.flags && + this._isPrintable(this.flags) + ); + } + _parseStringHelper(e) { + const t = "string" == typeof e ? stringToPDFString(e) : ""; + return { str: t, dir: t && "rtl" === bidi(t).dir ? "rtl" : "ltr" }; + } + setDefaultAppearance(e) { + const { dict: t, annotationGlobals: i } = e, + a = + getInheritableProperty({ dict: t, key: "DA" }) || i.acroForm.get("DA"); + this._defaultAppearance = "string" == typeof a ? a : ""; + this.data.defaultAppearanceData = parseDefaultAppearance( + this._defaultAppearance, + ); + } + setTitle(e) { + this._title = this._parseStringHelper(e); + } + setContents(e) { + this._contents = this._parseStringHelper(e); + } + setModificationDate(e) { + this.modificationDate = "string" == typeof e ? e : null; + } + setFlags(e) { + this.flags = Number.isInteger(e) && e > 0 ? e : 0; + this.flags & Z && + "Annotation" !== this.constructor.name && + (this.flags ^= Z); + } + hasFlag(e) { + return this._hasFlag(this.flags, e); + } + setRectangle(e) { + this.rectangle = lookupNormalRect(e, [0, 0, 0, 0]); + } + setColor(e) { + this.color = getRgbColor(e); + } + setLineEndings(e) { + this.lineEndings = ["None", "None"]; + if (Array.isArray(e) && 2 === e.length) + for (let t = 0; t < 2; t++) { + const i = e[t]; + if (i instanceof Name) + switch (i.name) { + case "None": + continue; + case "Square": + case "Circle": + case "Diamond": + case "OpenArrow": + case "ClosedArrow": + case "Butt": + case "ROpenArrow": + case "RClosedArrow": + case "Slash": + this.lineEndings[t] = i.name; + continue; + } + warn(`Ignoring invalid lineEnding: ${i}`); + } + } + setRotation(e, t) { + this.rotation = 0; + let i = e instanceof Dict ? e.get("R") || 0 : t.get("Rotate") || 0; + if (Number.isInteger(i) && 0 !== i) { + i %= 360; + i < 0 && (i += 360); + i % 90 == 0 && (this.rotation = i); + } + } + setBorderAndBackgroundColors(e) { + if (e instanceof Dict) { + this.borderColor = getRgbColor(e.getArray("BC"), null); + this.backgroundColor = getRgbColor(e.getArray("BG"), null); + } else this.borderColor = this.backgroundColor = null; + } + setBorderStyle(e) { + this.borderStyle = new AnnotationBorderStyle(); + if (e instanceof Dict) + if (e.has("BS")) { + const t = e.get("BS"); + if (t instanceof Dict) { + const e = t.get("Type"); + if (!e || isName(e, "Border")) { + this.borderStyle.setWidth(t.get("W"), this.rectangle); + this.borderStyle.setStyle(t.get("S")); + this.borderStyle.setDashArray(t.getArray("D")); + } + } + } else if (e.has("Border")) { + const t = e.getArray("Border"); + if (Array.isArray(t) && t.length >= 3) { + this.borderStyle.setHorizontalCornerRadius(t[0]); + this.borderStyle.setVerticalCornerRadius(t[1]); + this.borderStyle.setWidth(t[2], this.rectangle); + 4 === t.length && this.borderStyle.setDashArray(t[3], !0); + } + } else this.borderStyle.setWidth(0); + } + setAppearance(e) { + this.appearance = null; + const t = e.get("AP"); + if (!(t instanceof Dict)) return; + const i = t.get("N"); + if (i instanceof BaseStream) { + this.appearance = i; + return; + } + if (!(i instanceof Dict)) return; + const a = e.get("AS"); + if (!(a instanceof Name && i.has(a.name))) return; + const s = i.get(a.name); + s instanceof BaseStream && (this.appearance = s); + } + setOptionalContent(e) { + this.oc = null; + const t = e.get("OC"); + t instanceof Name + ? warn("setOptionalContent: Support for /Name-entry is not implemented.") + : t instanceof Dict && (this.oc = t); + } + loadResources(e, t) { + return t.dict.getAsync("Resources").then((t) => { + if (!t) return; + return new ObjectLoader(t, e, t.xref).load().then(function () { + return t; + }); + }); + } + async getOperatorList(e, t, a, s, r) { + const { hasOwnCanvas: n, id: o, rect: c } = this.data; + let h = this.appearance; + const l = !!(n && a & g); + if (l && (c[0] === c[2] || c[1] === c[3])) { + this.data.hasOwnCanvas = !1; + return { + opList: new OperatorList(), + separateForm: !1, + separateCanvas: !1, + }; + } + if (!h) { + if (!l) + return { + opList: new OperatorList(), + separateForm: !1, + separateCanvas: !1, + }; + h = new StringStream(""); + h.dict = new Dict(); + } + const C = h.dict, + Q = await this.loadResources( + ["ExtGState", "ColorSpace", "Pattern", "Shading", "XObject", "Font"], + h, + ), + E = lookupRect(C.getArray("BBox"), [0, 0, 1, 1]), + u = lookupMatrix(C.getArray("Matrix"), i), + d = getTransformMatrix(c, E, u), + f = new OperatorList(); + let p; + this.oc && (p = await e.parseMarkedContentProps(this.oc, null)); + void 0 !== p && f.addOp(He, ["OC", p]); + f.addOp(We, [o, c, d, u, l]); + await e.getOperatorList({ + stream: h, + task: t, + resources: Q, + operatorList: f, + fallbackFontDict: this._fallbackFontDict, + }); + f.addOp(Xe, []); + void 0 !== p && f.addOp(Ye, []); + this.reset(); + return { opList: f, separateForm: !1, separateCanvas: l }; + } + async save(e, t, i) { + return null; + } + get hasTextContent() { + return !1; + } + async extractTextContent(e, t, i) { + if (!this.appearance) return; + const a = await this.loadResources( + ["ExtGState", "Font", "Properties", "XObject"], + this.appearance, + ), + s = [], + r = []; + let n = null; + const o = { + desiredSize: Math.Infinity, + ready: !0, + enqueue(e, t) { + for (const t of e.items) + if (void 0 !== t.str) { + n ||= t.transform.slice(-2); + r.push(t.str); + if (t.hasEOL) { + s.push(r.join("").trimEnd()); + r.length = 0; + } + } + }, + }; + await e.getTextContent({ + stream: this.appearance, + task: t, + resources: a, + includeMarkedContent: !0, + keepWhiteSpace: !0, + sink: o, + viewBox: i, + }); + this.reset(); + r.length && s.push(r.join("").trimEnd()); + if (s.length > 1 || s[0]) { + const e = this.appearance.dict, + t = lookupRect(e.getArray("BBox"), null), + i = lookupMatrix(e.getArray("Matrix"), null); + this.data.textPosition = this._transformPoint(n, t, i); + this.data.textContent = s; + } + } + _transformPoint(e, t, i) { + const { rect: a } = this.data; + t ||= [0, 0, 1, 1]; + i ||= [1, 0, 0, 1, 0, 0]; + const s = getTransformMatrix(a, t, i); + s[4] -= a[0]; + s[5] -= a[1]; + e = Util.applyTransform(e, s); + return Util.applyTransform(e, i); + } + getFieldObject() { + return this.data.kidIds + ? { + id: this.data.id, + actions: this.data.actions, + name: this.data.fieldName, + strokeColor: this.data.borderColor, + fillColor: this.data.backgroundColor, + type: "", + kidIds: this.data.kidIds, + page: this.data.pageIndex, + rotation: this.rotation, + } + : null; + } + reset() { + for (const e of this._streams) e.reset(); + } + _constructFieldName(e) { + if (!e.has("T") && !e.has("Parent")) { + warn("Unknown field name, falling back to empty field name."); + return ""; + } + if (!e.has("Parent")) return stringToPDFString(e.get("T")); + const t = []; + e.has("T") && t.unshift(stringToPDFString(e.get("T"))); + let i = e; + const a = new RefSet(); + e.objId && a.put(e.objId); + for (; i.has("Parent"); ) { + i = i.get("Parent"); + if (!(i instanceof Dict) || (i.objId && a.has(i.objId))) break; + i.objId && a.put(i.objId); + i.has("T") && t.unshift(stringToPDFString(i.get("T"))); + } + return t.join("."); + } +} +class AnnotationBorderStyle { + constructor() { + this.width = 1; + this.style = lA; + this.dashArray = [3]; + this.horizontalCornerRadius = 0; + this.verticalCornerRadius = 0; + } + setWidth(e, t = [0, 0, 0, 0]) { + if (e instanceof Name) this.width = 0; + else if ("number" == typeof e) { + if (e > 0) { + const i = (t[2] - t[0]) / 2, + a = (t[3] - t[1]) / 2; + if (i > 0 && a > 0 && (e > i || e > a)) { + warn(`AnnotationBorderStyle.setWidth - ignoring width: ${e}`); + e = 1; + } + } + this.width = e; + } + } + setStyle(e) { + if (e instanceof Name) + switch (e.name) { + case "S": + this.style = lA; + break; + case "D": + this.style = CA; + break; + case "B": + this.style = BA; + break; + case "I": + this.style = QA; + break; + case "U": + this.style = EA; + } + } + setDashArray(e, t = !1) { + if (Array.isArray(e)) { + let i = !0, + a = !0; + for (const t of e) { + if (!(+t >= 0)) { + i = !1; + break; + } + t > 0 && (a = !1); + } + if (0 === e.length || (i && !a)) { + this.dashArray = e; + t && this.setStyle(Name.get("D")); + } else this.width = 0; + } else e && (this.width = 0); + } + setHorizontalCornerRadius(e) { + Number.isInteger(e) && (this.horizontalCornerRadius = e); + } + setVerticalCornerRadius(e) { + Number.isInteger(e) && (this.verticalCornerRadius = e); + } +} +class MarkupAnnotation extends Annotation { + constructor(e) { + super(e); + const { dict: t } = e; + if (t.has("IRT")) { + const e = t.getRaw("IRT"); + this.data.inReplyTo = e instanceof Ref ? e.toString() : null; + const i = t.get("RT"); + this.data.replyType = i instanceof Name ? i.name : j; + } + let i = null; + if (this.data.replyType === X) { + const e = t.get("IRT"); + this.setTitle(e.get("T")); + this.data.titleObj = this._title; + this.setContents(e.get("Contents")); + this.data.contentsObj = this._contents; + if (e.has("CreationDate")) { + this.setCreationDate(e.get("CreationDate")); + this.data.creationDate = this.creationDate; + } else this.data.creationDate = null; + if (e.has("M")) { + this.setModificationDate(e.get("M")); + this.data.modificationDate = this.modificationDate; + } else this.data.modificationDate = null; + i = e.getRaw("Popup"); + if (e.has("C")) { + this.setColor(e.getArray("C")); + this.data.color = this.color; + } else this.data.color = null; + } else { + this.data.titleObj = this._title; + this.setCreationDate(t.get("CreationDate")); + this.data.creationDate = this.creationDate; + i = t.getRaw("Popup"); + t.has("C") || (this.data.color = null); + } + this.data.popupRef = i instanceof Ref ? i.toString() : null; + t.has("RC") && + (this.data.richText = XFAFactory.getRichTextAsHtml(t.get("RC"))); + } + setCreationDate(e) { + this.creationDate = "string" == typeof e ? e : null; + } + _setDefaultAppearance({ + xref: e, + extra: t, + strokeColor: i, + fillColor: a, + blendMode: s, + strokeAlpha: r, + fillAlpha: n, + pointsCallback: o, + }) { + let g = Number.MAX_VALUE, + c = Number.MAX_VALUE, + h = Number.MIN_VALUE, + l = Number.MIN_VALUE; + const C = ["q"]; + t && C.push(t); + i && C.push(`${i[0]} ${i[1]} ${i[2]} RG`); + a && C.push(`${a[0]} ${a[1]} ${a[2]} rg`); + let Q = this.data.quadPoints; + Q || + (Q = [ + [ + { x: this.rectangle[0], y: this.rectangle[3] }, + { x: this.rectangle[2], y: this.rectangle[3] }, + { x: this.rectangle[0], y: this.rectangle[1] }, + { x: this.rectangle[2], y: this.rectangle[1] }, + ], + ]); + for (const e of Q) { + const [t, i, a, s] = o(C, e); + g = Math.min(g, t); + h = Math.max(h, i); + c = Math.min(c, a); + l = Math.max(l, s); + } + C.push("Q"); + const E = new Dict(e), + u = new Dict(e); + u.set("Subtype", Name.get("Form")); + const d = new StringStream(C.join(" ")); + d.dict = u; + E.set("Fm0", d); + const f = new Dict(e); + s && f.set("BM", Name.get(s)); + "number" == typeof r && f.set("CA", r); + "number" == typeof n && f.set("ca", n); + const p = new Dict(e); + p.set("GS0", f); + const m = new Dict(e); + m.set("ExtGState", p); + m.set("XObject", E); + const y = new Dict(e); + y.set("Resources", m); + const w = (this.data.rect = [g, c, h, l]); + y.set("BBox", w); + this.appearance = new StringStream("/GS0 gs /Fm0 Do"); + this.appearance.dict = y; + this._streams.push(this.appearance, d); + } + static async createNewAnnotation(e, t, i, a) { + const s = (t.ref ||= e.getNewTemporaryRef()), + r = await this.createNewAppearanceStream(t, e, a), + n = []; + let o; + if (r) { + const a = e.getNewTemporaryRef(); + o = this.createNewDict(t, e, { apRef: a }); + await writeObject(a, r, n, e); + i.push({ ref: a, data: n.join("") }); + } else o = this.createNewDict(t, e, {}); + Number.isInteger(t.parentTreeId) && o.set("StructParent", t.parentTreeId); + n.length = 0; + await writeObject(s, o, n, e); + return { ref: s, data: n.join("") }; + } + static async createNewPrintAnnotation(e, t, i, a) { + const s = await this.createNewAppearanceStream(i, t, a), + r = this.createNewDict(i, t, { ap: s }), + n = new this.prototype.constructor({ + dict: r, + xref: t, + annotationGlobals: e, + evaluatorOptions: a.evaluatorOptions, + }); + i.ref && (n.ref = n.refToReplace = i.ref); + return n; + } +} +class WidgetAnnotation extends Annotation { + constructor(e) { + super(e); + const { dict: t, xref: i, annotationGlobals: a } = e, + s = this.data; + this._needAppearances = e.needAppearances; + s.annotationType = W; + void 0 === s.fieldName && (s.fieldName = this._constructFieldName(t)); + void 0 === s.actions && (s.actions = collectActions(i, t, uA)); + let r = getInheritableProperty({ dict: t, key: "V", getArray: !0 }); + s.fieldValue = this._decodeFormValue(r); + const n = getInheritableProperty({ dict: t, key: "DV", getArray: !0 }); + s.defaultFieldValue = this._decodeFormValue(n); + if (void 0 === r && a.xfaDatasets) { + const e = this._title.str; + if (e) { + this._hasValueFromXFA = !0; + s.fieldValue = r = a.xfaDatasets.getValue(e); + } + } + void 0 === r && + null !== s.defaultFieldValue && + (s.fieldValue = s.defaultFieldValue); + s.alternativeText = stringToPDFString(t.get("TU") || ""); + this.setDefaultAppearance(e); + s.hasAppearance ||= + this._needAppearances && void 0 !== s.fieldValue && null !== s.fieldValue; + const o = getInheritableProperty({ dict: t, key: "FT" }); + s.fieldType = o instanceof Name ? o.name : null; + const g = getInheritableProperty({ dict: t, key: "DR" }), + c = a.acroForm.get("DR"), + h = this.appearance?.dict.get("Resources"); + this._fieldResources = { + localResources: g, + acroFormResources: c, + appearanceResources: h, + mergedResources: Dict.merge({ + xref: i, + dictArray: [g, h, c], + mergeSubDicts: !0, + }), + }; + s.fieldFlags = getInheritableProperty({ dict: t, key: "Ff" }); + (!Number.isInteger(s.fieldFlags) || s.fieldFlags < 0) && (s.fieldFlags = 0); + s.readOnly = this.hasFieldFlag(tA); + s.required = this.hasFieldFlag(iA); + s.hidden = + this._hasFlag(s.annotationFlags, V) || + this._hasFlag(s.annotationFlags, $); + } + _decodeFormValue(e) { + return Array.isArray(e) + ? e.filter((e) => "string" == typeof e).map((e) => stringToPDFString(e)) + : e instanceof Name + ? stringToPDFString(e.name) + : "string" == typeof e + ? stringToPDFString(e) + : null; + } + hasFieldFlag(e) { + return !!(this.data.fieldFlags & e); + } + _isViewable(e) { + return !0; + } + mustBeViewed(e, t) { + return t + ? this.viewable + : super.mustBeViewed(e, t) && !this._hasFlag(this.flags, $); + } + getRotationMatrix(e) { + let t = e?.get(this.data.id)?.rotation; + void 0 === t && (t = this.rotation); + if (0 === t) return i; + return getRotationMatrix( + t, + this.data.rect[2] - this.data.rect[0], + this.data.rect[3] - this.data.rect[1], + ); + } + getBorderAndBackgroundAppearances(e) { + let t = e?.get(this.data.id)?.rotation; + void 0 === t && (t = this.rotation); + if (!this.backgroundColor && !this.borderColor) return ""; + const i = this.data.rect[2] - this.data.rect[0], + a = this.data.rect[3] - this.data.rect[1], + s = 0 === t || 180 === t ? `0 0 ${i} ${a} re` : `0 0 ${a} ${i} re`; + let r = ""; + this.backgroundColor && + (r = `${getPdfColor(this.backgroundColor, !0)} ${s} f `); + if (this.borderColor) { + r += `${this.borderStyle.width || 1} w ${getPdfColor(this.borderColor, !1)} ${s} S `; + } + return r; + } + async getOperatorList(e, t, i, a, s) { + if ( + a && + !(this instanceof SignatureWidgetAnnotation) && + !this.data.noHTML && + !this.data.hasOwnCanvas + ) + return { + opList: new OperatorList(), + separateForm: !0, + separateCanvas: !1, + }; + if (!this._hasText) return super.getOperatorList(e, t, i, a, s); + const r = await this._getAppearance(e, t, i, s); + if (this.appearance && null === r) + return super.getOperatorList(e, t, i, a, s); + const n = new OperatorList(); + if (!this._defaultAppearance || null === r) + return { opList: n, separateForm: !1, separateCanvas: !1 }; + const o = !!(this.data.hasOwnCanvas && i & g), + c = [ + 0, + 0, + this.data.rect[2] - this.data.rect[0], + this.data.rect[3] - this.data.rect[1], + ], + h = getTransformMatrix(this.data.rect, c, [1, 0, 0, 1, 0, 0]); + let l; + this.oc && (l = await e.parseMarkedContentProps(this.oc, null)); + void 0 !== l && n.addOp(He, ["OC", l]); + n.addOp(We, [ + this.data.id, + this.data.rect, + h, + this.getRotationMatrix(s), + o, + ]); + const C = new StringStream(r); + await e.getOperatorList({ + stream: C, + task: t, + resources: this._fieldResources.mergedResources, + operatorList: n, + }); + n.addOp(Xe, []); + void 0 !== l && n.addOp(Ye, []); + return { opList: n, separateForm: !1, separateCanvas: o }; + } + _getMKDict(e) { + const t = new Dict(null); + e && t.set("R", e); + this.borderColor && t.set("BC", getPdfColorArray(this.borderColor)); + this.backgroundColor && t.set("BG", getPdfColorArray(this.backgroundColor)); + return t.size > 0 ? t : null; + } + amendSavedDict(e, t) {} + async save(e, t, a) { + const s = a?.get(this.data.id); + let r = s?.value, + n = s?.rotation; + if (r === this.data.fieldValue || void 0 === r) { + if (!this._hasValueFromXFA && void 0 === n) return null; + r ||= this.data.fieldValue; + } + if ( + void 0 === n && + !this._hasValueFromXFA && + Array.isArray(r) && + Array.isArray(this.data.fieldValue) && + r.length === this.data.fieldValue.length && + r.every((e, t) => e === this.data.fieldValue[t]) + ) + return null; + void 0 === n && (n = this.rotation); + let o = null; + if (!this._needAppearances) { + o = await this._getAppearance(e, t, h, a); + if (null === o) return null; + } + let g = !1; + if (o?.needAppearances) { + g = !0; + o = null; + } + const { xref: c } = e, + l = c.fetchIfRef(this.ref); + if (!(l instanceof Dict)) return null; + const C = new Dict(c); + for (const e of l.getKeys()) "AP" !== e && C.set(e, l.getRaw(e)); + const Q = { path: this.data.fieldName, value: r }, + encoder = (e) => (isAscii(e) ? e : stringToUTF16String(e, !0)); + C.set("V", Array.isArray(r) ? r.map(encoder) : encoder(r)); + this.amendSavedDict(a, C); + const E = this._getMKDict(n); + E && C.set("MK", E); + const u = [], + d = [{ ref: this.ref, data: "", xfa: Q, needAppearances: g }]; + if (null !== o) { + const e = c.getNewTemporaryRef(), + t = new Dict(c); + C.set("AP", t); + t.set("N", e); + const s = this._getSaveFieldResources(c), + r = new StringStream(o), + n = (r.dict = new Dict(c)); + n.set("Subtype", Name.get("Form")); + n.set("Resources", s); + n.set("BBox", [ + 0, + 0, + this.data.rect[2] - this.data.rect[0], + this.data.rect[3] - this.data.rect[1], + ]); + const g = this.getRotationMatrix(a); + g !== i && n.set("Matrix", g); + await writeObject(e, r, u, c); + d.push({ ref: e, data: u.join(""), xfa: null, needAppearances: !1 }); + u.length = 0; + } + C.set("M", `D:${getModificationDate()}`); + await writeObject(this.ref, C, u, c); + d[0].data = u.join(""); + return d; + } + async _getAppearance(e, t, i, a) { + if (this.hasFieldFlag(sA)) return null; + const s = a?.get(this.data.id); + let r, o; + if (s) { + r = s.formattedValue || s.value; + o = s.rotation; + } + if ( + void 0 === o && + void 0 === r && + !this._needAppearances && + (!this._hasValueFromXFA || this.appearance) + ) + return null; + const g = this.getBorderAndBackgroundAppearances(a); + if (void 0 === r) { + r = this.data.fieldValue; + if (!r) return `/Tx BMC q ${g}Q EMC`; + } + Array.isArray(r) && 1 === r.length && (r = r[0]); + assert("string" == typeof r, "Expected `value` to be a string."); + r = r.trim(); + if (this.data.combo) { + const e = this.data.options.find(({ exportValue: e }) => r === e); + r = e?.displayValue || r; + } + if ("" === r) return `/Tx BMC q ${g}Q EMC`; + void 0 === o && (o = this.rotation); + let c, + l = -1; + if (this.data.multiLine) { + c = r.split(/\r\n?|\n/).map((e) => e.normalize("NFC")); + l = c.length; + } else c = [r.replace(/\r\n?|\n/, "").normalize("NFC")]; + let C = this.data.rect[3] - this.data.rect[1], + Q = this.data.rect[2] - this.data.rect[0]; + (90 !== o && 270 !== o) || ([Q, C] = [C, Q]); + this._defaultAppearance || + (this.data.defaultAppearanceData = parseDefaultAppearance( + (this._defaultAppearance = "/Helvetica 0 Tf 0 g"), + )); + let E, + u, + d, + f = await WidgetAnnotation._getFontData( + e, + t, + this.data.defaultAppearanceData, + this._fieldResources.mergedResources, + ); + const p = []; + let m = !1; + for (const e of c) { + const t = f.encodeString(e); + t.length > 1 && (m = !0); + p.push(t.join("")); + } + if (m && i & h) return { needAppearances: !0 }; + if (m && this._isOffscreenCanvasSupported) { + const i = this.data.comb ? "monospace" : "sans-serif", + a = new FakeUnicodeFont(e.xref, i), + s = a.createFontResources(c.join("")), + n = s.getRaw("Font"); + if (this._fieldResources.mergedResources.has("Font")) { + const e = this._fieldResources.mergedResources.get("Font"); + for (const t of n.getKeys()) e.set(t, n.getRaw(t)); + } else this._fieldResources.mergedResources.set("Font", n); + const o = a.fontName.name; + f = await WidgetAnnotation._getFontData( + e, + t, + { fontName: o, fontSize: 0 }, + s, + ); + for (let e = 0, t = p.length; e < t; e++) + p[e] = stringToUTF16String(c[e]); + const g = Object.assign( + Object.create(null), + this.data.defaultAppearanceData, + ); + this.data.defaultAppearanceData.fontSize = 0; + this.data.defaultAppearanceData.fontName = o; + [E, u, d] = this._computeFontSize(C - 2, Q - 4, r, f, l); + this.data.defaultAppearanceData = g; + } else { + this._isOffscreenCanvasSupported || + warn( + "_getAppearance: OffscreenCanvas is not supported, annotation may not render correctly.", + ); + [E, u, d] = this._computeFontSize(C - 2, Q - 4, r, f, l); + } + let y = f.descent; + y = isNaN(y) ? n * d : Math.max(n * d, Math.abs(y) * u); + const w = Math.min(Math.floor((C - u) / 2), 1), + b = this.data.textAlignment; + if (this.data.multiLine) + return this._getMultilineAppearance(E, p, f, u, Q, C, b, 2, w, y, d, a); + if (this.data.comb) + return this._getCombAppearance(E, f, p[0], u, Q, C, 2, w, y, d, a); + const D = w + y; + if (0 === b || b > 2) + return ( + `/Tx BMC q ${g}BT ` + + E + + ` 1 0 0 1 ${numberToString(2)} ${numberToString(D)} Tm (${escapeString(p[0])}) Tj ET Q EMC` + ); + return ( + `/Tx BMC q ${g}BT ` + + E + + ` 1 0 0 1 0 0 Tm ${this._renderText(p[0], f, u, Q, b, { shift: 0 }, 2, D)} ET Q EMC` + ); + } + static async _getFontData(e, t, i, a) { + const s = new OperatorList(), + r = { + font: null, + clone() { + return this; + }, + }, + { fontName: n, fontSize: o } = i; + await e.handleSetFont(a, [n && Name.get(n), o], null, s, t, r, null); + return r.font; + } + _getTextWidth(e, t) { + return t.charsToGlyphs(e).reduce((e, t) => e + t.width, 0) / 1e3; + } + _computeFontSize(e, t, i, a, r) { + let { fontSize: n } = this.data.defaultAppearanceData, + o = (n || 12) * s, + g = Math.round(e / o); + if (!n) { + const roundWithTwoDigits = (e) => Math.floor(100 * e) / 100; + if (-1 === r) { + const r = this._getTextWidth(i, a); + n = roundWithTwoDigits(Math.min(e / s, r > t ? t / r : 1 / 0)); + g = 1; + } else { + const c = i.split(/\r\n?|\n/), + h = []; + for (const e of c) { + const t = a.encodeString(e).join(""), + i = a.charsToGlyphs(t), + s = a.getCharPositions(t); + h.push({ line: t, glyphs: i, positions: s }); + } + const isTooBig = (i) => { + let s = 0; + for (const r of h) { + s += this._splitLine(null, a, i, t, r).length * i; + if (s > e) return !0; + } + return !1; + }; + g = Math.max(g, r); + for (;;) { + o = e / g; + n = roundWithTwoDigits(o / s); + if (!isTooBig(n)) break; + g++; + } + } + const { fontName: c, fontColor: h } = this.data.defaultAppearanceData; + this._defaultAppearance = (function createDefaultAppearance({ + fontSize: e, + fontName: t, + fontColor: i, + }) { + return `/${escapePDFName(t)} ${e} Tf ${getPdfColor(i, !0)}`; + })({ fontSize: n, fontName: c, fontColor: h }); + } + return [this._defaultAppearance, n, e / g]; + } + _renderText(e, t, i, a, s, r, n, o) { + let g; + if (1 === s) { + g = (a - this._getTextWidth(e, t) * i) / 2; + } else if (2 === s) { + g = a - this._getTextWidth(e, t) * i - n; + } else g = n; + const c = numberToString(g - r.shift); + r.shift = g; + return `${c} ${(o = numberToString(o))} Td (${escapeString(e)}) Tj`; + } + _getSaveFieldResources(e) { + const { + localResources: t, + appearanceResources: i, + acroFormResources: a, + } = this._fieldResources, + s = this.data.defaultAppearanceData?.fontName; + if (!s) return t || Dict.empty; + for (const e of [t, i]) + if (e instanceof Dict) { + const t = e.get("Font"); + if (t instanceof Dict && t.has(s)) return e; + } + if (a instanceof Dict) { + const i = a.get("Font"); + if (i instanceof Dict && i.has(s)) { + const a = new Dict(e); + a.set(s, i.getRaw(s)); + const r = new Dict(e); + r.set("Font", a); + return Dict.merge({ xref: e, dictArray: [r, t], mergeSubDicts: !0 }); + } + } + return t || Dict.empty; + } + getFieldObject() { + return null; + } +} +class TextWidgetAnnotation extends WidgetAnnotation { + constructor(e) { + super(e); + this.data.hasOwnCanvas = this.data.readOnly && !this.data.noHTML; + this._hasText = !0; + const t = e.dict; + "string" != typeof this.data.fieldValue && (this.data.fieldValue = ""); + let i = getInheritableProperty({ dict: t, key: "Q" }); + (!Number.isInteger(i) || i < 0 || i > 2) && (i = null); + this.data.textAlignment = i; + let a = getInheritableProperty({ dict: t, key: "MaxLen" }); + (!Number.isInteger(a) || a < 0) && (a = 0); + this.data.maxLen = a; + this.data.multiLine = this.hasFieldFlag(aA); + this.data.comb = + this.hasFieldFlag(hA) && + !this.hasFieldFlag(aA) && + !this.hasFieldFlag(sA) && + !this.hasFieldFlag(gA) && + 0 !== this.data.maxLen; + this.data.doNotScroll = this.hasFieldFlag(cA); + } + get hasTextContent() { + return !!this.appearance && !this._needAppearances; + } + _getCombAppearance(e, t, i, a, s, r, n, o, g, c, h) { + const l = s / this.data.maxLen, + C = this.getBorderAndBackgroundAppearances(h), + Q = [], + E = t.getCharPositions(i); + for (const [e, t] of E) Q.push(`(${escapeString(i.substring(e, t))}) Tj`); + const u = Q.join(` ${numberToString(l)} 0 Td `); + return ( + `/Tx BMC q ${C}BT ` + + e + + ` 1 0 0 1 ${numberToString(n)} ${numberToString(o + g)} Tm ${u} ET Q EMC` + ); + } + _getMultilineAppearance(e, t, i, a, s, r, n, o, g, c, h, l) { + const C = [], + Q = s - 2 * o, + E = { shift: 0 }; + for (let e = 0, r = t.length; e < r; e++) { + const r = t[e], + l = this._splitLine(r, i, a, Q); + for (let t = 0, r = l.length; t < r; t++) { + const r = l[t], + Q = 0 === e && 0 === t ? -g - (h - c) : -h; + C.push(this._renderText(r, i, a, s, n, E, o, Q)); + } + } + const u = this.getBorderAndBackgroundAppearances(l), + d = C.join("\n"); + return ( + `/Tx BMC q ${u}BT ` + + e + + ` 1 0 0 1 0 ${numberToString(r)} Tm ${d} ET Q EMC` + ); + } + _splitLine(e, t, i, a, s = {}) { + e = s.line || e; + const r = s.glyphs || t.charsToGlyphs(e); + if (r.length <= 1) return [e]; + const n = s.positions || t.getCharPositions(e), + o = i / 1e3, + g = []; + let c = -1, + h = -1, + l = -1, + C = 0, + Q = 0; + for (let t = 0, i = r.length; t < i; t++) { + const [i, s] = n[t], + E = r[t], + u = E.width * o; + if (" " === E.unicode) + if (Q + u > a) { + g.push(e.substring(C, i)); + C = i; + Q = u; + c = -1; + l = -1; + } else { + Q += u; + c = i; + h = s; + l = t; + } + else if (Q + u > a) + if (-1 !== c) { + g.push(e.substring(C, h)); + C = h; + t = l + 1; + c = -1; + Q = 0; + } else { + g.push(e.substring(C, i)); + C = i; + Q = u; + } + else Q += u; + } + C < e.length && g.push(e.substring(C, e.length)); + return g; + } + getFieldObject() { + return { + id: this.data.id, + value: this.data.fieldValue, + defaultValue: this.data.defaultFieldValue || "", + multiline: this.data.multiLine, + password: this.hasFieldFlag(sA), + charLimit: this.data.maxLen, + comb: this.data.comb, + editable: !this.data.readOnly, + hidden: this.data.hidden, + name: this.data.fieldName, + rect: this.data.rect, + actions: this.data.actions, + page: this.data.pageIndex, + strokeColor: this.data.borderColor, + fillColor: this.data.backgroundColor, + rotation: this.rotation, + type: "text", + }; + } +} +class ButtonWidgetAnnotation extends WidgetAnnotation { + constructor(e) { + super(e); + this.checkedAppearance = null; + this.uncheckedAppearance = null; + this.data.checkBox = !this.hasFieldFlag(rA) && !this.hasFieldFlag(nA); + this.data.radioButton = this.hasFieldFlag(rA) && !this.hasFieldFlag(nA); + this.data.pushButton = this.hasFieldFlag(nA); + this.data.isTooltipOnly = !1; + if (this.data.checkBox) this._processCheckBox(e); + else if (this.data.radioButton) this._processRadioButton(e); + else if (this.data.pushButton) { + this.data.hasOwnCanvas = !0; + this.data.noHTML = !1; + this._processPushButton(e); + } else warn("Invalid field flags for button widget annotation"); + } + async getOperatorList(e, t, a, s, r) { + if (this.data.pushButton) return super.getOperatorList(e, t, a, !1, r); + let n = null, + o = null; + if (r) { + const e = r.get(this.data.id); + n = e ? e.value : null; + o = e ? e.rotation : null; + } + if (null === n && this.appearance) + return super.getOperatorList(e, t, a, s, r); + null == n && + (n = this.data.checkBox + ? this.data.fieldValue === this.data.exportValue + : this.data.fieldValue === this.data.buttonValue); + const g = n ? this.checkedAppearance : this.uncheckedAppearance; + if (g) { + const n = this.appearance, + c = lookupMatrix(g.dict.getArray("Matrix"), i); + o && g.dict.set("Matrix", this.getRotationMatrix(r)); + this.appearance = g; + const h = super.getOperatorList(e, t, a, s, r); + this.appearance = n; + g.dict.set("Matrix", c); + return h; + } + return { opList: new OperatorList(), separateForm: !1, separateCanvas: !1 }; + } + async save(e, t, i) { + return this.data.checkBox + ? this._saveCheckbox(e, t, i) + : this.data.radioButton + ? this._saveRadioButton(e, t, i) + : null; + } + async _saveCheckbox(e, t, i) { + if (!i) return null; + const a = i.get(this.data.id); + let s = a?.rotation, + r = a?.value; + if (void 0 === s) { + if (void 0 === r) return null; + if ((this.data.fieldValue === this.data.exportValue) === r) return null; + } + const n = e.xref.fetchIfRef(this.ref); + if (!(n instanceof Dict)) return null; + void 0 === s && (s = this.rotation); + void 0 === r && (r = this.data.fieldValue === this.data.exportValue); + const o = { + path: this.data.fieldName, + value: r ? this.data.exportValue : "", + }, + g = Name.get(r ? this.data.exportValue : "Off"); + n.set("V", g); + n.set("AS", g); + n.set("M", `D:${getModificationDate()}`); + const c = this._getMKDict(s); + c && n.set("MK", c); + const h = []; + await writeObject(this.ref, n, h, e.xref); + return [{ ref: this.ref, data: h.join(""), xfa: o }]; + } + async _saveRadioButton(e, t, i) { + if (!i) return null; + const a = i.get(this.data.id); + let s = a?.rotation, + r = a?.value; + if (void 0 === s) { + if (void 0 === r) return null; + if ((this.data.fieldValue === this.data.buttonValue) === r) return null; + } + const n = e.xref.fetchIfRef(this.ref); + if (!(n instanceof Dict)) return null; + void 0 === r && (r = this.data.fieldValue === this.data.buttonValue); + void 0 === s && (s = this.rotation); + const o = { + path: this.data.fieldName, + value: r ? this.data.buttonValue : "", + }, + g = Name.get(r ? this.data.buttonValue : "Off"), + c = []; + let h = null; + if (r) + if (this.parent instanceof Ref) { + const t = e.xref.fetch(this.parent); + t.set("V", g); + await writeObject(this.parent, t, c, e.xref); + h = c.join(""); + c.length = 0; + } else this.parent instanceof Dict && this.parent.set("V", g); + n.set("AS", g); + n.set("M", `D:${getModificationDate()}`); + const l = this._getMKDict(s); + l && n.set("MK", l); + await writeObject(this.ref, n, c, e.xref); + const C = [{ ref: this.ref, data: c.join(""), xfa: o }]; + h && C.push({ ref: this.parent, data: h, xfa: null }); + return C; + } + _getDefaultCheckedAppearance(e, t) { + const i = this.data.rect[2] - this.data.rect[0], + a = this.data.rect[3] - this.data.rect[1], + s = [0, 0, i, a], + r = 0.8 * Math.min(i, a); + let n, o; + if ("check" === t) { + n = { width: 0.755 * r, height: 0.705 * r }; + o = "3"; + } else if ("disc" === t) { + n = { width: 0.791 * r, height: 0.705 * r }; + o = "l"; + } else unreachable(`_getDefaultCheckedAppearance - unsupported type: ${t}`); + const g = `q BT /PdfJsZaDb ${r} Tf 0 g ${numberToString((i - n.width) / 2)} ${numberToString((a - n.height) / 2)} Td (${o}) Tj ET Q`, + c = new Dict(e.xref); + c.set("FormType", 1); + c.set("Subtype", Name.get("Form")); + c.set("Type", Name.get("XObject")); + c.set("BBox", s); + c.set("Matrix", [1, 0, 0, 1, 0, 0]); + c.set("Length", g.length); + const h = new Dict(e.xref), + l = new Dict(e.xref); + l.set("PdfJsZaDb", this.fallbackFontDict); + h.set("Font", l); + c.set("Resources", h); + this.checkedAppearance = new StringStream(g); + this.checkedAppearance.dict = c; + this._streams.push(this.checkedAppearance); + } + _processCheckBox(e) { + const t = e.dict.get("AP"); + if (!(t instanceof Dict)) return; + const i = t.get("N"); + if (!(i instanceof Dict)) return; + const a = this._decodeFormValue(e.dict.get("AS")); + "string" == typeof a && (this.data.fieldValue = a); + const s = + null !== this.data.fieldValue && "Off" !== this.data.fieldValue + ? this.data.fieldValue + : "Yes", + r = i.getKeys(); + if (0 === r.length) r.push("Off", s); + else if (1 === r.length) "Off" === r[0] ? r.push(s) : r.unshift("Off"); + else if (r.includes(s)) { + r.length = 0; + r.push("Off", s); + } else { + const e = r.find((e) => "Off" !== e); + r.length = 0; + r.push("Off", e); + } + r.includes(this.data.fieldValue) || (this.data.fieldValue = "Off"); + this.data.exportValue = r[1]; + const n = i.get(this.data.exportValue); + this.checkedAppearance = n instanceof BaseStream ? n : null; + const o = i.get("Off"); + this.uncheckedAppearance = o instanceof BaseStream ? o : null; + this.checkedAppearance + ? this._streams.push(this.checkedAppearance) + : this._getDefaultCheckedAppearance(e, "check"); + this.uncheckedAppearance && this._streams.push(this.uncheckedAppearance); + this._fallbackFontDict = this.fallbackFontDict; + null === this.data.defaultFieldValue && + (this.data.defaultFieldValue = "Off"); + } + _processRadioButton(e) { + this.data.buttonValue = null; + const t = e.dict.get("Parent"); + if (t instanceof Dict) { + this.parent = e.dict.getRaw("Parent"); + const i = t.get("V"); + i instanceof Name && (this.data.fieldValue = this._decodeFormValue(i)); + } + const i = e.dict.get("AP"); + if (!(i instanceof Dict)) return; + const a = i.get("N"); + if (!(a instanceof Dict)) return; + for (const e of a.getKeys()) + if ("Off" !== e) { + this.data.buttonValue = this._decodeFormValue(e); + break; + } + const s = a.get(this.data.buttonValue); + this.checkedAppearance = s instanceof BaseStream ? s : null; + const r = a.get("Off"); + this.uncheckedAppearance = r instanceof BaseStream ? r : null; + this.checkedAppearance + ? this._streams.push(this.checkedAppearance) + : this._getDefaultCheckedAppearance(e, "disc"); + this.uncheckedAppearance && this._streams.push(this.uncheckedAppearance); + this._fallbackFontDict = this.fallbackFontDict; + null === this.data.defaultFieldValue && + (this.data.defaultFieldValue = "Off"); + } + _processPushButton(e) { + const { dict: t, annotationGlobals: i } = e; + if (t.has("A") || t.has("AA") || this.data.alternativeText) { + this.data.isTooltipOnly = !t.has("A") && !t.has("AA"); + Catalog.parseDestDictionary({ + destDict: t, + resultObj: this.data, + docBaseUrl: i.baseUrl, + docAttachments: i.attachments, + }); + } else warn("Push buttons without action dictionaries are not supported"); + } + getFieldObject() { + let e, + t = "button"; + if (this.data.checkBox) { + t = "checkbox"; + e = this.data.exportValue; + } else if (this.data.radioButton) { + t = "radiobutton"; + e = this.data.buttonValue; + } + return { + id: this.data.id, + value: this.data.fieldValue || "Off", + defaultValue: this.data.defaultFieldValue, + exportValues: e, + editable: !this.data.readOnly, + name: this.data.fieldName, + rect: this.data.rect, + hidden: this.data.hidden, + actions: this.data.actions, + page: this.data.pageIndex, + strokeColor: this.data.borderColor, + fillColor: this.data.backgroundColor, + rotation: this.rotation, + type: t, + }; + } + get fallbackFontDict() { + const e = new Dict(); + e.set("BaseFont", Name.get("ZapfDingbats")); + e.set("Type", Name.get("FallbackType")); + e.set("Subtype", Name.get("FallbackType")); + e.set("Encoding", Name.get("ZapfDingbatsEncoding")); + return shadow(this, "fallbackFontDict", e); + } +} +class ChoiceWidgetAnnotation extends WidgetAnnotation { + constructor(e) { + super(e); + const { dict: t, xref: i } = e; + this.indices = t.getArray("I"); + this.hasIndices = Array.isArray(this.indices) && this.indices.length > 0; + this.data.options = []; + const a = getInheritableProperty({ dict: t, key: "Opt" }); + if (Array.isArray(a)) + for (let e = 0, t = a.length; e < t; e++) { + const t = i.fetchIfRef(a[e]), + s = Array.isArray(t); + this.data.options[e] = { + exportValue: this._decodeFormValue(s ? i.fetchIfRef(t[0]) : t), + displayValue: this._decodeFormValue(s ? i.fetchIfRef(t[1]) : t), + }; + } + if (this.hasIndices) { + this.data.fieldValue = []; + const e = this.data.options.length; + for (const t of this.indices) + Number.isInteger(t) && + t >= 0 && + t < e && + this.data.fieldValue.push(this.data.options[t].exportValue); + } else + "string" == typeof this.data.fieldValue + ? (this.data.fieldValue = [this.data.fieldValue]) + : this.data.fieldValue || (this.data.fieldValue = []); + this.data.combo = this.hasFieldFlag(oA); + this.data.multiSelect = this.hasFieldFlag(IA); + this._hasText = !0; + } + getFieldObject() { + const e = this.data.combo ? "combobox" : "listbox", + t = this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : null; + return { + id: this.data.id, + value: t, + defaultValue: this.data.defaultFieldValue, + editable: !this.data.readOnly, + name: this.data.fieldName, + rect: this.data.rect, + numItems: this.data.fieldValue.length, + multipleSelection: this.data.multiSelect, + hidden: this.data.hidden, + actions: this.data.actions, + items: this.data.options, + page: this.data.pageIndex, + strokeColor: this.data.borderColor, + fillColor: this.data.backgroundColor, + rotation: this.rotation, + type: e, + }; + } + amendSavedDict(e, t) { + if (!this.hasIndices) return; + let i = e?.get(this.data.id)?.value; + Array.isArray(i) || (i = [i]); + const a = [], + { options: s } = this.data; + for (let e = 0, t = 0, r = s.length; e < r; e++) + if (s[e].exportValue === i[t]) { + a.push(e); + t += 1; + } + t.set("I", a); + } + async _getAppearance(e, t, i, a) { + if (this.data.combo) return super._getAppearance(e, t, i, a); + let r, n; + const o = a?.get(this.data.id); + if (o) { + n = o.rotation; + r = o.value; + } + if (void 0 === n && void 0 === r && !this._needAppearances) return null; + void 0 === r ? (r = this.data.fieldValue) : Array.isArray(r) || (r = [r]); + let g = this.data.rect[3] - this.data.rect[1], + c = this.data.rect[2] - this.data.rect[0]; + (90 !== n && 270 !== n) || ([c, g] = [g, c]); + const h = this.data.options.length, + l = []; + for (let e = 0; e < h; e++) { + const { exportValue: t } = this.data.options[e]; + r.includes(t) && l.push(e); + } + this._defaultAppearance || + (this.data.defaultAppearanceData = parseDefaultAppearance( + (this._defaultAppearance = "/Helvetica 0 Tf 0 g"), + )); + const C = await WidgetAnnotation._getFontData( + e, + t, + this.data.defaultAppearanceData, + this._fieldResources.mergedResources, + ); + let Q, + { fontSize: E } = this.data.defaultAppearanceData; + if (E) Q = this._defaultAppearance; + else { + const e = (g - 1) / h; + let t, + i = -1; + for (const { displayValue: e } of this.data.options) { + const a = this._getTextWidth(e, C); + if (a > i) { + i = a; + t = e; + } + } + [Q, E] = this._computeFontSize(e, c - 4, t, C, -1); + } + const u = E * s, + d = (u - E) / 2, + f = Math.floor(g / u); + let p = 0; + if (l.length > 0) { + const e = Math.min(...l), + t = Math.max(...l); + p = Math.max(0, t - f + 1); + p > e && (p = e); + } + const m = Math.min(p + f + 1, h), + y = ["/Tx BMC q", `1 1 ${c} ${g} re W n`]; + if (l.length) { + y.push("0.600006 0.756866 0.854904 rg"); + for (const e of l) + p <= e && e < m && y.push(`1 ${g - (e - p + 1) * u} ${c} ${u} re f`); + } + y.push("BT", Q, `1 0 0 1 0 ${g} Tm`); + const w = { shift: 0 }; + for (let e = p; e < m; e++) { + const { displayValue: t } = this.data.options[e], + i = e === p ? d : 0; + y.push(this._renderText(t, C, E, c, 0, w, 2, -u + i)); + } + y.push("ET Q EMC"); + return y.join("\n"); + } +} +class SignatureWidgetAnnotation extends WidgetAnnotation { + constructor(e) { + super(e); + this.data.fieldValue = null; + this.data.hasOwnCanvas = this.data.noRotate; + this.data.noHTML = !this.data.hasOwnCanvas; + } + getFieldObject() { + return { + id: this.data.id, + value: null, + page: this.data.pageIndex, + type: "signature", + }; + } +} +class TextAnnotation extends MarkupAnnotation { + constructor(e) { + super(e); + this.data.noRotate = !0; + this.data.hasOwnCanvas = this.data.noRotate; + this.data.noHTML = !1; + const { dict: t } = e; + this.data.annotationType = S; + if (this.data.hasAppearance) this.data.name = "NoIcon"; + else { + this.data.rect[1] = this.data.rect[3] - 22; + this.data.rect[2] = this.data.rect[0] + 22; + this.data.name = t.has("Name") ? t.get("Name").name : "Note"; + } + if (t.has("State")) { + this.data.state = t.get("State") || null; + this.data.stateModel = t.get("StateModel") || null; + } else { + this.data.state = null; + this.data.stateModel = null; + } + } +} +class LinkAnnotation extends Annotation { + constructor(e) { + super(e); + const { dict: t, annotationGlobals: i } = e; + this.data.annotationType = k; + this.data.noHTML = !1; + const a = getQuadPoints(t, this.rectangle); + a && (this.data.quadPoints = a); + this.data.borderColor ||= this.data.color; + Catalog.parseDestDictionary({ + destDict: t, + resultObj: this.data, + docBaseUrl: i.baseUrl, + docAttachments: i.attachments, + }); + } +} +class PopupAnnotation extends Annotation { + constructor(e) { + super(e); + const { dict: t } = e; + this.data.annotationType = q; + this.data.noHTML = !1; + (this.data.rect[0] !== this.data.rect[2] && + this.data.rect[1] !== this.data.rect[3]) || + (this.data.rect = null); + let i = t.get("Parent"); + if (!i) { + warn("Popup annotation has a missing or invalid parent annotation."); + return; + } + this.data.parentRect = lookupNormalRect(i.getArray("Rect"), null); + isName(i.get("RT"), X) && (i = i.get("IRT")); + if (i.has("M")) { + this.setModificationDate(i.get("M")); + this.data.modificationDate = this.modificationDate; + } else this.data.modificationDate = null; + if (i.has("C")) { + this.setColor(i.getArray("C")); + this.data.color = this.color; + } else this.data.color = null; + if (!this.viewable) { + const e = i.get("F"); + this._isViewable(e) && this.setFlags(e); + } + this.setTitle(i.get("T")); + this.data.titleObj = this._title; + this.setContents(i.get("Contents")); + this.data.contentsObj = this._contents; + i.has("RC") && + (this.data.richText = XFAFactory.getRichTextAsHtml(i.get("RC"))); + this.data.open = !!t.get("Open"); + } +} +class FreeTextAnnotation extends MarkupAnnotation { + constructor(e) { + super(e); + this.data.hasOwnCanvas = !this.data.noHTML; + this.data.noHTML = !1; + const { evaluatorOptions: t, xref: i } = e; + this.data.annotationType = R; + this.setDefaultAppearance(e); + this._hasAppearance = !!this.appearance; + if (this._hasAppearance) { + const { fontColor: e, fontSize: a } = (function parseAppearanceStream( + e, + t, + i, + ) { + return new AppearanceStreamEvaluator(e, t, i).parse(); + })(this.appearance, t, i); + this.data.defaultAppearanceData.fontColor = e; + this.data.defaultAppearanceData.fontSize = a || 10; + } else { + this.data.defaultAppearanceData.fontSize ||= 10; + const { fontColor: t, fontSize: a } = this.data.defaultAppearanceData; + if (this._contents.str) { + this.data.textContent = this._contents.str + .split(/\r\n?|\n/) + .map((e) => e.trimEnd()); + const { + coords: e, + bbox: t, + matrix: i, + } = FakeUnicodeFont.getFirstPositionInfo( + this.rectangle, + this.rotation, + a, + ); + this.data.textPosition = this._transformPoint(e, t, i); + } + if (this._isOffscreenCanvasSupported) { + const s = e.dict.get("CA"), + r = new FakeUnicodeFont(i, "sans-serif"); + this.appearance = r.createAppearance( + this._contents.str, + this.rectangle, + this.rotation, + a, + t, + s, + ); + this._streams.push(this.appearance); + } else + warn( + "FreeTextAnnotation: OffscreenCanvas is not supported, annotation may not render correctly.", + ); + } + } + get hasTextContent() { + return this._hasAppearance; + } + static createNewDict(e, t, { apRef: i, ap: a }) { + const { + color: s, + fontSize: r, + rect: n, + rotation: o, + user: g, + value: c, + } = e, + h = new Dict(t); + h.set("Type", Name.get("Annot")); + h.set("Subtype", Name.get("FreeText")); + h.set("CreationDate", `D:${getModificationDate()}`); + h.set("Rect", n); + const l = `/Helv ${r} Tf ${getPdfColor(s, !0)}`; + h.set("DA", l); + h.set("Contents", isAscii(c) ? c : stringToUTF16String(c, !0)); + h.set("F", 4); + h.set("Border", [0, 0, 0]); + h.set("Rotate", o); + g && h.set("T", isAscii(g) ? g : stringToUTF16String(g, !0)); + if (i || a) { + const e = new Dict(t); + h.set("AP", e); + i ? e.set("N", i) : e.set("N", a); + } + return h; + } + static async createNewAppearanceStream(e, t, i) { + const { baseFontRef: a, evaluator: r, task: n } = i, + { color: o, fontSize: g, rect: c, rotation: h, value: l } = e, + C = new Dict(t), + Q = new Dict(t); + if (a) Q.set("Helv", a); + else { + const e = new Dict(t); + e.set("BaseFont", Name.get("Helvetica")); + e.set("Type", Name.get("Font")); + e.set("Subtype", Name.get("Type1")); + e.set("Encoding", Name.get("WinAnsiEncoding")); + Q.set("Helv", e); + } + C.set("Font", Q); + const E = await WidgetAnnotation._getFontData( + r, + n, + { fontName: "Helv", fontSize: g }, + C, + ), + [u, d, f, p] = c; + let m = f - u, + y = p - d; + h % 180 != 0 && ([m, y] = [y, m]); + const w = l.split("\n"), + b = g / 1e3; + let D = -1 / 0; + const F = []; + for (let e of w) { + const t = E.encodeString(e); + if (t.length > 1) return null; + e = t.join(""); + F.push(e); + let i = 0; + const a = E.charsToGlyphs(e); + for (const e of a) i += e.width * b; + D = Math.max(D, i); + } + let S = 1; + D > m && (S = m / D); + let k = 1; + const R = s * g, + N = 1 * g, + G = R * w.length; + G > y && (k = y / G); + const x = g * Math.min(S, k); + let M, U, L; + switch (h) { + case 0: + L = [1, 0, 0, 1]; + U = [c[0], c[1], m, y]; + M = [c[0], c[3] - N]; + break; + case 90: + L = [0, 1, -1, 0]; + U = [c[1], -c[2], m, y]; + M = [c[1], -c[0] - N]; + break; + case 180: + L = [-1, 0, 0, -1]; + U = [-c[2], -c[3], m, y]; + M = [-c[2], -c[1] - N]; + break; + case 270: + L = [0, -1, 1, 0]; + U = [-c[3], c[0], m, y]; + M = [-c[3], c[2] - N]; + } + const J = [ + "q", + `${L.join(" ")} 0 0 cm`, + `${U.join(" ")} re W n`, + "BT", + `${getPdfColor(o, !0)}`, + `0 Tc /Helv ${numberToString(x)} Tf`, + ]; + J.push(`${M.join(" ")} Td (${escapeString(F[0])}) Tj`); + const H = numberToString(R); + for (let e = 1, t = F.length; e < t; e++) { + const t = F[e]; + J.push(`0 -${H} Td (${escapeString(t)}) Tj`); + } + J.push("ET", "Q"); + const Y = J.join("\n"), + v = new Dict(t); + v.set("FormType", 1); + v.set("Subtype", Name.get("Form")); + v.set("Type", Name.get("XObject")); + v.set("BBox", c); + v.set("Resources", C); + v.set("Matrix", [1, 0, 0, 1, -c[0], -c[1]]); + const K = new StringStream(Y); + K.dict = v; + return K; + } +} +class LineAnnotation extends MarkupAnnotation { + constructor(e) { + super(e); + const { dict: t, xref: i } = e; + this.data.annotationType = N; + this.data.hasOwnCanvas = this.data.noRotate; + this.data.noHTML = !1; + const a = lookupRect(t.getArray("L"), [0, 0, 0, 0]); + this.data.lineCoordinates = Util.normalizeRect(a); + this.setLineEndings(t.getArray("LE")); + this.data.lineEndings = this.lineEndings; + if (!this.appearance) { + const e = this.color ? getPdfColorArray(this.color) : [0, 0, 0], + s = t.get("CA"), + r = getRgbColor(t.getArray("IC"), null), + n = r ? getPdfColorArray(r) : null, + o = n ? s : null, + g = this.borderStyle.width || 1, + c = 2 * g, + h = [ + this.data.lineCoordinates[0] - c, + this.data.lineCoordinates[1] - c, + this.data.lineCoordinates[2] + c, + this.data.lineCoordinates[3] + c, + ]; + Util.intersect(this.rectangle, h) || (this.rectangle = h); + this._setDefaultAppearance({ + xref: i, + extra: `${g} w`, + strokeColor: e, + fillColor: n, + strokeAlpha: s, + fillAlpha: o, + pointsCallback: (e, t) => { + e.push(`${a[0]} ${a[1]} m`, `${a[2]} ${a[3]} l`, "S"); + return [t[0].x - g, t[1].x + g, t[3].y - g, t[1].y + g]; + }, + }); + } + } +} +class SquareAnnotation extends MarkupAnnotation { + constructor(e) { + super(e); + const { dict: t, xref: i } = e; + this.data.annotationType = G; + this.data.hasOwnCanvas = this.data.noRotate; + this.data.noHTML = !1; + if (!this.appearance) { + const e = this.color ? getPdfColorArray(this.color) : [0, 0, 0], + a = t.get("CA"), + s = getRgbColor(t.getArray("IC"), null), + r = s ? getPdfColorArray(s) : null, + n = r ? a : null; + if (0 === this.borderStyle.width && !r) return; + this._setDefaultAppearance({ + xref: i, + extra: `${this.borderStyle.width} w`, + strokeColor: e, + fillColor: r, + strokeAlpha: a, + fillAlpha: n, + pointsCallback: (e, t) => { + const i = t[2].x + this.borderStyle.width / 2, + a = t[2].y + this.borderStyle.width / 2, + s = t[3].x - t[2].x - this.borderStyle.width, + n = t[1].y - t[3].y - this.borderStyle.width; + e.push(`${i} ${a} ${s} ${n} re`); + r ? e.push("B") : e.push("S"); + return [t[0].x, t[1].x, t[3].y, t[1].y]; + }, + }); + } + } +} +class CircleAnnotation extends MarkupAnnotation { + constructor(e) { + super(e); + const { dict: t, xref: i } = e; + this.data.annotationType = x; + if (!this.appearance) { + const e = this.color ? getPdfColorArray(this.color) : [0, 0, 0], + a = t.get("CA"), + s = getRgbColor(t.getArray("IC"), null), + r = s ? getPdfColorArray(s) : null, + n = r ? a : null; + if (0 === this.borderStyle.width && !r) return; + const o = (4 / 3) * Math.tan(Math.PI / 8); + this._setDefaultAppearance({ + xref: i, + extra: `${this.borderStyle.width} w`, + strokeColor: e, + fillColor: r, + strokeAlpha: a, + fillAlpha: n, + pointsCallback: (e, t) => { + const i = t[0].x + this.borderStyle.width / 2, + a = t[0].y - this.borderStyle.width / 2, + s = t[3].x - this.borderStyle.width / 2, + n = t[3].y + this.borderStyle.width / 2, + g = i + (s - i) / 2, + c = a + (n - a) / 2, + h = ((s - i) / 2) * o, + l = ((n - a) / 2) * o; + e.push( + `${g} ${n} m`, + `${g + h} ${n} ${s} ${c + l} ${s} ${c} c`, + `${s} ${c - l} ${g + h} ${a} ${g} ${a} c`, + `${g - h} ${a} ${i} ${c - l} ${i} ${c} c`, + `${i} ${c + l} ${g - h} ${n} ${g} ${n} c`, + "h", + ); + r ? e.push("B") : e.push("S"); + return [t[0].x, t[1].x, t[3].y, t[1].y]; + }, + }); + } + } +} +class PolylineAnnotation extends MarkupAnnotation { + constructor(e) { + super(e); + const { dict: t, xref: i } = e; + this.data.annotationType = U; + this.data.hasOwnCanvas = this.data.noRotate; + this.data.noHTML = !1; + this.data.vertices = []; + if (!(this instanceof PolygonAnnotation)) { + this.setLineEndings(t.getArray("LE")); + this.data.lineEndings = this.lineEndings; + } + const a = t.getArray("Vertices"); + if (isNumberArray(a, null)) { + for (let e = 0, t = a.length; e < t; e += 2) + this.data.vertices.push({ x: a[e], y: a[e + 1] }); + if (!this.appearance) { + const e = this.color ? getPdfColorArray(this.color) : [0, 0, 0], + a = t.get("CA"), + s = this.borderStyle.width || 1, + r = 2 * s, + n = [1 / 0, 1 / 0, -1 / 0, -1 / 0]; + for (const e of this.data.vertices) { + n[0] = Math.min(n[0], e.x - r); + n[1] = Math.min(n[1], e.y - r); + n[2] = Math.max(n[2], e.x + r); + n[3] = Math.max(n[3], e.y + r); + } + Util.intersect(this.rectangle, n) || (this.rectangle = n); + this._setDefaultAppearance({ + xref: i, + extra: `${s} w`, + strokeColor: e, + strokeAlpha: a, + pointsCallback: (e, t) => { + const i = this.data.vertices; + for (let t = 0, a = i.length; t < a; t++) + e.push(`${i[t].x} ${i[t].y} ${0 === t ? "m" : "l"}`); + e.push("S"); + return [t[0].x, t[1].x, t[3].y, t[1].y]; + }, + }); + } + } + } +} +class PolygonAnnotation extends PolylineAnnotation { + constructor(e) { + super(e); + this.data.annotationType = M; + } +} +class CaretAnnotation extends MarkupAnnotation { + constructor(e) { + super(e); + this.data.annotationType = K; + } +} +class InkAnnotation extends MarkupAnnotation { + constructor(e) { + super(e); + this.data.hasOwnCanvas = this.data.noRotate; + this.data.noHTML = !1; + const { dict: t, xref: i } = e; + this.data.annotationType = T; + this.data.inkLists = []; + const a = t.getArray("InkList"); + if (Array.isArray(a)) { + for (let e = 0, t = a.length; e < t; ++e) { + this.data.inkLists.push([]); + if (Array.isArray(a[e])) + for (let t = 0, s = a[e].length; t < s; t += 2) { + const s = i.fetchIfRef(a[e][t]), + r = i.fetchIfRef(a[e][t + 1]); + "number" == typeof s && + "number" == typeof r && + this.data.inkLists[e].push({ x: s, y: r }); + } + } + if (!this.appearance) { + const e = this.color ? getPdfColorArray(this.color) : [0, 0, 0], + a = t.get("CA"), + s = this.borderStyle.width || 1, + r = 2 * s, + n = [1 / 0, 1 / 0, -1 / 0, -1 / 0]; + for (const e of this.data.inkLists) + for (const t of e) { + n[0] = Math.min(n[0], t.x - r); + n[1] = Math.min(n[1], t.y - r); + n[2] = Math.max(n[2], t.x + r); + n[3] = Math.max(n[3], t.y + r); + } + Util.intersect(this.rectangle, n) || (this.rectangle = n); + this._setDefaultAppearance({ + xref: i, + extra: `${s} w`, + strokeColor: e, + strokeAlpha: a, + pointsCallback: (e, t) => { + for (const t of this.data.inkLists) { + for (let i = 0, a = t.length; i < a; i++) + e.push(`${t[i].x} ${t[i].y} ${0 === i ? "m" : "l"}`); + e.push("S"); + } + return [t[0].x, t[1].x, t[3].y, t[1].y]; + }, + }); + } + } + } + static createNewDict(e, t, { apRef: i, ap: a }) { + const { + color: s, + opacity: r, + paths: n, + outlines: o, + rect: g, + rotation: c, + thickness: h, + } = e, + l = new Dict(t); + l.set("Type", Name.get("Annot")); + l.set("Subtype", Name.get("Ink")); + l.set("CreationDate", `D:${getModificationDate()}`); + l.set("Rect", g); + l.set("InkList", o?.points || n.map((e) => e.points)); + l.set("F", 4); + l.set("Rotate", c); + o && l.set("IT", Name.get("InkHighlight")); + const C = new Dict(t); + l.set("BS", C); + C.set("W", h); + l.set( + "C", + Array.from(s, (e) => e / 255), + ); + l.set("CA", r); + const Q = new Dict(t); + l.set("AP", Q); + i ? Q.set("N", i) : Q.set("N", a); + return l; + } + static async createNewAppearanceStream(e, t, i) { + if (e.outlines) return this.createNewAppearanceStreamForHighlight(e, t, i); + const { color: a, rect: s, paths: r, thickness: n, opacity: o } = e, + g = [`${n} w 1 J 1 j`, `${getPdfColor(a, !1)}`]; + 1 !== o && g.push("/R0 gs"); + const c = []; + for (const { bezier: e } of r) { + c.length = 0; + c.push(`${numberToString(e[0])} ${numberToString(e[1])} m`); + if (2 === e.length) + c.push(`${numberToString(e[0])} ${numberToString(e[1])} l S`); + else { + for (let t = 2, i = e.length; t < i; t += 6) { + const i = e + .slice(t, t + 6) + .map(numberToString) + .join(" "); + c.push(`${i} c`); + } + c.push("S"); + } + g.push(c.join("\n")); + } + const h = g.join("\n"), + l = new Dict(t); + l.set("FormType", 1); + l.set("Subtype", Name.get("Form")); + l.set("Type", Name.get("XObject")); + l.set("BBox", s); + l.set("Length", h.length); + if (1 !== o) { + const e = new Dict(t), + i = new Dict(t), + a = new Dict(t); + a.set("CA", o); + a.set("Type", Name.get("ExtGState")); + i.set("R0", a); + e.set("ExtGState", i); + l.set("Resources", e); + } + const C = new StringStream(h); + C.dict = l; + return C; + } + static async createNewAppearanceStreamForHighlight(e, t, i) { + const { + color: a, + rect: s, + outlines: { outline: r }, + opacity: n, + } = e, + o = [`${getPdfColor(a, !0)}`, "/R0 gs"]; + o.push(`${numberToString(r[4])} ${numberToString(r[5])} m`); + for (let e = 6, t = r.length; e < t; e += 6) + if (isNaN(r[e]) || null === r[e]) + o.push(`${numberToString(r[e + 4])} ${numberToString(r[e + 5])} l`); + else { + const t = r + .slice(e, e + 6) + .map(numberToString) + .join(" "); + o.push(`${t} c`); + } + o.push("h f"); + const g = o.join("\n"), + c = new Dict(t); + c.set("FormType", 1); + c.set("Subtype", Name.get("Form")); + c.set("Type", Name.get("XObject")); + c.set("BBox", s); + c.set("Length", g.length); + const h = new Dict(t), + l = new Dict(t); + h.set("ExtGState", l); + c.set("Resources", h); + const C = new Dict(t); + l.set("R0", C); + C.set("BM", Name.get("Multiply")); + if (1 !== n) { + C.set("ca", n); + C.set("Type", Name.get("ExtGState")); + } + const Q = new StringStream(g); + Q.dict = c; + return Q; + } +} +class HighlightAnnotation extends MarkupAnnotation { + constructor(e) { + super(e); + const { dict: t, xref: i } = e; + this.data.annotationType = L; + if ((this.data.quadPoints = getQuadPoints(t, null))) { + const e = this.appearance?.dict.get("Resources"); + if (!this.appearance || !e?.has("ExtGState")) { + this.appearance && + warn("HighlightAnnotation - ignoring built-in appearance stream."); + const e = this.color ? getPdfColorArray(this.color) : [1, 1, 0], + a = t.get("CA"); + this._setDefaultAppearance({ + xref: i, + fillColor: e, + blendMode: "Multiply", + fillAlpha: a, + pointsCallback: (e, t) => { + e.push( + `${t[0].x} ${t[0].y} m`, + `${t[1].x} ${t[1].y} l`, + `${t[3].x} ${t[3].y} l`, + `${t[2].x} ${t[2].y} l`, + "f", + ); + return [t[0].x, t[1].x, t[3].y, t[1].y]; + }, + }); + } + } else this.data.popupRef = null; + } + static createNewDict(e, t, { apRef: i, ap: a }) { + const { + color: s, + opacity: r, + rect: n, + rotation: o, + user: g, + quadPoints: c, + } = e, + h = new Dict(t); + h.set("Type", Name.get("Annot")); + h.set("Subtype", Name.get("Highlight")); + h.set("CreationDate", `D:${getModificationDate()}`); + h.set("Rect", n); + h.set("F", 4); + h.set("Border", [0, 0, 0]); + h.set("Rotate", o); + h.set("QuadPoints", c); + h.set( + "C", + Array.from(s, (e) => e / 255), + ); + h.set("CA", r); + g && h.set("T", isAscii(g) ? g : stringToUTF16String(g, !0)); + if (i || a) { + const e = new Dict(t); + h.set("AP", e); + e.set("N", i || a); + } + return h; + } + static async createNewAppearanceStream(e, t, i) { + const { color: a, rect: s, outlines: r, opacity: n } = e, + o = [`${getPdfColor(a, !0)}`, "/R0 gs"], + g = []; + for (const e of r) { + g.length = 0; + g.push(`${numberToString(e[0])} ${numberToString(e[1])} m`); + for (let t = 2, i = e.length; t < i; t += 2) + g.push(`${numberToString(e[t])} ${numberToString(e[t + 1])} l`); + g.push("h"); + o.push(g.join("\n")); + } + o.push("f*"); + const c = o.join("\n"), + h = new Dict(t); + h.set("FormType", 1); + h.set("Subtype", Name.get("Form")); + h.set("Type", Name.get("XObject")); + h.set("BBox", s); + h.set("Length", c.length); + const l = new Dict(t), + C = new Dict(t); + l.set("ExtGState", C); + h.set("Resources", l); + const Q = new Dict(t); + C.set("R0", Q); + Q.set("BM", Name.get("Multiply")); + if (1 !== n) { + Q.set("ca", n); + Q.set("Type", Name.get("ExtGState")); + } + const E = new StringStream(c); + E.dict = h; + return E; + } +} +class UnderlineAnnotation extends MarkupAnnotation { + constructor(e) { + super(e); + const { dict: t, xref: i } = e; + this.data.annotationType = J; + if ((this.data.quadPoints = getQuadPoints(t, null))) { + if (!this.appearance) { + const e = this.color ? getPdfColorArray(this.color) : [0, 0, 0], + a = t.get("CA"); + this._setDefaultAppearance({ + xref: i, + extra: "[] 0 d 0.571 w", + strokeColor: e, + strokeAlpha: a, + pointsCallback: (e, t) => { + e.push( + `${t[2].x} ${t[2].y + 1.3} m`, + `${t[3].x} ${t[3].y + 1.3} l`, + "S", + ); + return [t[0].x, t[1].x, t[3].y, t[1].y]; + }, + }); + } + } else this.data.popupRef = null; + } +} +class SquigglyAnnotation extends MarkupAnnotation { + constructor(e) { + super(e); + const { dict: t, xref: i } = e; + this.data.annotationType = H; + if ((this.data.quadPoints = getQuadPoints(t, null))) { + if (!this.appearance) { + const e = this.color ? getPdfColorArray(this.color) : [0, 0, 0], + a = t.get("CA"); + this._setDefaultAppearance({ + xref: i, + extra: "[] 0 d 1 w", + strokeColor: e, + strokeAlpha: a, + pointsCallback: (e, t) => { + const i = (t[0].y - t[2].y) / 6; + let a = i, + s = t[2].x; + const r = t[2].y, + n = t[3].x; + e.push(`${s} ${r + a} m`); + do { + s += 2; + a = 0 === a ? i : 0; + e.push(`${s} ${r + a} l`); + } while (s < n); + e.push("S"); + return [t[2].x, n, r - 2 * i, r + 2 * i]; + }, + }); + } + } else this.data.popupRef = null; + } +} +class StrikeOutAnnotation extends MarkupAnnotation { + constructor(e) { + super(e); + const { dict: t, xref: i } = e; + this.data.annotationType = Y; + if ((this.data.quadPoints = getQuadPoints(t, null))) { + if (!this.appearance) { + const e = this.color ? getPdfColorArray(this.color) : [0, 0, 0], + a = t.get("CA"); + this._setDefaultAppearance({ + xref: i, + extra: "[] 0 d 1 w", + strokeColor: e, + strokeAlpha: a, + pointsCallback: (e, t) => { + e.push( + (t[0].x + t[2].x) / 2 + " " + (t[0].y + t[2].y) / 2 + " m", + (t[1].x + t[3].x) / 2 + " " + (t[1].y + t[3].y) / 2 + " l", + "S", + ); + return [t[0].x, t[1].x, t[3].y, t[1].y]; + }, + }); + } + } else this.data.popupRef = null; + } +} +class StampAnnotation extends MarkupAnnotation { + constructor(e) { + super(e); + this.data.annotationType = v; + this.data.hasOwnCanvas = this.data.noRotate; + this.data.noHTML = !1; + } + static async createImage(e, t) { + const { width: i, height: a } = e, + s = new OffscreenCanvas(i, a), + r = s.getContext("2d", { alpha: !0 }); + r.drawImage(e, 0, 0); + const n = r.getImageData(0, 0, i, a).data, + o = new Uint32Array(n.buffer), + g = o.some( + FeatureTest.isLittleEndian + ? (e) => e >>> 24 != 255 + : (e) => 255 != (255 & e), + ); + if (g) { + r.fillStyle = "white"; + r.fillRect(0, 0, i, a); + r.drawImage(e, 0, 0); + } + const c = s + .convertToBlob({ type: "image/jpeg", quality: 1 }) + .then((e) => e.arrayBuffer()), + h = Name.get("XObject"), + l = Name.get("Image"), + C = new Dict(t); + C.set("Type", h); + C.set("Subtype", l); + C.set("BitsPerComponent", 8); + C.set("ColorSpace", Name.get("DeviceRGB")); + C.set("Filter", Name.get("DCTDecode")); + C.set("BBox", [0, 0, i, a]); + C.set("Width", i); + C.set("Height", a); + let Q = null; + if (g) { + const e = new Uint8Array(o.length); + if (FeatureTest.isLittleEndian) + for (let t = 0, i = o.length; t < i; t++) e[t] = o[t] >>> 24; + else for (let t = 0, i = o.length; t < i; t++) e[t] = 255 & o[t]; + const s = new Dict(t); + s.set("Type", h); + s.set("Subtype", l); + s.set("BitsPerComponent", 8); + s.set("ColorSpace", Name.get("DeviceGray")); + s.set("Width", i); + s.set("Height", a); + Q = new Stream(e, 0, 0, s); + } + return { + imageStream: new Stream(await c, 0, 0, C), + smaskStream: Q, + width: i, + height: a, + }; + } + static createNewDict(e, t, { apRef: i, ap: a }) { + const { rect: s, rotation: r, user: n } = e, + o = new Dict(t); + o.set("Type", Name.get("Annot")); + o.set("Subtype", Name.get("Stamp")); + o.set("CreationDate", `D:${getModificationDate()}`); + o.set("Rect", s); + o.set("F", 4); + o.set("Border", [0, 0, 0]); + o.set("Rotate", r); + n && o.set("T", isAscii(n) ? n : stringToUTF16String(n, !0)); + if (i || a) { + const e = new Dict(t); + o.set("AP", e); + i ? e.set("N", i) : e.set("N", a); + } + return o; + } + static async createNewAppearanceStream(e, t, i) { + const { rotation: a } = e, + { imageRef: s, width: r, height: n } = i.image, + o = new Dict(t), + g = new Dict(t); + o.set("XObject", g); + g.set("Im0", s); + const c = `q ${r} 0 0 ${n} 0 0 cm /Im0 Do Q`, + h = new Dict(t); + h.set("FormType", 1); + h.set("Subtype", Name.get("Form")); + h.set("Type", Name.get("XObject")); + h.set("BBox", [0, 0, r, n]); + h.set("Resources", o); + if (a) { + const e = getRotationMatrix(a, r, n); + h.set("Matrix", e); + } + const l = new StringStream(c); + l.dict = h; + return l; + } +} +class FileAttachmentAnnotation extends MarkupAnnotation { + constructor(e) { + super(e); + const { dict: t, xref: i } = e, + a = new FileSpec(t.get("FS"), i); + this.data.annotationType = O; + this.data.hasOwnCanvas = this.data.noRotate; + this.data.noHTML = !1; + this.data.file = a.serializable; + const s = t.get("Name"); + this.data.name = s instanceof Name ? stringToPDFString(s.name) : "PushPin"; + const r = t.get("ca"); + this.data.fillAlpha = "number" == typeof r && r >= 0 && r <= 1 ? r : null; + } +} +function decodeString(e) { + try { + return stringToUTF8String(e); + } catch (t) { + warn(`UTF-8 decoding failed: "${t}".`); + return e; + } +} +class DatasetXMLParser extends SimpleXMLParser { + constructor(e) { + super(e); + this.node = null; + } + onEndElement(e) { + const t = super.onEndElement(e); + if (t && "xfa:datasets" === e) { + this.node = t; + throw new Error("Aborting DatasetXMLParser."); + } + } +} +class DatasetReader { + constructor(e) { + if (e.datasets) + this.node = new SimpleXMLParser({ hasAttributes: !0 }).parseFromString( + e.datasets, + ).documentElement; + else { + const t = new DatasetXMLParser({ hasAttributes: !0 }); + try { + t.parseFromString(e["xdp:xdp"]); + } catch {} + this.node = t.node; + } + } + getValue(e) { + if (!this.node || !e) return ""; + const t = this.node.searchNode(parseXFAPath(e), 0); + if (!t) return ""; + const i = t.firstChild; + return "value" === i?.nodeName + ? t.children.map((e) => decodeString(e.textContent)) + : decodeString(t.textContent); + } +} +class XRef { + #K = null; + constructor(e, t) { + this.stream = e; + this.pdfManager = t; + this.entries = []; + this._xrefStms = new Set(); + this._cacheMap = new Map(); + this._pendingRefs = new RefSet(); + this._newPersistentRefNum = null; + this._newTemporaryRefNum = null; + this._persistentRefsCache = null; + } + getNewPersistentRef(e) { + null === this._newPersistentRefNum && + (this._newPersistentRefNum = this.entries.length || 1); + const t = this._newPersistentRefNum++; + this._cacheMap.set(t, e); + return Ref.get(t, 0); + } + getNewTemporaryRef() { + if (null === this._newTemporaryRefNum) { + this._newTemporaryRefNum = this.entries.length || 1; + if (this._newPersistentRefNum) { + this._persistentRefsCache = new Map(); + for ( + let e = this._newTemporaryRefNum; + e < this._newPersistentRefNum; + e++ + ) { + this._persistentRefsCache.set(e, this._cacheMap.get(e)); + this._cacheMap.delete(e); + } + } + } + return Ref.get(this._newTemporaryRefNum++, 0); + } + resetNewTemporaryRef() { + this._newTemporaryRefNum = null; + if (this._persistentRefsCache) + for (const [e, t] of this._persistentRefsCache) this._cacheMap.set(e, t); + this._persistentRefsCache = null; + } + setStartXRef(e) { + this.startXRefQueue = [e]; + } + parse(e = !1) { + let t, i, a; + if (e) { + warn("Indexing all PDF objects"); + t = this.indexObjects(); + } else t = this.readXRef(); + t.assignXref(this); + this.trailer = t; + try { + i = t.get("Encrypt"); + } catch (e) { + if (e instanceof MissingDataException) throw e; + warn(`XRef.parse - Invalid "Encrypt" reference: "${e}".`); + } + if (i instanceof Dict) { + const e = t.get("ID"), + a = e?.length ? e[0] : ""; + i.suppressEncryption = !0; + this.encrypt = new CipherTransformFactory(i, a, this.pdfManager.password); + } + try { + a = t.get("Root"); + } catch (e) { + if (e instanceof MissingDataException) throw e; + warn(`XRef.parse - Invalid "Root" reference: "${e}".`); + } + if (a instanceof Dict) + try { + if (a.get("Pages") instanceof Dict) { + this.root = a; + return; + } + } catch (e) { + if (e instanceof MissingDataException) throw e; + warn(`XRef.parse - Invalid "Pages" reference: "${e}".`); + } + if (!e) throw new XRefParseException(); + throw new InvalidPDFException("Invalid Root reference."); + } + processXRefTable(e) { + "tableState" in this || + (this.tableState = { + entryNum: 0, + streamPos: e.lexer.stream.pos, + parserBuf1: e.buf1, + parserBuf2: e.buf2, + }); + if (!isCmd(this.readXRefTable(e), "trailer")) + throw new FormatError( + "Invalid XRef table: could not find trailer dictionary", + ); + let t = e.getObj(); + t instanceof Dict || !t.dict || (t = t.dict); + if (!(t instanceof Dict)) + throw new FormatError( + "Invalid XRef table: could not parse trailer dictionary", + ); + delete this.tableState; + return t; + } + readXRefTable(e) { + const t = e.lexer.stream, + i = this.tableState; + t.pos = i.streamPos; + e.buf1 = i.parserBuf1; + e.buf2 = i.parserBuf2; + let a; + for (;;) { + if (!("firstEntryNum" in i) || !("entryCount" in i)) { + if (isCmd((a = e.getObj()), "trailer")) break; + i.firstEntryNum = a; + i.entryCount = e.getObj(); + } + let s = i.firstEntryNum; + const r = i.entryCount; + if (!Number.isInteger(s) || !Number.isInteger(r)) + throw new FormatError( + "Invalid XRef table: wrong types in subsection header", + ); + for (let a = i.entryNum; a < r; a++) { + i.streamPos = t.pos; + i.entryNum = a; + i.parserBuf1 = e.buf1; + i.parserBuf2 = e.buf2; + const n = {}; + n.offset = e.getObj(); + n.gen = e.getObj(); + const o = e.getObj(); + if (o instanceof Cmd) + switch (o.cmd) { + case "f": + n.free = !0; + break; + case "n": + n.uncompressed = !0; + } + if ( + !Number.isInteger(n.offset) || + !Number.isInteger(n.gen) || + (!n.free && !n.uncompressed) + ) + throw new FormatError(`Invalid entry in XRef subsection: ${s}, ${r}`); + 0 === a && n.free && 1 === s && (s = 0); + this.entries[a + s] || (this.entries[a + s] = n); + } + i.entryNum = 0; + i.streamPos = t.pos; + i.parserBuf1 = e.buf1; + i.parserBuf2 = e.buf2; + delete i.firstEntryNum; + delete i.entryCount; + } + if (this.entries[0] && !this.entries[0].free) + throw new FormatError("Invalid XRef table: unexpected first object"); + return a; + } + processXRefStream(e) { + if (!("streamState" in this)) { + const t = e.dict, + i = t.get("W"); + let a = t.get("Index"); + a || (a = [0, t.get("Size")]); + this.streamState = { + entryRanges: a, + byteWidths: i, + entryNum: 0, + streamPos: e.pos, + }; + } + this.readXRefStream(e); + delete this.streamState; + return e.dict; + } + readXRefStream(e) { + const t = this.streamState; + e.pos = t.streamPos; + const [i, a, s] = t.byteWidths, + r = t.entryRanges; + for (; r.length > 0; ) { + const [n, o] = r; + if (!Number.isInteger(n) || !Number.isInteger(o)) + throw new FormatError(`Invalid XRef range fields: ${n}, ${o}`); + if (!Number.isInteger(i) || !Number.isInteger(a) || !Number.isInteger(s)) + throw new FormatError(`Invalid XRef entry fields length: ${n}, ${o}`); + for (let r = t.entryNum; r < o; ++r) { + t.entryNum = r; + t.streamPos = e.pos; + let o = 0, + g = 0, + c = 0; + for (let t = 0; t < i; ++t) { + const t = e.getByte(); + if (-1 === t) + throw new FormatError("Invalid XRef byteWidths 'type'."); + o = (o << 8) | t; + } + 0 === i && (o = 1); + for (let t = 0; t < a; ++t) { + const t = e.getByte(); + if (-1 === t) + throw new FormatError("Invalid XRef byteWidths 'offset'."); + g = (g << 8) | t; + } + for (let t = 0; t < s; ++t) { + const t = e.getByte(); + if (-1 === t) + throw new FormatError("Invalid XRef byteWidths 'generation'."); + c = (c << 8) | t; + } + const h = {}; + h.offset = g; + h.gen = c; + switch (o) { + case 0: + h.free = !0; + break; + case 1: + h.uncompressed = !0; + break; + case 2: + break; + default: + throw new FormatError(`Invalid XRef entry type: ${o}`); + } + this.entries[n + r] || (this.entries[n + r] = h); + } + t.entryNum = 0; + t.streamPos = e.pos; + r.splice(0, 2); + } + } + indexObjects() { + function readToken(e, t) { + let i = "", + a = e[t]; + for (; 10 !== a && 13 !== a && 60 !== a && !(++t >= e.length); ) { + i += String.fromCharCode(a); + a = e[t]; + } + return i; + } + function skipUntil(e, t, i) { + const a = i.length, + s = e.length; + let r = 0; + for (; t < s; ) { + let s = 0; + for (; s < a && e[t + s] === i[s]; ) ++s; + if (s >= a) break; + t++; + r++; + } + return r; + } + const e = /\b(endobj|\d+\s+\d+\s+obj|xref|trailer\s*<<)\b/g, + t = /\b(startxref|\d+\s+\d+\s+obj)\b/g, + i = /^(\d+)\s+(\d+)\s+obj\b/, + a = new Uint8Array([116, 114, 97, 105, 108, 101, 114]), + s = new Uint8Array([115, 116, 97, 114, 116, 120, 114, 101, 102]), + r = new Uint8Array([47, 88, 82, 101, 102]); + this.entries.length = 0; + this._cacheMap.clear(); + const n = this.stream; + n.pos = 0; + const o = n.getBytes(), + g = bytesToString(o), + c = o.length; + let h = n.start; + const l = [], + C = []; + for (; h < c; ) { + let Q = o[h]; + if (9 === Q || 10 === Q || 13 === Q || 32 === Q) { + ++h; + continue; + } + if (37 === Q) { + do { + ++h; + if (h >= c) break; + Q = o[h]; + } while (10 !== Q && 13 !== Q); + continue; + } + const E = readToken(o, h); + let u; + if (E.startsWith("xref") && (4 === E.length || /\s/.test(E[4]))) { + h += skipUntil(o, h, a); + l.push(h); + h += skipUntil(o, h, s); + } else if ((u = i.exec(E))) { + const t = 0 | u[1], + i = 0 | u[2], + a = h + E.length; + let s, + l = !1; + if (this.entries[t]) { + if (this.entries[t].gen === i) + try { + new Parser({ lexer: new Lexer(n.makeSubStream(a)) }).getObj(); + l = !0; + } catch (e) { + e instanceof ParserEOFException + ? warn(`indexObjects -- checking object (${E}): "${e}".`) + : (l = !0); + } + } else l = !0; + l && + (this.entries[t] = { offset: h - n.start, gen: i, uncompressed: !0 }); + e.lastIndex = a; + const Q = e.exec(g); + if (Q) { + s = e.lastIndex + 1 - h; + if ("endobj" !== Q[1]) { + warn( + `indexObjects: Found "${Q[1]}" inside of another "obj", caused by missing "endobj" -- trying to recover.`, + ); + s -= Q[1].length + 1; + } + } else s = c - h; + const d = o.subarray(h, h + s), + f = skipUntil(d, 0, r); + if (f < s && d[f + 5] < 64) { + C.push(h - n.start); + this._xrefStms.add(h - n.start); + } + h += s; + } else if ( + E.startsWith("trailer") && + (7 === E.length || /\s/.test(E[7])) + ) { + l.push(h); + const e = h + E.length; + let i; + t.lastIndex = e; + const a = t.exec(g); + if (a) { + i = t.lastIndex + 1 - h; + if ("startxref" !== a[1]) { + warn( + `indexObjects: Found "${a[1]}" after "trailer", caused by missing "startxref" -- trying to recover.`, + ); + i -= a[1].length + 1; + } + } else i = c - h; + h += i; + } else h += E.length + 1; + } + for (const e of C) { + this.startXRefQueue.push(e); + this.readXRef(!0); + } + const Q = []; + let E, + u, + d = !1; + for (const e of l) { + n.pos = e; + const t = new Parser({ + lexer: new Lexer(n), + xref: this, + allowStreams: !0, + recoveryMode: !0, + }); + if (!isCmd(t.getObj(), "trailer")) continue; + const i = t.getObj(); + if (i instanceof Dict) { + Q.push(i); + i.has("Encrypt") && (d = !0); + } + } + for (const e of [...Q, "genFallback", ...Q]) { + if ("genFallback" === e) { + if (!u) break; + this._generationFallback = !0; + continue; + } + let t = !1; + try { + const i = e.get("Root"); + if (!(i instanceof Dict)) continue; + const a = i.get("Pages"); + if (!(a instanceof Dict)) continue; + const s = a.get("Count"); + Number.isInteger(s) && (t = !0); + } catch (e) { + u = e; + continue; + } + if (t && (!d || e.has("Encrypt")) && e.has("ID")) return e; + E = e; + } + if (E) return E; + if (this.topDict) return this.topDict; + throw new InvalidPDFException("Invalid PDF structure."); + } + readXRef(e = !1) { + const t = this.stream, + i = new Set(); + for (; this.startXRefQueue.length; ) { + try { + const e = this.startXRefQueue[0]; + if (i.has(e)) { + warn("readXRef - skipping XRef table since it was already parsed."); + this.startXRefQueue.shift(); + continue; + } + i.add(e); + t.pos = e + t.start; + const a = new Parser({ + lexer: new Lexer(t), + xref: this, + allowStreams: !0, + }); + let s, + r = a.getObj(); + if (isCmd(r, "xref")) { + s = this.processXRefTable(a); + this.topDict || (this.topDict = s); + r = s.get("XRefStm"); + if (Number.isInteger(r) && !this._xrefStms.has(r)) { + this._xrefStms.add(r); + this.startXRefQueue.push(r); + this.#K ??= r; + } + } else { + if (!Number.isInteger(r)) + throw new FormatError("Invalid XRef stream header"); + if ( + !( + Number.isInteger(a.getObj()) && + isCmd(a.getObj(), "obj") && + (r = a.getObj()) instanceof BaseStream + ) + ) + throw new FormatError("Invalid XRef stream"); + s = this.processXRefStream(r); + this.topDict || (this.topDict = s); + if (!s) throw new FormatError("Failed to read XRef stream"); + } + r = s.get("Prev"); + Number.isInteger(r) + ? this.startXRefQueue.push(r) + : r instanceof Ref && this.startXRefQueue.push(r.num); + } catch (e) { + if (e instanceof MissingDataException) throw e; + info("(while reading XRef): " + e); + } + this.startXRefQueue.shift(); + } + if (this.topDict) return this.topDict; + if (!e) throw new XRefParseException(); + } + get lastXRefStreamPos() { + return ( + this.#K ?? (this._xrefStms.size > 0 ? Math.max(...this._xrefStms) : null) + ); + } + getEntry(e) { + const t = this.entries[e]; + return t && !t.free && t.offset ? t : null; + } + fetchIfRef(e, t = !1) { + return e instanceof Ref ? this.fetch(e, t) : e; + } + fetch(e, t = !1) { + if (!(e instanceof Ref)) throw new Error("ref object is not a reference"); + const i = e.num, + a = this._cacheMap.get(i); + if (void 0 !== a) { + a instanceof Dict && !a.objId && (a.objId = e.toString()); + return a; + } + let s = this.getEntry(i); + if (null === s) { + this._cacheMap.set(i, s); + return s; + } + if (this._pendingRefs.has(e)) { + this._pendingRefs.remove(e); + warn(`Ignoring circular reference: ${e}.`); + return ft; + } + this._pendingRefs.put(e); + try { + s = s.uncompressed + ? this.fetchUncompressed(e, s, t) + : this.fetchCompressed(e, s, t); + this._pendingRefs.remove(e); + } catch (t) { + this._pendingRefs.remove(e); + throw t; + } + s instanceof Dict + ? (s.objId = e.toString()) + : s instanceof BaseStream && (s.dict.objId = e.toString()); + return s; + } + fetchUncompressed(e, t, i = !1) { + const a = e.gen; + let s = e.num; + if (t.gen !== a) { + const r = `Inconsistent generation in XRef: ${e}`; + if (this._generationFallback && t.gen < a) { + warn(r); + return this.fetchUncompressed(Ref.get(s, t.gen), t, i); + } + throw new XRefEntryException(r); + } + const r = this.stream.makeSubStream(t.offset + this.stream.start), + n = new Parser({ lexer: new Lexer(r), xref: this, allowStreams: !0 }), + o = n.getObj(), + g = n.getObj(), + c = n.getObj(); + if (o !== s || g !== a || !(c instanceof Cmd)) + throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${e}`); + if ("obj" !== c.cmd) { + if (c.cmd.startsWith("obj")) { + s = parseInt(c.cmd.substring(3), 10); + if (!Number.isNaN(s)) return s; + } + throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${e}`); + } + (t = + this.encrypt && !i + ? n.getObj(this.encrypt.createCipherTransform(s, a)) + : n.getObj()) instanceof BaseStream || this._cacheMap.set(s, t); + return t; + } + fetchCompressed(e, t, i = !1) { + const a = t.offset, + s = this.fetch(Ref.get(a, 0)); + if (!(s instanceof BaseStream)) throw new FormatError("bad ObjStm stream"); + const r = s.dict.get("First"), + n = s.dict.get("N"); + if (!Number.isInteger(r) || !Number.isInteger(n)) + throw new FormatError("invalid first and n parameters for ObjStm stream"); + let o = new Parser({ lexer: new Lexer(s), xref: this, allowStreams: !0 }); + const g = new Array(n), + c = new Array(n); + for (let e = 0; e < n; ++e) { + const t = o.getObj(); + if (!Number.isInteger(t)) + throw new FormatError( + `invalid object number in the ObjStm stream: ${t}`, + ); + const i = o.getObj(); + if (!Number.isInteger(i)) + throw new FormatError( + `invalid object offset in the ObjStm stream: ${i}`, + ); + g[e] = t; + c[e] = i; + } + const h = (s.start || 0) + r, + l = new Array(n); + for (let e = 0; e < n; ++e) { + const t = e < n - 1 ? c[e + 1] - c[e] : void 0; + if (t < 0) throw new FormatError("Invalid offset in the ObjStm stream."); + o = new Parser({ + lexer: new Lexer(s.makeSubStream(h + c[e], t, s.dict)), + xref: this, + allowStreams: !0, + }); + const i = o.getObj(); + l[e] = i; + if (i instanceof BaseStream) continue; + const r = g[e], + C = this.entries[r]; + C && C.offset === a && C.gen === e && this._cacheMap.set(r, i); + } + if (void 0 === (t = l[t.gen])) + throw new XRefEntryException(`Bad (compressed) XRef entry: ${e}`); + return t; + } + async fetchIfRefAsync(e, t) { + return e instanceof Ref ? this.fetchAsync(e, t) : e; + } + async fetchAsync(e, t) { + try { + return this.fetch(e, t); + } catch (i) { + if (!(i instanceof MissingDataException)) throw i; + await this.pdfManager.requestRange(i.begin, i.end); + return this.fetchAsync(e, t); + } + } + getCatalogObj() { + return this.root; + } +} +const so = [0, 0, 612, 792]; +class Page { + constructor({ + pdfManager: e, + xref: t, + pageIndex: i, + pageDict: a, + ref: s, + globalIdFactory: r, + fontCache: n, + builtInCMapCache: o, + standardFontDataCache: g, + globalImageCache: c, + systemFontCache: h, + nonBlendModesSet: l, + xfaFactory: C, + }) { + this.pdfManager = e; + this.pageIndex = i; + this.pageDict = a; + this.xref = t; + this.ref = s; + this.fontCache = n; + this.builtInCMapCache = o; + this.standardFontDataCache = g; + this.globalImageCache = c; + this.systemFontCache = h; + this.nonBlendModesSet = l; + this.evaluatorOptions = e.evaluatorOptions; + this.resourcesPromise = null; + this.xfaFactory = C; + const Q = { obj: 0 }; + this._localIdFactory = class extends r { + static createObjId() { + return `p${i}_${++Q.obj}`; + } + static getPageObjId() { + return `p${s.toString()}`; + } + }; + } + _getInheritableProperty(e, t = !1) { + const i = getInheritableProperty({ + dict: this.pageDict, + key: e, + getArray: t, + stopWhenFound: !1, + }); + return Array.isArray(i) + ? 1 !== i.length && i[0] instanceof Dict + ? Dict.merge({ xref: this.xref, dictArray: i }) + : i[0] + : i; + } + get content() { + return this.pageDict.getArray("Contents"); + } + get resources() { + const e = this._getInheritableProperty("Resources"); + return shadow(this, "resources", e instanceof Dict ? e : Dict.empty); + } + _getBoundingBox(e) { + if (this.xfaData) return this.xfaData.bbox; + const t = lookupNormalRect(this._getInheritableProperty(e, !0), null); + if (t) { + if (t[2] - t[0] > 0 && t[3] - t[1] > 0) return t; + warn(`Empty, or invalid, /${e} entry.`); + } + return null; + } + get mediaBox() { + return shadow(this, "mediaBox", this._getBoundingBox("MediaBox") || so); + } + get cropBox() { + return shadow( + this, + "cropBox", + this._getBoundingBox("CropBox") || this.mediaBox, + ); + } + get userUnit() { + let e = this.pageDict.get("UserUnit"); + ("number" != typeof e || e <= 0) && (e = 1); + return shadow(this, "userUnit", e); + } + get view() { + const { cropBox: e, mediaBox: t } = this; + if (e !== t && !isArrayEqual(e, t)) { + const i = Util.intersect(e, t); + if (i && i[2] - i[0] > 0 && i[3] - i[1] > 0) + return shadow(this, "view", i); + warn("Empty /CropBox and /MediaBox intersection."); + } + return shadow(this, "view", t); + } + get rotate() { + let e = this._getInheritableProperty("Rotate") || 0; + e % 90 != 0 + ? (e = 0) + : e >= 360 + ? (e %= 360) + : e < 0 && (e = ((e % 360) + 360) % 360); + return shadow(this, "rotate", e); + } + _onSubStreamError(e, t) { + if (!this.evaluatorOptions.ignoreErrors) throw e; + warn(`getContentStream - ignoring sub-stream (${t}): "${e}".`); + } + getContentStream() { + return this.pdfManager + .ensure(this, "content") + .then((e) => + e instanceof BaseStream + ? e + : Array.isArray(e) + ? new StreamsSequenceStream(e, this._onSubStreamError.bind(this)) + : new NullStream(), + ); + } + get xfaData() { + return shadow( + this, + "xfaData", + this.xfaFactory + ? { bbox: this.xfaFactory.getBoundingBox(this.pageIndex) } + : null, + ); + } + #T(e, t, i) { + for (const a of e) + if (a.id) { + const e = Ref.fromString(a.id); + if (!e) { + warn(`A non-linked annotation cannot be modified: ${a.id}`); + continue; + } + if (a.deleted) { + t.put(e, e); + continue; + } + i?.put(e); + a.ref = e; + delete a.id; + } + } + async saveNewAnnotations(e, t, i, a) { + if (this.xfaFactory) throw new Error("XFA: Cannot save new annotations."); + const s = new PartialEvaluator({ + xref: this.xref, + handler: e, + pageIndex: this.pageIndex, + idFactory: this._localIdFactory, + fontCache: this.fontCache, + builtInCMapCache: this.builtInCMapCache, + standardFontDataCache: this.standardFontDataCache, + globalImageCache: this.globalImageCache, + systemFontCache: this.systemFontCache, + options: this.evaluatorOptions, + }), + r = new RefSetCache(), + n = new RefSet(); + this.#T(i, r, n); + const o = this.pageDict, + g = this.annotations.filter((e) => !(e instanceof Ref && r.has(e))), + c = await AnnotationFactory.saveNewAnnotations(s, t, i, a); + for (const { ref: e } of c.annotations) + e instanceof Ref && !n.has(e) && g.push(e); + const h = o.get("Annots"); + o.set("Annots", g); + const l = []; + await writeObject(this.ref, o, l, this.xref); + h && o.set("Annots", h); + const C = c.dependencies; + C.push({ ref: this.ref, data: l.join("") }, ...c.annotations); + for (const e of r) C.push({ ref: e, data: null }); + return C; + } + save(e, t, i) { + const a = new PartialEvaluator({ + xref: this.xref, + handler: e, + pageIndex: this.pageIndex, + idFactory: this._localIdFactory, + fontCache: this.fontCache, + builtInCMapCache: this.builtInCMapCache, + standardFontDataCache: this.standardFontDataCache, + globalImageCache: this.globalImageCache, + systemFontCache: this.systemFontCache, + options: this.evaluatorOptions, + }); + return this._parsedAnnotations.then(function (e) { + const s = []; + for (const r of e) + r.mustBePrinted(i) && + s.push( + r.save(a, t, i).catch(function (e) { + warn( + `save - ignoring annotation data during "${t.name}" task: "${e}".`, + ); + return null; + }), + ); + return Promise.all(s).then(function (e) { + return e.filter((e) => !!e); + }); + }); + } + loadResources(e) { + this.resourcesPromise ||= this.pdfManager.ensure(this, "resources"); + return this.resourcesPromise.then(() => + new ObjectLoader(this.resources, e, this.xref).load(), + ); + } + getOperatorList({ + handler: e, + sink: t, + task: i, + intent: a, + cacheKey: s, + annotationStorage: r = null, + }) { + const n = this.getContentStream(), + h = this.loadResources([ + "ColorSpace", + "ExtGState", + "Font", + "Pattern", + "Properties", + "Shading", + "XObject", + ]), + Q = new PartialEvaluator({ + xref: this.xref, + handler: e, + pageIndex: this.pageIndex, + idFactory: this._localIdFactory, + fontCache: this.fontCache, + builtInCMapCache: this.builtInCMapCache, + standardFontDataCache: this.standardFontDataCache, + globalImageCache: this.globalImageCache, + systemFontCache: this.systemFontCache, + options: this.evaluatorOptions, + }), + u = this.xfaFactory ? null : getNewAnnotationsMap(r), + d = u?.get(this.pageIndex); + let f = Promise.resolve(null), + p = null; + if (d) { + const e = this.pdfManager.ensureDoc("annotationGlobals"); + let t; + const a = new Set(); + for (const { bitmapId: e, bitmap: t } of d) + !e || t || a.has(e) || a.add(e); + const { isOffscreenCanvasSupported: s } = this.evaluatorOptions; + if (a.size > 0) { + const e = d.slice(); + for (const [t, i] of r) + t.startsWith(E) && i.bitmap && a.has(i.bitmapId) && e.push(i); + t = AnnotationFactory.generateImages(e, this.xref, s); + } else t = AnnotationFactory.generateImages(d, this.xref, s); + p = new RefSet(); + this.#T(d, p, null); + f = e.then((e) => + e ? AnnotationFactory.printNewAnnotations(e, Q, i, d, t) : null, + ); + } + const m = Promise.all([n, h]).then(([r]) => { + const n = new OperatorList(a, t); + e.send("StartRenderPage", { + transparency: Q.hasBlendModes(this.resources, this.nonBlendModesSet), + pageIndex: this.pageIndex, + cacheKey: s, + }); + return Q.getOperatorList({ + stream: r, + task: i, + resources: this.resources, + operatorList: n, + }).then(function () { + return n; + }); + }); + return Promise.all([m, this._parsedAnnotations, f]).then(function ([ + e, + t, + s, + ]) { + if (s) { + t = t.filter((e) => !(e.ref && p.has(e.ref))); + for (let e = 0, i = s.length; e < i; e++) { + const a = s[e]; + if (a.refToReplace) { + const r = t.findIndex( + (e) => e.ref && isRefsEqual(e.ref, a.refToReplace), + ); + if (r >= 0) { + t.splice(r, 1, a); + s.splice(e--, 1); + i--; + } + } + } + t = t.concat(s); + } + if (0 === t.length || a & C) { + e.flush(!0); + return { length: e.totalLength }; + } + const n = !!(a & l), + h = !!(a & o), + E = !!(a & g), + u = !!(a & c), + d = []; + for (const e of t) + (h || (E && e.mustBeViewed(r, n)) || (u && e.mustBePrinted(r))) && + d.push( + e.getOperatorList(Q, i, a, n, r).catch(function (e) { + warn( + `getOperatorList - ignoring annotation data during "${i.name}" task: "${e}".`, + ); + return { opList: null, separateForm: !1, separateCanvas: !1 }; + }), + ); + return Promise.all(d).then(function (t) { + let i = !1, + a = !1; + for (const { opList: s, separateForm: r, separateCanvas: n } of t) { + e.addOpList(s); + i ||= r; + a ||= n; + } + e.flush(!0, { form: i, canvas: a }); + return { length: e.totalLength }; + }); + }); + } + async extractTextContent({ + handler: e, + task: t, + includeMarkedContent: i, + disableNormalization: a, + sink: s, + }) { + const r = this.getContentStream(), + n = this.loadResources(["ExtGState", "Font", "Properties", "XObject"]), + o = this.pdfManager.ensureCatalog("lang"), + [g, , c] = await Promise.all([r, n, o]); + return new PartialEvaluator({ + xref: this.xref, + handler: e, + pageIndex: this.pageIndex, + idFactory: this._localIdFactory, + fontCache: this.fontCache, + builtInCMapCache: this.builtInCMapCache, + standardFontDataCache: this.standardFontDataCache, + globalImageCache: this.globalImageCache, + systemFontCache: this.systemFontCache, + options: this.evaluatorOptions, + }).getTextContent({ + stream: g, + task: t, + resources: this.resources, + includeMarkedContent: i, + disableNormalization: a, + sink: s, + viewBox: this.view, + lang: c, + }); + } + async getStructTree() { + const e = await this.pdfManager.ensureCatalog("structTreeRoot"); + if (!e) return null; + await this._parsedAnnotations; + return (await this.pdfManager.ensure(this, "_parseStructTree", [e])) + .serializable; + } + _parseStructTree(e) { + const t = new StructTreePage(e, this.pageDict); + t.parse(this.ref); + return t; + } + async getAnnotationsData(e, t, i) { + const a = await this._parsedAnnotations; + if (0 === a.length) return a; + const s = [], + r = []; + let n; + const h = !!(i & o), + l = !!(i & g), + C = !!(i & c); + for (const i of a) { + const a = h || (l && i.viewable); + (a || (C && i.printable)) && s.push(i.data); + if (i.hasTextContent && a) { + n ||= new PartialEvaluator({ + xref: this.xref, + handler: e, + pageIndex: this.pageIndex, + idFactory: this._localIdFactory, + fontCache: this.fontCache, + builtInCMapCache: this.builtInCMapCache, + standardFontDataCache: this.standardFontDataCache, + globalImageCache: this.globalImageCache, + systemFontCache: this.systemFontCache, + options: this.evaluatorOptions, + }); + r.push( + i + .extractTextContent(n, t, [-1 / 0, -1 / 0, 1 / 0, 1 / 0]) + .catch(function (e) { + warn( + `getAnnotationsData - ignoring textContent during "${t.name}" task: "${e}".`, + ); + }), + ); + } + } + await Promise.all(r); + return s; + } + get annotations() { + const e = this._getInheritableProperty("Annots"); + return shadow(this, "annotations", Array.isArray(e) ? e : []); + } + get _parsedAnnotations() { + return shadow( + this, + "_parsedAnnotations", + this.pdfManager.ensure(this, "annotations").then(async (e) => { + if (0 === e.length) return e; + const t = await this.pdfManager.ensureDoc("annotationGlobals"); + if (!t) return []; + const i = []; + for (const a of e) + i.push( + AnnotationFactory.create( + this.xref, + a, + t, + this._localIdFactory, + !1, + this.ref, + ).catch(function (e) { + warn(`_parsedAnnotations: "${e}".`); + return null; + }), + ); + const a = []; + let s, r; + for (const e of await Promise.all(i)) + e && + (e instanceof WidgetAnnotation + ? (r ||= []).push(e) + : e instanceof PopupAnnotation + ? (s ||= []).push(e) + : a.push(e)); + r && a.push(...r); + s && a.push(...s); + return a; + }), + ); + } + get jsActions() { + return shadow( + this, + "jsActions", + collectActions(this.xref, this.pageDict, fA), + ); + } +} +const ro = new Uint8Array([37, 80, 68, 70, 45]), + no = new Uint8Array([115, 116, 97, 114, 116, 120, 114, 101, 102]), + oo = new Uint8Array([101, 110, 100, 111, 98, 106]); +function find(e, t, i = 1024, a = !1) { + const s = t.length, + r = e.peekBytes(i), + n = r.length - s; + if (n <= 0) return !1; + if (a) { + const i = s - 1; + let a = r.length - 1; + for (; a >= i; ) { + let n = 0; + for (; n < s && r[a - n] === t[i - n]; ) n++; + if (n >= s) { + e.pos += a - i; + return !0; + } + a--; + } + } else { + let i = 0; + for (; i <= n; ) { + let a = 0; + for (; a < s && r[i + a] === t[a]; ) a++; + if (a >= s) { + e.pos += i; + return !0; + } + i++; + } + } + return !1; +} +class PDFDocument { + constructor(e, t) { + if (t.length <= 0) + throw new InvalidPDFException( + "The PDF file is empty, i.e. its size is zero bytes.", + ); + this.pdfManager = e; + this.stream = t; + this.xref = new XRef(t, e); + this._pagePromises = new Map(); + this._version = null; + const i = { font: 0 }; + this._globalIdFactory = class { + static getDocId() { + return `g_${e.docId}`; + } + static createFontId() { + return "f" + ++i.font; + } + static createObjId() { + unreachable("Abstract method `createObjId` called."); + } + static getPageObjId() { + unreachable("Abstract method `getPageObjId` called."); + } + }; + } + parse(e) { + this.xref.parse(e); + this.catalog = new Catalog(this.pdfManager, this.xref); + } + get linearization() { + let e = null; + try { + e = Linearization.create(this.stream); + } catch (e) { + if (e instanceof MissingDataException) throw e; + info(e); + } + return shadow(this, "linearization", e); + } + get startXRef() { + const e = this.stream; + let t = 0; + if (this.linearization) { + e.reset(); + if (find(e, oo)) { + e.skip(6); + let i = e.peekByte(); + for (; isWhiteSpace(i); ) { + e.pos++; + i = e.peekByte(); + } + t = e.pos - e.start; + } + } else { + const i = 1024, + a = no.length; + let s = !1, + r = e.end; + for (; !s && r > 0; ) { + r -= i - a; + r < 0 && (r = 0); + e.pos = r; + s = find(e, no, i, !0); + } + if (s) { + e.skip(9); + let i; + do { + i = e.getByte(); + } while (isWhiteSpace(i)); + let a = ""; + for (; i >= 32 && i <= 57; ) { + a += String.fromCharCode(i); + i = e.getByte(); + } + t = parseInt(a, 10); + isNaN(t) && (t = 0); + } + } + return shadow(this, "startXRef", t); + } + checkHeader() { + const e = this.stream; + e.reset(); + if (!find(e, ro)) return; + e.moveStart(); + e.skip(ro.length); + let t, + i = ""; + for (; (t = e.getByte()) > 32 && i.length < 7; ) + i += String.fromCharCode(t); + Dt.test(i) ? (this._version = i) : warn(`Invalid PDF header version: ${i}`); + } + parseStartXRef() { + this.xref.setStartXRef(this.startXRef); + } + get numPages() { + let e = 0; + e = this.catalog.hasActualNumPages + ? this.catalog.numPages + : this.xfaFactory + ? this.xfaFactory.getNumPages() + : this.linearization + ? this.linearization.numPages + : this.catalog.numPages; + return shadow(this, "numPages", e); + } + _hasOnlyDocumentSignatures(e, t = 0) { + return ( + !!Array.isArray(e) && + e.every((e) => { + if (!((e = this.xref.fetchIfRef(e)) instanceof Dict)) return !1; + if (e.has("Kids")) { + if (++t > 10) { + warn("_hasOnlyDocumentSignatures: maximum recursion depth reached"); + return !1; + } + return this._hasOnlyDocumentSignatures(e.get("Kids"), t); + } + const i = isName(e.get("FT"), "Sig"), + a = e.get("Rect"), + s = Array.isArray(a) && a.every((e) => 0 === e); + return i && s; + }) + ); + } + get _xfaStreams() { + const e = this.catalog.acroForm; + if (!e) return null; + const t = e.get("XFA"), + i = { + "xdp:xdp": "", + template: "", + datasets: "", + config: "", + connectionSet: "", + localeSet: "", + stylesheet: "", + "/xdp:xdp": "", + }; + if (t instanceof BaseStream && !t.isEmpty) { + i["xdp:xdp"] = t; + return i; + } + if (!Array.isArray(t) || 0 === t.length) return null; + for (let e = 0, a = t.length; e < a; e += 2) { + let s; + s = 0 === e ? "xdp:xdp" : e === a - 2 ? "/xdp:xdp" : t[e]; + if (!i.hasOwnProperty(s)) continue; + const r = this.xref.fetchIfRef(t[e + 1]); + r instanceof BaseStream && !r.isEmpty && (i[s] = r); + } + return i; + } + get xfaDatasets() { + const e = this._xfaStreams; + if (!e) return shadow(this, "xfaDatasets", null); + for (const t of ["datasets", "xdp:xdp"]) { + const i = e[t]; + if (i) + try { + const e = stringToUTF8String(i.getString()); + return shadow(this, "xfaDatasets", new DatasetReader({ [t]: e })); + } catch { + warn("XFA - Invalid utf-8 string."); + break; + } + } + return shadow(this, "xfaDatasets", null); + } + get xfaData() { + const e = this._xfaStreams; + if (!e) return null; + const t = Object.create(null); + for (const [i, a] of Object.entries(e)) + if (a) + try { + t[i] = stringToUTF8String(a.getString()); + } catch { + warn("XFA - Invalid utf-8 string."); + return null; + } + return t; + } + get xfaFactory() { + let e; + this.pdfManager.enableXfa && + this.catalog.needsRendering && + this.formInfo.hasXfa && + !this.formInfo.hasAcroForm && + (e = this.xfaData); + return shadow(this, "xfaFactory", e ? new XFAFactory(e) : null); + } + get isPureXfa() { + return !!this.xfaFactory && this.xfaFactory.isValid(); + } + get htmlForXfa() { + return this.xfaFactory ? this.xfaFactory.getPages() : null; + } + async loadXfaImages() { + const e = await this.pdfManager.ensureCatalog("xfaImages"); + if (!e) return; + const t = e.getKeys(), + i = new ObjectLoader(e, t, this.xref); + await i.load(); + const a = new Map(); + for (const i of t) { + const t = e.get(i); + t instanceof BaseStream && a.set(i, t.getBytes()); + } + this.xfaFactory.setImages(a); + } + async loadXfaFonts(e, t) { + const i = await this.pdfManager.ensureCatalog("acroForm"); + if (!i) return; + const a = await i.getAsync("DR"); + if (!(a instanceof Dict)) return; + const s = new ObjectLoader(a, ["Font"], this.xref); + await s.load(); + const r = a.get("Font"); + if (!(r instanceof Dict)) return; + const n = Object.assign( + Object.create(null), + this.pdfManager.evaluatorOptions, + ); + n.useSystemFonts = !1; + const o = new PartialEvaluator({ + xref: this.xref, + handler: e, + pageIndex: -1, + idFactory: this._globalIdFactory, + fontCache: this.catalog.fontCache, + builtInCMapCache: this.catalog.builtInCMapCache, + standardFontDataCache: this.catalog.standardFontDataCache, + options: n, + }), + g = new OperatorList(), + c = [], + h = { + get font() { + return c.at(-1); + }, + set font(e) { + c.push(e); + }, + clone() { + return this; + }, + }, + l = new Map(); + r.forEach((e, t) => { + l.set(e, t); + }); + const C = []; + for (const [e, i] of l) { + const s = i.get("FontDescriptor"); + if (!(s instanceof Dict)) continue; + let r = s.get("FontFamily"); + r = r.replaceAll(/[ ]+(\d)/g, "$1"); + const n = { + fontFamily: r, + fontWeight: s.get("FontWeight"), + italicAngle: -s.get("ItalicAngle"), + }; + validateCSSFont(n) && + C.push( + o + .handleSetFont(a, [Name.get(e), 1], null, g, t, h, null, n) + .catch(function (e) { + warn(`loadXfaFonts: "${e}".`); + return null; + }), + ); + } + await Promise.all(C); + const Q = this.xfaFactory.setFonts(c); + if (!Q) return; + n.ignoreErrors = !0; + C.length = 0; + c.length = 0; + const E = new Set(); + for (const e of Q) getXfaFontName(`${e}-Regular`) || E.add(e); + E.size && Q.push("PdfJS-Fallback"); + for (const e of Q) + if (!E.has(e)) + for (const i of [ + { name: "Regular", fontWeight: 400, italicAngle: 0 }, + { name: "Bold", fontWeight: 700, italicAngle: 0 }, + { name: "Italic", fontWeight: 400, italicAngle: 12 }, + { name: "BoldItalic", fontWeight: 700, italicAngle: 12 }, + ]) { + const s = `${e}-${i.name}`, + r = getXfaFontDict(s); + C.push( + o + .handleSetFont(a, [Name.get(s), 1], null, g, t, h, r, { + fontFamily: e, + fontWeight: i.fontWeight, + italicAngle: i.italicAngle, + }) + .catch(function (e) { + warn(`loadXfaFonts: "${e}".`); + return null; + }), + ); + } + await Promise.all(C); + this.xfaFactory.appendFonts(c, E); + } + async serializeXfaData(e) { + return this.xfaFactory ? this.xfaFactory.serializeData(e) : null; + } + get version() { + return this.catalog.version || this._version; + } + get formInfo() { + const e = { hasFields: !1, hasAcroForm: !1, hasXfa: !1, hasSignatures: !1 }, + t = this.catalog.acroForm; + if (!t) return shadow(this, "formInfo", e); + try { + const i = t.get("Fields"), + a = Array.isArray(i) && i.length > 0; + e.hasFields = a; + const s = t.get("XFA"); + e.hasXfa = + (Array.isArray(s) && s.length > 0) || + (s instanceof BaseStream && !s.isEmpty); + const r = !!(1 & t.get("SigFlags")), + n = r && this._hasOnlyDocumentSignatures(i); + e.hasAcroForm = a && !n; + e.hasSignatures = r; + } catch (e) { + if (e instanceof MissingDataException) throw e; + warn(`Cannot fetch form information: "${e}".`); + } + return shadow(this, "formInfo", e); + } + get documentInfo() { + const e = { + PDFFormatVersion: this.version, + Language: this.catalog.lang, + EncryptFilterName: this.xref.encrypt + ? this.xref.encrypt.filterName + : null, + IsLinearized: !!this.linearization, + IsAcroFormPresent: this.formInfo.hasAcroForm, + IsXFAPresent: this.formInfo.hasXfa, + IsCollectionPresent: !!this.catalog.collection, + IsSignaturesPresent: this.formInfo.hasSignatures, + }; + let t; + try { + t = this.xref.trailer.get("Info"); + } catch (e) { + if (e instanceof MissingDataException) throw e; + info("The document information dictionary is invalid."); + } + if (!(t instanceof Dict)) return shadow(this, "documentInfo", e); + for (const i of t.getKeys()) { + const a = t.get(i); + switch (i) { + case "Title": + case "Author": + case "Subject": + case "Keywords": + case "Creator": + case "Producer": + case "CreationDate": + case "ModDate": + if ("string" == typeof a) { + e[i] = stringToPDFString(a); + continue; + } + break; + case "Trapped": + if (a instanceof Name) { + e[i] = a; + continue; + } + break; + default: + let t; + switch (typeof a) { + case "string": + t = stringToPDFString(a); + break; + case "number": + case "boolean": + t = a; + break; + default: + a instanceof Name && (t = a); + } + if (void 0 === t) { + warn(`Bad value, for custom key "${i}", in Info: ${a}.`); + continue; + } + e.Custom || (e.Custom = Object.create(null)); + e.Custom[i] = t; + continue; + } + warn(`Bad value, for key "${i}", in Info: ${a}.`); + } + return shadow(this, "documentInfo", e); + } + get fingerprints() { + function validate(e) { + return ( + "string" == typeof e && + e.length > 0 && + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" !== e + ); + } + function hexString(e) { + const t = []; + for (const i of e) { + const e = i.toString(16); + t.push(e.padStart(2, "0")); + } + return t.join(""); + } + const e = this.xref.trailer.get("ID"); + let t, i; + if (Array.isArray(e) && validate(e[0])) { + t = stringToBytes(e[0]); + e[1] !== e[0] && validate(e[1]) && (i = stringToBytes(e[1])); + } else t = Js(this.stream.getByteRange(0, 1024), 0, 1024); + return shadow(this, "fingerprints", [ + hexString(t), + i ? hexString(i) : null, + ]); + } + async _getLinearizationPage(e) { + const { catalog: t, linearization: i, xref: a } = this, + s = Ref.get(i.objectNumberFirst, 0); + try { + const e = await a.fetchAsync(s); + if (e instanceof Dict) { + let i = e.getRaw("Type"); + i instanceof Ref && (i = await a.fetchAsync(i)); + if ( + isName(i, "Page") || + (!e.has("Type") && !e.has("Kids") && e.has("Contents")) + ) { + t.pageKidsCountCache.has(s) || t.pageKidsCountCache.put(s, 1); + t.pageIndexCache.has(s) || t.pageIndexCache.put(s, 0); + return [e, s]; + } + } + throw new FormatError( + "The Linearization dictionary doesn't point to a valid Page dictionary.", + ); + } catch (i) { + warn(`_getLinearizationPage: "${i.message}".`); + return t.getPageDict(e); + } + } + getPage(e) { + const t = this._pagePromises.get(e); + if (t) return t; + const { catalog: i, linearization: a, xfaFactory: s } = this; + let r; + r = s + ? Promise.resolve([Dict.empty, null]) + : a?.pageFirst === e + ? this._getLinearizationPage(e) + : i.getPageDict(e); + r = r.then( + ([t, a]) => + new Page({ + pdfManager: this.pdfManager, + xref: this.xref, + pageIndex: e, + pageDict: t, + ref: a, + globalIdFactory: this._globalIdFactory, + fontCache: i.fontCache, + builtInCMapCache: i.builtInCMapCache, + standardFontDataCache: i.standardFontDataCache, + globalImageCache: i.globalImageCache, + systemFontCache: i.systemFontCache, + nonBlendModesSet: i.nonBlendModesSet, + xfaFactory: s, + }), + ); + this._pagePromises.set(e, r); + return r; + } + async checkFirstPage(e = !1) { + if (!e) + try { + await this.getPage(0); + } catch (e) { + if (e instanceof XRefEntryException) { + this._pagePromises.delete(0); + await this.cleanup(); + throw new XRefParseException(); + } + } + } + async checkLastPage(e = !1) { + const { catalog: t, pdfManager: i } = this; + t.setActualNumPages(); + let a; + try { + await Promise.all([ + i.ensureDoc("xfaFactory"), + i.ensureDoc("linearization"), + i.ensureCatalog("numPages"), + ]); + if (this.xfaFactory) return; + a = this.linearization ? this.linearization.numPages : t.numPages; + if (!Number.isInteger(a)) + throw new FormatError("Page count is not an integer."); + if (a <= 1) return; + await this.getPage(a - 1); + } catch (s) { + this._pagePromises.delete(a - 1); + await this.cleanup(); + if (s instanceof XRefEntryException && !e) throw new XRefParseException(); + warn(`checkLastPage - invalid /Pages tree /Count: ${a}.`); + let r; + try { + r = await t.getAllPageDicts(e); + } catch (i) { + if (i instanceof XRefEntryException && !e) + throw new XRefParseException(); + t.setActualNumPages(1); + return; + } + for (const [e, [a, s]] of r) { + let r; + if (a instanceof Error) { + r = Promise.reject(a); + r.catch(() => {}); + } else + r = Promise.resolve( + new Page({ + pdfManager: i, + xref: this.xref, + pageIndex: e, + pageDict: a, + ref: s, + globalIdFactory: this._globalIdFactory, + fontCache: t.fontCache, + builtInCMapCache: t.builtInCMapCache, + standardFontDataCache: t.standardFontDataCache, + globalImageCache: t.globalImageCache, + systemFontCache: t.systemFontCache, + nonBlendModesSet: t.nonBlendModesSet, + xfaFactory: null, + }), + ); + this._pagePromises.set(e, r); + } + t.setActualNumPages(r.size); + } + } + fontFallback(e, t) { + return this.catalog.fontFallback(e, t); + } + async cleanup(e = !1) { + return this.catalog ? this.catalog.cleanup(e) : clearGlobalCaches(); + } + async #q(e, t, i, a, s) { + const { xref: r } = this; + if (!(t instanceof Ref) || s.has(t)) return; + s.put(t); + const n = await r.fetchAsync(t); + if (!(n instanceof Dict)) return; + if (n.has("T")) { + const t = stringToPDFString(await n.getAsync("T")); + e = "" === e ? t : `${e}.${t}`; + } else { + let t = n; + for (;;) { + t = t.getRaw("Parent"); + if (t instanceof Ref) { + if (s.has(t)) break; + t = await r.fetchAsync(t); + } + if (!(t instanceof Dict)) break; + if (t.has("T")) { + const i = stringToPDFString(await t.getAsync("T")); + e = "" === e ? i : `${e}.${i}`; + break; + } + } + } + i.has(e) || i.set(e, []); + i.get(e).push( + AnnotationFactory.create(r, t, a, null, !0, null) + .then((e) => e?.getFieldObject()) + .catch(function (e) { + warn(`#collectFieldObjects: "${e}".`); + return null; + }), + ); + if (!n.has("Kids")) return; + const o = await n.getAsync("Kids"); + if (Array.isArray(o)) for (const t of o) await this.#q(e, t, i, a, s); + } + get fieldObjects() { + if (!this.formInfo.hasFields) + return shadow(this, "fieldObjects", Promise.resolve(null)); + return shadow( + this, + "fieldObjects", + Promise.all([ + this.pdfManager.ensureDoc("annotationGlobals"), + this.pdfManager.ensureCatalog("acroForm"), + ]).then(async ([e, t]) => { + if (!e) return null; + const i = new RefSet(), + a = Object.create(null), + s = new Map(); + for (const a of await t.getAsync("Fields")) + await this.#q("", a, s, e, i); + const r = []; + for (const [e, t] of s) + r.push( + Promise.all(t).then((t) => { + (t = t.filter((e) => !!e)).length > 0 && (a[e] = t); + }), + ); + await Promise.all(r); + return a; + }), + ); + } + get hasJSActions() { + return shadow( + this, + "hasJSActions", + this.pdfManager.ensureDoc("_parseHasJSActions"), + ); + } + async _parseHasJSActions() { + const [e, t] = await Promise.all([ + this.pdfManager.ensureCatalog("jsActions"), + this.pdfManager.ensureDoc("fieldObjects"), + ]); + return ( + !!e || + (!!t && Object.values(t).some((e) => e.some((e) => null !== e.actions))) + ); + } + get calculationOrderIds() { + const e = this.catalog.acroForm; + if (!e?.has("CO")) return shadow(this, "calculationOrderIds", null); + const t = e.get("CO"); + if (!Array.isArray(t) || 0 === t.length) + return shadow(this, "calculationOrderIds", null); + const i = []; + for (const e of t) e instanceof Ref && i.push(e.toString()); + return 0 === i.length + ? shadow(this, "calculationOrderIds", null) + : shadow(this, "calculationOrderIds", i); + } + get annotationGlobals() { + return shadow( + this, + "annotationGlobals", + AnnotationFactory.createGlobals(this.pdfManager), + ); + } +} +class BasePdfManager { + constructor(e) { + this.constructor === BasePdfManager && + unreachable("Cannot initialize BasePdfManager."); + this._docBaseUrl = (function parseDocBaseUrl(e) { + if (e) { + const t = createValidAbsoluteUrl(e); + if (t) return t.href; + warn(`Invalid absolute docBaseUrl: "${e}".`); + } + return null; + })(e.docBaseUrl); + this._docId = e.docId; + this._password = e.password; + this.enableXfa = e.enableXfa; + e.evaluatorOptions.isOffscreenCanvasSupported &&= + FeatureTest.isOffscreenCanvasSupported; + this.evaluatorOptions = Object.freeze(e.evaluatorOptions); + } + get docId() { + return this._docId; + } + get password() { + return this._password; + } + get docBaseUrl() { + return this._docBaseUrl; + } + get catalog() { + return this.pdfDocument.catalog; + } + ensureDoc(e, t) { + return this.ensure(this.pdfDocument, e, t); + } + ensureXRef(e, t) { + return this.ensure(this.pdfDocument.xref, e, t); + } + ensureCatalog(e, t) { + return this.ensure(this.pdfDocument.catalog, e, t); + } + getPage(e) { + return this.pdfDocument.getPage(e); + } + fontFallback(e, t) { + return this.pdfDocument.fontFallback(e, t); + } + loadXfaFonts(e, t) { + return this.pdfDocument.loadXfaFonts(e, t); + } + loadXfaImages() { + return this.pdfDocument.loadXfaImages(); + } + serializeXfaData(e) { + return this.pdfDocument.serializeXfaData(e); + } + cleanup(e = !1) { + return this.pdfDocument.cleanup(e); + } + async ensure(e, t, i) { + unreachable("Abstract method `ensure` called"); + } + requestRange(e, t) { + unreachable("Abstract method `requestRange` called"); + } + requestLoadedStream(e = !1) { + unreachable("Abstract method `requestLoadedStream` called"); + } + sendProgressiveData(e) { + unreachable("Abstract method `sendProgressiveData` called"); + } + updatePassword(e) { + this._password = e; + } + terminate(e) { + unreachable("Abstract method `terminate` called"); + } +} +class LocalPdfManager extends BasePdfManager { + constructor(e) { + super(e); + const t = new Stream(e.source); + this.pdfDocument = new PDFDocument(this, t); + this._loadedStreamPromise = Promise.resolve(t); + } + async ensure(e, t, i) { + const a = e[t]; + return "function" == typeof a ? a.apply(e, i) : a; + } + requestRange(e, t) { + return Promise.resolve(); + } + requestLoadedStream(e = !1) { + return this._loadedStreamPromise; + } + terminate(e) {} +} +class NetworkPdfManager extends BasePdfManager { + constructor(e) { + super(e); + this.streamManager = new ChunkedStreamManager(e.source, { + msgHandler: e.handler, + length: e.length, + disableAutoFetch: e.disableAutoFetch, + rangeChunkSize: e.rangeChunkSize, + }); + this.pdfDocument = new PDFDocument(this, this.streamManager.getStream()); + } + async ensure(e, t, i) { + try { + const a = e[t]; + return "function" == typeof a ? a.apply(e, i) : a; + } catch (a) { + if (!(a instanceof MissingDataException)) throw a; + await this.requestRange(a.begin, a.end); + return this.ensure(e, t, i); + } + } + requestRange(e, t) { + return this.streamManager.requestRange(e, t); + } + requestLoadedStream(e = !1) { + return this.streamManager.requestAllChunks(e); + } + sendProgressiveData(e) { + this.streamManager.onReceiveData({ chunk: e }); + } + terminate(e) { + this.streamManager.abort(e); + } +} +const go = 1, + Io = 2, + co = 1, + ho = 2, + lo = 3, + Co = 4, + Bo = 5, + Qo = 6, + Eo = 7, + uo = 8; +function wrapReason(e) { + e instanceof Error || + ("object" == typeof e && null !== e) || + unreachable( + 'wrapReason: Expected "reason" to be a (possibly cloned) Error.', + ); + switch (e.name) { + case "AbortException": + return new AbortException(e.message); + case "MissingPDFException": + return new MissingPDFException(e.message); + case "PasswordException": + return new PasswordException(e.message, e.code); + case "UnexpectedResponseException": + return new UnexpectedResponseException(e.message, e.status); + case "UnknownErrorException": + return new UnknownErrorException(e.message, e.details); + default: + return new UnknownErrorException(e.message, e.toString()); + } +} +class MessageHandler { + constructor(e, t, i) { + this.sourceName = e; + this.targetName = t; + this.comObj = i; + this.callbackId = 1; + this.streamId = 1; + this.streamSinks = Object.create(null); + this.streamControllers = Object.create(null); + this.callbackCapabilities = Object.create(null); + this.actionHandler = Object.create(null); + this._onComObjOnMessage = (e) => { + const t = e.data; + if (t.targetName !== this.sourceName) return; + if (t.stream) { + this.#O(t); + return; + } + if (t.callback) { + const e = t.callbackId, + i = this.callbackCapabilities[e]; + if (!i) throw new Error(`Cannot resolve callback ${e}`); + delete this.callbackCapabilities[e]; + if (t.callback === go) i.resolve(t.data); + else { + if (t.callback !== Io) throw new Error("Unexpected callback case"); + i.reject(wrapReason(t.reason)); + } + return; + } + const a = this.actionHandler[t.action]; + if (!a) throw new Error(`Unknown action from worker: ${t.action}`); + if (t.callbackId) { + const e = this.sourceName, + s = t.sourceName; + new Promise(function (e) { + e(a(t.data)); + }).then( + function (a) { + i.postMessage({ + sourceName: e, + targetName: s, + callback: go, + callbackId: t.callbackId, + data: a, + }); + }, + function (a) { + i.postMessage({ + sourceName: e, + targetName: s, + callback: Io, + callbackId: t.callbackId, + reason: wrapReason(a), + }); + }, + ); + } else t.streamId ? this.#P(t) : a(t.data); + }; + i.addEventListener("message", this._onComObjOnMessage); + } + on(e, t) { + const i = this.actionHandler; + if (i[e]) throw new Error(`There is already an actionName called "${e}"`); + i[e] = t; + } + send(e, t, i) { + this.comObj.postMessage( + { + sourceName: this.sourceName, + targetName: this.targetName, + action: e, + data: t, + }, + i, + ); + } + sendWithPromise(e, t, i) { + const a = this.callbackId++, + s = Promise.withResolvers(); + this.callbackCapabilities[a] = s; + try { + this.comObj.postMessage( + { + sourceName: this.sourceName, + targetName: this.targetName, + action: e, + callbackId: a, + data: t, + }, + i, + ); + } catch (e) { + s.reject(e); + } + return s.promise; + } + sendWithStream(e, t, i, a) { + const s = this.streamId++, + r = this.sourceName, + n = this.targetName, + o = this.comObj; + return new ReadableStream( + { + start: (i) => { + const g = Promise.withResolvers(); + this.streamControllers[s] = { + controller: i, + startCall: g, + pullCall: null, + cancelCall: null, + isClosed: !1, + }; + o.postMessage( + { + sourceName: r, + targetName: n, + action: e, + streamId: s, + data: t, + desiredSize: i.desiredSize, + }, + a, + ); + return g.promise; + }, + pull: (e) => { + const t = Promise.withResolvers(); + this.streamControllers[s].pullCall = t; + o.postMessage({ + sourceName: r, + targetName: n, + stream: Qo, + streamId: s, + desiredSize: e.desiredSize, + }); + return t.promise; + }, + cancel: (e) => { + assert(e instanceof Error, "cancel must have a valid reason"); + const t = Promise.withResolvers(); + this.streamControllers[s].cancelCall = t; + this.streamControllers[s].isClosed = !0; + o.postMessage({ + sourceName: r, + targetName: n, + stream: co, + streamId: s, + reason: wrapReason(e), + }); + return t.promise; + }, + }, + i, + ); + } + #P(e) { + const t = e.streamId, + i = this.sourceName, + a = e.sourceName, + s = this.comObj, + r = this, + n = this.actionHandler[e.action], + o = { + enqueue(e, r = 1, n) { + if (this.isCancelled) return; + const o = this.desiredSize; + this.desiredSize -= r; + if (o > 0 && this.desiredSize <= 0) { + this.sinkCapability = Promise.withResolvers(); + this.ready = this.sinkCapability.promise; + } + s.postMessage( + { sourceName: i, targetName: a, stream: Co, streamId: t, chunk: e }, + n, + ); + }, + close() { + if (!this.isCancelled) { + this.isCancelled = !0; + s.postMessage({ + sourceName: i, + targetName: a, + stream: lo, + streamId: t, + }); + delete r.streamSinks[t]; + } + }, + error(e) { + assert(e instanceof Error, "error must have a valid reason"); + if (!this.isCancelled) { + this.isCancelled = !0; + s.postMessage({ + sourceName: i, + targetName: a, + stream: Bo, + streamId: t, + reason: wrapReason(e), + }); + } + }, + sinkCapability: Promise.withResolvers(), + onPull: null, + onCancel: null, + isCancelled: !1, + desiredSize: e.desiredSize, + ready: null, + }; + o.sinkCapability.resolve(); + o.ready = o.sinkCapability.promise; + this.streamSinks[t] = o; + new Promise(function (t) { + t(n(e.data, o)); + }).then( + function () { + s.postMessage({ + sourceName: i, + targetName: a, + stream: uo, + streamId: t, + success: !0, + }); + }, + function (e) { + s.postMessage({ + sourceName: i, + targetName: a, + stream: uo, + streamId: t, + reason: wrapReason(e), + }); + }, + ); + } + #O(e) { + const t = e.streamId, + i = this.sourceName, + a = e.sourceName, + s = this.comObj, + r = this.streamControllers[t], + n = this.streamSinks[t]; + switch (e.stream) { + case uo: + e.success + ? r.startCall.resolve() + : r.startCall.reject(wrapReason(e.reason)); + break; + case Eo: + e.success + ? r.pullCall.resolve() + : r.pullCall.reject(wrapReason(e.reason)); + break; + case Qo: + if (!n) { + s.postMessage({ + sourceName: i, + targetName: a, + stream: Eo, + streamId: t, + success: !0, + }); + break; + } + n.desiredSize <= 0 && e.desiredSize > 0 && n.sinkCapability.resolve(); + n.desiredSize = e.desiredSize; + new Promise(function (e) { + e(n.onPull?.()); + }).then( + function () { + s.postMessage({ + sourceName: i, + targetName: a, + stream: Eo, + streamId: t, + success: !0, + }); + }, + function (e) { + s.postMessage({ + sourceName: i, + targetName: a, + stream: Eo, + streamId: t, + reason: wrapReason(e), + }); + }, + ); + break; + case Co: + assert(r, "enqueue should have stream controller"); + if (r.isClosed) break; + r.controller.enqueue(e.chunk); + break; + case lo: + assert(r, "close should have stream controller"); + if (r.isClosed) break; + r.isClosed = !0; + r.controller.close(); + this.#W(r, t); + break; + case Bo: + assert(r, "error should have stream controller"); + r.controller.error(wrapReason(e.reason)); + this.#W(r, t); + break; + case ho: + e.success + ? r.cancelCall.resolve() + : r.cancelCall.reject(wrapReason(e.reason)); + this.#W(r, t); + break; + case co: + if (!n) break; + new Promise(function (t) { + t(n.onCancel?.(wrapReason(e.reason))); + }).then( + function () { + s.postMessage({ + sourceName: i, + targetName: a, + stream: ho, + streamId: t, + success: !0, + }); + }, + function (e) { + s.postMessage({ + sourceName: i, + targetName: a, + stream: ho, + streamId: t, + reason: wrapReason(e), + }); + }, + ); + n.sinkCapability.reject(wrapReason(e.reason)); + n.isCancelled = !0; + delete this.streamSinks[t]; + break; + default: + throw new Error("Unexpected stream case"); + } + } + async #W(e, t) { + await Promise.allSettled([ + e.startCall?.promise, + e.pullCall?.promise, + e.cancelCall?.promise, + ]); + delete this.streamControllers[t]; + } + destroy() { + this.comObj.removeEventListener("message", this._onComObjOnMessage); + } +} +class PDFWorkerStream { + constructor(e) { + this._msgHandler = e; + this._contentLength = null; + this._fullRequestReader = null; + this._rangeRequestReaders = []; + } + getFullReader() { + assert( + !this._fullRequestReader, + "PDFWorkerStream.getFullReader can only be called once.", + ); + this._fullRequestReader = new PDFWorkerStreamReader(this._msgHandler); + return this._fullRequestReader; + } + getRangeReader(e, t) { + const i = new PDFWorkerStreamRangeReader(e, t, this._msgHandler); + this._rangeRequestReaders.push(i); + return i; + } + cancelAllRequests(e) { + this._fullRequestReader?.cancel(e); + for (const t of this._rangeRequestReaders.slice(0)) t.cancel(e); + } +} +class PDFWorkerStreamReader { + constructor(e) { + this._msgHandler = e; + this.onProgress = null; + this._contentLength = null; + this._isRangeSupported = !1; + this._isStreamingSupported = !1; + const t = this._msgHandler.sendWithStream("GetReader"); + this._reader = t.getReader(); + this._headersReady = this._msgHandler + .sendWithPromise("ReaderHeadersReady") + .then((e) => { + this._isStreamingSupported = e.isStreamingSupported; + this._isRangeSupported = e.isRangeSupported; + this._contentLength = e.contentLength; + }); + } + get headersReady() { + return this._headersReady; + } + get contentLength() { + return this._contentLength; + } + get isStreamingSupported() { + return this._isStreamingSupported; + } + get isRangeSupported() { + return this._isRangeSupported; + } + async read() { + const { value: e, done: t } = await this._reader.read(); + return t ? { value: void 0, done: !0 } : { value: e.buffer, done: !1 }; + } + cancel(e) { + this._reader.cancel(e); + } +} +class PDFWorkerStreamRangeReader { + constructor(e, t, i) { + this._msgHandler = i; + this.onProgress = null; + const a = this._msgHandler.sendWithStream("GetRangeReader", { + begin: e, + end: t, + }); + this._reader = a.getReader(); + } + get isStreamingSupported() { + return !1; + } + async read() { + const { value: e, done: t } = await this._reader.read(); + return t ? { value: void 0, done: !0 } : { value: e.buffer, done: !1 }; + } + cancel(e) { + this._reader.cancel(e); + } +} +class WorkerTask { + constructor(e) { + this.name = e; + this.terminated = !1; + this._capability = Promise.withResolvers(); + } + get finished() { + return this._capability.promise; + } + finish() { + this._capability.resolve(); + } + terminate() { + this.terminated = !0; + } + ensureNotTerminated() { + if (this.terminated) throw new Error("Worker task was terminated"); + } +} +class WorkerMessageHandler { + static setup(e, t) { + let i = !1; + e.on("test", function (t) { + if (!i) { + i = !0; + e.send("test", t instanceof Uint8Array); + } + }); + e.on("configure", function (e) { + !(function setVerbosityLevel(e) { + Number.isInteger(e) && (st = e); + })(e.verbosity); + }); + e.on("GetDocRequest", function (e) { + return WorkerMessageHandler.createDocumentHandler(e, t); + }); + } + static createDocumentHandler(e, t) { + let i, + a = !1, + s = null; + const r = new Set(), + n = getVerbosityLevel(), + { docId: o, apiVersion: g } = e, + c = "4.3.136"; + if (g !== c) + throw new Error( + `The API version "${g}" does not match the Worker version "${c}".`, + ); + const h = []; + for (const e in []) h.push(e); + if (h.length) + throw new Error( + "The `Array.prototype` contains unexpected enumerable properties: " + + h.join(", ") + + "; thus breaking e.g. `for...in` iteration of `Array`s.", + ); + const l = o + "_worker"; + let C = new MessageHandler(l, o, t); + function ensureNotTerminated() { + if (a) throw new Error("Worker was terminated"); + } + function startWorkerTask(e) { + r.add(e); + } + function finishWorkerTask(e) { + e.finish(); + r.delete(e); + } + async function loadDocument(e) { + await i.ensureDoc("checkHeader"); + await i.ensureDoc("parseStartXRef"); + await i.ensureDoc("parse", [e]); + await i.ensureDoc("checkFirstPage", [e]); + await i.ensureDoc("checkLastPage", [e]); + const t = await i.ensureDoc("isPureXfa"); + if (t) { + const e = new WorkerTask("loadXfaFonts"); + startWorkerTask(e); + await Promise.all([ + i + .loadXfaFonts(C, e) + .catch((e) => {}) + .then(() => finishWorkerTask(e)), + i.loadXfaImages(), + ]); + } + const [a, s] = await Promise.all([ + i.ensureDoc("numPages"), + i.ensureDoc("fingerprints"), + ]); + return { + numPages: a, + fingerprints: s, + htmlForXfa: t ? await i.ensureDoc("htmlForXfa") : null, + }; + } + function getPdfManager({ + data: e, + password: t, + disableAutoFetch: i, + rangeChunkSize: a, + length: r, + docBaseUrl: n, + enableXfa: g, + evaluatorOptions: c, + }) { + const h = { + source: null, + disableAutoFetch: i, + docBaseUrl: n, + docId: o, + enableXfa: g, + evaluatorOptions: c, + handler: C, + length: r, + password: t, + rangeChunkSize: a, + }, + l = Promise.withResolvers(); + let Q; + if (e) { + try { + h.source = e; + Q = new LocalPdfManager(h); + l.resolve(Q); + } catch (e) { + l.reject(e); + } + return l.promise; + } + let E, + u = []; + try { + E = new PDFWorkerStream(C); + } catch (e) { + l.reject(e); + return l.promise; + } + const d = E.getFullReader(); + d.headersReady + .then(function () { + if (d.isRangeSupported) { + h.source = E; + h.length = d.contentLength; + h.disableAutoFetch ||= d.isStreamingSupported; + Q = new NetworkPdfManager(h); + for (const e of u) Q.sendProgressiveData(e); + u = []; + l.resolve(Q); + s = null; + } + }) + .catch(function (e) { + l.reject(e); + s = null; + }); + let f = 0; + new Promise(function (e, t) { + const readChunk = function ({ value: e, done: i }) { + try { + ensureNotTerminated(); + if (i) { + Q || + (function () { + const e = arrayBuffersToBytes(u); + r && + e.length !== r && + warn("reported HTTP length is different from actual"); + try { + h.source = e; + Q = new LocalPdfManager(h); + l.resolve(Q); + } catch (e) { + l.reject(e); + } + u = []; + })(); + s = null; + return; + } + f += e.byteLength; + d.isStreamingSupported || + C.send("DocProgress", { + loaded: f, + total: Math.max(f, d.contentLength || 0), + }); + Q ? Q.sendProgressiveData(e) : u.push(e); + d.read().then(readChunk, t); + } catch (e) { + t(e); + } + }; + d.read().then(readChunk, t); + }).catch(function (e) { + l.reject(e); + s = null; + }); + s = function (e) { + E.cancelAllRequests(e); + }; + return l.promise; + } + C.on("GetPage", function (e) { + return i.getPage(e.pageIndex).then(function (e) { + return Promise.all([ + i.ensure(e, "rotate"), + i.ensure(e, "ref"), + i.ensure(e, "userUnit"), + i.ensure(e, "view"), + ]).then(function ([e, t, i, a]) { + return { + rotate: e, + ref: t, + refStr: t?.toString() ?? null, + userUnit: i, + view: a, + }; + }); + }); + }); + C.on("GetPageIndex", function (e) { + const t = Ref.get(e.num, e.gen); + return i.ensureCatalog("getPageIndex", [t]); + }); + C.on("GetDestinations", function (e) { + return i.ensureCatalog("destinations"); + }); + C.on("GetDestination", function (e) { + return i.ensureCatalog("getDestination", [e.id]); + }); + C.on("GetPageLabels", function (e) { + return i.ensureCatalog("pageLabels"); + }); + C.on("GetPageLayout", function (e) { + return i.ensureCatalog("pageLayout"); + }); + C.on("GetPageMode", function (e) { + return i.ensureCatalog("pageMode"); + }); + C.on("GetViewerPreferences", function (e) { + return i.ensureCatalog("viewerPreferences"); + }); + C.on("GetOpenAction", function (e) { + return i.ensureCatalog("openAction"); + }); + C.on("GetAttachments", function (e) { + return i.ensureCatalog("attachments"); + }); + C.on("GetDocJSActions", function (e) { + return i.ensureCatalog("jsActions"); + }); + C.on("GetPageJSActions", function ({ pageIndex: e }) { + return i.getPage(e).then(function (e) { + return i.ensure(e, "jsActions"); + }); + }); + C.on("GetOutline", function (e) { + return i.ensureCatalog("documentOutline"); + }); + C.on("GetOptionalContentConfig", function (e) { + return i.ensureCatalog("optionalContentConfig"); + }); + C.on("GetPermissions", function (e) { + return i.ensureCatalog("permissions"); + }); + C.on("GetMetadata", function (e) { + return Promise.all([ + i.ensureDoc("documentInfo"), + i.ensureCatalog("metadata"), + ]); + }); + C.on("GetMarkInfo", function (e) { + return i.ensureCatalog("markInfo"); + }); + C.on("GetData", function (e) { + return i.requestLoadedStream().then(function (e) { + return e.bytes; + }); + }); + C.on("GetAnnotations", function ({ pageIndex: e, intent: t }) { + return i.getPage(e).then(function (i) { + const a = new WorkerTask(`GetAnnotations: page ${e}`); + startWorkerTask(a); + return i.getAnnotationsData(C, a, t).then( + (e) => { + finishWorkerTask(a); + return e; + }, + (e) => { + finishWorkerTask(a); + throw e; + }, + ); + }); + }); + C.on("GetFieldObjects", function (e) { + return i.ensureDoc("fieldObjects"); + }); + C.on("HasJSActions", function (e) { + return i.ensureDoc("hasJSActions"); + }); + C.on("GetCalculationOrderIds", function (e) { + return i.ensureDoc("calculationOrderIds"); + }); + C.on( + "SaveDocument", + async function ({ + isPureXfa: e, + numPages: t, + annotationStorage: a, + filename: s, + }) { + const r = [ + i.requestLoadedStream(), + i.ensureCatalog("acroForm"), + i.ensureCatalog("acroFormRef"), + i.ensureDoc("startXRef"), + i.ensureDoc("xref"), + i.ensureDoc("linearization"), + i.ensureCatalog("structTreeRoot"), + ], + n = [], + o = e ? null : getNewAnnotationsMap(a), + [g, c, h, l, Q, E, u] = await Promise.all(r), + d = Q.trailer.getRaw("Root") || null; + let f; + if (o) { + u + ? (await u.canUpdateStructTree({ + pdfManager: i, + xref: Q, + newAnnotationsByPage: o, + })) && (f = u) + : (await StructTreeRoot.canCreateStructureTree({ + catalogRef: d, + pdfManager: i, + newAnnotationsByPage: o, + })) && (f = null); + const e = AnnotationFactory.generateImages( + a.values(), + Q, + i.evaluatorOptions.isOffscreenCanvasSupported, + ), + t = void 0 === f ? n : []; + for (const [a, s] of o) + t.push( + i.getPage(a).then((t) => { + const i = new WorkerTask(`Save (editor): page ${a}`); + return t.saveNewAnnotations(C, i, s, e).finally(function () { + finishWorkerTask(i); + }); + }), + ); + null === f + ? n.push( + Promise.all(t).then(async (e) => { + await StructTreeRoot.createStructureTree({ + newAnnotationsByPage: o, + xref: Q, + catalogRef: d, + pdfManager: i, + newRefs: e, + }); + return e; + }), + ) + : f && + n.push( + Promise.all(t).then(async (e) => { + await f.updateStructureTree({ + newAnnotationsByPage: o, + pdfManager: i, + newRefs: e, + }); + return e; + }), + ); + } + if (e) n.push(i.serializeXfaData(a)); + else + for (let e = 0; e < t; e++) + n.push( + i.getPage(e).then(function (t) { + const i = new WorkerTask(`Save: page ${e}`); + return t.save(C, i, a).finally(function () { + finishWorkerTask(i); + }); + }), + ); + const p = await Promise.all(n); + let m = [], + y = null; + if (e) { + y = p[0]; + if (!y) return g.bytes; + } else { + m = p.flat(2); + if (0 === m.length) return g.bytes; + } + const w = h && c instanceof Dict && m.some((e) => e.needAppearances), + b = (c instanceof Dict && c.get("XFA")) || null; + let D = null, + F = !1; + if (Array.isArray(b)) { + for (let e = 0, t = b.length; e < t; e += 2) + if ("datasets" === b[e]) { + D = b[e + 1]; + F = !0; + } + null === D && (D = Q.getNewTemporaryRef()); + } else b && warn("Unsupported XFA type."); + let S = Object.create(null); + if (Q.trailer) { + const e = Object.create(null), + t = Q.trailer.get("Info") || null; + t instanceof Dict && + t.forEach((t, i) => { + "string" == typeof i && (e[t] = stringToPDFString(i)); + }); + S = { + rootRef: d, + encryptRef: Q.trailer.getRaw("Encrypt") || null, + newRef: Q.getNewTemporaryRef(), + infoRef: Q.trailer.getRaw("Info") || null, + info: e, + fileIds: Q.trailer.get("ID") || null, + startXRef: E ? l : Q.lastXRefStreamPos ?? l, + filename: s, + }; + } + return incrementalUpdate({ + originalData: g.bytes, + xrefInfo: S, + newRefs: m, + xref: Q, + hasXfa: !!b, + xfaDatasetsRef: D, + hasXfaDatasetsEntry: F, + needAppearances: w, + acroFormRef: h, + acroForm: c, + xfaData: y, + useXrefStream: isDict(Q.topDict, "XRef"), + }).finally(() => { + Q.resetNewTemporaryRef(); + }); + }, + ); + C.on("GetOperatorList", function (e, t) { + const a = e.pageIndex; + i.getPage(a).then(function (i) { + const s = new WorkerTask(`GetOperatorList: page ${a}`); + startWorkerTask(s); + const r = n >= pA.INFOS ? Date.now() : 0; + i.getOperatorList({ + handler: C, + sink: t, + task: s, + intent: e.intent, + cacheKey: e.cacheKey, + annotationStorage: e.annotationStorage, + }).then( + function (e) { + finishWorkerTask(s); + r && + info( + `page=${a + 1} - getOperatorList: time=${Date.now() - r}ms, len=${e.length}`, + ); + t.close(); + }, + function (e) { + finishWorkerTask(s); + s.terminated || t.error(e); + }, + ); + }); + }); + C.on("GetTextContent", function (e, t) { + const { + pageIndex: a, + includeMarkedContent: s, + disableNormalization: r, + } = e; + i.getPage(a).then(function (e) { + const i = new WorkerTask("GetTextContent: page " + a); + startWorkerTask(i); + const o = n >= pA.INFOS ? Date.now() : 0; + e.extractTextContent({ + handler: C, + task: i, + sink: t, + includeMarkedContent: s, + disableNormalization: r, + }).then( + function () { + finishWorkerTask(i); + o && + info( + `page=${a + 1} - getTextContent: time=` + + (Date.now() - o) + + "ms", + ); + t.close(); + }, + function (e) { + finishWorkerTask(i); + i.terminated || t.error(e); + }, + ); + }); + }); + C.on("GetStructTree", function (e) { + return i.getPage(e.pageIndex).then(function (e) { + return i.ensure(e, "getStructTree"); + }); + }); + C.on("FontFallback", function (e) { + return i.fontFallback(e.id, C); + }); + C.on("Cleanup", function (e) { + return i.cleanup(!0); + }); + C.on("Terminate", function (e) { + a = !0; + const t = []; + if (i) { + i.terminate(new AbortException("Worker was terminated.")); + const e = i.cleanup(); + t.push(e); + i = null; + } else clearGlobalCaches(); + s && s(new AbortException("Worker was terminated.")); + for (const e of r) { + t.push(e.finished); + e.terminate(); + } + return Promise.all(t).then(function () { + C.destroy(); + C = null; + }); + }); + C.on("Ready", function (t) { + !(function setupDoc(e) { + function onSuccess(e) { + ensureNotTerminated(); + C.send("GetDoc", { pdfInfo: e }); + } + function onFailure(e) { + ensureNotTerminated(); + if (e instanceof PasswordException) { + const t = new WorkerTask(`PasswordException: response ${e.code}`); + startWorkerTask(t); + C.sendWithPromise("PasswordRequest", e) + .then(function ({ password: e }) { + finishWorkerTask(t); + i.updatePassword(e); + pdfManagerReady(); + }) + .catch(function () { + finishWorkerTask(t); + C.send("DocException", e); + }); + } else + e instanceof InvalidPDFException || + e instanceof MissingPDFException || + e instanceof UnexpectedResponseException || + e instanceof UnknownErrorException + ? C.send("DocException", e) + : C.send( + "DocException", + new UnknownErrorException(e.message, e.toString()), + ); + } + function pdfManagerReady() { + ensureNotTerminated(); + loadDocument(!1).then(onSuccess, function (e) { + ensureNotTerminated(); + e instanceof XRefParseException + ? i.requestLoadedStream().then(function () { + ensureNotTerminated(); + loadDocument(!0).then(onSuccess, onFailure); + }) + : onFailure(e); + }); + } + ensureNotTerminated(); + getPdfManager(e) + .then(function (e) { + if (a) { + e.terminate(new AbortException("Worker was terminated.")); + throw new Error("Worker was terminated"); + } + i = e; + i.requestLoadedStream(!0).then((e) => { + C.send("DataLoaded", { length: e.bytes.byteLength }); + }); + }) + .then(pdfManagerReady, onFailure); + })(e); + e = null; + }); + return l; + } + static initializeFromPort(e) { + const t = new MessageHandler("worker", "main", e); + WorkerMessageHandler.setup(t, e); + t.send("ready", null); + } +} +"undefined" == typeof window && + !t && + "undefined" != typeof self && + (function isMessagePort(e) { + return "function" == typeof e.postMessage && "onmessage" in e; + })(self) && + WorkerMessageHandler.initializeFromPort(self); +var fo = __webpack_exports__.WorkerMessageHandler; +export { fo as WorkerMessageHandler }; diff --git a/web-app/src/screens/Console/Buckets/ListBuckets/Objects/Preview/PreviewPDF.tsx b/web-app/src/screens/Console/Buckets/ListBuckets/Objects/Preview/PreviewPDF.tsx index 55402dab7..2133d0fea 100644 --- a/web-app/src/screens/Console/Buckets/ListBuckets/Objects/Preview/PreviewPDF.tsx +++ b/web-app/src/screens/Console/Buckets/ListBuckets/Objects/Preview/PreviewPDF.tsx @@ -18,7 +18,7 @@ import React, { Fragment, useState } from "react"; import { Document, Page, pdfjs } from "react-pdf"; import { Box, Button, InformativeMessage } from "mds"; -pdfjs.GlobalWorkerOptions.workerSrc = "./scripts/pdf.worker.min.js"; +pdfjs.GlobalWorkerOptions.workerSrc = "./scripts/pdf.worker.min.mjs"; interface IPreviewPDFProps { path: string; diff --git a/web-app/yarn.lock b/web-app/yarn.lock index 3bcd895b4..526d82eac 100644 --- a/web-app/yarn.lock +++ b/web-app/yarn.lock @@ -2484,7 +2484,7 @@ __metadata: languageName: node linkType: hard -"@playwright/test@npm:^1.44.0": +"@playwright/test@npm:^1.44.1": version: 1.44.1 resolution: "@playwright/test@npm:1.44.1" dependencies: @@ -2610,7 +2610,7 @@ __metadata: languageName: node linkType: hard -"@reduxjs/toolkit@npm:^1.9.6": +"@reduxjs/toolkit@npm:^1.9.7": version: 1.9.7 resolution: "@reduxjs/toolkit@npm:1.9.7" dependencies: @@ -2630,10 +2630,10 @@ __metadata: languageName: node linkType: hard -"@remix-run/router@npm:1.16.0": - version: 1.16.0 - resolution: "@remix-run/router@npm:1.16.0" - checksum: 10c0/234e66b4d7266aff6d111a43f5560f00ffdc91de0b5cd447f1fdf1de1a8b3a6ac326eb52302356e23b095e71a8f4da914e40239af5f121de2ec2994f101b8db0 +"@remix-run/router@npm:1.16.1": + version: 1.16.1 + resolution: "@remix-run/router@npm:1.16.1" + checksum: 10c0/5f1b0aef4924830eeab9c86dcaa5af8157066e5de65b449e7fdf406532b2384828a46a447c31b0735fd713a06938dd88bfd4e566d9989be70c770457dda16c92 languageName: node linkType: hard @@ -3436,13 +3436,20 @@ __metadata: languageName: node linkType: hard -"@types/lodash@npm:^4.14.72, @types/lodash@npm:^4.17.0": +"@types/lodash@npm:^4.14.72": version: 4.17.4 resolution: "@types/lodash@npm:4.17.4" checksum: 10c0/0124c64cb9fe7a0f78b6777955abd05ef0d97844d49118652eae45f8fa57bfb7f5a7a9bccc0b5a84c0a6dc09631042e4590cb665acb9d58dfd5e6543c75341ec languageName: node linkType: hard +"@types/lodash@npm:^4.17.5": + version: 4.17.5 + resolution: "@types/lodash@npm:4.17.5" + checksum: 10c0/55924803ed853e72261512bd3eaf2c5b16558c3817feb0a3125ef757afe46e54b86f33d1960e40b7606c0ddab91a96f47966bf5e6006b7abfd8994c13b04b19b + languageName: node + linkType: hard + "@types/luxon@npm:^3.4.2": version: 3.4.2 resolution: "@types/luxon@npm:3.4.2" @@ -3507,12 +3514,12 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:20.12.8": - version: 20.12.8 - resolution: "@types/node@npm:20.12.8" +"@types/node@npm:20.14.2": + version: 20.14.2 + resolution: "@types/node@npm:20.14.2" dependencies: undici-types: "npm:~5.26.4" - checksum: 10c0/840002d20654e38a9af8cdffa215598fdb28ac4f96c5701ed672ec365ed6ccc66da299edddaa409baf13cd71bbf1128901f633b5e44e070fc236e26415805b78 + checksum: 10c0/2d86e5f2227aaa42212e82ea0affe72799111b888ff900916376450b02b09b963ca888b20d9c332d8d2b833ed4781987867a38eaa2e4863fa8439071468b0a6f languageName: node linkType: hard @@ -3579,7 +3586,7 @@ __metadata: languageName: node linkType: hard -"@types/react-copy-to-clipboard@npm:^5.0.5": +"@types/react-copy-to-clipboard@npm:^5.0.7": version: 5.0.7 resolution: "@types/react-copy-to-clipboard@npm:5.0.7" dependencies: @@ -3597,7 +3604,7 @@ __metadata: languageName: node linkType: hard -"@types/react-redux@npm:^7.1.32": +"@types/react-redux@npm:^7.1.33": version: 7.1.33 resolution: "@types/react-redux@npm:7.1.33" dependencies: @@ -3619,7 +3626,7 @@ __metadata: languageName: node linkType: hard -"@types/react-window-infinite-loader@npm:^1.0.7": +"@types/react-window-infinite-loader@npm:^1.0.9": version: 1.0.9 resolution: "@types/react-window-infinite-loader@npm:1.0.9" dependencies: @@ -3629,7 +3636,7 @@ __metadata: languageName: node linkType: hard -"@types/react-window@npm:*, @types/react-window@npm:^1.8.6": +"@types/react-window@npm:*, @types/react-window@npm:^1.8.8": version: 1.8.8 resolution: "@types/react-window@npm:1.8.8" dependencies: @@ -3638,7 +3645,7 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:*": +"@types/react@npm:*, @types/react@npm:18.3.3": version: 18.3.3 resolution: "@types/react@npm:18.3.3" dependencies: @@ -3648,16 +3655,6 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:18.3.1": - version: 18.3.1 - resolution: "@types/react@npm:18.3.1" - dependencies: - "@types/prop-types": "npm:*" - csstype: "npm:^3.0.2" - checksum: 10c0/18d856c12a4ec93f3cda2d58ef3d77a9480818afd3af895f812896fb82cfca1f35a692ab1add4ce826a4eb58a071624c7d1c8c6c4ccfb81c100d2916dc607614 - languageName: node - linkType: hard - "@types/recharts@npm:^1.8.29": version: 1.8.29 resolution: "@types/recharts@npm:1.8.29" @@ -3786,7 +3783,7 @@ __metadata: languageName: node linkType: hard -"@types/webpack-env@npm:^1.18.2": +"@types/webpack-env@npm:^1.18.5": version: 1.18.5 resolution: "@types/webpack-env@npm:1.18.5" checksum: 10c0/b9e4876e8c7cae419896249f9ed795db283c008fe1d38efa679cbbf05194fc2eea2a5bfb4ff4393d109e3a9895416dadf5f3ddd5c22931b678062230f860454e @@ -4917,16 +4914,16 @@ __metadata: languageName: node linkType: hard -"babel-plugin-module-resolver@npm:^5.0.0": - version: 5.0.2 - resolution: "babel-plugin-module-resolver@npm:5.0.2" +"babel-plugin-module-resolver@npm:5.0.0": + version: 5.0.0 + resolution: "babel-plugin-module-resolver@npm:5.0.0" dependencies: - find-babel-config: "npm:^2.1.1" - glob: "npm:^9.3.3" + find-babel-config: "npm:^2.0.0" + glob: "npm:^8.0.3" pkg-up: "npm:^3.1.0" reselect: "npm:^4.1.7" - resolve: "npm:^1.22.8" - checksum: 10c0/ccbb9e673c4219f68937349267521becb72be292cf30bf70b861c3e709d24fbfa589da0bf6c100a0def799d38199299171cb6eac3fb00b1ea740373e2c1fe54c + resolve: "npm:^1.22.1" + checksum: 10c0/bbddb437bf23ab2e12e25c855d71c906cf7a438d0d4821cf0786f23990718f86f76c49f7952ba2370a312c806d223e1efb7ca16698ff49d019396c8d81e4a870 languageName: node linkType: hard @@ -7843,15 +7840,6 @@ __metadata: languageName: node linkType: hard -"esotope-hammerhead@npm:0.6.7": - version: 0.6.7 - resolution: "esotope-hammerhead@npm:0.6.7" - dependencies: - "@types/estree": "npm:0.0.46" - checksum: 10c0/78691ec9a5113d49dcba0024fa7a256c761c40d5c5c2601f949e52291db7f3f9735ed59c10f70deeb05682123107aab4df85893125a604bb5d9d9b861d198c27 - languageName: node - linkType: hard - "esotope-hammerhead@npm:0.6.8": version: 0.6.8 resolution: "esotope-hammerhead@npm:0.6.8" @@ -8286,7 +8274,7 @@ __metadata: languageName: node linkType: hard -"find-babel-config@npm:^2.1.1": +"find-babel-config@npm:^2.0.0": version: 2.1.1 resolution: "find-babel-config@npm:2.1.1" dependencies: @@ -8805,15 +8793,16 @@ __metadata: languageName: node linkType: hard -"glob@npm:^9.3.3": - version: 9.3.5 - resolution: "glob@npm:9.3.5" +"glob@npm:^8.0.3": + version: 8.1.0 + resolution: "glob@npm:8.1.0" dependencies: fs.realpath: "npm:^1.0.0" - minimatch: "npm:^8.0.2" - minipass: "npm:^4.2.4" - path-scurry: "npm:^1.6.1" - checksum: 10c0/2f6c2b9ee019ee21dc258ae97a88719614591e4c979cb4580b1b9df6f0f778a3cb38b4bdaf18dfa584637ea10f89a3c5f2533a5e449cf8741514ad18b0951f2e + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^5.0.1" + once: "npm:^1.3.0" + checksum: 10c0/cb0b5cab17a59c57299376abe5646c7070f8acb89df5595b492dba3bfb43d301a46c01e5695f01154e6553168207cb60d4eaf07d3be4bc3eb9b0457c5c561d0f languageName: node linkType: hard @@ -9961,13 +9950,6 @@ __metadata: languageName: node linkType: hard -"is-jquery-obj@npm:^0.1.0": - version: 0.1.1 - resolution: "is-jquery-obj@npm:0.1.1" - checksum: 10c0/cc360f840119ac2e15df9e67fb780bd3bc12da65aeb3872b12d752efc4bc9fa486ae894f7da15fc7de5611ed2a0b5649a7249cf7ec9914407c9e14936a6b9647 - languageName: node - linkType: hard - "is-lambda@npm:^1.0.1": version: 1.0.1 resolution: "is-lambda@npm:1.0.1" @@ -11203,7 +11185,7 @@ __metadata: languageName: node linkType: hard -"kbar@npm:^0.1.0-beta.39": +"kbar@npm:^0.1.0-beta.45": version: 0.1.0-beta.45 resolution: "kbar@npm:0.1.0-beta.45" dependencies: @@ -11364,7 +11346,7 @@ __metadata: languageName: node linkType: hard -"local-storage-fallback@npm:^4.1.1": +"local-storage-fallback@npm:^4.1.2": version: 4.1.2 resolution: "local-storage-fallback@npm:4.1.2" dependencies: @@ -11450,7 +11432,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:4.6.1 || ^4.16.1, lodash@npm:^4.14.0, lodash@npm:^4.17.13, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.7.0": +"lodash@npm:4.6.1 || ^4.16.1, lodash@npm:^4.14.0, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.7.0": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: 10c0/d8cbea072bb08655bb4c989da418994b073a608dffa608b09ac04b43a791b12aeae7cd7ad919aa4c925f33b48490b5cfe6c1f71d827956071dae2e7bb3a6b74c @@ -11521,7 +11503,7 @@ __metadata: languageName: node linkType: hard -"luxon@npm:^3.4.3, luxon@npm:^3.4.4": +"luxon@npm:^3.4.4": version: 3.4.4 resolution: "luxon@npm:3.4.4" checksum: 10c0/02e26a0b039c11fd5b75e1d734c8f0332c95510f6a514a9a0991023e43fb233884da02d7f966823ffb230632a733fc86d4a4b1e63c3fbe00058b8ee0f8c728af @@ -12236,15 +12218,6 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^8.0.2": - version: 8.0.4 - resolution: "minimatch@npm:8.0.4" - dependencies: - brace-expansion: "npm:^2.0.1" - checksum: 10c0/a0a394c356dd5b4cb7f821720841a82fa6f07c9c562c5b716909d1b6ec5e56a7e4c4b5029da26dd256b7d2b3a3f38cbf9ddd8680e887b9b5282b09c05501c1ca - languageName: node - linkType: hard - "minimatch@npm:^9.0.4": version: 9.0.4 resolution: "minimatch@npm:9.0.4" @@ -12343,13 +12316,6 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^4.2.4": - version: 4.2.8 - resolution: "minipass@npm:4.2.8" - checksum: 10c0/4ea76b030d97079f4429d6e8a8affd90baf1b6a1898977c8ccce4701c5a2ba2792e033abc6709373f25c2c4d4d95440d9d5e9464b46b7b76ca44d2ce26d939ce - languageName: node - linkType: hard - "minipass@npm:^5.0.0": version: 5.0.0 resolution: "minipass@npm:5.0.0" @@ -13192,7 +13158,7 @@ __metadata: languageName: node linkType: hard -"path-scurry@npm:^1.11.1, path-scurry@npm:^1.6.1": +"path-scurry@npm:^1.11.1": version: 1.11.1 resolution: "path-scurry@npm:1.11.1" dependencies: @@ -13216,10 +13182,10 @@ __metadata: languageName: node linkType: hard -"path2d-polyfill@npm:^2.0.1": - version: 2.0.1 - resolution: "path2d-polyfill@npm:2.0.1" - checksum: 10c0/b6d8c0764f65438cd884ef3b62c5af07d4f526b379c4c804effc26dd17936f18076941941f9e804c0df96d39720f155e9f0723e4b30feaee152ea4a441df023e +"path2d@npm:^0.2.0": + version: 0.2.0 + resolution: "path2d@npm:0.2.0" + checksum: 10c0/fcf95e10a28ef9277a8e60c1df2b5279facb5894efa6a6c5225ec86b502aead1ea8fa90a3b21a7b5864e7a0ffb1405b360dc757c88794c5965bd43aa51b3c4f1 languageName: node linkType: hard @@ -13230,18 +13196,18 @@ __metadata: languageName: node linkType: hard -"pdfjs-dist@npm:3.11.174": - version: 3.11.174 - resolution: "pdfjs-dist@npm:3.11.174" +"pdfjs-dist@npm:4.3.136": + version: 4.3.136 + resolution: "pdfjs-dist@npm:4.3.136" dependencies: canvas: "npm:^2.11.2" - path2d-polyfill: "npm:^2.0.1" + path2d: "npm:^0.2.0" dependenciesMeta: canvas: optional: true - path2d-polyfill: + path2d: optional: true - checksum: 10c0/0cb26561fd9bea90f2c1c8029d4cf972d338838de0f7f7aa3f369b2e555b99a2d8bbf1b81cc682fb26331241201a432726ae356a7ad3a930d86a308ca941d29c + checksum: 10c0/4cb88d737f56100d45d2c9c0c6e8dc2f3dfd856362a55e47801ae32c52b2f12b3e74819c3cafb995a1e84c43eb580598a69c6710a78b1a11cdb52ef24bf8a633 languageName: node linkType: hard @@ -14220,12 +14186,12 @@ __metadata: languageName: node linkType: hard -"prettier@npm:3.2.5": - version: 3.2.5 - resolution: "prettier@npm:3.2.5" +"prettier@npm:3.3.2": + version: 3.3.2 + resolution: "prettier@npm:3.3.2" bin: prettier: bin/prettier.cjs - checksum: 10c0/ea327f37a7d46f2324a34ad35292af2ad4c4c3c3355da07313339d7e554320f66f65f91e856add8530157a733c6c4a897dc41b577056be5c24c40f739f5ee8c6 + checksum: 10c0/39ed27d17f0238da6dd6571d63026566bd790d3d0edac57c285fbab525982060c8f1e01955fe38134ab10f0951a6076da37f015db8173c02f14bc7f0803a384c languageName: node linkType: hard @@ -14576,7 +14542,7 @@ __metadata: languageName: node linkType: hard -"react-copy-to-clipboard@npm:^5.0.2": +"react-copy-to-clipboard@npm:^5.1.0": version: 5.1.0 resolution: "react-copy-to-clipboard@npm:5.1.0" dependencies: @@ -14706,16 +14672,16 @@ __metadata: languageName: node linkType: hard -"react-pdf@npm:^8.0.2": - version: 8.0.2 - resolution: "react-pdf@npm:8.0.2" +"react-pdf@npm:^9.0.0": + version: 9.0.0 + resolution: "react-pdf@npm:9.0.0" dependencies: clsx: "npm:^2.0.0" dequal: "npm:^2.0.3" make-cancellable-promise: "npm:^1.3.1" make-event-props: "npm:^1.6.0" merge-refs: "npm:^1.3.0" - pdfjs-dist: "npm:3.11.174" + pdfjs-dist: "npm:4.3.136" tiny-invariant: "npm:^1.0.0" warning: "npm:^4.0.0" peerDependencies: @@ -14725,7 +14691,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 10c0/83064e77030207bf4a7c80e24968c8957c9dedccadbf6f8e28b1a28166d9b7aa6cc473dc31bddcc57660d636756db763a39c0fdf1bc0d4cea49ffc3bb0f5d1d1 + checksum: 10c0/c9e5606ee5a36acab0746914f2efa84459bf969e0f4d5e3a945da6d14f9882c57c45ea66f181ed16112b933321b963241e5c7f6b1cb0890322a24b4c8925a48b languageName: node linkType: hard @@ -14768,27 +14734,27 @@ __metadata: languageName: node linkType: hard -"react-router-dom@npm:6.23.0": - version: 6.23.0 - resolution: "react-router-dom@npm:6.23.0" +"react-router-dom@npm:6.23.1": + version: 6.23.1 + resolution: "react-router-dom@npm:6.23.1" dependencies: - "@remix-run/router": "npm:1.16.0" - react-router: "npm:6.23.0" + "@remix-run/router": "npm:1.16.1" + react-router: "npm:6.23.1" peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 10c0/c249f3ca44a9e73cb931665563273c7d69709e9dbc9532f145cb6d9a3b3874f18c0752e2d949090b6d139d915ae14a3cbdfedb351c731a8202e20bbcfc800fd4 + checksum: 10c0/01b954d7d0ff4c53bb2edbc816458f3fad1ce9ee49a4dfdc5c866065c23026c9cce429b46b754cbaebb83b22cfe5f605bbf441acf515e3c377cbdf021b0bec4c languageName: node linkType: hard -"react-router@npm:6.23.0": - version: 6.23.0 - resolution: "react-router@npm:6.23.0" +"react-router@npm:6.23.1": + version: 6.23.1 + resolution: "react-router@npm:6.23.1" dependencies: - "@remix-run/router": "npm:1.16.0" + "@remix-run/router": "npm:1.16.1" peerDependencies: react: ">=16.8" - checksum: 10c0/567eb764d0814a9af2ea83c7d0bcf8a0a49d7070b4a7fffbbe8a4e4a376ca4e6adaa762b47760b110993eb2773fc617da7e26ab564d59cfd768130671a1b990e + checksum: 10c0/091949805745136350ab049b2a96281bf38742c9d3651019fb48ea79c5eafbfb0379f1d3e636602dd56b0ef278389e8fd25be983dc2c0ffd1103d06dfa8019f3 languageName: node linkType: hard @@ -15020,7 +14986,7 @@ __metadata: languageName: node linkType: hard -"recharts@npm:^2.12.6": +"recharts@npm:^2.12.7": version: 2.12.7 resolution: "recharts@npm:2.12.7" dependencies: @@ -15418,7 +15384,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.1.7, resolve@npm:^1.14.2, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.2, resolve@npm:^1.22.4, resolve@npm:^1.22.8": +"resolve@npm:^1.1.7, resolve@npm:^1.14.2, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.1, resolve@npm:^1.22.2, resolve@npm:^1.22.4": version: 1.22.8 resolution: "resolve@npm:1.22.8" dependencies: @@ -15444,7 +15410,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@npm%3A^1.1.7#optional!builtin, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin, resolve@patch:resolve@npm%3A^1.19.0#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.2#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin, resolve@patch:resolve@npm%3A^1.22.8#optional!builtin": +"resolve@patch:resolve@npm%3A^1.1.7#optional!builtin, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin, resolve@patch:resolve@npm%3A^1.19.0#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.1#optional!builtin, resolve@patch:resolve@npm%3A^1.22.2#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin": version: 1.22.8 resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d" dependencies: @@ -16821,40 +16787,7 @@ __metadata: languageName: node linkType: hard -"testcafe-hammerhead@npm:31.7.0": - version: 31.7.0 - resolution: "testcafe-hammerhead@npm:31.7.0" - dependencies: - "@adobe/css-tools": "npm:^4.3.0-rc.1" - "@electron/asar": "npm:^3.2.3" - acorn-hammerhead: "npm:0.6.2" - bowser: "npm:1.6.0" - crypto-md5: "npm:^1.0.0" - debug: "npm:4.3.1" - esotope-hammerhead: "npm:0.6.7" - http-cache-semantics: "npm:^4.1.0" - httpntlm: "npm:^1.8.10" - iconv-lite: "npm:0.5.1" - lodash: "npm:^4.17.21" - lru-cache: "npm:2.6.3" - match-url-wildcard: "npm:0.0.4" - merge-stream: "npm:^1.0.1" - mime: "npm:~1.4.1" - mustache: "npm:^2.1.1" - nanoid: "npm:^3.1.12" - os-family: "npm:^1.0.0" - parse5: "npm:^7.1.2" - pinkie: "npm:2.0.4" - read-file-relative: "npm:^1.2.0" - semver: "npm:7.5.3" - tough-cookie: "npm:4.1.3" - tunnel-agent: "npm:0.6.0" - ws: "npm:^7.4.6" - checksum: 10c0/4877189b26d6af194c53e6ee1a2c7e59e3eb865dbc5c49627288aa977d9e9a156eac4da7246b8625e59d63cf27e431adf1d351a5b0df7988292e62020b6a3cbc - languageName: node - linkType: hard - -"testcafe-hammerhead@npm:>=19.4.0": +"testcafe-hammerhead@npm:31.7.2, testcafe-hammerhead@npm:>=19.4.0": version: 31.7.2 resolution: "testcafe-hammerhead@npm:31.7.2" dependencies: @@ -16887,14 +16820,13 @@ __metadata: languageName: node linkType: hard -"testcafe-legacy-api@npm:5.1.6": - version: 5.1.6 - resolution: "testcafe-legacy-api@npm:5.1.6" +"testcafe-legacy-api@npm:5.1.8": + version: 5.1.8 + resolution: "testcafe-legacy-api@npm:5.1.8" dependencies: async: "npm:3.2.3" dedent: "npm:^0.6.0" highlight-es: "npm:^1.0.0" - is-jquery-obj: "npm:^0.1.0" lodash: "npm:^4.14.0" moment: "npm:^2.14.1" mustache: "npm:^2.2.1" @@ -16905,7 +16837,7 @@ __metadata: read-file-relative: "npm:^1.2.0" strip-bom: "npm:^2.0.0" testcafe-hammerhead: "npm:>=19.4.0" - checksum: 10c0/e1faaf00fbaf8cea07fd65beb97b458d6fbed7b785e06a97a0f2a56c9df1abfc1c9aa9f7f1358fb33df05cc75e5d144c7ac912660c69f5955b148572a44847db + checksum: 10c0/88f016ea7c28c4205928171bea9b7d32bb89c7a16afad2a442531befb3f5414475202effafa0c189899012089d1074ce46c8820d1c8232a92677e8f5b4834207 languageName: node linkType: hard @@ -16958,9 +16890,9 @@ __metadata: languageName: node linkType: hard -"testcafe@npm:3.5.0": - version: 3.5.0 - resolution: "testcafe@npm:3.5.0" +"testcafe@npm:3.6.1": + version: 3.6.1 + resolution: "testcafe@npm:3.6.1" dependencies: "@babel/core": "npm:^7.23.2" "@babel/plugin-proposal-async-generator-functions": "npm:^7.20.7" @@ -16982,7 +16914,7 @@ __metadata: "@devexpress/callsite-record": "npm:^4.1.6" "@types/node": "npm:^12.20.10" async-exit-hook: "npm:^1.1.2" - babel-plugin-module-resolver: "npm:^5.0.0" + babel-plugin-module-resolver: "npm:5.0.0" babel-plugin-syntax-trailing-function-commas: "npm:^6.22.0" bowser: "npm:^2.8.1" callsite: "npm:^1.0.0" @@ -17016,7 +16948,7 @@ __metadata: is-podman: "npm:^1.0.1" is-stream: "npm:^2.0.0" json5: "npm:^2.2.2" - lodash: "npm:^4.17.13" + lodash: "npm:^4.17.21" log-update-async-hook: "npm:^2.0.7" make-dir: "npm:^3.0.0" mime-db: "npm:^1.41.0" @@ -17043,8 +16975,8 @@ __metadata: source-map-support: "npm:^0.5.16" strip-bom: "npm:^2.0.0" testcafe-browser-tools: "npm:2.0.26" - testcafe-hammerhead: "npm:31.7.0" - testcafe-legacy-api: "npm:5.1.6" + testcafe-hammerhead: "npm:31.7.2" + testcafe-legacy-api: "npm:5.1.8" testcafe-reporter-json: "npm:^2.1.0" testcafe-reporter-list: "npm:^2.2.0" testcafe-reporter-minimal: "npm:^2.2.0" @@ -17060,7 +16992,7 @@ __metadata: url-to-options: "npm:^2.0.0" bin: testcafe: bin/testcafe-with-v8-flag-filter.js - checksum: 10c0/a9fb3dae7910410afe72e4c7e037c36c664b28e91cc448785fb187a22962568be983b90d739a3de619a428c892faaa66de498421432a951073acbd149f7243e1 + checksum: 10c0/f581ccc3496559a6758a2ee85c17721cdc7317dd132a40c3b2058ff57715899498b71f3ead5b76e9b97ced17a9b3282d2eeab11c71fb8d8793a728dd2845dac1 languageName: node linkType: hard @@ -17517,7 +17449,7 @@ __metadata: languageName: node linkType: hard -"typescript@npm:^4.4.3": +"typescript@npm:^4.9.5": version: 4.9.5 resolution: "typescript@npm:4.9.5" bin: @@ -17537,7 +17469,7 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@npm%3A^4.4.3#optional!builtin": +"typescript@patch:typescript@npm%3A^4.9.5#optional!builtin": version: 4.9.5 resolution: "typescript@patch:typescript@npm%3A4.9.5#optional!builtin::version=4.9.5&hash=289587" bin: @@ -18107,54 +18039,54 @@ __metadata: resolution: "web-app@workspace:." dependencies: "@babel/plugin-proposal-private-property-in-object": "npm:^7.21.11" - "@playwright/test": "npm:^1.44.0" - "@reduxjs/toolkit": "npm:^1.9.6" - "@types/lodash": "npm:^4.17.0" + "@playwright/test": "npm:^1.44.1" + "@reduxjs/toolkit": "npm:^1.9.7" + "@types/lodash": "npm:^4.17.5" "@types/luxon": "npm:^3.4.2" - "@types/node": "npm:20.12.8" - "@types/react": "npm:18.3.1" - "@types/react-copy-to-clipboard": "npm:^5.0.5" + "@types/node": "npm:20.14.2" + "@types/react": "npm:18.3.3" + "@types/react-copy-to-clipboard": "npm:^5.0.7" "@types/react-dom": "npm:18.3.0" - "@types/react-redux": "npm:^7.1.32" + "@types/react-redux": "npm:^7.1.33" "@types/react-virtualized": "npm:^9.21.30" - "@types/react-window": "npm:^1.8.6" - "@types/react-window-infinite-loader": "npm:^1.0.7" + "@types/react-window": "npm:^1.8.8" + "@types/react-window-infinite-loader": "npm:^1.0.9" "@types/recharts": "npm:^1.8.29" "@types/superagent": "npm:^4.1.24" - "@types/webpack-env": "npm:^1.18.2" + "@types/webpack-env": "npm:^1.18.5" babel-plugin-istanbul: "npm:^6.1.1" customize-cra: "npm:^1.0.0" - kbar: "npm:^0.1.0-beta.39" - local-storage-fallback: "npm:^4.1.1" + kbar: "npm:^0.1.0-beta.45" + local-storage-fallback: "npm:^4.1.2" lodash: "npm:^4.17.21" - luxon: "npm:^3.4.3" + luxon: "npm:^3.4.4" mds: "https://github.com/minio/mds.git#v1.0.2" minio: "npm:^8.0.0" nyc: "npm:^15.1.0" - prettier: "npm:3.2.5" + prettier: "npm:3.3.2" react: "npm:^18.3.1" react-app-rewire-hot-loader: "npm:^2.0.1" react-app-rewired: "npm:^2.2.1" react-component-export-image: "npm:^1.0.6" - react-copy-to-clipboard: "npm:^5.0.2" + react-copy-to-clipboard: "npm:^5.1.0" react-dom: "npm:^18.3.1" react-dropzone: "npm:^14.2.3" react-markdown: "npm:8.0.7" - react-pdf: "npm:^8.0.2" + react-pdf: "npm:^9.0.0" react-redux: "npm:^8.1.3" - react-router-dom: "npm:6.23.0" + react-router-dom: "npm:6.23.1" react-scripts: "npm:5.0.1" react-use-websocket: "npm:^4.8.1" react-virtualized: "npm:^9.22.5" react-window: "npm:^1.8.10" react-window-infinite-loader: "npm:^1.0.9" - recharts: "npm:^2.12.6" + recharts: "npm:^2.12.7" styled-components: "npm:5.3.11" superagent: "npm:^9.0.2" - testcafe: "npm:3.5.0" + testcafe: "npm:3.6.1" tinycolor2: "npm:^1.6.0" ts-prune: "npm:^0.10.3" - typescript: "npm:^4.4.3" + typescript: "npm:^4.9.5" languageName: unknown linkType: soft